Intro
I built a B2B sales-list-generation SaaS as a solo/small-team developer and have been running it in production. The product is bacotto — type in an industry and a region, and it returns 100 enriched leads in 3 minutes (address, phone, email, Instagram handle, LINE official account, Google reviews, plus a "still operating" classification).
This post walks through the architecture from the angle of "engineering decisions a tiny team needs to make to keep the lights on cheaply." Should be useful if you're building a Maps-API + Web-scraping style SaaS, or any low-budget local B2B tool.
Stack overview
Front / API : Next.js 15 (App Router) + TypeScript
Deploy : Vercel (Hobby plan)
Auth : NextAuth.js v5 (Google OAuth + email/password)
DB / Cache : Vercel KV (Upstash Redis under the hood)
Payments : Stripe Checkout + Customer Portal
Error monitoring : Sentry
Email : Resend
Data sources : Google Places API + a regulation-compliant HTML crawler
The thesis: lean on fully-managed services everywhere…