yagotob.io
Projects Experience Writing
← Projects

Good CV Maker

Side Project 2026
Good CV Maker

AI-powered CV editor that solves two problems: making LaTeX-quality CVs accessible without learning LaTeX, and tailoring a CV to a specific job in minutes.

ReactFastAPIAWS BedrockLaTeX

The Two Problems

  1. LaTeX is locked behind a language. LaTeX produces by far the best-looking, most consistent CVs, but writing raw .tex is a barrier most people won’t cross for a document they touch twice a year.
  2. Tailoring a CV per application doesn’t scale. Rewriting your CV for every job description is the single highest-leverage thing you can do for your applications, and the thing almost nobody actually does, because doing it properly by hand is tedious.

Good CV Maker exists to solve both: a WYSIWYG editor that compiles to LaTeX behind the scenes, so you get professional typesetting without touching a single LaTeX command, and an AI-powered “Tune for a role” flow that does the tailoring work for you against any job description.

How It Works

  1. Import: upload a PDF, DOCX or JSON CV. AWS Bedrock (Claude) extracts and structures the content straight into the editor, so you’re never starting from a blank page.
  2. Direct edit: every field on the rendered page (name, job title, bullet points, dates) is directly editable, with drag-to-reorder for sections and entries and autosave every few seconds. What you see is the CV, at print resolution.
  3. Tune for a role: paste a job description to get a quantitative match score, then review AI-generated, field-scoped suggestions one card at a time, accepting or skipping each before saving.
  4. Export: the structured CV data renders into LaTeX (Jinja2 templates) and compiles server-side with pdflatex/xelatex into a downloadable PDF.

Architecture

  • Frontend: React 19 + TypeScript SPA built with Vite, CSS Modules, and a feature-based structure (direct-edit, dashboard, tune flow) with custom hooks for autosave, tailoring and change highlighting.
  • Backend: Python FastAPI service split into AI (Bedrock), CV extraction, LaTeX compilation and storage layers, with Pydantic-validated routes and dedicated prompts for match analysis, tailoring and per-section bullet assist.
  • Infrastructure: an AWS CDK stack: CloudFront in front of an S3-hosted SPA, proxying /api/* to a single EC2 instance running FastAPI and LaTeX in Docker, with DynamoDB for storage and Cognito for auth. Deliberately minimal, with no load balancer and no autoscaling, to keep hosting costs around $14/month.

What “Agentic” Means Here

Rather than a multi-agent orchestration framework, the AI is split into purpose-built prompts running on AWS Bedrock: a match analysis step that scores a CV against a job description and surfaces missing requirements, a tailoring step that proposes field-scoped edits with alternatives, an assist step for per-section bullet generation, and an extraction step that turns unstructured PDF/DOCX CVs into clean structured data. Claude Haiku handles the cost-sensitive steps; Claude Sonnet handles the heavier reasoning.

What I Learned

Making an AI feature feel trustworthy is harder than making it work. Users need to see exactly what changed and why before they accept it, hence the one-suggestion-at-a-time review flow instead of a black-box “auto-tailor” button. On the infra side, resisting the urge to reach for Fargate/ALB/autoscaling by default and sizing the deployment to the actual traffic (a single EC2 instance behind CloudFront) cut hosting costs by roughly 75% versus the initial setup, with no loss of reliability for a personal-scale project.

Want to work together or just say hello?

yagotobiosouto@gmail.com →