2026
- Data
All 26 cantonal tax scales now verified
BL and VS were the last two scales still flagged as approximations. BL's §34 StG logarithmic formula (verified at section boundaries against the ESTV reference) and VS's Calcul_IC indexed brackets (transcribed from the canonical Art. 32 LF table) are now in the verified set. New regression tests in the engine guard the boundary numbers + the monotonicity invariants. The "two scales we still mark as approximations" disclaimer is gone from the homepage.
- Data
Atlas data: filter out partial-status (fraction) communes
The cantonal-move target and the cheaper-commune-within-canton lookup used to surface VD partial-tax-status entries (e.g. 'Les Bioux (fraction) **' at Steuerfuss 3) — not real places you can move to. They're now filtered everywhere: /score, /explore top-10 cheapest, canton-page commune lists, OG image ranks. Real cheapest commune in CH is now Schwende-Rüte (AI, Steuerfuss 18) — and that's a legitimate target.
- Feature
Optimisation Score v2 — engine-backed, feasibility-weighted
The free Score no longer uses heuristic ranges. Every CHF figure on /score now comes from a real engine pass: baseline tax + four engine levers (3a max, LPP buy-in, swap to cheapest commune in your canton, swap to cheapest CH commune). Each lever has a feasibility weight (1.0 'Easy' → 0.25 'Very hard') so cantonal-move doesn't dominate the score — raw savings still shown on the cards, but the score reflects realistic headroom.
- Feature
Public changelog at /changelog
Curated release notes — features, data refreshes, fixes — tagged and grouped by year. Available as RSS at /changelog/feed.xml.
- Feature
Atlas: keyboard navigation + mobile list view
The 26-canton heat-map is now fully keyboard-navigable: tab between cantons, hear the name and average Steuerfuss read by screen readers, see the active stroke move with focus. A sorted list below the map serves as the primary view on phones and as a tabular fallback for assistive tech. Reduced-motion preference is respected.
- Feature
Open Graph cards on canton + commune share links
Pasting any /commune/[bfs] or /explore/canton/[code] URL into iMessage, WhatsApp, LinkedIn, or Slack now shows a magazine-cover preview with the commune/canton name, Steuerfuss, and ranking. Home, /score, /pricing, /learn share a default editorial card.
- Feature
Security headers + HSTS preload eligibility
Full security-headers set added: HSTS (2 years, preload-eligible), Content-Security-Policy, Referrer-Policy, Permissions-Policy, X-Content-Type-Options. /embed/* routes get a loosened CSP so partner sites can iframe them. Framework leak (X-Powered-By) removed.
- Feature
Dashboard: full DE / FR / IT translation
Every page under /dashboard — overview, all-levers, profile, document upload, action plan, combo, multi-year planner, cantonal-move — now switches language with the EN / DE / FR / IT toggle in the header. Translations use Swiss-domain terminology (Steuerfuss / coefficient communal / moltiplicatore, BVG / LPP, Rachat / Einkauf / Riscatto). Pre-launch native review still recommended.
- Feature
Sentry live: error reporting with EU residency
Errors are now reported to a Sentry project in the EU (de.sentry.io) with strict PII scrubbing — email, salary, income, pension data, auth tokens, and request bodies on /api/profile and /api/levers/* are dropped before transport. Tunnel route bypasses ad-blockers.
- Feature
Pension certificate (Vorsorgeausweis) extractor
Upload your annual 2nd-pillar statement, get insured salary, current capital, and — the headline — your buy-in capacity extracted into your profile. Encrypted at rest with AES-256-GCM, 30-day auto-purge, 'delete immediately after extraction' opt-in.
- Feature
Optimisation Score (free) — 0-100 with named top lever
A 60-second test that estimates your tax bill, identifies which of six levers apply to your situation, and names the biggest one ("your largest gap is the Pillar 2 buy-in window — about CHF 3,500/yr"). Free, no signup. Horizontal optimisation scale shows where you sit.
- Launch
First real charge — Stripe live with TWINT
CHF 49 via TWINT, status succeeded. Cross-border activation took ~10 days of Stripe risk review. Card + TWINT both work; checkout is in CHF, no subscription, no card-on-file.
- Feature
Onboarding wizard with commune-level precision
New paid users land in a 9-step wizard: canton → commune → birth year → civil status → children → salary → flash baseline → situation flags → pillar data. The commune picker quantifies precision: choosing the right commune is up to 28% more accurate than canton-default.
- Data
All 2,061 communes ingested
Full 2026 Steuerfuss tables for every Swiss commune (all 26 cantons). 24 of 26 cantonal scales transcribed from cantonal Steuergesetz / Loi sur les impôts texts; VS and BL marked as approximations pending source confirmation.
- Feature
PRO tier launched — CHF 49 one-time, no subscription
Free atlas + free calculator + free score stay free forever. The personalised plan (multi-year LPP buy-in optimiser, 4 specialist calculators, cantonal-move ROI, document upload + extraction, printable action plan) is CHF 49 one-time for tax year 2026.
- Feature
Tax engine: 6 optimisation levers
Pillar 3a (single year), LPP buy-in (single year + multi-year DP optimiser), staggered lump-sum withdrawal, the buy-in × withdrawal combo, and 3a multi-account split. Pure TypeScript engine with decimal.js arithmetic — no LLM in the calculation path.
Subscribe
One short email a week with the latest changelog entries and any 2026 Swiss tax rule shifts that affect your bill — no marketing fluff. Sign up for the dispatch →