Not a chat box. A small operating system I built and run myself: one feed to stay on the frontier, agents that do real work with me in the loop, one desk that ties it together. I built it to run my job search. It is how I would run a product.
a production agent stack at Sephora that cut PM execution cycles. This page is that pattern, pointed at my own work.
The field moves weekly. I built my own learning surfaces so I'm reading the frontier, and my own work one layer deeper, so I can go a layer deeper than the résumé on anything I've shipped.
It runs on a 6am cron and generates a fresh, personalized feed every day. A live consumer-grade AI product, not a reading list.
If a team needs to get fluent in agentic patterns fast, I've already built the curriculum for it. I structure the domain, I don't just consume it.
I hold my own work to a documented standard, every build broken down a layer past the artifact. The same rigor I bring to a roadmap.
Every agent here drafts; I decide. That human-in-the-loop boundary is deliberate. Nothing goes out without me.
Reads a recruiter thread, detects whether it's cold, warm, or a follow-up, then drafts the reply in my own writing voice straight into Gmail. I read it, tweak it, send it. It never auto-sends.
An always-on background job: every inbound email gets a drafted reply and a phone push, waiting. Production automation that runs whether or not I'm at the desk.
My portfolio isn't a PDF. It's an AI agent of me you can interview. A recruiter can ask it anything about how I think and what I've shipped, and get a grounded answer in my voice.
Before a room, two agents get me ready: one builds the room, the other drills me in it. And every interview feeds a loop that tells the system what to sharpen next.
Before an interview it assembles a live dossier: the company, the product, the person across the table. Then it role-plays the hiring manager so I can rehearse against the actual room, not a guess.
A technical-fluency coach, born from a real final-round loss. It holds every answer to three beats: name the architecture, trace the data path, own the tradeoff. And it reps me until that's just how I talk.
Every interview transcript gets distilled into structured feedback: what landed, what didn't, what to carry. That feeds the other agents, so the system gets a little better prepared after each room.
I don't remember agent names or juggle a dozen tools. There's one seat.
One seat I talk to like a chief of staff. I say what I want ("is this email okay," "prep me for this company," "how am I doing today") and it decides which specialist agent owns the lane, pulls it, and answers in one voice. I never manage the roster; I just talk.
Under the hood it's the Claude API and Claude Code agents, MCP tool servers wired to my real Gmail and Calendar, a git-and-JSON signal store as the shared backend every surface reads from, background jobs on launchd crons, and Vercel for the live products. I designed the data flow, the agent boundaries, and the guardrails, including a delete-nothing rule so no automation can lose my data.
Everything above runs unattended, which is where it gets dangerous. These six came out of that: each one exists because something went wrong and a note in a document turned out not to be a control. A prompt is a request. Code is a rule.
The first four are the same night at different layers: nightwatch picks the work, curfew says what it may touch, breaker notices when it stops resembling the ask, shipgate refuses to let it out until it was checked. Each installs and runs on its own, standard library only, with no dependency on the others.