<?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: Subhasish Das</title>
    <description>The latest articles on DEV Community by Subhasish Das (@nikshaan).</description>
    <link>https://dev.to/nikshaan</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%2F4157019%2Fad203cd7-d378-46e2-b96b-d24f925953be.jpg</url>
      <title>DEV Community: Subhasish Das</title>
      <link>https://dev.to/nikshaan</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/nikshaan"/>
    <language>en</language>
    <item>
      <title>Rizzume: tailor your resume to any job with Gemma, without your data leaving your laptop</title>
      <dc:creator>Subhasish Das</dc:creator>
      <pubDate>Sun, 18 Oct 2026 17:08:21 +0000</pubDate>
      <link>https://dev.to/nikshaan/rizzume-tailor-your-resume-to-any-job-with-gemma-without-your-data-leaving-your-laptop-5ehn</link>
      <guid>https://dev.to/nikshaan/rizzume-tailor-your-resume-to-any-job-with-gemma-without-your-data-leaving-your-laptop-5ehn</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-week2-2026-10-18"&gt;Hacktoberfest Open-Source AI Challenge Week 2: Side Hustle&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;Every job application wants a slightly different resume, and tailoring one by hand is slow. The quick fix is pasting your whole history into a chatbot, which hands your phone number and work history to a server you don't control.&lt;/p&gt;

&lt;p&gt;Rizzume keeps your projects and skills in one profile. You paste a job post, and a Gemma model running on your own laptop picks the most relevant projects, rewrites the bullets in the job's wording, and gives you a one-page, ATS-friendly PDF.&lt;/p&gt;

&lt;p&gt;Who would pay: students and early-career developers who apply to many roles, and college placement cells that can't send student data to third-party AI tools. I would sell it as a small one-time student pack, somewhere around $3 to $5. A local model costs nothing per resume, so a small flat price is still profit. A paid API charges per request, which makes a cheap one-off product hard to run.&lt;/p&gt;

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

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/gFltpTIEd44" width="710" height="399"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Note: the video shows the real interface. For the recording I used a scripted stand-in reply for the model step, so the resume text in the video is not Gemma's output. The real app runs on Gemma through Ollama, as described below.&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/Nikshan63" rel="noopener noreferrer"&gt;
        Nikshan63
      &lt;/a&gt; / &lt;a href="https://github.com/Nikshan63/Rizzume" rel="noopener noreferrer"&gt;
        Rizzume
      &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;Rizzume (formerly ResumeFit)&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;Store your projects and skills once. Paste a job description. Get a one-page, ATS-friendly resume tailored to that role
The model is an &lt;strong&gt;open-weight Gemma model running locally through Ollama&lt;/strong&gt;, so your personal data never leaves the computer running the app.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;How it works&lt;/h2&gt;
&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;You enter your details once (name, contact, skills, projects, education, optional photo). They are saved as a profile.&lt;/li&gt;
&lt;li&gt;You paste a job description.&lt;/li&gt;
&lt;li&gt;The local model picks the most relevant projects, rewrites the bullets in the job's vocabulary, and orders your skills.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Guardrails check the model's output&lt;/strong&gt; before you see it: invented skills and projects are discarded, and any bullet or summary containing a number that is not in your stored facts is dropped.&lt;/li&gt;
&lt;li&gt;You edit anything you like, check the ATS panel, and download a one-page PDF.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The page also shows a &lt;strong&gt;rizz meter&lt;/strong&gt; (how many of the job's tech skills…&lt;/p&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/Nikshan63/Rizzume" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Open-source AI:&lt;/strong&gt; Gemma (&lt;code&gt;gemma3:4b&lt;/code&gt;), an open-weight model, served locally by Ollama. FastAPI backend, ReportLab for the PDF, a single-page vanilla JS interface.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The model only sees my stored facts and the job text,&lt;/strong&gt; and must answer in JSON: chosen projects, ordered skills, rewritten bullets, a short summary.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Guardrails run after the model.&lt;/strong&gt; Unknown projects and skills are discarded, and any bullet or summary containing a number I never wrote is dropped. If the model returns garbage, a keyword-matching fallback picks the projects.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Rizz score:&lt;/strong&gt; how many of the job's tech skills you have, computed by code, not guessed by the AI. A gap list shows the skills you're missing instead of hiding them.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ATS-friendly on purpose, and checked:&lt;/strong&gt; one page, single column, real text, standard headings. After each run the app reads its own PDF back like a parser would and reports whether the name, email, phone and headings come through.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Optional passport photo,&lt;/strong&gt; cropped locally. It is a separate image in the corner, so the text layer is unaffected. Required fields (name, email, phone, location, a skill, a project, education) must be filled before a resume is built.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Live counter:&lt;/strong&gt; shows how many people are using the running copy and for how many different job posts. It stores only counts and hashes, never resumes or job text.&lt;/li&gt;
&lt;li&gt;46 automated tests cover the guardrails, photo handling, ATS check, validation and the counter.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A real bug:&lt;/strong&gt; my first version crashed with an Internal Server Error on some job posts, most likely because the model returned empty or oddly shaped fields. I fixed it by cleaning up the model's output before using it, and by showing the real error on screen instead of a vague message.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I ran everything on a MacBook Air with no GPU server. I did not run a formal benchmark, so I am not claiming a speed number.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Does Open Innovation Matter?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Privacy is the product.&lt;/strong&gt; A resume is personal data. With an open model running locally, nothing leaves the machine.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No cost per resume.&lt;/strong&gt; That is what makes a cheap, flat-price product possible.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Control.&lt;/strong&gt; Because I run the model, I could force JSON output and add checks around it. The guardrails that remove invented skills and numbers only work because I control the whole pipeline.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Where it worked well:&lt;/strong&gt; a 4B model on a normal laptop produced usable structured output end to end. Picking projects and rewriting bullets from my own facts, with the guardrails behind it, was enough to give a clean one-page resume.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Where it fell short:&lt;/strong&gt; a small model is less predictable. It broke my first version with badly shaped output, which is why I added the cleanup step and the guardrails. It also runs slower than a hosted API would on a laptop, so this is a tool for people who value privacy over speed.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  My First User
&lt;/h2&gt;

&lt;p&gt;No one besides me has used it yet. I built the live counter so the first real users can see themselves counted.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prize Categories
&lt;/h2&gt;

&lt;p&gt;Gemma (the app runs on &lt;code&gt;gemma3:4b&lt;/code&gt; through Ollama). I did not use MongoDB Atlas or a .tech domain.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I would build next
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Match job requirements to projects with embeddings instead of keyword matching.&lt;/li&gt;
&lt;li&gt;Parse a job post from a link or screenshot.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
    </item>
  </channel>
</rss>
