<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Lekhraj Yadav</title>
    <description>The latest articles on DEV Community by Lekhraj Yadav (@lekhraj_yadav_2e018c8833f).</description>
    <link>https://dev.to/lekhraj_yadav_2e018c8833f</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4023736%2F7604f491-0fcf-4167-8565-7df1585b2594.png</url>
      <title>DEV Community: Lekhraj Yadav</title>
      <link>https://dev.to/lekhraj_yadav_2e018c8833f</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/lekhraj_yadav_2e018c8833f"/>
    <language>en</language>
    <item>
      <title>Career OS: An AI-Powered Career Operating System Born From Resume Chaos</title>
      <dc:creator>Lekhraj Yadav</dc:creator>
      <pubDate>Fri, 10 Jul 2026 11:28:59 +0000</pubDate>
      <link>https://dev.to/lekhraj_yadav_2e018c8833f/career-os-an-ai-powered-career-operating-system-born-from-resume-chaos-2k2m</link>
      <guid>https://dev.to/lekhraj_yadav_2e018c8833f/career-os-an-ai-powered-career-operating-system-born-from-resume-chaos-2k2m</guid>
      <description>&lt;p&gt;This is a submission for Weekend Challenge: Passion Edition&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;A few months into my job hunt, I realized I had a folder containing more than a dozen resume files — &lt;code&gt;resume_final.docx&lt;/code&gt;, &lt;code&gt;resume_final_v2.docx&lt;/code&gt;, &lt;code&gt;resume_REALLY_final.docx&lt;/code&gt; — and I genuinely couldn't tell which one represented the latest version of me. Every application meant copy-pasting bullets, re-ordering projects, and rewriting my summary from memory. I wasn't presenting myself anymore; I was managing chaos.&lt;/p&gt;

&lt;p&gt;That frustration is exactly why I built &lt;strong&gt;Career OS&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Career OS is an AI-powered &lt;strong&gt;career operating system&lt;/strong&gt; that flips the traditional model on its head. Instead of resumes being the source of truth, I maintain &lt;strong&gt;one validated professional profile&lt;/strong&gt;, which I call the &lt;strong&gt;Career Vault&lt;/strong&gt;, and everything else is generated from it.&lt;/p&gt;

&lt;p&gt;The Career Vault stores my entire professional identity across seven validated modules:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Personal Information&lt;/li&gt;
&lt;li&gt;Skills&lt;/li&gt;
&lt;li&gt;Education&lt;/li&gt;
&lt;li&gt;Experience&lt;/li&gt;
&lt;li&gt;Projects&lt;/li&gt;
&lt;li&gt;Certifications&lt;/li&gt;
&lt;li&gt;Achievements&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;On top of this single source of truth, I built four core capabilities:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;ATS Resume Builder&lt;/strong&gt; — Generates an ATS-friendly, single-column resume with live scoring and browser print/PDF export.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Smart Apply&lt;/strong&gt; — Paste a job description and receive a deterministic match score, matched and missing keywords, and recommendations on which projects and experiences to highlight. No AI is required for this analysis.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;AI Resume Optimizer&lt;/strong&gt; — Suggests stronger resume bullets while ensuring the original data remains untouched.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;AI Cover Letter Generator &amp;amp; Interview Prep&lt;/strong&gt; — Generates tailored cover letters and personalized technical, HR, resume, and project interview questions using Google Gemini.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;There was one rule I refused to break:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;The AI never overwrites my Career Vault.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Every AI-generated suggestion lives in a session-only overlay that I can explicitly accept or reject. Refresh the page, and it's gone. My original data always remains intact.&lt;/p&gt;

&lt;p&gt;For the first time in this entire process, I finally have &lt;strong&gt;one version of my professional story that I genuinely trust&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;🎥 &lt;strong&gt;Full walkthrough (2–3 min video):&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://drive.google.com/drive/folders/1PYghTbev80ds-WfbAz5GROI0Fa0Pb6vO?usp=sharing" rel="noopener noreferrer"&gt;Watch the Career OS Demo&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;A note on access:&lt;/strong&gt; The live deployment is intentionally private — it holds my real, personal career data. So instead of a public URL, the video above walks through every feature end to end, and the full source code and engineering documentation are public (linked below).&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Here's a look at the app:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dashboard&lt;/strong&gt; — a SaaS-style home with sidebar navigation and quick actions.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxuot3ldrj9otjdurt3u0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxuot3ldrj9otjdurt3u0.png" alt="Career OS Dashboard" width="800" height="363"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Resume Builder&lt;/strong&gt; — a read-only render of the Vault as an ATS-safe template, with a live score panel on the side.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1mft3p5wnrac5ts7i6i4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1mft3p5wnrac5ts7i6i4.png" alt="Career OS Resume Builder" width="799" height="418"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Smart Apply&lt;/strong&gt; — paste a job description and get a deterministic match score, keyword analysis, and concrete recommendations.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0vw3jpqvyjsvml7wpp58.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0vw3jpqvyjsvml7wpp58.png" alt="Career OS Smart Apply" width="799" height="369"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AI Resume Optimizer&lt;/strong&gt; — suggestions I accept or reject, affecting only the session preview and never my saved data.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxrk7stfktmdg2ynx0pee.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxrk7stfktmdg2ynx0pee.png" alt="Career OS AI Resume Optimizer" width="800" height="737"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AI Cover Letter &amp;amp; Interview Prep&lt;/strong&gt; — tailored to the pasted job description.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1rja5oerjozwzasvzoku.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1rja5oerjozwzasvzoku.png" alt="Career OS AI Cover Letter" width="800" height="618"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F35m9wz7es1pw7okpahfh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F35m9wz7es1pw7okpahfh.png" alt="Career OS AI Interview Prep" width="800" height="576"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Code
&lt;/h2&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/LEKHRAJYADAV8190" rel="noopener noreferrer"&gt;
        LEKHRAJYADAV8190
      &lt;/a&gt; / &lt;a href="https://github.com/LEKHRAJYADAV8190/Career-OS-AI-Powered-Career-Management-Platform-Weekly-Hacton-" rel="noopener noreferrer"&gt;
        Career-OS-AI-Powered-Career-Management-Platform-Weekly-Hacton-
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Career OS&lt;/h1&gt;
&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Your AI-Powered Career Operating System&lt;/h3&gt;
&lt;/div&gt;
&lt;p&gt;Store your professional profile once. Build ATS-friendly resumes. Analyze every job description with deterministic matching — then tailor applications with Gemini-powered optimization, cover letters, and interview preparation.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; This repository is intended for portfolio demonstration and technical review. The deployed application is private because it contains personal career data.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a href="https://nextjs.org/" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/d33081ba353f8bb15bec0d1741b2666f3b83fda2000a11f5c986fb868577a6cc/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4e6578742e6a732d31362d626c61636b3f7374796c653d666f722d7468652d6261646765266c6f676f3d6e6578742e6a73" alt="Next.js"&gt;&lt;/a&gt;
&lt;a href="https://react.dev/" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/b633b921b026bc7adc43010e08acaaea4b4c6a06264197f2a0a50f70fc94129f/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f52656163742d31392d3631444146423f7374796c653d666f722d7468652d6261646765266c6f676f3d7265616374266c6f676f436f6c6f723d626c61636b" alt="React"&gt;&lt;/a&gt;
&lt;a href="https://www.typescriptlang.org/" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/b7fbd1ac133b18867505a43ca849fbf3fcf2042622067586e39e680fb585e564/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f547970655363726970742d352d3331373843363f7374796c653d666f722d7468652d6261646765266c6f676f3d74797065736372697074266c6f676f436f6c6f723d7768697465" alt="TypeScript"&gt;&lt;/a&gt;
&lt;a href="https://www.prisma.io/" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/595a562b93f922749f6cba26859f1703629bd86edffc141dfc6e1f4a6d6852ef/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f507269736d612d372d3244333734383f7374796c653d666f722d7468652d6261646765266c6f676f3d707269736d61" alt="Prisma"&gt;&lt;/a&gt;
&lt;a href="https://supabase.com/" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/ee43305649f662488fad36252bb8fd956e3f3e9e111714d9c7e8d2555eeae7b9/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f506f737467726553514c2d53757061626173652d3431363945313f7374796c653d666f722d7468652d6261646765266c6f676f3d706f737467726573716c266c6f676f436f6c6f723d7768697465" alt="PostgreSQL"&gt;&lt;/a&gt;
&lt;a href="https://ai.google.dev/" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/2df41daa6684b6918aaf8489274f1a0253f98a93b0643379045fde711252648f/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f47656d696e692d41492d3845373542323f7374796c653d666f722d7468652d6261646765266c6f676f3d676f6f676c65" alt="Gemini"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Overview&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;Career OS is a full-stack career management platform built with &lt;strong&gt;Next.js 16&lt;/strong&gt; and &lt;strong&gt;PostgreSQL&lt;/strong&gt;. Instead of maintaining separate resume files for every application, you keep a single validated profile in &lt;strong&gt;Career Vault&lt;/strong&gt; and generate resumes, match scores, and AI-assisted application materials from that one source of truth.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Core idea:&lt;/strong&gt; Career Vault stores the data. Resume Builder renders it. Smart Apply analyzes job fit. AI features help you tailor — without ever overwriting your vault.&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Features&lt;/h2&gt;

&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;✔ &lt;strong&gt;Career Vault&lt;/strong&gt; — seven validated modules (personal info, skills, education, experience, projects, certifications, achievements)&lt;/li&gt;
&lt;li&gt;✔ &lt;strong&gt;ATS&lt;/strong&gt;…&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/LEKHRAJYADAV8190/Career-OS-AI-Powered-Career-Management-Platform-Weekly-Hacton-" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;The project is public for portfolio and technical review:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Repository:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://github.com/LEKHRAJYADAV8190/Career-OS-AI-Powered-Career-Management-Platform-Weekly-Hacton-" rel="noopener noreferrer"&gt;https://github.com/LEKHRAJYADAV8190/Career-OS-AI-Powered-Career-Management-Platform-Weekly-Hacton-&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The stack:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Next.js 16&lt;/strong&gt; (App Router, Server Actions — no separate REST API layer)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;React 19&lt;/strong&gt; + &lt;strong&gt;Tailwind CSS 4&lt;/strong&gt; + &lt;strong&gt;shadcn/ui&lt;/strong&gt; (on Base UI)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;TypeScript&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Prisma 7&lt;/strong&gt; with &lt;code&gt;@prisma/adapter-pg&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;PostgreSQL&lt;/strong&gt; (Supabase)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Zod&lt;/strong&gt; + &lt;strong&gt;react-hook-form&lt;/strong&gt; for validation&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Google Gemini&lt;/strong&gt; (&lt;code&gt;@google/generative-ai&lt;/code&gt;) for the AI features&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I organized everything around &lt;strong&gt;feature-based modules&lt;/strong&gt; under &lt;code&gt;features/&lt;/code&gt;, where each domain (skills, projects, smart-apply, cover-letter, etc.) owns its own &lt;code&gt;actions/&lt;/code&gt;, &lt;code&gt;components/&lt;/code&gt;, &lt;code&gt;schemas/&lt;/code&gt;, and — where relevant — &lt;code&gt;engine/&lt;/code&gt; or &lt;code&gt;providers/&lt;/code&gt;. It keeps each part of the app self-contained and easy to reason about.&lt;/p&gt;

&lt;p&gt;There's also a full &lt;strong&gt;Engineering Handbook&lt;/strong&gt; available here:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/LEKHRAJYADAV8190/Career-OS-AI-Powered-Career-Management-Platform-Weekly-Hacton-/blob/main/docs/Career-OS-Engineering-Handbook.md" rel="noopener noreferrer"&gt;https://github.com/LEKHRAJYADAV8190/Career-OS-AI-Powered-Career-Management-Platform-Weekly-Hacton-/blob/main/docs/Career-OS-Engineering-Handbook.md&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The handbook documents every module, the scoring algorithms, architectural decisions, and — honestly — the known implementation gaps.&lt;/p&gt;


&lt;h1&gt;
  
  
  How I Built It
&lt;/h1&gt;

&lt;p&gt;I want to be honest about what drove the hard parts, because the engineering decisions here weren't just technical — they were personal.&lt;/p&gt;
&lt;h3&gt;
  
  
  I refused to let an AI hallucinate my career.
&lt;/h3&gt;

&lt;p&gt;The easy path for Smart Apply would have been to throw the job description at an LLM and ask, &lt;em&gt;"How good a match is this?"&lt;/em&gt; I didn't, because I'd seen AI confidently invent skills, and the whole point was to &lt;strong&gt;trust&lt;/strong&gt; this tool with my real profile.&lt;/p&gt;

&lt;p&gt;So Smart Apply's core analysis is &lt;strong&gt;100% deterministic&lt;/strong&gt;, built on a curated skill dictionary with aliases and categories. The matches are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Explainable&lt;/li&gt;
&lt;li&gt;Reproducible&lt;/li&gt;
&lt;li&gt;Free to run&lt;/li&gt;
&lt;li&gt;Never made up&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The scoring in &lt;code&gt;relevance.ts&lt;/code&gt; blends two signals so entries with similar match counts don't collapse onto identical scores:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;blended&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;
  &lt;span class="nx"&gt;SATURATION_BLEND_WEIGHT&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nx"&gt;saturationComponent&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt;
  &lt;span class="nx"&gt;COVERAGE_BLEND_WEIGHT&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nx"&gt;coverageComponent&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;score&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;round&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;min&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;blended&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Saturation rewards a few strong, exact technology matches, while coverage is a smooth matched-to-required ratio.&lt;/p&gt;

&lt;p&gt;Category weights make sure a &lt;strong&gt;Docker&lt;/strong&gt; match counts more than a &lt;strong&gt;Communication&lt;/strong&gt; match, because a job asking for communication is satisfied by almost any resume, while a project tagged Docker is unambiguously relevant.&lt;/p&gt;

&lt;p&gt;Aliases mean a bullet saying &lt;strong&gt;NLP&lt;/strong&gt; still matches a job description requiring &lt;strong&gt;Natural Language Processing&lt;/strong&gt;.&lt;/p&gt;




&lt;h3&gt;
  
  
  The overlay pattern is where the trust lives.
&lt;/h3&gt;

&lt;p&gt;When the Gemini optimizer suggests a better bullet, it never touches the database.&lt;/p&gt;

&lt;p&gt;The suggestion goes into a client-side overlay keyed by:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;experienceId:bulletIndex
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A merge function applies it only to the preview.&lt;/p&gt;

&lt;p&gt;The Cover Letter and Interview Prep features then read from that same overlay-enriched snapshot.&lt;/p&gt;

&lt;p&gt;This was non-negotiable for me:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;AI is allowed to help me tailor my applications, but it is never allowed to quietly rewrite the truth about who I am.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h3&gt;
  
  
  Google Gemini powers the AI features.
&lt;/h3&gt;

&lt;p&gt;All three AI features:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Resume Optimizer&lt;/li&gt;
&lt;li&gt;Cover Letter Generator&lt;/li&gt;
&lt;li&gt;Interview Preparation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;run server-side through &lt;strong&gt;Google Gemini&lt;/strong&gt; via &lt;code&gt;@google/generative-ai&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Free-tier quotas are brutal, so my Gemini configuration iterates through a fallback chain of models, continuing past:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;429&lt;/code&gt; quota errors&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;404&lt;/code&gt; unavailable-model errors&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It even parses the API's &lt;strong&gt;retry in Xs&lt;/strong&gt; hint to tell the user exactly how long to wait.&lt;/p&gt;

&lt;p&gt;Every provider requests JSON output and defensively strips markdown fences before parsing, because models absolutely love wrapping JSON in code blocks.&lt;/p&gt;




&lt;h3&gt;
  
  
  A few smaller engineering battles
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Supabase pooler URL at runtime and a separate direct URL for Prisma CLI operations to avoid prepared-statement issues.&lt;/li&gt;
&lt;li&gt;A guard in &lt;code&gt;lib/db/prisma.ts&lt;/code&gt; that rebuilds stale hot-reloaded Prisma clients.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;ResumePageFrame&lt;/code&gt; measures content and applies CSS &lt;code&gt;zoom&lt;/code&gt; instead of &lt;code&gt;transform: scale&lt;/code&gt;, so the browser's print engine sees a true single-page resume.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  I also documented the gaps honestly.
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Authentication isn't wired up yet.&lt;/li&gt;
&lt;li&gt;The data model is currently single-tenant.&lt;/li&gt;
&lt;li&gt;A few reorder actions exist without a UI.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Writing those things down keeps me honest about what &lt;strong&gt;done&lt;/strong&gt; actually means.&lt;/p&gt;




&lt;h1&gt;
  
  
  What I Learned
&lt;/h1&gt;

&lt;p&gt;Building Career OS taught me that the best projects come from solving your own problems.&lt;/p&gt;

&lt;p&gt;I learned:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Product thinking matters more than feature building.&lt;/li&gt;
&lt;li&gt;Deterministic systems are sometimes more trustworthy than AI.&lt;/li&gt;
&lt;li&gt;AI should assist users, not silently modify their data.&lt;/li&gt;
&lt;li&gt;Building software becomes much easier when you deeply understand the problem yourself.&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  Prize Categories
&lt;/h1&gt;

&lt;p&gt;I'm submitting Career OS to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;❤️ &lt;strong&gt;Passion Edition&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;🤖 &lt;strong&gt;Best Use of Google AI&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All of the AI features — Resume Optimizer, Cover Letter Generator, and Interview Preparation — are powered by &lt;strong&gt;Google Gemini&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;This isn't a weekend prototype or a challenge project I built in a hurry.&lt;/p&gt;

&lt;p&gt;It's the tool I built to survive my own job hunt, and it's the one I still open whenever I apply somewhere.&lt;/p&gt;

&lt;p&gt;It turned a folder full of anxious, contradictory resume files into:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a single profile I trust,&lt;/li&gt;
&lt;li&gt;matching I can actually explain,&lt;/li&gt;
&lt;li&gt;and AI help that never gets to rewrite my story without my permission.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Next, I want to add authentication so other job seekers can keep their own Career Vault.&lt;/p&gt;

&lt;p&gt;If you've ever had a folder full of:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;resume_final.docx
resume_final_v2.docx
resume_REALLY_final.docx
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;then you probably understand exactly why I built this.&lt;/p&gt;

&lt;p&gt;Career OS started as a tool for my own career journey, but I hope it eventually helps other students feel a little less overwhelmed by theirs.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>weekendchallenge</category>
      <category>googleaichallenge</category>
      <category>ai</category>
    </item>
  </channel>
</rss>
