AI-powered job preparation platform
Upload a CV, paste a job link. 90 seconds later: tailored cover letter, mock interview, fit score, company brief, pitch outline.
Live Product · Pricing · Blog · Free Tools
| Stack | React 19, TypeScript, Vite 6, Tailwind CSS v4, Vercel, Supabase, Stripe, Gemini 2.5 Flash |
| Code | 72,735 lines of TypeScript across 92 React components |
| API | 10 Vercel serverless functions (Hobby plan, 10/12 slots used) |
| Tests | 334 passing (Vitest), zero TypeScript errors |
| Content | 141 blog posts, 20 free tools, 100+ company prep pages, 19 role packs |
| SEO | 6 sitemaps, RSS/Atom/JSON feeds, static prerendering, 5 JSON-LD schema types |
| Payments | Stripe LIVE (multi-currency GBP + USD), webhook idempotency, self-serve portal |
| Auth | Supabase Auth (email + Google OAuth), CAPTCHA on signup |
| Security | 23 measures: CSP, HSTS, rate limiting, prompt injection defence, GDPR self-serve delete |
| Monitoring | Sentry error tracking, GA4, Microsoft Clarity, UptimeRobot |
| Costs | ~£1/month (all free-tier infrastructure) |
| Commits | 722 in 53 days |
┌──────────────┐
│ Cloudflare │
│ Turnstile │
└──────┬───────┘
│ CAPTCHA
┌─────────┐ ┌─────────────────┼─────────────────┐
│ User │───▶│ Vercel (Hobby) │
│ Browser │◀───│ │
└─────────┘ │ ┌──────────┐ ┌──────────────┐ │
│ │ React 19 │ │ 10 Serverless│ │
│ │ SPA │ │ Functions │ │
│ │ (Vite 6) │ │ (TypeScript) │ │
│ └──────────┘ └──────┬───────┘ │
└───────────────────────┼───────────┘
│
┌──────────────┬────┴────┬──────────────┐
│ │ │ │
┌─────▼─────┐ ┌─────▼───┐ ┌───▼────┐ ┌──────▼──────┐
│ Supabase │ │ Stripe │ │ Gemini │ │ Resend │
│ Auth + DB │ │ LIVE │ │ 2.5 │ │ Email │
│ (Postgres) │ │ Payments│ │ Flash │ │ (DKIM/SPF) │
└────────────┘ └─────────┘ └────────┘ └─────────────┘
A user uploads their CV and pastes a job posting URL. The AI engine (Gemini 2.5 Flash) returns:
- Company Intelligence Brief — auto-extracted from the job URL via Google Search
- CV-to-Role Fit Score — percentage match with specific gap analysis
- Tailored Cover Letter — in 4 tones (Formal, Warm, Direct, Creative), with tone switching
- Mock Interview Questions — role-specific, with model answers and live AI evaluation
- 5-Minute Pitch Outline — structured talking points for the actual interview
One workflow replaces Jobscan ($49.95/mo) + Final Round AI ($99/mo) + Kickresume + manual research.
No signup, no cost. Each is a standalone SEO acquisition channel:
| Tool | Route | Type |
|---|---|---|
| Cover Letter Roast | /roast |
AI (Gemini) |
| Ghost Job Detector | /ghost-job-check |
AI (Gemini) |
| Rejection Email Decoder | /decode-rejection |
AI (Gemini) |
| ATS Keyword Scanner | /ats/scanner |
Client-side |
| JD Decoder | /tools/jd-decoder |
Client-side |
| CV Bullet Rewriter | /tools/bullet-rewriter |
Client-side |
| Layoff Playbook | /tools/layoff-playbook |
Client-side |
| Cover Letter Compare | /tools/cover-letter-compare |
Client-side |
| Salary Negotiation Script | /tools/negotiation-script |
Client-side |
| Offer Compare (4yr comp) | /tools/offer-compare |
Client-side |
| Reference Call Brief | /tools/reference-brief |
Client-side |
| 30-60-90 Day Plan | /tools/30-60-90-plan |
Client-side |
| "Why Leaving?" Framer | /tools/why-leaving-framer |
Client-side |
| Thank-You Note Generator | /tools/thank-you-note |
Client-side |
| LinkedIn About Rewriter | /tools/linkedin-about |
Client-side |
| Recruiter Reply Generator | /tools/recruiter-reply |
Client-side |
| Cold Email Generator | /tools/cold-email-hiring-manager |
Client-side |
| STAR Story Builder | /tools/star-story-builder |
Client-side |
| Glassdoor Review Decoder | /tools/glassdoor-decoder |
Client-side |
| Career Risk Index | /tools/career-risk-index |
Client-side |
| Package | Tokens | Price (GBP/USD) | Model |
|---|---|---|---|
| Starter | 20 | £5 / $5 | One-time top-up |
| Pro | 60 | £12 / $15 | Monthly subscription |
| Premium | 120 | £20 / $25 | Monthly subscription |
Token costs: Full analysis = 1, Tone rewrite = 1, Interview generation = 2, Answer evaluation = 0.
npm install # Install dependencies
npm run dev # Dev server on http://localhost:3000
npm run build # Production build (runs tsc + vite + prerender)
npx tsc --noEmit # TypeScript check (must be clean)
npm test # Run 334 tests
npm run smoke # Smoke test against live deployment (11 checks)Push to master triggers Vercel auto-deploy. The build pipeline:
generate-feeds.mjs— builds RSS, Atom, JSON feedstsc --noEmit— TypeScript gate (fails build on error)vite build— production bundleprerender-seo.mjs— bakes JSON-LD structured data into static HTML for SEO/AEO
Blog posts, company pages, and role packs are all data-driven:
- Add a blog post: edit
src/data/blogPosts.ts - Add a company: edit
src/data/companies.ts - Add a role pack: edit
src/data/interviewRolePacks.ts
No CMS. No database writes. Deploy by pushing to git.
Proprietary. All rights reserved.