I was job searching and running into the same two problems everyone does: ATS systems filter you out before a human reads your resume, and tracking 20+ active applications (which version you sent, who you talked to, what the AI thought of the fit) turns into a mess spreadsheets can't fix. I was already solving both manually with custom Claude skills. It worked. It was slow.
Once I decided to build it properly, I treated it as a real product from day one. Designed the UX in Claude, wrote every component and API route through Cursor and Claude Code. Zero lines authored directly. Two weeks from first conversation to open-source release.
Greenfield with no stakeholders meant real freedom. I added the AI chat assistant in an evening just to see if it worked. It did, so it stayed. Wearing PO, designer, and developer hats simultaneously, with an agent handling execution, compressed the feedback loop in a way client work rarely allows.
Roles
- •Product Owner
- •UX & Product Design
- •AI-Directed Engineering
- •Open Source Release (MIT)
Built With
- •Claude (UX & product design)
- •Cursor + Claude Code (engineering)
- •Agent-directed, zero lines authored
01 / The Board
Job search as a kanban
Four stages: prospects, applied, interview, passed. AI fit scores surface inline on every card (strong, good, caution, or weak) with written rationale so you know where to spend your time. Salary, location, and type are sortable at a glance.
- •Prospects → Applied → Interview → Passed
- •AI fit scores with written rationale on every card
- •Light and dark modes, configurable per user
Board, light mode. Prospects, applied, interview, and passed stages with AI fit scores and salary data inline.
02 / Career Page Scraper
Skip the job boards entirely
Playwright monitors target company career pages on a schedule. New roles land in a review queue. You approve before anything hits the board. No noise, no duplicates. Per-target config handles static HTML, SPAs, iframes, cookie banners, and pagination without auto-detect heuristics.
- •Scheduled Playwright crawls on any career page
- •Approval queue before roles reach the board
- •SPA, iframe, cookie banner, and pagination support
Scrape review queue with chat open. New roles surface here for approval before hitting the board.
03 / AI Document Generation
Tailored to the job description, exported ATS-safe
Every role gets a cover letter, tailoring notes, and resume rewrite generated against the live job description. Output streams token by token. Exports as a programmatically built DOCX with proper bullets, tab stops, and configurable typography. Not a PDF of an HTML page. The format ATS systems actually parse.
- •Cover letter, tailoring notes, and resume rewrite per role
- •Token-by-token streaming to the client
- •Programmatic DOCX export with configurable typography
Job detail, light mode. AI fit assessment, cover letter, and tailoring notes for a prospect role.
04 / Chat Assistant
Manage the board in plain English
An 8-tool assistant built directly into the board. Add a job, move it between stages, flag a ghost posting, search for remote roles. All in plain English. Tool call status streams to the client in real time. I added it in an evening to see if it worked. It did, so it stayed.
- •8 tools: add, move, flag, search, list, and more
- •Tool status streams to the UI in real time
- •Built as a greenfield experiment, shipped same evening
Chat assistant with the board and scrape queue. Manage jobs, run searches, and approve scraped roles in plain English.
05 / Setup & Onboarding
Under 10 minutes from clone to working board
Clone the repo, run the setup script, set three environment variables. First launch triggers a 4-step wizard: basic profile, location, job preferences, done. Everything the app needs to score fit and generate documents is captured before you hit the board for the first time.
- •One setup script, three environment variables
- •4-step onboarding wizard on first login
- •One-click Vercel deploy from the README
Login. Single password auth via iron-session, simple by design for a self-hosted personal tool.
06 / Settings
Bring your own AI. Keep your own data.
All data lives in a flat JSON file in a private GitHub repo you own. No database, no connection string. Every write is a commit with automatic version history. The AI layer resolves to any provider from one config field: Anthropic, OpenAI, Gemini, Grok, Ollama, or any OpenAI-compatible endpoint. Bring your own API key.
- •Data stored in your private GitHub repo
- •Any AI provider: Anthropic, OpenAI, Gemini, Ollama, custom
- •Export typography and style fully configurable
AI Profile: work history and professional summary. These feed every cover letter and resume rewrite.
Outcomes
Two weeks. Zero lines of code authored directly. Components, API routes, scraper config, DOCX export engine. All produced through agentic conversation in Claude, Cursor, and Claude Code.
It's the clearest proof I have of what it means to direct AI rather than use it. Collapsing PO, designer, and developer into one role, with agents handling execution, produced a creative speed I hadn't experienced in client work. An evening experiment became a shipped feature. That feedback loop is what I'm actively building on.
Stack
- •Next.js 16
- •TypeScript
- •Tailwind CSS v4
- •Playwright
- •docx
- •iron-session
- •GitHub Contents API
- •MIT License
2 weeks
Start to open-source release
0 lines
Code authored directly
6 features
Shipped as a solo PO, designer, and dev