Career OS — evidence-checked portfolio
Agents inventory a whole PC and turn it into a portfolio and CV where every number is checked.
- Claude Code
- Python
- Astro
- GSAP
- Lenis
- Canvas 2D
- Playwright
- 10,595lines of code in the pipeline and the site
- 54project cards written before this one
- 11parallel inventory batches, each with its own agent
A whole PC turned into checked evidence
Tap a block to see what it does.
- People
- AI
- Logic
- Data
- Output
The heart of the system
Career OS
All the state lives in one folder of files: agents fill it with evidence from the PC, scripts check every number against its source, and the site and the CV are built from it.
Connected to Mission & rules, Scan agents, Log digests, Project cards, Media builder, Data build, Portfolio site, CV PDFs, Final gate
People
Mission & rules
My mission file and rules: read-only outside the folder, secrets as path and type only, and an approvals file without which nothing goes public.
- Markdown
- YAML
Gets from Career OSHands to Scan agents, Log digests
AI
Scan agents
One read-only Claude Code subagent per batch of the PC, all on a shared brief; each writes a batch report and a card per project found.
- Claude Code
- gh CLI
Gets from Mission & rules, Career OSHands to Project cards
Logic
Log digests
Streaming Python over gigabytes of Claude Code, Codex and OpenCode JSONL logs; the secret scans print only path and type, never a value.
- Python
Gets from Mission & rules, Career OSHands to Project cards
Data
Project cards
One Markdown card per project: YAML facts, evidence paths, eight fixed sections, and open points marked 'to confirm' instead of guessed.
- Markdown
- YAML
Gets from Scan agents, Log digests, Career OSHands to Media builder, Data build
Logic
Media builder
Builds covers, loops and galleries only from files already on disk, and logs every discarded source with the reason (faces, phone numbers, client names).
- FFmpeg
- Pillow
Gets from Project cards, Career OSHands to Portfolio site
Logic
Data build
Checks each metric word for word against its source, filters by visibility and approvals, and runs a denylist and secret scan over the output.
- Python
- PyYAML
Gets from Project cards, Career OSHands to Portfolio site, CV PDFs
Output
Portfolio site
Astro with GSAP, Lenis and a Canvas 2D rollercoaster engine, in English and Italian, with one case study and diagram per project.
- Astro
- GSAP
- Lenis
- Canvas 2D
Gets from Media builder, Data build, Career OSHands to Final gate
Output
CV PDFs
ATS-friendly English and Italian PDFs printed with Playwright, at most two pages, blocked if a number has no source or a name is confidential.
- Playwright
Gets from Data build, Career OS
Logic
Final gate
Scans the built site for secrets, phone numbers, confidential names, preview badges and debug leftovers before any deploy; prints paths, never values.
- Python
Gets from Portfolio site, Career OS
The problem
Months of projects lived in folders, repos and AI session logs, many built with coding agents. A CV could not show them, and a portfolio written by hand would drift from the truth and risk leaking secrets or client data.
What I built
- Split the PC into scan batches with one read-only agent per batch, all on a shared brief: an evidence path for every claim, secrets reported as path and type only.
- Digested gigabytes of Claude Code, Codex and OpenCode session logs with streaming Python scripts, never loading them into an agent's context.
- Kept one card per project, YAML facts plus fixed sections, and generated the site, the CV PDFs and the LinkedIn copy from those cards.
- Made the build enforce the rules: every metric must appear word for word in the file it cites, confidential names and secrets are blocked, and a final gate scans the built site before any deploy.
- Extended a one-screen design brief, the rollercoaster hero, into a whole site where scrolling is riding.
The hard part
Staying truthful at scale. Agents write fast and sometimes round up, so nothing reaches a page unless a script finds the number in its source, and confidential names are blocked at build time rather than by memory.
Result
One knowledge base feeds the portfolio, the CV in English and Italian and the GitHub plan, all rebuilt by a single command. The site runs as a local preview; publishing waits on my explicit approval.
My role
I wrote the mission, the rules of engagement and the design master prompt, answered the agents' questions and decide what goes public. Claude Code ran as orchestrator with parallel subagents and wrote the inventory, the scripts and the site.