VectorAI
An LLM agent that finds and ranks the jobs actually worth applying to.
An LLM job-search agent that pulls real openings from public ATS APIs, retrieves candidates by keyword or semantic (vector) search, and scores each role's fit against a profile with grounded LLM reasoning and gap analysis — built end-to-end on 100% free infrastructure.
The problem
Aggregators are full of noise, listings are stale or duplicated, and a person can only meaningfully apply to a handful of well-matched roles. The scarce resource isn't listings — it's judgment about which ones are worth the effort.
Job Agent automates the tedious part — gathering real openings and forming a calibrated first-pass fit judgment — so attention goes to the few roles you'd genuinely win.
What I built
- Ingests live roles directly from companies' public ATS APIs (Greenhouse, Lever, Ashby) — no scraping, no ToS violations, no PII — across 55+ employers and 7,500+ roles, expandable by adding a one-line slug.
- Scores fit with an LLM that reads the candidate profile + each job and returns structured output: a 0-100 fit score, matched requirements, and a specific gap analysis.
- Two toggleable retrieval modes — a fast keyword prefilter and a semantic vector prefilter (sentence-transformer embeddings) — so you can A/B how each surfaces candidates before the LLM scores them.
- Extracts and surfaces salary ranges (from structured comp fields + pay-transparency text) as first-class, sortable information.
- Calibrated and honest — it flags both under- and over-qualification and domain mismatches, instead of rubber-stamping everything as a great fit.
- Local-first LLM with cloud fallback: runs a local open-weight model (Ollama) by default — unlimited and fully offline — then automatically falls back to free cloud models (OpenRouter) with retry/backoff, so no single endpoint ever blocks a run.
- Per-role result caching, so re-runs and profile tweaks reuse prior scores instead of re-spending calls.
- Runs at $0 — public ATS data, a local LLM, local embeddings, and a SQLite store; no paid APIs.
Architecture
- 1companies.yaml (target employers + ATS) -> public ATS APIs -> ingest
- 2Normalize + de-dupe -> local SQLite store (7,500+ live roles)
- 3Prefilter (keyword OR vector/embeddings) -> shortlist of candidate roles
- 4LLM fit-scoring (local Ollama model, free-cloud fallback; cached per role) -> grounded JSON
- 5Rank by fit + gap analysis -> results (rendered in the demo below)
What it demonstrates
Applied AI engineering end-to-end: data ingestion from real sources, LLM reasoning for fit-scoring and gap analysis, structured grounded output, and an evaluation mindset — measuring whether the model's judgments hold up rather than trusting a black box.
It also reflects engineering judgment under real constraints: legitimate public data sources instead of scraping, and a resilient free-tier LLM design that stays at $0 without sacrificing reliability.
Stack
Live demo
Live agent output ranking real, currently-open roles (pulled from public ATS APIs) against a fictional demo candidate — a mid-level ML engineer. Note the calibration: it flags both under- and over-qualification, with grounded reasoning. Filter by verdict below.
Senior Machine Learning Engineer - Model Evaluations, Public Sector
The candidate's strong background in building automated LLM evaluation pipelines and production ML aligns well with core duties, but lacks clearance and broader domain experience required for the senior public‑sector role.
Gaps: No stated security clearance or ability to obtain one · No explicit experience with computer vision, reinforcement learning, or multimodal pipelines · No graduate degree mentioned
The candidate demonstrates relevant Python/Go, distributed systems, and end‑to‑end ML platform work, but falls short on the required 4+ years and lacks Scala/C++ experience.
Gaps: 4+ years of experience (candidate has 3 years) · Scala or C++ experience
The candidate meets core production ML and LLM engineering requirements but lacks the academic credentials and multi‑agent/agentic expertise central to the role.
Gaps: No PhD or MSc degree listed · No explicit experience with agentic LLMs or multi‑agent systems · No demonstrated work on human‑in‑the‑loop or annotation pipelines
Machine Learning Research Engineer, Agent Data Foundation - Enterprise GenAI
The candidate meets the production LLM experience and data‑centric work but lacks the required advanced degree and recent top‑tier publications.
Gaps: No PhD or Masters degree listed · No recent top‑conference publications
The candidate has solid LLM and production ML experience but lacks research publications and specific agentic reasoning expertise required for the role.
Gaps: No published research in top ML/NLP venues · No experience with JAX · No explicit work on agentic reasoning or tool-use agents
Machine Learning Systems Research Engineer, Agent Post-training - Enterprise GenAI
The candidate matches on production ML, LLM work, and system deployment but lacks key post‑training, multi‑node GPU, and advanced research credentials required for the role.
Gaps: No stated experience with RLHF/RLVR or PPO/GRPO algorithms · No explicit multi-node GPU cluster training or inference experience · No mention of CUDA, flash attention, or low‑level GPU optimization
Machine Learning Systems Engineer, RL Engineering
The candidate has solid production ML and LLM tooling experience but lacks the required seniority and specific RLHF/large‑scale training system work, resulting in a moderate fit.
Gaps: 4+ years software engineering experience (candidate has 3 years) · direct experience with RLHF or reinforcement‑learning‑based finetuning · large‑scale distributed training and profiling of training pipelines
Research Engineer, Machine Learning (Reinforcement Learning)
The candidate shows strong production ML and LLM engineering skills matching Anthropic’s infrastructure needs, but lacks RL research and large‑scale training experience required for the role.
Gaps: no demonstrated reinforcement learning research or algorithm experience · no explicit work with distributed GPU training or RL experiment management · lack of published RL or agentic model work
Machine Learning Research Engineer, Agents - Enterprise GenAI
Candidate meets basic production LLM experience but lacks the required RL post‑training expertise, academic publications, and advanced degree expected for the research‑focused role.
Gaps: no experience with post‑training methods such as RLHF/RLVR or PPO/GRPO · no listed publications in top conferences · no PhD or Master's degree mentioned
Candidate has strong production ML and LLM engineering skills but lacks demonstrated RL research and large‑scale training infrastructure experience required for the role.
Gaps: reinforcement learning research experience · distributed GPU training infrastructure · design of RL environments and agents
The candidate has relevant technical skills but falls short on required seniority, breadth of cloud experience, and demonstrated executive advisory and thought‑leadership experience.
Gaps: 6+ years overall experience · 2+ years production Gen AI · experience designing cloud-based data visualisation solutions
Machine Learning Research Scientist, Post-Training
Candidate has solid engineering experience with LLM fine‑tuning and evaluation but lacks the academic credentials, research publications, and specific post‑training techniques (RLHF, preference modeling) required for the research scientist role.
Gaps: no Ph.D. or Master's degree mentioned · no published research in top-tier conferences · no explicit experience with RLHF, preference modeling, or instruction tuning
The candidate exceeds the seniority level and lacks the required new‑grad/internship background and TypeScript/React skills, resulting in a weak overall fit.
Gaps: Candidate is a mid‑level engineer with 3 years experience, not a new graduate as required · No internship experience listed · No demonstrated proficiency with TypeScript/React
The candidate excels technically and analytically but lacks the customer‑service and operations experience central to the role, making the overall fit weak.
Gaps: no customer service or user‑facing operations experience · background in machine learning engineering rather than operations/process work · no demonstrated experience with financial products or Stripe's ecosystem