Read the full submission
Entry is hosted at: https://portfolio.businessreimagined.ai/library-index
ACHIEVEMENTS
One lesson transcript goes in, and three different artifacts come out, each from its own Skill and each the same way every time, without anyone having to read the instructions. That is what a Skill is, and it is why this is a system rather than four good pages. I built the first when Mindvalley announced it would stop producing written lesson summaries, before finding out whether that decision would hold.
3 Skills, built in this order
- A replica of Mindvalley's own summary format, so the replacement could be measured against the thing it replaced
- An Obsidian note for a knowledge base, with callouts, quotes and tips, and a personalization layer that reads a written profile of how I think
- An interactive learning page, which is the format I actually study in
On the study page
- Full-text search across all four lessons: 67 indexed sections, 66,000 characters, ranked rather than filtered, running entirely in the browser with no network call
- Narrated audio, 8 to 11 minutes per lesson, with a speed control that preserves pitch
- Highlighting in three colours with margin notes, a notes drawer, and save-to-file that downloads the whole page with every mark still in place
- Retrieval-practice flip cards, tickable checklists, copy-ready prompt blocks, and prompt builders
- A different set of interactions on every lesson, enforced by rule: an editable table on one, a scored criteria checker on another, a matching exercise on a third
What it took
- The summary Skill went through seven rounds
- The personalization Skill I threw out and rebuilt from scratch three times, because the first two were all customization and no notes, and when you highlight everything nothing stands out
- Four lessons built and live
TOOLS
- Claude Code and Claude.ai, Claude Skills as the packaging format
- Obsidian for the knowledge notes
- edge-TTS and ffmpeg for narration, Supabase for audio hosting
- Python and Node for build and validation, headless Chrome driven over the DevTools Protocol for the rendered checks
METHODOLOGY
Building the Skill: I started from a known-good answer, not a blank page.
1. Picked a lesson that already had an official Mindvalley summary.
2. Gave Claude 2 things first, a transcript and an existing summary, then had it create an initial skill.
3. Tried the new skill against the same transcript, then asked what to change to close the gap between mine and theirs. The question was never "write me a summary."
4. When it was unclear whether the drift came from my prompt or the source material, supplied four more matched transcript and summary pairs until the answer converged into eight specific fixes.
5. Tested on a lesson I had not analyzed, chosen as the hardest on purpose: six demonstrations and a nested framework.
6. Compared that output against the official summary for the same lesson.
7. Ran the comparison in a different session from the one that built the Skill. A build grading its own work is not evidence.
The rule I held, and what it cost. Nothing could appear in the output that was not in the transcript. That rule made my own output look wrong: it reported no practice exercise where the official PDF had one, because Mindvalley appends homework separately. I was offered a pragmatic workaround and turned it down. A later comparison found the only content not traceable to the transcript was in Mindvalley's document, not mine.
How the narration is made. The voice is not a one-step export, because the naive version fails quietly.
- The script is written to 1,300 to 1,700 spoken words, roughly 8 to 11 minutes
- Generated with edge-TTS using the voice `en-US-EmmaNeural`, the same voice as my morning brief
- Every attempt is verified arithmetically by words per minute, floor 150 and ceiling 215, with up to four retries. This exists because edge-TTS silently truncates long input and still hands back a perfectly playable file, so a short MP3 is the only symptom
- Long scripts are split at paragraph boundaries, each chunk decoded to raw audio, concatenated, then encoded once. Joining finished MP3s left an audible click at every seam
- Uploaded to Supabase and verified by re-fetching and comparing bytes
- The player hides itself if the audio URL is still a placeholder, rather than shipping a broken control
Turning defects into gates. Everything I caught by eye became a check instead of a fix. Two gates now decide whether a page ships.
- Static validator, about a thousand lines across twenty-five families of checks. It enforces real contrast by resolving which colour actually wins the cascade, house spelling, banned dashes, one type scale, declared vertical rhythm, no override or patch layers, dead links, anchors that resolve, interactive markup that actually has a handler, SVG geometry, and a search index with nothing silently unsearchable.
- Rendered checker, driving headless Chrome and waiting for real fonts to load before measuring anything. It catches what static analysis structurally cannot: where a line actually breaks, stranded last lines, body text past 105 characters per line, a collapsed panel with no way back, and a sticky nav eating more than 18% of the screen.
- Against four lessons those gates found eighteen defects at one screen size and thirteen different ones at another.
LEARNINGS
- A standard you have to remember is not a standard. Every rule I care about now lives in a check that fails the build.
- Do not take the report for the result. During that build I asked more than a dozen times whether the samples had actually been regenerated after a change. Twice I was told they were current, and twice that was not true. Asking again costs nothing.
- Consistency is where AI still needs directing. Pages generate quickly; making them agree with each other takes far longer, and no per-file check can see the problem, because each file is internally correct and the drift exists only between them. That is judgment rather than generation, and it stayed mine.
RELEVANT URLS
Study notes library: https://portfolio.businessreimagined.ai/library-index
The three formats side by side: https://portfolio.businessreimagined.ai/library-index#formats
Portfolio cover: https://portfolio.businessreimagined.ai