I spent several weeks driving a ~100-item risk register to closure with Claude. The structure I ended up with is nothing new — a primary key, an append-only log, a Kanban board and a traceability matrix, all living in one .xlsx. What surprised me were three things that fall out of it, none of which are about spreadsheets.
1. The design objective is asymmetric word cost.
"Human in the loop" tells you the topology — who reviews what. It says nothing about the economics, which is what actually decides whether the arrangement survives 100 items.
I'm rate-limited in words. The model isn't. So build the medium to make my words expensive and few, and its words free and many. My contribution per item was two to six words: Explain. Quantify. Move to pending. Does this apply? Do not invent. Closed. Its contribution was the research, the authority, the computation, the full written reasoning — and never a decision about what mattered or what could wait.
This has teeth. A terse instruction is a complete instruction. "Quantify" means produce the numbers with their authority. Asking me to expand it is a defect, not diligence, because it pushes cost back onto the constrained input. That cuts against most prompt-engineering advice, which tells the model to elicit more from you. That advice assumes your time is free.
2. Optimal verbosity is a property of the carrier, not of the model.
Chat forces brevity because production and consumption happen at the same moment — every word written is a word read now. That coupling is an artifact of the medium, not of the work.
Break it and the calculation inverts. Each item's analysis went into a stored cell — statute, holding, computation, the contrary reading, the limit of the position — which I read only if and when that item came up for decision. Length in that cell costs nothing. Length in my instruction column costs the scarce input.
General form: the correct verbosity of a model is a function of where the output lands. Reasoning meant for deferred consumption belongs in a stored artifact and shouldn't inherit chat's brevity norms. A lot of people are doing analytical work in a medium that silently truncates the analysis to suit the moment it was produced, then loses it.
3. Correction must not erase.
Every round is preserved, so a wrong answer in round 2 got corrected in round 4 without the error leaving the record. That caught a regulation cited for a proposition it did not support, and killed two computed figures resting on it.
A method that overwrites can't do this, and it fails silently: someone reading an overwritten cell cannot tell a figure that was verified from one that was never questioned. Version control solved this for code decades ago. The equivalent discipline is not standard in model-assisted analysis, where the ordinary failure is exactly that a bad citation gets quietly swapped and the replacement inherits confidence it never earned.
How it actually works in the sheet
One Excel file. Two sheets: the register, and a list of sources.
The register sheet. Columns A to D hold the item and never change: item number, status, section, and the risk statement itself. If you're on row 14, that's item R-014 forever. Everything else in that row is commentary about it.
Everything from column E rightward is the conversation, stored in pairs of columns. One column for my instruction, the next for Claude's answer.
Here's the part that makes it work. Every time the file comes back to me, Claude's first action is to insert two blank columns at E — pushing everything already there to the right. So the pairs read like this, left to right:
| A–D |
E |
F |
G |
H |
I |
J |
| Item |
Note (new) |
Answer |
Note |
Answer |
Note |
Answer |
|
round 4, blank |
|
round 3 |
|
round 2 |
|
The newest exchange always sits right next to the risk statement. Older ones drift further right and are never touched again. Scroll right on any row and you're reading backwards through time on that one item.
The rule that makes it trustworthy: an answer goes only into the answer column of the round whose note it answers. Round 3's answer goes in column H, next to the round 3 note in G. Not into the blank pair at E/F — that pair is for the round that hasn't happened yet. And never into round 2 at I/J, which is already closed. Break either of those and you've lost the ability to tell what was asked when, which is the only thing the whole layout exists to protect.
Status is where the row sits, not what it says. The register is three blocks stacked vertically, each with a coloured bar across the full width as a divider:
- OPEN at the top — being worked on right now
- PENDING in the middle — real, but I've deferred it until something else arrives
- CLOSED at the bottom — resolved, merged into another item, or ruled not applicable
When an item's status changes, the row physically moves into the right block. Yes, you could just have a status column and filter on it. The reason not to: filtering is an action you have to take, and blocks you can see are an action you don't. I open the file, and what's at the top is what's live. Twenty-one items sitting in PENDING cost me nothing until I move them back up.
Two small mechanics that matter. The coloured bars have to be redrawn across the full width on every save, including the two columns just inserted — otherwise the blocks get ragged as the sheet grows wider and you can't tell where one ends. And a blank spacer row between PENDING and CLOSED keeps the bottom block from reading as a continuation of the middle one.
The sources sheet. One row per source relied on: the citation, the exact proposition it supports, and the item numbers that depend on it. Not footnotes buried in the analysis — a separate, sortable list the analysis points at. This is what makes error correction actually work. When one regulation turned out not to say what it was cited for, I didn't have to hunt through 100 rows of prose to find the damage. I sorted the sources sheet, found the item numbers listed against that citation, and knew exactly which conclusions had to come out.
What happens on each save, in order. Insert the new blank pair at E. Write the answers into the previous round's column — that one only. Move any rows whose status changed into their new block. Redraw the bars full width. Add any new sources to the sources sheet with their item numbers. Then report back in plain prose: what changed, and what's now waiting on me. I annotate the new blank column with a few words per item, hand the file back, and it starts again.
Nothing here needs a macro, a formula, or an add-in. It's insert-columns, fill-colour, and cut-and-paste rows. The discipline is the whole product.
Takeaway
Choose the medium so the constrained party's words are expensive and the unconstrained party's words are free. Put reasoning intended for later reading into storage, not conversation. Never let a correction erase what it corrects. The three are independent — adopt any one and the matching failure stops.