<?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: Darsh Bansal</title>
    <description>The latest articles on DEV Community by Darsh Bansal (@darsh_bansal_f2d0ba12759d).</description>
    <link>https://dev.to/darsh_bansal_f2d0ba12759d</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%2F4161223%2F215882e2-aba7-4f5c-87f2-b63dd16b28e4.jpg</url>
      <title>DEV Community: Darsh Bansal</title>
      <link>https://dev.to/darsh_bansal_f2d0ba12759d</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/darsh_bansal_f2d0ba12759d"/>
    <language>en</language>
    <item>
      <title>Hacktoberfest weekend Challenge Completed</title>
      <dc:creator>Darsh Bansal</dc:creator>
      <pubDate>Sun, 04 Oct 2026 22:23:15 +0000</pubDate>
      <link>https://dev.to/darsh_bansal_f2d0ba12759d/hacktoberfest-weekend-challenge-completed-3dcb</link>
      <guid>https://dev.to/darsh_bansal_f2d0ba12759d/hacktoberfest-weekend-challenge-completed-3dcb</guid>
      <description>&lt;h1&gt;
  
  
  LocalCV — Your Career Data. Your AI. Your Resume.
&lt;/h1&gt;

&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-weekend-2026-10-01"&gt;Hacktoberfest Weekend Challenge: Build for a Friend&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;I built &lt;strong&gt;LocalCV&lt;/strong&gt;, a local-first AI career management and resume generation application for a friend who was tired of maintaining different versions of their resume for every internship and job application.&lt;/p&gt;

&lt;p&gt;The problem was simple: their career information was scattered across certificates, project repositories, documents, portfolios, and old resumes. Every new job application meant manually deciding which projects, skills, certifications, and experiences were relevant.&lt;/p&gt;

&lt;p&gt;So I built a &lt;strong&gt;personal career vault&lt;/strong&gt; that stores everything in one place and uses local AI to turn that information into a targeted resume.&lt;/p&gt;

&lt;p&gt;The workflow is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Build your career profile once
            ↓
     Paste a job description
            ↓
      Local AI analyzes it
            ↓
Selects the most relevant evidence
            ↓
    Generates a tailored resume
            ↓
          Export PDF
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;LocalCV also turns the same career profile into a personal portfolio, so the user maintains their information in one place instead of updating a resume and portfolio separately.&lt;/p&gt;

&lt;p&gt;Most importantly, the career profile stays local.&lt;/p&gt;

&lt;p&gt;There is no account, no mandatory cloud database, and no requirement to send someone's entire professional history to a proprietary AI service.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/Darsh-Bansal/LocalCV.git" rel="noopener noreferrer"&gt;https://github.com/Darsh-Bansal/LocalCV.git&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The application can be run locally and used with a locally hosted Gemma model through Ollama.&lt;/p&gt;

&lt;h3&gt;
  
  
  The demo
&lt;/h3&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%2Fewy9xnmfdndrslhtkqi7.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%2Fewy9xnmfdndrslhtkqi7.png" alt=" " width="799" height="457"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I start with a single career profile containing projects, certifications, education, experience, and skills.&lt;/p&gt;

&lt;p&gt;Then I paste a job description.&lt;/p&gt;

&lt;p&gt;LocalCV analyzes the requirements and determines which parts of the existing profile are most relevant.&lt;/p&gt;

&lt;p&gt;For example, the same career profile can produce a different resume for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a Software Engineering internship&lt;/li&gt;
&lt;li&gt;an AI/ML internship&lt;/li&gt;
&lt;li&gt;a Quantitative Research internship&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The underlying facts don't change. What changes is &lt;strong&gt;which evidence is emphasized and how it is presented&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The AI is explicitly instructed not to invent qualifications, experience, projects, technologies, achievements, or metrics.&lt;/p&gt;

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

&lt;p&gt;LocalCV is a local-first web application built around &lt;strong&gt;Gemma&lt;/strong&gt;, Google's open-weight model, running locally through &lt;strong&gt;Ollama&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The architecture is intentionally simple:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;                    LocalCV
                       │
             ┌─────────┴─────────┐
             │                   │
        Career Vault          Portfolio
             │
          Local DB
             │
      Job Description
             │
             ▼
      Local AI Service
             │
       Gemma + Ollama
             │
             ▼
    Structured Resume Data
             │
             ▼
      Resume Renderer
             │
             ▼
          PDF
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The application uses a React-based interface and local browser storage for the career profile.&lt;/p&gt;

&lt;p&gt;Gemma isn't asked to blindly "write a resume."&lt;/p&gt;

&lt;p&gt;Instead, the application gives the model:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The user's existing career profile.&lt;/li&gt;
&lt;li&gt;The target job description.&lt;/li&gt;
&lt;li&gt;The desired resume style.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Gemma identifies the relevant requirements and selects the strongest evidence from the user's actual career history.&lt;/p&gt;

&lt;p&gt;The model then returns structured resume data, which the application renders into the final resume.&lt;/p&gt;

&lt;p&gt;This separation is intentional:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;AI decides what is relevant. The application decides what gets rendered.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That also gives us a strong defense against hallucinations. The model is instructed that the career profile is its only source of factual information and that it must never invent qualifications or achievements.&lt;/p&gt;

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

&lt;p&gt;This is the part of LocalCV that matters most to me.&lt;/p&gt;

&lt;p&gt;A resume contains surprisingly personal information:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;education&lt;/li&gt;
&lt;li&gt;employment history&lt;/li&gt;
&lt;li&gt;projects&lt;/li&gt;
&lt;li&gt;achievements&lt;/li&gt;
&lt;li&gt;certifications&lt;/li&gt;
&lt;li&gt;contact information&lt;/li&gt;
&lt;li&gt;career goals&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I didn't want the core experience of maintaining that information to depend on uploading it to a company's cloud infrastructure.&lt;/p&gt;

&lt;p&gt;With LocalCV, the career profile can stay on the user's computer and the AI can run locally through an open-weight model.&lt;/p&gt;

&lt;p&gt;That changes what is possible.&lt;/p&gt;

&lt;h3&gt;
  
  
  Privacy
&lt;/h3&gt;

&lt;p&gt;The user can use their complete career history without needing to send it to a third-party AI API.&lt;/p&gt;

&lt;h3&gt;
  
  
  Ownership
&lt;/h3&gt;

&lt;p&gt;The career database belongs to the user. It can be exported as JSON and moved to another installation.&lt;/p&gt;

&lt;h3&gt;
  
  
  Model freedom
&lt;/h3&gt;

&lt;p&gt;Because the AI layer is built around a local model rather than a proprietary API, the model can be replaced or experimented with.&lt;/p&gt;

&lt;h3&gt;
  
  
  Transparency
&lt;/h3&gt;

&lt;p&gt;The prompting and resume-selection logic are part of the application rather than an opaque service.&lt;/p&gt;

&lt;h3&gt;
  
  
  Offline potential
&lt;/h3&gt;

&lt;p&gt;Once the application, dependencies, and model are installed, the core workflow can operate locally without requiring an internet connection.&lt;/p&gt;

&lt;p&gt;For this particular project, open innovation isn't just a technical choice.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;It is part of the product's purpose.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The person whose career information is being processed should have a meaningful choice about where that information goes and which AI processes it.&lt;/p&gt;

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

&lt;p&gt;The most interesting part of building LocalCV wasn't generating text.&lt;/p&gt;

&lt;p&gt;It was figuring out &lt;strong&gt;where the AI should and shouldn't be involved&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;My first instinct was to have the model generate the entire resume.&lt;/p&gt;

&lt;p&gt;Instead, I ended up treating the model more like a reasoning layer:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Career Data → AI Selection → Structured Data → UI Rendering
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That makes the system easier to reason about and reduces the chance that a polished-looking resume contains something that the user never actually did.&lt;/p&gt;

&lt;p&gt;It also made the project feel less like an "AI wrapper" and more like an application where AI solves a specific problem.&lt;/p&gt;

&lt;h2&gt;
  
  
  My Agent Session
&lt;/h2&gt;

&lt;p&gt;&amp;lt;!-- Add your DevRelay agent session here if you saved one. --&amp;gt;&lt;/p&gt;

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

&lt;h3&gt;
  
  
  Best Use of Gemma
&lt;/h3&gt;

&lt;p&gt;LocalCV is built around Gemma as its local open-weight AI model.&lt;/p&gt;

&lt;p&gt;Gemma performs the core resume-tailoring task: analyzing a job description, matching it against the user's career profile, and selecting the most relevant evidence.&lt;/p&gt;

&lt;p&gt;The application is designed so that the AI remains useful without requiring a proprietary cloud model.&lt;/p&gt;




&lt;p&gt;Built for a friend who just wanted to stop rewriting the same resume over and over again.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Your career data. Your AI. Your resume.&lt;/strong&gt;&lt;/p&gt;

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