- Role
- Founder, sole engineer
- Status
- In production, paying subscribers
- Stack
- Next.js 15, Supabase, Stripe, Docker
- AI
- 14 endpoints, billed per use

The problem
Three CVs out of four are rejected by screening software before a human reads them. Candidates do not know why, and existing tools only offer pretty templates. EasyCV had to do better: say what blocks, fix it, and tailor the CV to the target job.
What I built
- A CV editor with 32 PDF templates, rendered server-side so the downloaded PDF matches the preview exactly.
- An AI co-pilot: section rewriting, ATS score with reasons, tailoring to a pasted job offer, custom sections created by the assistant. Fourteen AI endpoints, each billed in credits per use, charged on commit rather than on trial.
- A job board on the France Travail API, and an embeddable widget for B2B partners.
- Stripe subscriptions and payments, Brevo transactional e-mails, a 64-article blog in five languages generated and maintained by a content pipeline.
- An admin dashboard, six scheduled jobs, and per-user AI cost tracking.
How it is built
Next.js 15 with the App Router and TypeScript, Supabase for database and auth, Tailwind and shadcn/ui for the interface. Docker deployment on Hetzner through Coolify and Traefik, driven by GitHub Actions. The AI models are interchangeable: prompts are versioned, evaluated, and the cost per request is measured before a feature opens to customers.
One thing that matters to a client: when a subscriber reported that the co-pilot created invisible sections, the issue was isolated, fixed across all 32 templates, and production data repaired the same day, with no downtime.
What it shows
That a complete product, with billed AI and paying customers, can be designed, built and run by one person who masters the whole chain. It is the same craft I apply to your projects: from scoping to production, then on to maintenance.