Methods, assumptions and limitations
Our most important design rule: unknown information must remain unknown. The software does not claim to authenticate entered policy numbers.
Illustration comparison input
Use four CSV columns: year,premium_paid,guaranteed_cash,illustrated_cash. Premiums are cumulative. Years must be positive, unique and increasing. The tool validates data types and sequence, then plots exactly what was entered. Missing policy years are not extrapolated. A PDF preview or hash does not validate typed numbers.
Universal life educational model
For each year: closing = max(0, (opening + premium) × (1 + annual_growth_rate) − first_year_COI × (1 + annual_COI_increase)^(year−1) − admin_fee). Premium is assumed at the start of the year. The model stops when charges exceed the simplified account value and marks this as a modeling insufficiency, not a real-policy lapse.
Source and privacy
The public static tool has no customer file endpoint, accounts or analytics. In the optional Mac companion, chosen PDFs are transmitted only from the local browser to 127.0.0.1 on the same computer for in-memory text-layer extraction, not to the public hosting provider. Extracted labels and amounts remain unverified, may have ambiguous table columns, and never authenticate insurer records. See privacy.
Independent sources
For Ontario consumer information and regulatory obligations, see FSRA life and health consumer resources and the FSRA licence requirements. For search publishing methodology, see Google Search Essentials.
Independent educational software prototype. Not affiliated with an insurer or regulator. No individual advice, official quotes, coverage, underwriting or transactions are provided. Information reviewed for prototype on 11 Nov 2026.