AI Job Search Assistant
CLI that turns job PDFs + your resume into market analysis, a readiness score, and application advice — with multi-model LLM fallback and Zod-validated output.
Overview
A TypeScript CLI tool that converts job posting PDFs and a resume PDF into structured career intelligence — market trend analysis, a 0–100 readiness score, skill gap breakdown, and application advice. Everything runs locally with no SaaS subscriptions.
The Problem
Most job seekers apply blindly: generic resume, no feedback, no market data. I wanted a tool that could read a pile of job postings and my resume, then tell me exactly where I stand and what to fix.
What I Built
- 1A four-stage CLI pipeline: ingest PDFs → extract structured JSON via LLM → enrich with Tavily company research → generate Markdown reports.
- 2LLM-powered extraction using OpenRouter to call free-tier models (Qwen, GPT-OSS, Gemma) — with automatic multi-model fallback and retry if a model returns invalid JSON.
- 3Zod schema validation on every LLM output — malformed responses are rejected and retried, never silently accepted.
- 4Market analysis aggregating skill frequency, salary ranges, remote work trends, and experience level distribution across all job postings.
- 5Gap analysis comparing resume skills against market demand, producing a 0–100 readiness score with tiered action plans (quick wins → long-term goals).
- 6Company research enrichment using Tavily API to gather company size, recent news, and culture signals for each employer.
- 7Human-readable Markdown reports saved to a reports/ folder for easy sharing.
Key Technical Decisions
Multi-model LLM fallback
If the primary model fails or returns invalid JSON, the pipeline automatically retries with fallback models through OpenRouter. Every output is validated with Zod before being saved — no silent failures.
Structured JSON pipeline
Each pipeline stage produces a validated JSON artifact that the next stage consumes. This makes the pipeline debuggable, restartable, and extensible — add a new stage without breaking existing ones.
Zero subscription cost
Uses free-tier LLMs via OpenRouter and a free Tavily API tier. The full analysis runs from your terminal with no cloud dashboard or recurring fees.
Outcome
A working intelligence tool that turns raw job PDFs into actionable career data in minutes. Demonstrates LLM integration, structured pipelines, CLI tooling, and defensive validation with Zod.
What I Learned
LLMs are unreliable narrators — they hallucinate, return invalid JSON, and cut off mid-output. Building a robust validation and retry layer around them was the core engineering challenge.