Inspiration
Job recruitment is fast, noisy, and very ATS-driven. I kept copy-pasting job description into editors, manually rewriting bullets, worrying about dialect, and formatting rules that trip up parsers. Then, frustration hit me hard. I wanted a private, fast, and practical tool that turns a job description into quantified, ATS-friendly bullets, proofreads safely, and exports a clean CV-without sending all my text to the cloud.
What it does
CV Foundry, a client-side resume builder that uses Chrome's on-device AI with a Gemini proxy fallback when needed. ATS check warns on tables, graphics, data patterns, and missing sections. There is an integrated country packs which are region specific sections, spelling, date formats; auto augments sections. It proofreads complete CV, checking grammar plus dialect normalisation with guardrails so headings and roles don't get mangled. It automatically pipelines skills section.
How we built it
Built CV Foundry as a privacy-first, client-side web app that leans on Chrome's on-device AI(Prompt API, Summariser, Writer, Rewriter, Proofreader, Translator, Language Detector) with a lightweight Gemini proxy only when the device models aren't available. The front end is vanilla ES modules(no heavy framework) organised around a clean CV data model(profile, experience, education, skills, projects, certifications, publications, patents) and a deterministic DOM renderer. Layered in a robust tooling pipeline: JSON schema-constrained prompts for STAR bullet generation, strict sanitisers to strip LLM meta-text and rogue punctuation, debounced recomputation for snappy input, and a small preload/status widget that shows live model availability. Export is HTML-first with print tuned CSS for crisp A4 PDFs. A country pack system swaps section order, date formats, and spelling dialects per region. Skill parsing uses an AI normaliser that preserves multi-word terms and then groups them with either on-device AI, a cloud fallback, or a deterministic heuristic.
Challenges we ran into
Early proofreads sometimes "helpfully" rewrote titles or inserted meta phrases("Here's the corrected text"). I fixed this with role/title sanitizers, meta-text stripping, word-cap guards, and a three-stage proofread pipeline that returns only corrected content. I struggled with model availability differences across Chrome builds: some devices reported LanguageDetector as unsupported even when it was present. I solved it with defensive capability checks, a consistent status bar, and graceful fallbacks. Skill tokenization initially split phrases and duplicated noisy terms; tightened the prompt, added JSON validation, and post-normalized casing. Finally, PDF output needed careful print CSS to avoid clipped margins and shadowed containers.
Accomplishments that we're proud of
CV Foundry turns a pasted job description into clean, quantified STAR bullets that blend the JD with your actual experience--without shipping your entire resume to a server. The app's ATS linting helps users avoid the most common parsing pitfalls. Perhaps most satisfying, the on-device model preload plus availability widget makes the tool feel instant and privacy-respecting.
What we learned
What I learnt is that on-device LLMs are fast and private, but they require explicit guardrails, schema-constrained outputs, careful post-processing and strict sanitization matter more than clever prose in prompts. I noticed how resume internationalization is more than translation--dialect normalization, date formats, and section order genuinely affect ATS outcomes. Finally, a small set of UX touches--debounced inputs, live availability, and print first HTML--pays huge dividends in perceived quality.
What's next for CV Foundry
Next step is to make CV Foundry rock-solid and job-ready. Harden the AI chains with caching, timeouts and retires, add a safe proofread that never touches names/companies and a diff/undo for all AI edits, streamline UX with inline validators, a live page-length meter, drag-to-reorder sections and one-click"Tailor to job description". Expand imports/exports such as LinkedIn, GitHub, Google Docs in PDF/HTML/DOCX. An ATS simulator that flags parseability and keyword gaps, ship a fast PWA and wrap it with capacitor for iOS/Android, broaden country/language packs and tighten privacy with local-first processing, short retention options and server-side key proxying. Crucially, CV Foundry will be available for all career domains with domain specific packs-engineering, doctors/healthcare, academia/research, law, finance, product/sales, and etc, each offering tailored section orders, phrasing patterns, recruiter-validated themes and metrics that match the field.
Built With
- css
- gemini
- html5
- javascript
- languagedetector
- promptapi
- proofreader
- rewriterapi
- summarizerapi
- translatorapi
- writerapi
Log in or sign up for Devpost to join the conversation.