The challenge
The client is a two-founder B2B SaaS company in Atlanta building workflow software for revenue-operations teams. They had done the hard part most founders skip: 30+ customer interviews, a signed-letter-of-intent pile, and a clear wedge. What they did not have was a product. They had a Figma file, a Notion doc full of edge cases, and a runway clock that gave them roughly one quarter to put something in front of the people who said they would pay.
Two prior quotes from dev shops had come back at 5-6 months and six figures. Both wanted a full discovery phase before they would commit to scope. The founders did not need to discover the problem; they needed to ship the narrowest thing that would let a paying customer run their core workflow start to finish.
What we found
In the scoping session we did the thing both prior shops wouldn't: we cut. The Notion doc had 40-odd features. We ran a cut-list against one question for each, "does the first paying customer's core loop break without this?" Thirty-one features failed that test and went to a parked backlog. What survived was a single end-to-end workflow: import accounts, route them by rule, assign owners, track status. That was the MVP.
The other finding was that the founders had been about to over-build auth and billing from scratch. We pushed back. Off-the-shelf primitives for both would save two weeks we did not have.
What we built
A real product, not a prototype.
- Front end: Next.js (App Router) on Vercel. Server components for the data-heavy list views, client islands only where interaction demanded it.
- Data + auth: Postgres on Supabase, with row-level security scoping every query to the customer's org. Supabase Auth for sign-in so we wrote zero password code.
- Billing: Stripe Checkout and the customer portal, wired to a
subscriptionstable that webhooks keep current, so entitlement checks were one query, not webhook-state spread across the app.
We shipped the core routing engine first because it was the part the LOIs were signed against, then built the import and assignment flows around it.
How the sprint ran
Scoping + cut list
One working session to run the 40-feature backlog against the core-loop test. Thirty-one features parked. We left with a one-page spec the founders signed off on the same day.
Core routing engine
Built the rule engine and the data model first, because the signed LOIs were against routing. Stripe and Supabase Auth wired in parallel so neither blocked the build.
Import, assignment, status
The workflow around the engine: CSV import, owner assignment, status tracking. Demoed to two design-partner customers at the end of week 4; one round of changes.
Release + first paying customer
Production cutover, billing live. The first design partner moved off the spreadsheet they were using and onto the product inside the launch week.
After launch we did not disappear. The founders kept us on a 2-week sprint cadence, and we shipped a release every two weeks through the first 90 days, pulling the highest-signal items off the parked backlog as paying customers asked for them. That cadence is the reason 14 teams were paying by day 90: every fortnight there was a concrete reason for a design partner to convert or a new prospect to sign.
Results
(See the full headline-results grid at the top of this page.)
By the end of the first 90 days post-launch, the founders had 14 paying teams and had gone from $0 to $8K MRR. None of it came from a feature on the parked backlog; all of it came from the narrow core loop working reliably and shipping improvements on a predictable clock. The founders raised their seed round on that traction.
Two other shops wanted five months to discover a problem we'd already discovered. These guys cut the spec in the first session and we had paying customers in six weeks. The cut list is the whole reason we're still here.
What we learned
The cut list is the entire game for an MVP. Founders with real demand almost always arrive with a scope that is 3-4× too big, not because they are wrong about the future but because every feature looks load-bearing in a Notion doc. Forcing each one through "does the first paying customer's core loop break without this?" is the cheapest way to buy back a runway.
If you have validated demand and a clock, we will scope, cut, and ship a real product in six weeks, then keep shipping every two. Tell us about your product and we will send back scope, price, and timeline inside 48 hours.