Your Promo Packet Has the Same Bug as a Broken Agent Pipeline
Why this matters
Your packet is due next quarter, maybe the one after, and you're staring at a blank doc — or your fifth rewrite, which somehow still reads wrong. Stop blaming your writing. This is an architecture bug, and you debug architecture bugs for a living.
The fifth rewrite still reads wrong
Four drafts in and none of them land. Draft one sounded arrogant, so you stripped the claims. Draft three read like a diary of closed tickets, so you bolted conclusions back on. Draft five sits somewhere in the middle and still doesn't work. Here's the thing: if a teammate built a multi-agent pipeline where one node did retrieval, compression, and evaluation in a single pass — then just kept 'iterating on the prompt' when the output came out wrong — you'd stop them in code review. You'd say: split the roles. Same fix. You just have to run it on yourself this time.
Three roles hiding inside 'write your promo packet'
'Write your packet' isn't one task — it's three wearing a trenchcoat. Different inputs, different failure modes, and — the part everyone skips — different correct answers to 'what actually matters here.'
- ▹The collector: gathers raw evidence — PRs, design docs, incident postmortems, the Slack thread where you actually made the call. No editorializing. The job is completeness, not narrative.
- ▹The synthesizer: compresses that raw log into a handful of narrative threads. Job is coherence — it doesn't get to decide yet whether any of it mattered.
- ▹The judge: decides what counts as impact, ranks the threads, and writes the 'so what.' Judgment applied to threads that already exist — it shouldn't be out hunting for evidence on its own.
Do all three in one sitting and one role wins every time, because your brain can't hold 'be exhaustive,' 'be selective,' and 'be honest about impact' at once. Whichever one wins tells you exactly, predictably, how your draft is broken.
Diagnose your draft: which role won
- ▹Judge-dominant → self-congratulatory: big claims ('I drove X'), thin evidence underneath. Reads like a conclusion you reached before you looked at the data — because that's what happened.
- ▹Collector-dominant → self-erasing: a wall of shipped work, links, and dates, no thread tying it together, no claim about impact. Reads like a changelog, not a case for promotion.
- ▹Synthesizer-dominant → smooth but hollow: nice arcs, good story — but ask 'what specifically changed because of this' and there's no receipt, no verdict. Just a well-told story with nothing riding on it.
It's the same failure mode you'd flag in an agent pipeline. An over-tuned reranker returns confident garbage because it never saw enough candidates. A retriever with no judge downstream dumps everything and makes the reader rank it. A summarizer with no evaluator produces fluent text that answers the wrong question. The fix is identical in both cases: you don't patch role-collapse by editing the output. You fix it by giving each role its own pass.
The fix: separate the passes, not the people
You don't need three people. You need three sittings, run in strict order, each with one objective and a 'not allowed to do' list. It's the same discipline behind any decent agent pipeline — a retrieval step that isn't allowed to generate, a generation step that isn't allowed to fact-check itself, an eval step that runs later, separately, ideally with a different context. Solo, procedurally, you can impose that same discipline on yourself.
- ▹Pass 1 — Collector only, ~2 weeks of raw material: list every shipped thing, decision, doc, and thread. No claims, no ranking, no 'this showed leadership.' Catch yourself writing that and delete it — that's the judge sneaking in early.
- ▹Pass 2 — Synthesizer only, run after the collector pass is fully closed: group the raw log into 3-5 narrative threads ('migration ownership,' 'mentoring the new hire,' 'the incident response redesign'). Still no impact claims — just what happened, in what order.
- ▹Pass 3 — Judge only, at least a day later, with fresh eyes: rank the threads, cut to the strongest 2-3, and for each one write the 'so what' — what changed, for whom, that wouldn't have without you. The gap in time isn't optional; judging same-day is still role-collapse, just squeezed into one afternoon instead of one hour.
Where a second real person fits
Your manager or a peer belongs in this pipeline as an independent judge pass — reading your synthesized threads cold, then giving their own ranking and their own 'so what,' separate from yours. What they shouldn't do is co-write the synthesis with you. A co-writer doesn't kill role-collapse, it just spreads collector+synthesizer+judge across two people instead of one — and now you've also got to untangle whose voice is whose. Ask for a second opinion after your judge pass. Not a collaborator during your synthesizer pass.
Why Day 5 and 6 pay off right now
If you've been running the evidence-tracking habit from earlier in this series — logging decisions and shipped work as they happen instead of reconstructing them from memory six months later — your collector pass is copy-paste, not a scramble through old Slack history. Same reason a good agent system logs retrieval traces continuously instead of re-deriving context on demand: the collector role is cheap when it runs continuously, and brutally expensive when you invoke it once, under deadline, from a cold start.
A note on using an LLM here
If you're using Claude or anything else to help draft this, give it one role per pass — same rule you're applying to yourself. Feed it your raw log with a synthesizer-only prompt ('group these into threads, make no impact claims') and it'll behave. Ask it to 'write my promo packet' in one shot and it collapses all three roles just as fast as you would — inventing a confident-sounding verdict on evidence it never actually weighed. Same failure, plainer version. An LLM running your synthesis pass: fine. An LLM running your judge pass on your behalf: you've just outsourced the one role that requires your judgment, on your own career, from someone who actually watched it happen.
Extend your knowledge
- ▹Pull up your own last promo packet (or draft) and run this lesson's diagnostic against it — which role won, and where's the tell?
- ▹Start your collector pass today: a running doc, updated weekly, of shipped work, decisions, and docs. No claims allowed. Just the log.
- ▹If your org runs an LLM-as-judge pattern anywhere — eval pipelines, RAG scoring — notice how strictly that judge stays separate from the generator. Same separation, applied to yourself.
- ▹Will Larson's writing on staff-engineer careers (staffeng.com, and his book Staff Engineer) is worth reading for how cleanly he separates what happened from why it mattered when building a case for promotion.
Tomorrow: Day 8 — what the judge role should actually be scoring for. Impact isn't effort, and most people judge the wrong axis.
Test yourself on this lesson →Discussion
Chat with Chi Cong (AI) about this article. Your conversation is private to you — you can publish a summary for others when you're done.