What I Built
If you are a university student, you probably know this loop:
The problem isn't effort. It's feedback. Nobody tells you which skills you're missing, which project you should lead with, or what the interviewer will ask.
The obvious fix is to paste your CV into an AI chatbot. But a CV holds your name, phone number, home address, university and GPA. My friend didn't want to send that to a server they can't see inside. Honestly, neither would I.
The solution: JobPilot ๐งญ
JobPilot is a private AI career coach that runs entirely on your own laptop. You give it your CV and a job you want, and it tells you exactly what to fix before you apply.
- Your CV never leaves your laptop. The AI is Gemma 3, running locally with Ollama.
- Free. No subscription, no API bill, no sign-up.
- Works offline. Everything except live job search works with Wi-Fi off.
- Honest. It doesn't invent skills, experience or fake numbers, and the code checks that (more on that below).
- Made for Sri Lankan students. It understands internships, trainee roles, GPA, A/L results, and keeps the English simple.
To show what it does, I'll use a sample student, Nimali: a Computer Science undergrad at UCSC with three projects (a React club website, a paddy price predictor in Python, and a Java library system). She's applying for a Software Engineering Intern role in Colombo.
1. ๐ฏ Match & gaps: "How close am I?"
One click compares her CV with the job.
First, an instant skills match appears. No AI here, just a fast keyword scan: she has 4 of the 17 skills the job lists (JavaScript, SQL, React, Git).
Then Gemma reads both documents properly and gives:
An overall fit score (65%) and a two-line summary
Her strengths, with proof copied word for word from her CV, like JavaScript ยท "Languages: Python, Java, JavaScript, SQL"
Missing skills ranked by importance, each with a concrete way to learn it. Top of the list: Node.js & Express.js (HIGH): "Build a simple API using Node.js and Express.js with a small dataset."
CV edits that only use things she actually did
Five interview questions tailored to her projects and this job
Match and gaps: keyword match, AI fit score, strengths with CV quotes, ranked skill gaps and interview questions
2. ๐ค Interview practice: "Would that answer land?"
Click Practice on any question, type your answer the way you'd say it, and JobPilot plays the interviewer.
Nimali answered a question about her Library Management System with "...The hard part was the tables for borrowing, but we fixed it." JobPilot gave her a 4/10, and told her exactly why:
"Needs more detail: what tables did you design? What were the key fields?"
"Avoid vague phrasing like 'we fixed it'."
Then it wrote a stronger answer in her own voice, using only her CV and what she said.
Interview practice: tailored questions, the student's answer, a 4/10 score, what worked, how to improve and a stronger answer
3. โ๏ธ Rewrite: from "made a website" to a CV bullet
Most students describe projects like this:
Made a website for our university club where members can register for events and get reminders. Used React and Firebase.
JobPilot turns it into a polished description and CV bullets like "Utilized Firebase to manage event registrations and send automated reminders to club members."
The important part is what it doesn't do. It never makes up numbers. Instead, it asks the student to fill in the truth: "Quantify the impact, for example 'Supported [X] club members'."
Rewrite: a one-line project description turned into a polished paragraph, CV bullets and suggestions
4. ๐ฌ Ask JobPilot: a coach who has read your CV
A chat that already knows your CV and the job. The answer streams in word by word, so you're not staring at a spinner.
I asked "Which of my projects should I highlight for this job?" and it picked Campus Event Hub (the React one, matching the job's stack) and explained why the other two are weaker fits for this particular role.
Ask JobPilot chat recommending the Campus Event Hub project for a React internship
5. ๐ Find jobs: "What should I learn next?"
This is the feature I'm proudest of. Search for real jobs (live from Google Jobs via SerpApi), and JobPilot:
Ranks every posting by how well it matches your CV, and shows what's missing for each one.
Counts which skills employers are asking for across all the postings. Blue bars are on your CV; yellow bars aren't yet.
Asks Gemma to turn that chart into a learning plan: the most-requested skills you're missing, each with a first step you can do this weekend.
When I searched "software engineering intern" in Sri Lanka, it pulled 17 real postings (Softmint, LSEG, Fidenz, Codimite and more). The results were eye-opening:
Problem Solving was asked for in 10 of 17 postings, more than any programming language.
JavaScript and React were in 8 of 17.
Gemma's plan for Nimali: learn OOP (6 of 17), then Node.js (5 of 17), then Agile (4 of 17), and put Python, Java and SQL at the top of her CV.
That's the kind of advice a senior would give you, except it's based on this week's real job posts.
Find jobs: employer skill demand chart across 17 live postings, a Gemma learning plan, and job cards ranked by CV match
Code
TenathDilusha
/
jobpilot
Private AI career coach for Sri Lankan students. Compares your CV with a job, finds skill gaps, and preps you for interviews, using Gemma running locally.
JobPilot: Career Assistant for Sri Lankan Students
JobPilot is a private AI career coach for Sri Lankan university students applying for internships and entry-level jobs. Upload your CV, paste a job description, and ask:
- "What skills am I missing for this internship?"
- "Rewrite my project description."
- "What questions might they ask me?"
- "Compare my CV with this job description."
Everything runs on your own laptop with an open-weight Gemma model served by Ollama Your CV is never uploaded to a cloud AI service.
Features
| Tab | What it does |
|---|---|
| Match & gaps | Instant keyword skill match, then Gemma's analysis: fit score, strengths with evidence quoted from the CV, missing skills ranked by importance with how to learn each, CV edits, and tailored interview questions |
| Rewrite | Turns a rough project description into a polished paragraph and action-verb CV bullets, using [X%] placeholders instead of invented numbers |
| Interview practice | Answer a question |
MIT licensed. Python + FastAPI backend, plain HTML/CSS/JavaScript frontend, 29 tests. Setup is three commands (see the README).
How I Built It
Here's the whole system on one page:
JobPilot architecture: CV and job description go into the laptop, through text extraction and a skill scanner, into Gemma 3 in Ollama, out to five features. SerpApi only receives the search words.
Backend: FastAPI. It reads PDFs (pypdf) and Word files (python-docx), and exposes one endpoint per feature.
AI: Gemma 3 through Ollama's /api/chat, with JSON-schema structured outputs for every analysis and token streaming for chat.
Skill scanner: 100 skills with aliases (ReactJS, React.js and react all count, but Java never matches JavaScript).
Job search: SerpApi's Google Jobs engine, two pages of results, cached for 6 hours so free search credits last.
Frontend: no framework. Every piece of model output is inserted as text, never as HTML.
Lesson 1: a small model needs guardrails, not just instructions ๐ก๏ธ
Gemma 3 4B is impressive for its size, but small models love to make things up. In my early tests, it praised Nimali for "maintaining a website using Git" (her CV never says that) and suggested adding "Developed REST APIs with Node.js" to her Python project.
Telling the model "never invent things" in the prompt helped, but it still ignored the rule sometimes. So I stopped trusting the prompt alone and built five layers:
Keeping a 4B model honest: read the documents, scan skills without AI, prompt Gemma with rules, force a JSON schema, then check the answer in code
The last step is a few lines of plain Python. A "strength" only survives if its quote really appears in the CV, and any CV tip or rewritten bullet that names a skill you don't have gets dropped. The model can be creative; the code makes sure it's never dishonest.
Lesson 2: design for a slow laptop ๐ข
I built and tested this on my own laptop: 8 GB of RAM, no GPU. Gemma 3 4B writes about 3-4 words per second there, so every design choice was about making waiting feel OK:
The skills match is instant (no AI), so you see something useful in under a second.
Analysis and interview questions are separate, smaller calls that appear one after another, each with a live timer.
Chat streams word by word.
Outputs are deliberately short. Every extra word costs time.
A โก Fast mode switch swaps to Gemma 3 1B when you're in a hurry.
A cloud model would be faster. But for something you do once per application, a few minutes is a fair price for keeping your CV private.
Why Open Matters
A typical AI CV tool sends your CV to someone else's server. JobPilot keeps it on your laptop, and SerpApi only sees the search words.
This project only works because Gemma is open:
Privacy by design, not by promise. The model runs on the student's own machine, so there's no "we don't store your data" policy to trust. The data just never leaves.
Free forever. Students can check every single application without paying per request.
Offline. Patchy campus Wi-Fi or no mobile data? Everything except job search still works.
Swap the model. 4B for quality, 1B for speed, or point it at a bigger Gemma on a stronger machine with one setting.
Even the job search is private. The only thing sent to SerpApi is the search words, like "software engineering intern, Sri Lanka". Matching postings against your CV happens locally.
Built with โค๏ธ for a friend during Hacktoberfest 2026. I'm a 3rd-year Computer Science and Engineering student at the University of Moratuwa. If you're job hunting too, give JobPilot a try and tell me what it caught on your CV.






Top comments (0)