A paid product where every payment grant is amount-verified
A SaaS product is only sellable once money moves through it correctly. JobVerdict scores a job description against your actual CV and tailors the application without inventing experience you do not have — and it meters, quotas and charges for the work without a double charge or a free plan slipping through. I built all of it.
Personal product · Dubai · July to August 2026 · designed, directed and shipped, 71 commits
Context
Every job-application tool I tried had the same failure mode: ask it to tailor a CV and it quietly invents experience to hit the keywords. That is not a stylistic complaint. It is the thing that gets a candidate caught in the interview, and it is why I did not trust any of them enough to use one.
The honest version of the product is harder to build, because the constraint has to live inside every generation path rather than in the marketing copy. So I built it.
What I did
- Shipped a multi-tenant Next.js 16 application — App Router, React 19, TypeScript, Prisma, Tailwind — roughly 19,000 lines across 125 source files, designed, directed and shipped over five weeks.
- Made the anti-fabrication rule structural rather than advisory. Keywords get reformulated, never fabricated is embedded in every generation prompt, and it is enforced by dedicated evidence and CV guard test suites, so a regression fails the build rather than reaching a user.
- Built the unglamorous half properly: bcrypt auth with opaque server-side session tokens, route guards on every protected path, an admin guard, input sanitisation, and an SSRF-safe fetch wrapper for anything user-supplied.
- Metered the expensive part. Every AI call routes through one module that picks a cheap or smart model for the job, records per-user usage, and enforces plan quotas — free lifetime caps, Pro fair-use over a rolling 30 days. Cost per user is a number I can see, not a surprise on the invoice.
- Took real money, carefully. Payment is a one-time 30-day pass through Ziina, a UAE processor. The grant is idempotent server-side and verifies the intent's own amount and currency before unlocking anything — the client is never trusted — and a background sweep reconciles any payment whose confirmation redirect was lost.
- Wrote 20+ test suites covering quotas, payments, auth guards, scheduling, sanitisation and schema sync, plus a mock AI mode so the entire product can be clicked through end to end without an API key or a cent of spend.
- Kept it deployable: SQLite locally, Postgres in production, with a single command to switch and a guard that keeps both schemas in sync.
Designed, directed and shipped in five weeks, with authentication, quota metering, live payments and 20+ automated test suites — by someone with no formal coding background.
The decision I am most pleased with
The product deliberately contains no LinkedIn automation, even though the engine it grew out of has it and it would have been the easiest growth feature to ship. Automating a candidate's outreach on a platform whose terms forbid it moves the risk onto the customer's account, not mine. I wrote the reasoning into the business plan so that the decision survives the next time someone — including me — is tempted by the shortcut.
What I would tell you in an interview
I did not learn to code and then build a product. I had an operations problem, started building, and the coding was what the problem cost. The transferable part is not the stack — it is that I scoped, shipped, metered and charged for something without a team, and that the parts I refused to cut were authentication, quotas and the guardrail, which is exactly the list most side projects cut first.
Where this transfers
What it means for an employer: I understand payment integrity, usage-based pricing and quota control from the inside, and I ship them with the tests that prove they hold. Any business putting a language model in front of customers faces this problem: the demo is a weekend, and the things that make it a product — per-tenant isolation, usage metering, cost control, a guardrail that is tested rather than promised, and a billing path that cannot be spoofed from the client — are the other ninety percent. I have now built that ninety percent once, with my own money on the line, which is a materially different thing from having read about it.