DevOrbit Grounded Resume & Job Matching Built for Friends Seeking Work
The Problem
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?
What DevOrbit Does
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 & Repository
- GitHub Repository: https://github.com/blezecon/devorbit
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, you can use OpenRouter API also
# 3. Start DevOrbit
npm run dev
# pnpm dev
Visit http://localhost:3000 to upload a resume and explore matched jobs.
Tech Stack
- 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:
unpdffor zero-disk, pure in-memory text parsing - Test Suite: Vitest suite covering matching logic, job providers, and parsing
- License: MIT
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
-
Extract
The PDF is parsed directly in memory withunpdfwithout writing any temp files to disk. -
Candidate Extraction
An open-weight model parses messy resume text into structuredCandidateJSON (skills, experience, projects, education). -
Job Requirements Extraction
When a job is selected from one of the 6 integrated job boards, the model extracts core requirements into structuredJobRequirementsJSON. -
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. -
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 Open Innovation Matters
Open-source AI is not an afterthought in DevOrbit-it is the foundational reason the product can be trusted:
-
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. -
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. -
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. -
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.
Comments
No comments yet. Start the discussion.