AI Job Search Assistant
Full-stack / AI#AI#CLI#Tooling

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.