Less hunting. More applying.

Shortlist

A personal AI job intelligence engine that scrapes 40+ company career APIs daily, classifies roles against my profile, and runs at almost zero marginal cost.

40+ companies scraped $0 daily running cost Built in 5 sessions

Shortlist v2 — How It Works

built by Malika Shrestha · INSEAD MBA '26

① where jobs come from Greenhouse 691 jobs · JSON API Lever 193 jobs · REST Ashby 909 jobs · GraphQL Gmail Parser LinkedIn alerts 44 Target Companies YAML config ② classify every role (free · keywords only) Role Classifier Product Applied AI AI Transform GTM Strat ③ score every job 0–100 (deterministic · zero API cost) Deterministic Match Score Role family ×35 Geography ×25 Seniority ×20 Target co. ×10 Language filter −80% if foreign lang. req. ④ stored in SQLite · auto-exported to GitHub SQLite DB companies · jobs · briefs · pipeline Google Sheets mobile view GitHub JSON exports ⑤ dashboard · shortlist-v2.vercel.app Next.js Dashboard on Vercel Today new + briefs Jobs filter + star Pipeline kanban Workspace cover letter Insights charts Mkt. Briefs weekly intel ⏰ runs daily at 7am UTC via GitHub Actions · free
ATS scrapers (free)
Email parsing
Scoring & classification
Database
Output & sync
"I wasn't struggling to find jobs. I was struggling to focus on the right ones."

I'm an INSEAD MBA candidate targeting Product and Applied AI roles at AI-native B2B companies across London, UAE, and India. The roles I wanted weren't on job boards. They were scattered across dozens of company career pages, posted and filled within days.

The real problem was the decision tax. Every morning I'd spend an hour filtering roles that almost fit. By the time I had a shortlist, I had no energy left to write a good application or network.

So I built Shortlist.

I defined my criteria once and scoring algorithm. Target companies, role types, locations, seniority, even a language filter. The system applies them every day. I open the dashboard each morning and see 10 to 20 roles ranked by fit, not 200 ranked by recency.

I star what interests me and go straight into writing the application. The system handles the rest.

every morning, automatically

Ingests

Hits career APIs (Greenhouse, Lever, Ashby) directly across 40+ AI-native B2B companies, and parses LinkedIn job alerts from Gmail.

Classifies

Every role is sorted into target function families: Product, Applied AI, AI Transformation, and GTM Strategy — using a keyword engine.

Scores

Each role is scored 0–100 against my profile across geography, seniority, company fit, role family, and language filters — deterministically, so it costs nothing to run.

Surfaces

Results land on a dashboard where I star roles, move them through an application pipeline, and draft cover letters in a built-in workspace. Ten-minute triage with coffee.

The best engineering decision is often removing the clever thing. Match the tool to the actual requirement, not the impressive-sounding one.

The first version used an LLM to score every job — elegant in theory, but it was burning $3 per run and hitting rate limits 60+ times a day. I replaced it with a deterministic points system over signals already in the database. Daily cost dropped from dollars to zero. Every score became instantly reproducible and explainable. LLM spend is now reserved for one place it earns its keep: tailoring a specific application, on demand, when I choose.

95% cost reduction 60+ rate limits eliminated Fully reproducible scores
the stuff that transfers
Systems Thinking

Designed 5 loosely coupled modules so each could fail or change independently without breaking the others.

Cost Engineering

Instrumented every API call with token and cost logging, then cut spend by ~95% without losing the function that mattered.

Reliability

Exponential backoff, request caps, graceful degradation, and idempotent writes so a rerun never duplicates data.

API Archaeology

Reverse engineered Ashby's undocumented GraphQL endpoint by inspecting its job board — no public docs existed.

Pragmatic Scoping

Resisted the urge to overbuild when GitHub already solved the storage problem for free.

Shipping

Gave myself one month to get hired and built the tool to serve that goal, not the other way around.

Python SQLite Next.js Vercel GitHub Actions Claude Code
No paid infrastructure beyond a few dollars of API budget.
want to see it running?
Open Shortlist