Failure PatternDecision layer
The Reseller Margin Trap: Why App Builder Retainers Collapse After Launch
Symptom: Client apps sit at v1.0 for 9 to 14 months while the agency bills a monthly maintenance retainer that covers nothing beyond app store renewals. Root cause: Agencies price the retainer against hosting and push-notification costs, which are trivial, instead of against the ongoing product decisions a live app demands.
By InnovaAI ResearchPublished
How do you recognize it?
- •Client apps sit at v1.0 for 9 to 14 months while the agency bills a monthly maintenance retainer that covers nothing beyond app store renewals
- •Change requests arrive as one-off tickets (new checkout field, SSO login, offline mode) and each one gets quoted as custom work because the builder cannot express it
- •App store review rejections land on the agency, not the client, and the fix requires a platform support ticket with a 3 to 5 day turnaround
- •The client's internal IT team starts asking for API access, audit logs, and role-based permissions that the builder's admin panel does not expose
- •Renewal conversations shift from 'what should we build next' to 'why are we paying this every month'
Why does it happen?
- •Agencies price the retainer against hosting and push-notification costs, which are trivial, instead of against the ongoing product decisions a live app demands
- •White-label reseller programs from BuildFire, GoodBarber, and Shoutem make the agency the vendor of record, so every platform limitation becomes the agency's limitation in the client's eyes
- •The no-code layer handles the first 80 percent of a mobile product and stops at authentication edge cases, complex data relationships, and native device features, which is exactly where client requirements accumulate after launch
- •Platform dependency is invisible at signing and obvious at month eight, when migrating off the builder costs more than the original build
How do you fix it?
- •Rewrite the retainer scope to name what is included (hosting, store compliance, two change requests per month) and publish an hourly rate for everything else before the next renewal
- •Run a capability audit against the client's 12-month roadmap and flag every item the current builder cannot deliver, then price those as separate scoped projects
- •Move the client's data into a hosted database the agency controls (Adalo's Postgres backend and AppMySite's WordPress sync both allow this) so a future migration is a rebuild of the interface, not the data
- •Add a platform-risk clause to new contracts that discloses the builder dependency and sets a fixed migration fee if the client ever needs to leave