Building a B2B Expense Management Platform from Scratch
Fintech / B2B SaaS
Problem
A two-person fintech startup had raised a small friends-and-family round and needed to turn their validated idea into a shippable product — fast. They had a detailed spec, a design file in Figma, and a hard deadline tied to a pilot with three paying customers. What they did not have was engineering capacity.
The product needed multi-tenancy from day one: each company that signed up needed isolated data, role-based permissions, and the ability to invite team members. They also needed Stripe billing wired up before the pilot, because free trials were not part of the deal.
They had tried hiring a freelancer who disappeared after two weeks with a partially-working prototype. They needed someone who could take ownership of the full technical execution, not just write code to a ticket.
Approach
We started with a two-day architecture session to nail the data model and auth strategy before writing any application code. Multi-tenancy via a tenant_id foreign key pattern on every table, combined with Supabase row-level security policies, gave us data isolation without a complex microservices setup.
Authentication was built on Supabase Auth with custom middleware for role checking (owner, admin, member). The billing integration used Stripe Checkout for subscriptions and Stripe webhooks to provision/deprovision seats in real time. We set up a CI/CD pipeline on day three so every push was tested and deployed to a staging environment automatically.
The frontend was a Next.js app router project with a shared component library built on shadcn/ui. We wrote enough tests to cover the billing and permissions logic — the two areas where bugs would have been most damaging to the pilot relationship.
Outcome
We shipped the product in six weeks. All three pilot customers were onboarded on day one of the pilot period. The founders were able to run the demo calls themselves without needing us on standby because the product was stable.
After the pilot, both founders reported that investor confidence had increased significantly — having a production-grade product rather than a prototype changed how those conversations went. The product has been running in production without incident since launch.
The handover documentation meant the founders could onboard a part-time developer to handle minor changes without needing to come back to us for every small request.