A few months ago I set out to build VoiceDash, a white-label portal that lets an agency resell AI voice agents under their own brand. The pitch is simple: an agency buys voice AI infrastructure once, slaps their logo and domain on it, and hands each of their clients a clean dashboard that looks like the agency built it themselves. Simple to say. The build is where you find out what "white-label" and "multi-tenant" actually cost you.

This is a build log, not a launch post. I want to write down the three things that turned out to be harder than I expected, while they are still fresh.

The stack

Nothing exotic, and that was on purpose. Next.js App Router, Prisma on top of Postgres (hosted on Supabase), NextAuth for sessions, Stripe for billing, Resend for transactional email, and Retell as the underlying voice platform. The UI is Radix primitives with Tailwind, recharts for the call analytics, and react-grid-layout so clients can rearrange their dashboard widgets. OpenAI does the call analysis pass. Deploys are just a push to main on Vercel.

I picked boring tools everywhere I could, because the actual hard problems were not going to be about the framework.