Bill Bulman
Work/Workshopr 2.0
[ 10 / Workshopr 2.0 · Consolidation ]

Four apps became one product in six weeks.

A consolidation of Workshopr's four core applications into a single product with four phases, built around one object — the workshop record — that the whole lifecycle is derived from.

Workshopr Home screen
Workshopr Strategize screen
Workshopr Plan screen
Workshopr Facilitate screen
Workshopr Synthesize screen
The dashboard. Every workshop card carries a journey strip, so the product’s shape is legible before you click anything. Five steps from a six-blank sentence to a rehearsed pitch — winning approval before any agenda exists. The agenda builder: real durations, a running energy score, and an Agenda Check that grades the plan. The live console — timer, script, transport bar — with a share code that puts participants on their phones. The room’s output becomes a document of decisions and action items. Ships with a Beta badge.
01 / Before

Fourteen properties, and nothing held them together.

By mid-2026 Workshopr had grown to roughly fourteen web properties. Four were load-bearing (Planner, Facilitator, Library and MyWorkshopr), and the other ten were microsites that had each seemed like a good idea in isolation.

The problem wasn't that they looked inconsistent. That was the symptom. The problem was structural, and when I mapped it as a service blueprint the failures were specific enough to name.

Ten Workshopr navigation bars stacked vertically
Ten of the fourteen properties, captured May 2026. The chrome had been unified; the apps underneath had not.

The product was three shells, not one. Library, Planner and Facilitator each owned a header, a CSS bundle, a JS module set and a cache-bust scheme. A user crossing the spine of the product crossed three interfaces.

The standalone Planner app, themed blue The standalone Facilitator app, themed purple
The same workshop, “User Journey Mapping Essentials”, in Planner and in Facilitator — captured five days apart in April 2026. One blue, one purple, two unrelated visual systems, no shared state between them.

State lived in the wrong place for the handoff. Library to Planner was a bare URL parameter. Anonymous work died at the app boundary every single time. You could do twenty minutes of real thinking in one app and lose all of it by moving to the next.

Diagram: five breaks on one user path
Mapped from the pre-consolidation codebase and the app shells in git history.

Underneath all of it was a policy problem: saving was login-gated, the builder and deck export were Pro-gated, and the Library's Pro rules were never enforced at all. The entitlement logic and the code disagreed with each other. The usage data told the same story the architecture did — people lived in one app, and they didn't cross.

02 / After

One app, four phases, one record.

Workshopr is now one core application with four phases (Strategize, Plan, Facilitate, Synthesize) and a persistent workshop record running underneath all of them.

Diagram: four phases over one workshop record

The record is the part that matters. It starts almost empty at Strategize, when the workshop is still an argument you're making to someone who controls a budget. It accumulates through Plan as the agenda takes shape, through Facilitate as the room generates notes, polls and decisions, and through Synthesize as that raw material becomes themes and commitments. By the end it is a complete account of what happened — not a folder of artifacts from four tools, but one object.

The consolidated dashboard, with a journey strip on every workshop card
Every workshop card carries a journey strip (Strategize, Plan, Facilitate, Synthesize) with the active phase marked. The product's shape is legible before you click anything.

Crucially, lifecycle state is derived, never stored. A workshop is "delivered" because a completed session exists with a linked plan. It is "synthesized" because a synthesis record exists against that same plan. There is no status column for the system to lie about, and no way for the label to drift from reality.

Diagram: the workshop record, derived from the plan spine

Ten microsites were triaged. Library and the intervention cards stayed deliberately outside the spine as supporting references rather than lifecycle phases. The reference material didn't belong in a linear flow, and forcing it in would have made both worse. That was a sequencing decision, not an unfinished job.

Diagram: fourteen properties collapsing into one spine and five satellites

"I used to spend a full afternoon building an agenda. Last week I built a three-hour offsite in about twenty minutes and it was better than the one I'd have written."

Claire · Design Lead, fintech
Diagram: six weeks of consolidation inside a year of growth
One caveat

Something I'd rather state than have someone find.

I can't claim the consolidation caused that growth. Acquisition came from marketing: writing on Substack several times a week, free and paid ebooks, engaging with facilitation communities. The honest framing is that the marketing engine brought people in and the consolidated lifecycle gave them a reason to stay. Retention and cross-stage adoption are the numbers that would actually prove that, and I don't have them yet.

03 / The bridge

Fifteen interviews, one data model, and a demotion.

Persona one-pager for Maya Okonkwo, the working facilitator
Maya Okonkwo, the primary persona — one of four built from the interviews. Click to view full size, or read the full set in the personas document.

I built Workshopr for myself first, which was the right way to start and the wrong way to continue. When I finally ran proper research (fifteen user interviews plus a survey of existing users), the central assumption broke. I had been designing for people like me: designers who run workshops. A large share of my actual users are Learning & Development practitioners, who approach facilitation with different goals, different constraints and a different definition of success.

The clearest signal came earlier, and I'd half-ignored it. The Library (three months of work, 380 exercises, 90 icebreakers) landed with users as "nice, but so what?" That reaction is what drove me to build the Planner in the first place. Research didn't tell me to build something new; it told me what the centre of gravity already was, and that my information architecture was pointing at the wrong thing.

The workshop record was the unlock, and it had to come first.

Data architecture board for the workshop record, showing the plan spine and the tables that key to it
The data architecture I worked it out on: plans.id as the spine, every capture table keyed to it, and the lifecycle computed at read time. Click to view full size.

Consolidation was impossible while every app owned its own state. You cannot merge four applications into a lifecycle if nothing survives the trip between them. So the first thing built inside the new shell wasn't a screen. It was a federated read model keyed on the plan. One plan, one workshop. Everything else hangs off that spine. This is why the sequence was charter, then record, then interface: the shell shipped before any of the phases did, so the chrome could be settled once rather than four times.

Collapsing the IA meant demoting my own work.

The hardest call was the Library. It was the most content-rich thing I'd built and the thing I was most attached to, and the research was unambiguous that it wasn't the product's centre. Promoting it would have meant designing the lifecycle around reference material instead of around the job. It became a supporting surface.

Strategize went the other way. It began life as a standalone "getting to yes" toolkit, a microsite about winning approval for a workshop before you plan it. Research kept surfacing that the job doesn't start at the agenda; it starts at the argument. So the microsite was promoted into the first phase of the lifecycle, with five steps: make the case, build a strategy kit, draft the pitch, practise the conversation, sanity-check the scope.

The design system had to be rebuilt before the merge, not after.

You can't consolidate four applications onto four stylesheets. Canvas (tokens first, components second, theming third) was the precondition. I'd learned this the expensive way: the first microsite I built copied every token into its own stylesheet and drifted within weeks. Extension, not duplication.

AI restraint was a design decision, not a technical one.

The temptation in an AI product is to use it everywhere. The actual work was deciding where not to. Recommendations are constrained to exercises that already exist in the library, so the Planner cannot invent an exercise that isn't real. Strategize uses AI for exactly one thing, a sixty-second pitch, and the rest of the phase is structured input, not generation. The "draft it for me" button cycles canned drafts rather than calling a model, because the user needs a starting point, not a surprise.

04 / Reflection

The right start, the wrong finish.

Building for myself was the right start and the wrong finish. I should have talked to the people who weren't me at app three, not app fourteen. The fourteen-app sprawl wasn't a failure of discipline (each one was a reasonable local decision) but a failure to check, early enough, whether the person I was building for existed.

The gap I'd name now is dependency. Strategize and Synthesize both lean on a single AI provider, and while others are configured, only one is live. I built provider fallback elsewhere in the platform specifically because I don't trust a single dependency, and these two phases don't have it yet.

The other honest gap is measurement. I can show that the architecture consolidated and that users grew. I can't yet show that someone who starts at Strategize is more likely to finish at Synthesize, which is the entire thesis of the redesign. That's the next instrument to build, and until it exists, the strongest claim I can defend is a structural one: four applications became one product, and the object that made it possible is the thing I'd design first if I did it again.

14 → 1
Properties into one core app
6
Weeks, charter to shipped
1,400
Active users, up from 500
Related case studies