Scoping by screen count is how agencies bleed money.
CourseStack had 9 screens. Easy math. Half the actual build lived between them. Streaming endpoints, cache layers, rate limits, webhook idempotency. None of it shows up on a wireframe.
Scope by capability, not screens.
Every course platform optimizes for "started a course."
The good ones optimize for the lesson boundary. 600ms of micro-animation between lessons is the bet that the user keeps going. A hard reload feels like leaving the room and never coming back.
Watch an instructor go from blank page to full course outline in under two minutes.
No template picking. No staring at empty modules. Just a topic, a goal, and AI that drafts the structure for them to edit.
This is CourseStack. One of 15 portfolio demos I built to show what my agency can ship.
Every course platform ships paywalled lessons client-side with a soft gate. Fast, great SEO, almost no one views source.
Almost no one is the wrong number. The users who pay to get better at engineering are exactly the ones who inspect the DOM.
CourseStack gates server-side.
Most course platforms are designed to maximize watch time. We built ours to maximize completion. So it doesn't feel like software. It feels like a magazine that happens to have video and quizzes inside it. Different metric. Different aesthetic. Different category.
@bestbubbledev You’ve always been able to build anything you want. You can just do it so much faster now.
I think the better question is: what opportunities are you willing to market and sell?
Most agency portfolios look the same. shadcn primitives, new brand color, generic SaaS landing. You can tell the same dev built every project in ten seconds.
The honest reason is design system reuse. Designing one template is cheaper than five. Founders notice.
The mobile inspection screen in InspectFlow looks like a tax form. Stark background, hazard-orange accents, monospace type, big rectangle buttons.
That's the point. An inspector with one gloved hand in bad light isn't browsing a marketplace. The tool should look like equipment.
Most software lies to you about whether it succeeded. A try/catch swallowed the error and fired the success toast anyway. The inspector drove to the next job. The submission went nowhere. The lie is the cheapest path for the engineer, and the most expensive bug to find later.
Day two of InspectFlow. Almost shipped the clean path: upload every photo to Storage on capture.
Then I pictured an inspector in a basement on two bars of LTE watching a spinner. Shipped dataURLs to localStorage instead. Clean path looks better in code review. Nobody uses it.
Property managers don't use software. They use group texts. AppFolio, Buildium, Yardi. All built for the office.
The maintenance lead standing in Unit 14B with gloves on opens the app, sees 47 tabs, and goes back to the group chat. We built for the person doing the work.
Agencies build what the founder asks for. They forget what the daily user actually touches.
The CEO signs the contract. The admin opens the calendar 50 times a week with one hand while pouring coffee. If that flow is 7 clicks instead of 2, your retention is already dead.
Almost shipped BooklyPro on a single-tenant data model. Caught it on day three. Rebuilt the whole data layer.
The data decisions you make in the first 72 hours outlast every UI redesign. Schema is expensive. Pixels are cheap.
The question isn't what's in v1. It's who logs in.
Drag a booking in our salon app and it doesn't snap. It lifts half a pixel, the new column glows, and it settles with a 220ms spring.
The CFO will never notice. The admin doing it 200 times a week will lobby internally for the app that doesn't fight her every drop.