MoFloShipped: Feb 2026

Building a content execution system for SMBs

MoFlo could generate and schedule content, and users still weren't posting. The bottleneck wasn't generation quality, it was the cost of starting. I redesigned the product from a creation tool into a system that prepares work and asks for a decision.

Role
Lead Product Designer
Team
Product Designer (Me), CTO, Lead Developer, 2 Dev Interns
Timeline
5 Weeks
Tools
Figma (Design, Make, Jam), Claude Code, Lottielab, v0, Fullstory

Every tool worked and nobody was posting. My first fix was the obvious one, and it barely moved. The thing that actually worked was giving up on getting users to start.

I owned

  • Problem framing
  • Customer interviews
  • The falsifying experiment
  • Information architecture
  • Gap-detection logic
  • Approval queue + review UI
  • Prototypes shipped to eng

Shared

  • Signal thresholds with the CTO
  • Build sequencing with the lead dev

Not mine

  • Generation models
  • Publishing integrations
  • Backend implementation

I was the only designer on this. That meant I also owned the part designers usually get to skip: writing down which behaviour we were betting on, running the experiment that could kill it, and telling the team when it did.

The situation

The product worked. The behaviour didn't.

MoFlo is an AI content platform for small businesses: multi-platform publishing, AI generation, scheduling. All of it functioned. Users could generate captions and visuals and schedule across channels.

They just didn't.

60% weekly drop-off, despite frequent dashboard visits
2posts per session before most users stopped
20% of users who acted on a performance insight

Owners opened the dashboard, looked at the numbers, and left. The gap was behavioural, not technical.

MoFlo platform overview
The platform before the redesign.

The wrong guess

I assumed the generation experience wasn't good enough

My first hypothesis was the comfortable one: output quality. If the captions were better and the flow felt less uninspiring, engagement would follow.

So I tested it before rebuilding anything. I simplified the input, surfaced suggested topic prompts, and cut friction out of the generation UI.

The optimised generation flow, built to test the hypothesis rather than ship it.

Drop-off improved slightly. Most users still stopped after one or two posts. The experiment was cheap and it was the most useful thing I did, because it ruled out the explanation everyone on the team preferred.

What was actually happening

Users weren't stuck on quality. They were stuck on starting.

I ran interviews with active customers about how they approached content week to week.

How do you decide what to post? When do you create content? What happens when you open the dashboard? What usually stops you from publishing?

None of them ask about the product. If I'd asked what they thought of the generator I would have got opinions about the generator, and the answer was never going to be in there.

It takes too much time to create and schedule a post. I just want someone to do all of it for me.

SMB owner, customer interview

I open the dashboard, look at the numbers, and then close it. It feels like I have to think too much before I can even start.

SMB owner, customer interview

The pattern: content creation was not part of a structured workflow. It was something they did when they had time or felt pressure. Every week started from zero.

Session 1
Interview synthesis. Sorting what people said from what they did.

They didn't lack tools. They lacked momentum. The friction was cognitive: the repeated mental effort of deciding, in a week already full of real work.

The reframe

Stop asking users to initiate

If the expensive step is starting, the system should do the starting.

That is the whole idea, and everything below is a consequence of it.

Nothing happens until the user opens the dashboard and chooses to make something. There is no queue, no prompt, no starting point.

Costs the user · The whole week's output hangs on remembering, and on having the energy to start.

Same job, both ways. Walk the steps: the old flow spends four decisions before anything exists, the new one spends one after it already does.
Operational signals surfacing what needs attention, in real time.

Getting there

Three structures I built and rejected

My earliest sketches split content by status so work was visible across stages, to make content feel like committed work rather than optional drafts.

It didn't hold up. Users still had to decide what to do first. The system was organised but not decisive.

Insights at the top, generated content below, calendar to the side. Metrics, action, schedule.

This still required interpretation: read the signal, translate it into an action, navigate to drafts. It asked users to think in exactly the place they had already told me they stop.

Early explorations put the calendar up front as a place to plan. But these users were not planners, they were reactors.

So the calendar became a consequence instead: approval auto-fills it, hovering a scheduled day shows a lightweight preview rather than a heavy modal. Confirmation, not composition.

Pipeline sketches
Status columns. Organised, but still waiting on the user to choose.

The difference between the final pipeline and the first one is one column. "Flo Generated" is not a status the user moves things into. It is work the system did while they were gone.

What shipped

Review and approve, instead of plan and create

Three pieces, in the order they run. I designed all three and prototyped each one before it went to the team, so what the developers got was a working thing to build against rather than a spec to interpret.

Gap detection decides what to make. The engineering was straightforward; the design work was deciding what counts as a gap, and how loudly to say so. I scoped it to three signals — platform inactivity, a depleting content runway, an imbalance across channels — because those are the three an owner can act on in one click. Everything else I could have surfaced (engagement dips, follower deltas, best-time-to-post) fails that test: it's information, and information is what these users were already closing the dashboard on.

Automatic gap detection
Gap detection: inactivity, runway gaps and platform imbalance, surfaced without being asked.

One review, not three previews. A post that goes to Instagram, LinkedIn and X used to mean checking it three times in three places. I put all three renderings in one view, which sounds obvious and was the piece I had to argue for hardest: it costs real screen space, and the alternative — a platform switcher — costs a decision per platform, which is the exact currency the whole project was trying to stop spending.

One unified review: how the post lands on each platform, before approval.

Approval is the only decision left. Approving triggers an optimised cadence rather than opening a date picker. Users can still override the time — I kept that, because taking it away turns a system that helps into one that decides — but the default path has no scheduling step in it at all.

Final execution system

The pattern under all three: the system spends the decisions, the user spends the judgment. That split is why "AI does it for you" didn't have to mean handing over control — approval is a real veto, and the queue only exists to make using it cheap.

Impact

Consistency improved when initiative wasn't required

Within one month:

Weekly drop-off, one month after launch

60%
Before
25%
After
The number the whole project was aimed at. Product analytics on the active base, one month post-launch — not a test cohort.
70% of system-generated drafts approved without edits
3× increase in multi-platform publishing
0new generation capabilities added to get there

Users stopped planning content. They started maintaining it.

The 70% figure is the one I'd interrogate if someone showed it to me. Approving without edits is only a good sign if the drafts were good; it looks identical to users rubber-stamping a queue to get through it. What separates the two here is the publishing number: rubber-stamped content doesn't get posted to three platforms. If those two had moved in opposite directions I'd have read the 70% as a failure, not a win.

Reflection

Activation is a design problem, not a model problem

AI quality alone doesn't drive adoption. I spent the first stretch of this project improving output because that was the legible thing to improve, and the experiment that disproved it took two days.

Behavioural architecture mattered more than feature depth. Reducing the cost of starting improved consistency without adding a single capability.