Career Ops Agent
A forked AI job-search system, and the dashboard I built for it.
Personal tool, runs locally
Walkthrough on requestCareer Ops is my customized fork of santifer/career-ops, an MIT-licensed AI job-search system, set up for my own move toward AI roles, plus the local dashboard I built over its markdown files.
- Role
- Solo: fork customization + dashboard build
- Year
- 2026
- Status
- Personal tool, runs locally
- Stack
- Next.js 16 · React 19 · Tailwind v4 · Base UI · Recharts
Context
The system itself is upstream’s work, not mine: the scripts, the PDF generation, the Go terminal dashboard and the Claude Code skill system all come from santifer/career-ops. I customized the fork for my search in May 2026 and built the web dashboard over two days later that month.
Problem
Upstream ships a Go terminal dashboard, but it wouldn’t launch inside Claude Code’s shell, which has no pseudo-terminal. So I built a web dashboard that reads and writes the same markdown files the agent does.
No database. The markdown is the database.
Approach
The files are the database
The dashboard adds no store of its own. It reads the markdown and TSV files the system already keeps, so the agent and the dashboard never disagree about state.
Every status change rewrites exactly one row
Status changes and follow-ups go through Server Actions that replace one row of a table in place, writing a temp file and renaming it over the original. Each line keeps its delimiter style and whitespace, a row that fails validation is rejected, and the optimistic UI reverts if the server refuses.
The parser, ported line for line from Go
The data layer is a 1:1 TypeScript port of upstream’s Go parser, from status aliases in English and Spanish to tables that mix pipes and tabs. The metrics are ported verbatim too, so both dashboards count the same way.
A dark theme with one accent, kept to actions
Refero references led to a dark theme derived from Linear, with a single lime accent reserved for things you can act on. A light teal look read like a wellness app and two editorial directions felt wrong for a tool, so both were rejected.
Challenges
A link wrapped around a table row produced invalid HTML and a hydration mismatch. pnpm 10 promoted the dashboard folder to a workspace root and broke the dev server. And Next 16, finding port 3000 taken, quietly moved to 3001 while two stale servers kept serving old code.
Outcome
Four views ship: Pipeline, with status writeback and a PDF preview; an Inbox; Follow-ups with full editing; and Progress charts, plus a report viewer. It is a personal tool that runs locally. A fourth version is scoped but not built.