DEV Community

Cover image for DevOrbit Grounded Resume & Job Matching Built for Friends Seeking Work
Dipendu Ray
Dipendu Ray

Posted on AI-assisted

DevOrbit Grounded Resume & Job Matching Built for Friends Seeking Work

Hacktoberfest Weekend Challenge: Build for a Friend Submission 🤝

This is a submission for the Hacktoberfest Weekend Challenge: Build for a Friend


What I Built

Applying for jobs today feels like screaming into a void. You send a resume out, hear nothing back, and never find out whether you were rejected for a missing skill or because a recruiter simply moved on. Job listings are walls of buzzwords. Resumes are walls of bullet points. To make things worse, generic AI resume tools paper over this with an arbitrary number—"72% match"—and then proceed to hallucinate skills or experience you don't even have.

I built DevOrbit for my friends who are actively seeking jobs.

When you're searching for work, what you need isn't flattery or invented qualifications—it's honest clarity:

  • Where does my background legitimately line up with this job listing?
  • What requirements do I satisfy, what is partial, and what is genuinely missing?
  • How can I highlight my real experience without making anything up?

DevOrbit is a privacy-first, grounded job matching web app. It takes a candidate's PDF resume, extracts their profile using an open-weight model, searches across six real-time job boards simultaneously, and runs a deterministic matching engine in plain code to produce an honest breakdown of where you stand. Every single recommendation is strictly grounded in what you actually wrote.


Demo

Check out the project repository on GitHub:

How to Run Locally

You can spin up DevOrbit in minutes with local inference via Ollama or via OpenRouter:

# 1. Clone & install
git clone https://github.com/blezecon/devorbit.git
cd devorbit
npm install #pnpm i

# 2. Setup environment
cp .env.example .env.local

# Run completely local with Gemma (Ollama)
ollama pull gemma3:4b
ollama serve

# You Can run this with llama cpp also
# If you are facing problems with local models, then You can use openrouter api also

# 3. Start DevOrbit
npm run dev #pnpm dev
Enter fullscreen mode Exit fullscreen mode

Visit http://localhost:3000 to upload a resume and explore matched jobs.


Code

GitHub logo blezecon / devorbit

Fully Vibe Coded

DevOrbit

Understand which jobs actually fit your resume.

Built for the Hacktoberfest 2026 Weekend Challenge: Build for a Friend — an MVP that helps one real person compare their resume against real job listings, with an open-weight model doing the reading.


Problem

Applying to jobs feels like guessing. You send a resume, hear nothing back, and never learn whether you were rejected for a skill you lacked or because the recruiter moved on. Job descriptions are walls of text. Your resume is a different wall of text. Nothing in either tells you where they line up.

Generic AI resume tools paper over this with a single invented score — "72% match" — and then suggest you add experience you do not have.

Solution

DevOrbit reads both documents with an open-weight model, puts them in the same structured vocabulary, and then compares them with plain code:

  • Matches — requirements your resume…

The codebase is open source under the permissive MIT License.

  • Frontend / Framework: Next.js 16 (App Router), React 19, TypeScript, Tailwind CSS v4.
  • UI Components: Neobrutalism UI built on Base UI / shadcn registry with Lucide icons.
  • Validation: Zod runtime schema validation on all inputs and model outputs.
  • PDF Extraction: unpdf for zero-disk, pure in-memory text parsing.
  • Test Suite: Vitest suite covering matching logic, job providers, and parsing.

How I Built It

The core philosophy behind DevOrbit is separation of language extraction from evaluation logic. Large language models are fantastic parsers, but notoriously unreliable judges if left unconstrained.

DevOrbit implements a 5-stage pipeline:

flowchart TD
    A["1. PDF Upload (In-memory via unpdf)"] --> B["2. Candidate Extraction (Gemma Open-Weight Model)"]
    C["Job Search (6 Free APIs: Himalayas, Jobicy, RemoteOK, Remotive, Arbeitnow, Ocean of Jobs)"] --> D["3. Requirements Extraction (Gemma Open-Weight Model)"]
    B --> E["4. Deterministic Matching Engine (Plain Code - Zero LLM Hallucinations)"]
    D --> E
    E --> F["5. Grounded Explanation & Suggestions (Gemma Model + strict evidenceRef)"]

The 5 Stages:

  1. Extract: The PDF is parsed directly in memory with unpdf without writing any temp files to disk.
  2. Candidate Extraction: An open-weight model parses messy resume text into structured Candidate JSON (skills, experience, projects, education).
  3. Job Requirements Extraction: When a job is selected from one of the 6 integrated job boards, the model extracts core requirements into structured JobRequirements JSON.
  4. Deterministic Match (Plain Code): No model is involved here. The matching is pure arithmetic and normalized token matching with an alias table. The same resume and job will always produce the identical fit score. A model cannot talk itself into an inflated percentage.
  5. Grounded Explanation: The model explains matches and highlights suggestions. Every single suggestion must quote an exact phrase (evidenceRef) from your resume. If it references an ungrounded or invented detail, the suggestion is discarded in code.

Why Does Open Innovation Matter?

Open-source AI is not an afterthought in DevOrbit—it is the foundational reason the product can be trusted:

  1. Absolute Resume Privacy: A resume contains deeply sensitive personal information—full legal names, employment timelines, educational history, and contact details. Sending this data to closed proprietary cloud APIs exposes job seekers to tracking, logging, and data harvesting. With open-weight models (running locally on Ollama or llama.cpp), the resume never leaves your machine.
  2. Zero Barrier to Entry (Zero API Cost): Job seekers are often on strict budgets. Running an open-weight 4B model locally costs nothing in API subscriptions or token billing.
  3. Auditability & Integrity: Commercial ATS scanners hide their algorithms behind proprietary black boxes. With open-source models and transparent prompts versioned directly in code (PROMPT_VERSION), every evaluation is fully auditable.
  4. Resilience: The system supports standard OpenAI-compatible endpoints, allowing users to swap between local runtimes (Ollama, llama-server) or hosted gateways (OpenRouter) with zero code modifications.

Built with ❤️ for friends on the job hunt during the Hacktoberfest 2026 Weekend Challenge.

Top comments (0)