01 — Animated slider
What's the average dev time for a 15‑minute eLearning?
Drag to guess · release for the real number
Industry typical
~32
hours, interactive 15-min course
Mine, with the workspace
4
hours to near-final with script + build
A 15-minute course runs roughly 18–46 production hours depending on interactivity. Using the development workspace I built, I got to near-final in about four: writing the script and building the course.
Benchmark: Chapman Alliance, “How Long Does It Take to Create Learning?” — ~72–184 production hours per finished hour, scaled to a 15-minute (0.25 hr) course.
Storyline could drive the number with a variable. The logomark ducking in and out of the line would be a painful stack of states and triggers, and it still wouldn't feel like this. Verdict? Barely.
02 — Tokenized branding
Same course, different skin.
Drag the divider. It's the same component drawn twice from two design-token sets. One side is my website brand, the other reskins to a company I've actually built learning assets for. Same tokens, real palettes.
Drag the divider · click a brand to reskin the right
Using design and code primitives, courses re-skin in minutes. No more eye-dropping colors or consulting an outdated palette doc. The brand lives in one machine-readable token set the whole course is bound to. Those three swatches are the real palettes of Verizon, Square, and Pinterest. Same component, one token swap.
Fair's fair: you could fake the wipe with two exported screenshots and a slider. But those are pictures. This is a live component, drawn twice from one token set, which is why the swatches recolor it instantly. No authoring tool has tokens, so no authoring tool does that.
03 — Live polling
Where have you seen the most value from AI at work?
Couldn't reach the poll. Your vote didn't send — this can happen when the sheet is offline. Try again in a moment.
What gets stored: the option you picked and a timestamp. That's it. No IP, no cookie, no identifier that ties back to you. This is the one interaction on the page that talks to a server. Every other piece runs entirely in your browser.
Native polls in Storyline don't aggregate across learners. They just track a single user's answer for the LMS. Sending votes to a live datastore and pulling the tally back means writing this from scratch. No authoring tool ships that.
I turned a raw script into a brand-compliant, review-ready course. Almost automatically.
An AI-assisted production pipeline that collapses multi-day eLearning builds into a near-automated workflow. Designed and built solo, from scratch.
Who's looking?
A one-person build that automated the slowest, most error-prone part of course production.
Tools & skills
What it proves
I can scope, design, and ship production tooling independently. Not just author content, but build the system that produces it.
Three choices that show how I think about systems, risk, and the people using them.
The tradeoff I made
The framework cost real time up front before it saved a single hour. I bet on compounding return over one-off speed, and knowing what I know now, I'd make that call again.
The architecture: content treated as a build, not a document.
I stopped treating courses as documents and started treating them as builds: versioned components, a spec the system enforces, a real review loop.
The full case study.
The problem
Manual eLearning production is slow and inconsistent. Every new course re-litigates the same interactions from scratch, brand drift creeps in the moment a designer looks away, and review happens across scattered threads with no clean way to hand notes back to whoever's building. It's a lot of skilled time spent on work that shouldn't need a human every time.
What "good" had to mean
- On-brand output with no designer babysitting the result.
- Interactions built once as reusable parts, never re-solved per course.
- Non-technical reviewers can approve or reject without touching code.
- Edits round-trip cleanly back into the build environment.
What I built
An AI-assisted production framework, built in Cursor. A script goes in; a brand-compliant, review-ready SCORM course comes out. Under it sits a library of interaction primitives (originally hand-coded in HTML to do what off-the-shelf tools can't), a machine-readable brand and UI spec the generator is bound to, and an Apps Script review portal that packages the course, routes it for approval, and feeds comments back to the developer backend.
Key decisions
Guardrail as code. Rather than trusting a style checklist, I made the brand system a spec the generator has to obey, so off-brand output isn't a mistake that can happen.
Primitives over one-offs. Solving each interaction once meant the system got faster and more consistent with every course.
Review without code. The approval loop was designed for the people who sign off, not the people who build, which took the dev team out of the bottleneck.
Impact
Multi-day manual builds collapsed toward same-day output, brand consistency became automatic instead of hand-policed, and course review stopped waiting on developer availability. More to the point: it moved the team's skilled time off assembly and onto the parts that actually need judgment.
The platform forgot me every session. So I built it a memory.
A layered instruction system that carries who I am, what I'm building, and how I work into an AI platform that forgets everything between sessions. Designed solo, refined with the model itself.
Who's looking?
I turned a memoryless AI platform into one that starts every session already knowing how I work.
Tools & skills
What it proves
I can spot a platform limitation and engineer around it, shaping how an AI collaborates with me instead of just prompting it. The result is a workflow that holds its own context so I don't have to keep rebuilding it.
Three choices that show how I think about tools, my own blind spots, and getting reliable results.
The tradeoff I made
The system needs upkeep, and a stale volatile layer is worse than none. So I built the model to flag when its picture of my work is out of date and ask for an update mid-conversation. I bet that a little maintenance beats re-explaining everything from zero every session, and it holds up.
The architecture: three instruction layers the model reloads at the start of every session.
I stopped fighting the platform's amnesia and started designing around it: durable facts, volatile state, and a working agreement the model reloads every session.
The full case study.
The problem
The platform had no memory between conversations. Every new chat started cold: restate the goal, the role, the constraints, the context. Long code sessions made it worse, because the work itself would fill the context window and I'd end up re-explaining problems I had already walked through minutes earlier. Every session felt like onboarding a stranger who happened to be fast.
What "good" had to mean
- Context available at the start of a session without manual re-typing.
- A clean split between durable facts and fast-changing state.
- The model flags when its picture of my work has gone stale.
- A defined working relationship, not just a data dump about me.
What I built
A layered instruction system for a stateless AI platform. Three layers do the work: a durable brief covering how I work, my role, and my goals; a dated volatile layer holding current projects and standpoints; and a persona layer defining how the model should interact with me, what I value, and what success and failure mean. To make the brief accurate, I had the model run reasoning tests and used the deltas between runs to find and cover blind spots in my own self-description.
Key decisions
Durable vs volatile. Separating stable facts from weekly churn keeps the core steady while the current-state layer stays fresh.
Calibrate against blind spots. Test deltas surfaced gaps a self-written brief would have missed, so the instructions describe me more accurately than I could unaided.
Design the relationship. Giving the model a persona and clear success and failure definitions made results land right without constant re-steering.
Impact
The honest answer is that the impact resists a clean metric, and I would rather not invent one. What changed is qualitative but real: sessions start warm instead of cold, I stopped re-explaining the same context every chat, and long code sessions no longer collapse into re-litigating solved problems. Each conversation now picks up like a continuation rather than a first meeting. The durable-versus-volatile pattern also became my default way of working with any stateless model, not just this one.