A daycare came to me needing to replace a stack of separate tools — a scheduling spreadsheet, a group text for parent updates, a paper sign-in sheet for admissions — with one dashboard staff would open every morning instead.
The obvious move on a project like this is to build everything at once: students, staff, billing, messaging, admissions, expenses, all in the first release. I didn't. Billing is still not built, on purpose, and it shipped fast specifically because of that choice.
Here's why. A daycare's daily operations — who's scheduled, who signed a kid in, which parent needs to hear about tomorrow's field trip — have to work every single day or the whole system gets abandoned within a week. Billing has a different failure mode: get it wrong and it's wrong with someone's money, and getting it right means real payment processing, real compliance, real edge cases around partial months and sibling discounts. Bolting an undercooked billing module onto the release meant to prove the rest of the system works is how a small, affordable build turns into a slow, expensive one.
So the first release covered the parts of the day that had to be right immediately: student records, staff scheduling and time tracking, parent messaging, announcements, admissions. Billing gets built once the operational core has been run daily by real staff long enough to trust it — not because it doesn't matter, but because shipping it half-right on day one would put the shakiest part of the system in front of the highest-stakes use case.
That's the judgment call this business model runs on: tell me the general idea, and the build that comes back prioritizes the piece of your operation that fails loudest if it's wrong, not the piece that's easiest to demo. Same question applies outside daycares — which pieces fail quietly, which fail loudly with someone's money or someone's kid, and build the quiet-failure pieces first.
Trying to figure out what actually needs to be in version one?
Talk about your project ↗Questions worth answering directly
Why leave billing out of the first release if the client asked for it?
Because billing fails loudly — wrong with someone's money — while daily operations fail quietly and get abandoned within a week if they're not right immediately. Shipping the operational core first, fast, proves the system before the highest-stakes feature goes anywhere near it.
What did the first release actually cover?
Student records, staff scheduling and time tracking, parent messaging, announcements, and admissions — the parts of the day that have to work every single day. Billing gets added once that core has been run daily by real staff long enough to trust it.