# Blog — Tanishq Bhosale > Engineering write-ups on building production LLM systems: grounding and > anti-fabrication, verify-and-repair loops, LLM evaluation, and self-hosted > AI infrastructure. Written by Tanishq Bhosale, Full Stack & AI Engineer, > Bangalore, India. ## How to read this site Every post exists in two formats with identical content: - **HTML** — `https://thetan.in/blog/` — the canonical URL. Cite this one. - **Markdown** — `https://thetan.in/blog/.md` — same text, no markup or interactive widgets. Cheaper to parse and to tokenise. It is marked `noindex` because it duplicates the HTML page; that is a search-listing directive only, and it is free to fetch, read and quote. The canonical HTML URL also answers with Markdown if you send `Accept: text/markdown`. Related: https://thetan.in/llms.txt (author, skills, experience, contact). ## Posts ### Your AI Resume Builder Is Lying About You I built ResumeOS to tailor a resume to any job description without inventing a single fact about you. This is the grounding architecture that makes that a guarantee instead of a hope — a judge model handed the whole profile as ground truth, a bounded verify-and-repair loop, and one rule: fail closed on correctness, fail open on cosmetics. - Canonical page (HTML): https://thetan.in/blog/resume-builder - Full text (Markdown): https://thetan.in/blog/resume-builder.md - Published: 2026-07-27 · Updated: 2026-07-27 - Reading time: ~14 min - Topics: LLM Engineering, Guardrails, FastAPI, LaTeX, Prompt Injection, Self-hosting - About the project: ResumeOS — https://resume.thetan.in Key takeaways: - AI resume builders fabricate skills because nothing in 'close the gap between this resume and this job' distinguishes repositioning real experience from inventing new experience. - ResumeOS grounds every generated resume against a judge model that receives the entire profile JSON as the allowed-fact set and must quote any offending claim verbatim. - Positioning is free, facts are not: paraphrase, reordering and repositioning all pass; a skill, employer, metric or date that appears nowhere in the profile is a violation. - A grounding check is only as good as the ground truth you hand it — passing a lossy profile extract made the judge flag 16 of 16 of a user's real facts as fabrications. - Fail closed on correctness, fail open on cosmetics: refuse to ship a resume that will not compile or still contains a fabricated fact; ship a slightly-over-one-page resume with a warning. - Cosine similarity is the wrong tool for a job-fit score — it measures vocabulary overlap rather than capability, and is least reliable in the middle of the range where the pass/fail threshold sits. - Model-produced edits are applied as {find, replace} pairs only when find occurs exactly once, so an edit can never silently corrupt the document. Questions this post answers: - What is ResumeOS? - How does ResumeOS stop AI from fabricating skills on a resume? - Why do AI resume builders add skills you don't have? - What is a verify and repair loop in an LLM pipeline? - Should you use embeddings for job description matching? - What makes a resume ATS-friendly? - How do you protect an LLM app from prompt injection in user input? - What stack does ResumeOS run on? ## Author Tanishq Bhosale — Full Stack & AI Engineer in Bangalore, India. Builds production LLM and agentic AI systems with LangGraph, FastAPI, React and React Native. Contact: bhosaletanishq4@gmail.com · https://thetan.in