Everyone cites the flywheel. Almost no one explains why a correctly-built one stalls. It's a chain of four links — and it breaks at the weakest. Here's how to diagnose (and fix) which link is yours.
You built the platform. You seeded it with real services and real users. And it just... sat there. More services added, nothing compounded. This is the most common platform outcome, and the flywheel model — "more services → more users → more builders → more services, accelerating on its own" — doesn't explain it, because the model describes the loop working, not why it fails.

Here's the reframe that makes it diagnosable: the flywheel isn't a thing with momentum. It's a chain of four causal links, and a chain breaks at its weakest one. Let's find yours.
The four links, and the infrastructure each one needs
┌──────────────────────────────────────┐
│ │
more services ──[A]──▶ more useful to users │
▲ │ │
[D] [B] │
│ ▼ │
more builders ◀──[C]── more users │
│ │
└─────────────────────────────────────────┘
Link A: more services → more useful (breaks without DISCOVERY)
Link B: more useful → more users (breaks without GOOD UX / RETENTION)
Link C: more users → attractive to build (breaks without DEV EXPERIENCE)
Link D: more builders → more services (breaks without SELF-SERVE PUBLISHING)
Each link is a causal claim that can be false in your specific platform. Let's diagnose each.
Link A: does "more services" actually become "more useful"?
The claim sounds tautological but isn't — a service that exists isn't a service users find.
// The diagnostic: do users actually reach new services?
analytics.query({
perService: ["discovery_source", "unique_users_first_30d"],
ecosystem: ["services_with_zero_usage"] // ← the tell
});
// If services_with_zero_usage is climbing, Link A is broken.
// You're adding services users never discover. Zero added usefulness.
Fix: discovery infrastructure — search, categories, contextual surfacing, personalization. Without it, you can add 50 mini-apps and deliver zero marginal usefulness because users only experience the handful they stumble onto.
Link B: does "more useful" actually become "more users"?
Breaks when usefulness accrues only to people already present, or when friction cancels it.
// Diagnostic: does added usefulness convert to acquisition/retention?
metrics.compare({
before_new_services: { new_user_rate, retention_30d },
after_new_services: { new_user_rate, retention_30d }
});
// Usefulness that doesn't move these is a link that LOOKS connected and isn't.
Fix: experience quality — gray release and rollback to keep the bar high, so new services retain rather than repel. Useful-but-painful doesn't pull users in.
Link C: does "more users" actually make it "attractive to build"?
A growing audience is only attractive if reaching it is worth the build cost.
Builder's implicit calculation:
value(reach the audience) vs cost(build + publish + navigate governance)
If build cost is high → even a big audience isn't worth it → builders stay away
Fix: developer experience — fast setup, real debugging, quick iteration, mocked host capabilities. The link is not "the audience is large" but "the audience is worth building for," and DX decides which is true.
Link D: does "more builders" actually become "more services"?
Breaks between intent and shipment — builders who want in but can't easily ship.
# Diagnostic: the path from "want to build" to "live"
publish_path:
requires_platform_team_involvement: true # ← if true, Link D is throttled
time_from_submit_to_live: "3 weeks" # ← if slow, builders don't convert
self_service: false # ← the core problem
# Ecosystem growth capped at platform-team capacity = broken Link D
Fix: self-service publishing under governance — submit, automated checks, approval queue, gray rollout — so builders ship without the core team as chokepoint. This link breaks exactly where scale was supposed to arrive.
The diagnostic logic
Symptom is ALWAYS the same: inputs added, no compounding out.
Cause is a SPECIFIC severed link:
Adding services, nothing happens → probably Link A (no discovery)
Services used but no growth → probably Link B (no conversion)
Users grow but no new builders → probably Link C (painful to build)
Builders interested but few ship → probably Link D (no self-serve)
Applying more force upstream of a broken link just produces
more of the thing that can't propagate. Find the severed link.
Why the runtime isn't enough
Hosting services is necessary and nowhere near sufficient. The flywheel's links ARE infrastructure: discovery (A), experience quality (B), dev tooling (C), self-service publishing (D). This is how to read what a platform like FinClip provides beyond the runtime — management-layer discovery and analytics (A + measurement), gray release and rollback (B), developer tooling (C), and governed self-service publishing (D). Not features bolted on a runtime — the four links of the chain, kept intact so the loop can actually transmit force.
The test
Is services_with_zero_usage climbing? (Link A — discovery.)
Do new services measurably move new-user and retention rates? (Link B — conversion.)
When your audience grows, do new builders show up — or is building too painful? (Link C — DX.)
Can a builder go from "want to build" to "live" without your team operating the process? (Link D — self-serve.)
A "no" anywhere is your severed link — and adding services upstream of it is exactly the stall you're feeling. Which link is yours? 👇
More on platform economics, ecosystem design, and the infrastructure that makes flywheels spin → https://super-apps.ai/
Top comments (0)