Skip to content

Twelve Weeks of Data Into a Portfolio

"Submit your transformation portfolio" sounds like homework: a document you sit down and write once the real work is finished. It isn't that, and believing it is that is the last place this course wants to lose you before Lesson 12. You already assembled it. One appended line at a time, every Friday, without ever intending to.

The log file already is most of the portfolio

Open transformation-log.jsonl at Week 12 and look at what's sitting there: twelve lines of JSON, one per week, each written the day it happened by the same script from Lesson 3, refusing the same guard conditions Lesson 3 walked through. Nothing about that file changes shape for graduation. It isn't a staging area for something you assemble later. It is the artifact itself, because its design never required a translation step to become one.

Consider what a separate document would demand instead. Opening twelve entries, deciding what to summarize, deciding what to cut, formatting it for a stranger's eyes, probably paraphrasing raw numbers into something that reads more finished than automation_index: 58.14. Every one of those steps is a chance to smooth the story into something tidier than what actually happened. The log skips all of it by already sitting in a shape nobody needs to dress up: automation index climbing from wherever Week 1 landed, hours reclaimed against that same fixed baseline, recurring revenue moving toward the 50% mark Lesson 4 named. A reader can trace any figure back to the exact entry that produced it, because the file never stopped being the source of truth Lesson 3 built it to be.

What a graduation portfolio actually is

transformation-log.jsonl, unedited, plus the collected automated_this_week and biggest_bottleneck sentences from all twelve entries read in order. That's the whole thing. Nothing gets built from scratch at Week 12.

Twelve appended lines, already the deliverable

Why it's shareable without a single real dollar in it

This is the part worth sitting with before you hand anything to anyone: a completed twelve-week log can go out exactly as it sits on disk. Lesson 4 covered the mechanism, so this won't re-derive it, but the payoff belongs here specifically. revenue_ratio was never a dollar figure. It was a float compared to your own Week 1, and Revenue Efficiency Multiple's formula never touches an absolute number at any step. Whatever you're about to submit, hand to a prospective client, or post somewhere public was safe to share the moment each line got written. Nothing needs redacting before graduation, because there was never a field to redact.

Someone who has never seen your books still gets the full shape of the transformation from that file: how far the automation index climbed, how many hours came back against a fixed baseline, how the recurring-revenue share moved. What they don't get, and never could, is your actual revenue. That trade is the whole design, not a limitation you're working around at submission time.

The two sentences you already wrote are the narrative

Lesson 9 named this directly: the automated_this_week and biggest_bottleneck sentences feed no formula, and reading them together across weeks turns a table of figures into a story nobody had to construct after the fact. Lesson 5 showed the mechanism in miniature, four weeks deep: onboarding named as the constraint in Week 1, still the constraint in Week 2, replaced by reporting in Week 3, replaced by sales follow-up in Week 4. Twelve weeks of those same pairs, read start to finish, is that same effect at full length, a chain of problems named, solved, and displaced by whatever surfaces next, in your own words, captured the moment each one was true.

That's the second half of the deliverable, worth pulling into its own view before you submit, precisely because it's easy to skim past buried inside a JSONL file. Read all twelve automated_this_week lines in order, then all twelve biggest_bottleneck lines in order. You're not hunting for a formula. You're looking for the sequence of real constraints getting cleared, one at a time, in the order they actually happened.

Pull every automated_this_week line, in order

Twelve short sentences, each set down the day it happened. Read them straight through as a list.

Pull every biggest_bottleneck line, in the same order

The same span, but the constraint side. Watch for repeats: a line that names the identical problem two or three entries running is itself data, the same way it played out in Lesson 5's four-entry run.

Read both lists side by side, not the raw metric columns

This is the narrative a reader actually wants. The automation index shows how much moved. These two lists show what moved, and in what sequence.

Why real entries beat one written from memory at graduation

Here's the honest comparison, worth stating plainly rather than treating as a minor stylistic preference. A record built from twelve entries logged as the weeks happened carries a kind of credibility that one reconstructed from recollection after the fact cannot fake, because it was captured in the moment, not pieced together afterward to look tidy.

Think back to Lesson 3's guidance on Week 1: answer from memory, not from a spreadsheet you have to go build first, because a rough honest figure typed today beats a precise one reconstructed three weeks late. Writing the whole program up after the fact is that same failure mode, stretched from a single entry across an entire run. Sitting down at graduation and typing "the constraint back then was probably reporting, I think" isn't a report of what actually happened. It's a guess, dressed to read like a record, produced by someone who already knows how the story ends and is unconsciously smoothing the path toward it. That's the felt-versus-measured problem Lesson 1 opened this whole course with: in METR's randomized controlled trial, those developers believed they were 20% faster while running measurably slower, because remembering how something went is not the same instrument as clocking it while it happens. Rebuilding a run from recollection carries the identical flaw, for the identical reason.

A log kept week by week sidesteps that trap, because there was no ending to smooth toward when each line got typed. An entry from partway through names what was actually slow right then, set down by someone with no idea yet what later stretches would hold. That's not a stylistic difference. It's the gap between a measurement and a memory, the exact distinction this whole program exists to teach.

Logged week by weekWritten from memory at graduation
When each entry was set downThe Friday it happenedWeeks or months after the fact
What the writer knew at the timeOnly what had happened so farThe full ending, already known
Risk of unconscious smoothingNone; there was nothing yet to smooth towardHigh; the story gets shaped to fit how it turned out
What a skipped stretch looks likeA visible gap in the logInvisible, filled in with a plausible guess
If you skipped a week, don't backfill it now

A gap from a skipped entry, the failure mode Lesson 9 named directly, doesn't get fixed by inventing a plausible-sounding line for it at graduation. That's not a correction. It's the same recollection problem in miniature, shrunk from twelve weeks down to one. An honest record with an acknowledged hole beats a complete-looking one with a fabricated stretch sitting inside it.

What you're actually submitting

Not a new document. transformation-log.jsonl, exactly as it sits once Week 12's line lands, plus the twelve constraint-and-automation pairs read together as the story those figures tell. If you've been honest since Week 1, the record has been assembling itself, one Friday at a time, for three months. Your only remaining job is reading it whole instead of one row at a time.

Reading the whole file back is the same command from Lesson 5 and Lesson 9, run once more:

bash
python3 .claude/skills/transformation-tracker/scripts/report.py --table

That prints all twelve rows in one table, the same format shown across four weeks in Lesson 5 and repeated in Lesson 9. Nothing about submission needs a different tool than the one you have already been running every Friday.

Quick check — A reader is about to sit down and write their Week 12 graduation portfolio as a new document, summarizing what they remember about the program. What's wrong with that plan?
Continue to Lesson 12

The portfolio is done the moment Week 12 is logged. Lesson 12 closes the course with a concrete plan for starting your own real Week 1 on Monday morning.

Have a question about this lesson?

Reply here and it goes straight to Rod. Same as replying to one of his emails.