Case Study
Calculators Hub: 27 money decisions answered in under a minute
Live PWA with 27 calculators for freelance pay, FIRE, housing and career moves. Each page shows real value after inflation, tax and time.
Try it at calculators.yomite.in. It has 27 calculators. It is free. It needs no login and installs as a PWA.
I built it because most financial calculators print a number that breaks on contact with reality. They skip inflation. They ignore tax. They price your time at zero. I wanted tools that show the adjusted number first.
What it covers
The set clusters around decisions where people stall. It is not 27 versions of compound interest.
Work pay
Freelance Real Paysubtracts holidays, unbillable admin, overheads and benefits replacement, then compares 44ADA with slab tax.True Hourly Wagesubtracts commute, prep and taxes from the headline rate.Salary Decoderturns CTC into monthly in-hand.RSU Tax Drainshows what each vest pays after sell-to-cover.
Housing calls
Buy vs Rentcompares ownership cost against renting plus investing EMI-minus-rent.Home Owner Realistspreads maintenance into sinking funds across 20 years and puts big repairs on a timeline.
Freedom math
FIREcounts years to freedom with healthcare inflation and flags unsafe withdrawal rates.SIPmodels annual step-up, then subtracts expense ratio, inflation and LTCG.Invest vs Payoffcompares net worth for surplus cash put into markets versus debt.
Career moves
Golden Handcuffsadds up unvested equity, benefits and clawbacks so quitting has a price.Job Relocationputs comp, moving friction and commute side by side.Degree ROIcompares 20-year earnings for degree versus work now.
Leaks
SaaS Leakturns subscriptions into foregone compounding and labor hours.Lifestyle Creepshows what spending the raise costs over 20 years.Inflation Destroyershows cash erosion as goods lost.
TDEE is the outlier. It sets calorie targets for cut or bulk with metric and imperial units. It stays because the pattern matches: inputs in, answer out, no account.
Product decisions
Each page answers one question. Inputs sit left. The verdict sits on top in ResultsAnalysis. Detail sits below. If the answer takes more than a minute, the page failed.
I apply the same three checks on every page:
- Future values appear in present money.
- Investment and freelance outputs appear net of tax.
- Unpaid time gets a price.
Freelance math deducts holidays and admin. Active versus passive deducts your hours before it compares returns.
Inputs autosave to localStorage. I run no backend. I store nothing server side. That means no sync across devices. For tools people open twice a year, that trade was worth it.
Each major tool exports PDF with jspdf and multi-sheet Excel with xlsx. People run the numbers and forward them to a spouse or a CA. Export is the share path.
The hub uses live search and category filters for Finance, Career, Housing, Strategy, Freelance and the rest. The filters scroll with keyboard support. A Suggest card links to feedback for missing tools.
How it is built
It is a pnpm monorepo. The app lives in apps/calculators and shares code through packages/*. It uses React plus Vite, Tailwind, Recharts for charts and Framer Motion for transitions.
Logic outside the UI
Each calculator keeps a pure function in src/lib with a matching vitest file in src/tests. There are 29 suites for SIP step-ups, FIRE timelines, tax brackets, relocation and the rest. UI edits leave math alone. Math tests run without rendering.
One shell for all pages
CalculatorLayout, CalculatorHeader, MetricDisplay and form inputs come from @packages/styling in a neo-brutalist style. Shared helpers add SEO tags, persisted state, macro assumptions for inflation and market returns in @packages/macro-data, and A-versus-B verdicts with decideWinner in @packages/compare.
Shipping and access
GitHub Actions runs lint, then tests, then a sitemap step that parses routes in main.jsx, then vite build, then deploy to Cloudflare Pages. The build needs VITE_SITE_URL so staging URLs stay out of the production sitemap. The app uses Workbox for offline use and hash routing so it runs on static hosting with zero server cost.
Inputs carry labels. Results use aria-live="polite" so screen readers announce recalcs. Tabs reach all controls.
What I cut
Accounts stayed out. Usage dashboards stayed out. Newsletter capture stayed out. Each would add cost and privacy surface for a free tool.
Next I would add save-and-share links for couples who compare scenarios. I would make the India versus US tax mode explicit because Tax Bracket assumes US style standard versus itemized. I would prune the weakest tools by use instead of adding a 28th.
The first three calculators were slow. After the layout, verdict block, export helpers and test pattern existed, each new one took mostly the lib function and copy. The shared shell made the tenth unit cheaper than the first.
Written by
Prathamesh Pathak
Product Manager building AI-native products. I write about PM craft, career growth, and shipping.