Methodology & data sources
Data sources
PlainRRSP combines three categories of upstream Canadian government data into a single calculator engine:
- CRA registered-plan ceilings — annual RRSP dollar limit, TFSA contribution room, RESP lifetime cap and CESG match, all from the Canada Revenue Agency registered-plans administrator tables.
- Provincial marginal-tax brackets — current and recent bracket schedules from each provincial finance ministry (Ontario MoF, Quebec MRQ, Alberta TBF, BC, MB, SK, NS, NB, NL, PE, YT, NT, NU).
- Demographic and earnings reference points — Statistics Canada income tables used to anchor the calculator's example scenarios.
Data vintage & coverage
The current build ships:
- CRA limits: tax years 2024, 2025, and 2026 (the three most recently published).
- Provincial brackets: Ontario 2026 (canary). Quebec, BC, Alberta, and the remaining nine provinces and territories ship in Phase 2.
- RRSP rate-of-earned-income cap: 18% of prior-year earned income, capped at the annual dollar maximum (CRA Schedule 7 rule).
- RESP CESG match: 20% on the first $2,500 contributed per beneficiary per year, lifetime CESG cap of $7,200.
Source URLs and dataset vintages for every row shipped are stored in the portal database and surfaced on each detail page when those ship.
How we process the data
- Download the latest CRA registered-plans table and the relevant provincial budget rate notice.
- Normalize each schedule into a uniform shape (year, account type, dollar ceiling, source URL, vintage).
- Spot-check every provincial bracket against the published rate notice — no value is interpolated.
- Load into a versioned SQLite database via our unified ETL pipeline.
- Re-run the calculator engine's full bracket-fill test suite against known reference cases before release.
No bracket value is fabricated, interpolated, or editorially modified. Where the calculator derives a number (marginal-rate-at-income, dollars-deferred-today, retirement-rate trade-off), the underlying formula is documented inline next to the result.
Calculator assumptions
- The contribution-room calculation assumes you have not over-contributed in prior years; the CRA-published prior-year carry-forward is not modelled in Phase 1.
- Federal tax brackets are applied uniformly to all provinces (CRA T1 schedule).
- Provincial brackets are applied on top of federal brackets per the standard combined-marginal-rate convention.
- The Quebec abatement and provincial surtaxes (Ontario, PE) are not modelled in Phase 1; Phase 2 adds them.
- Pension adjustments (PA), past-service pension adjustments (PSPA), and attribution rules are not modelled.
- US-tax filing obligations are out of scope.
Limitations
- Phase 1 ships Ontario brackets only as the canary. Other provinces follow in Phase 2.
- Bracket data refreshes once per provincial budget cycle (twice a year typical); intra-year amendments may take days to land.
- The First Home Savings Account (FHSA) is not yet modelled — it lands in Phase 2.
- RRSP carry-forward, RRSP-HBP/LLP repayment schedules, and self-employed PA cases are not modelled.
Financial disclaimer
PlainRRSP is for informational purposes only and does not provide financial, tax, or investment advice. Calculator results are estimates based on public CRA and provincial schedules. For decisions with material money on the line, consult a CPA or a CFP licensed in your province.
Editorial process
Every page on PlainRRSP is drafted from a primary source — a CRA bulletin, a provincial rate notice, or a Statistics Canada table. Explanatory copy is compiled by the Kiznis Studio editorial team and stamped with the date of last review. Numerical output in the calculator and the per-province bracket tables is computed deterministically from the seeded data; it does not pass through a language model at render time and is stable across requests.
We accept reader corrections on every page. When you flag a numerical error, we either correct it in the next data build (if the underlying CRA or provincial schedule has changed) or annotate the page with a correction notice referencing the original source. We do not silently rewrite history — corrections leave an audit trail and are listed in the methodology change log we plan to publish quarterly.
Update cadence and verification
The CRA publishes the next year's RRSP and TFSA limits in late autumn, typically the week the official inflation factor is confirmed. Provincial budgets refresh marginal-rate schedules in spring and fall. PlainRRSP targets a refresh within seven business days of each release. The underlying database build is fully scripted and reproducible: our unified ETL pipeline (see scripts/etl.mjs) re-reads the upstream source and rebuilds the SQLite database from scratch, ensuring no stale values persist between cycles.
Every shipped bracket is spot-checked against the published rate notice before release. We do not interpolate between published years; if a province has not yet released its current-year schedule, the previous year's bracket is shown with a clear vintage label until the new notice is verified. The reproducibility of the build means a reader can, in principle, audit any number on the site by running the same ETL pipeline against the same upstream sources.
Contact
Questions or corrections? Contact us — we welcome feedback, especially from accountants, tax pros, and CFPs.