OpenDashboard

A multi-tenant voice agent platform. Creator dashboard, public marketplace, real-time WebRTC calls.

Client project·Xplor·2026

Overview

OpenDashboard is a multi-tenant voice agent platform I built for Xplor. Businesses design AI agents through a creator dashboard, publish them to a public marketplace, and customers start real-time voice calls in under a minute. I shipped it in three milestones (each approved on first review and paid) and it's live at va.xplor.com.ng.

The challenge

Voice agent platforms are exploding (Vapi, Retell, Bland) but every product is single-tenant. You build your agent, embed it on your site, and hope someone calls. There's no discovery layer.

Xplor needed two surfaces in one product. Businesses needed a creator dashboard powerful enough to design conversation flows, manage knowledge bases, and review call analytics. Visitors needed a marketplace that surfaced relevant agents and put them on a call in under sixty seconds. Most teams pick one. We had to build both.

The reframe

A voice agent without discovery is a phone number nobody has.

I made the marketplace the spine of the product, not an add-on. Once that landed, every other decision fell out of it: agents got public slugs from day one, calls worked without an account, trending became the home page, and the data model started with “what does a publishable agent look like?” instead of “what does a creator dashboard need?”. The discovery layer pulled the rest of the product into shape.

Key decisions

Marketplace and dashboard from day one

Building both surfaces at once was twice the scope of a creator-only v1. I accepted that tradeoff because a creator-first MVP has no flywheel. Agents would sit idle waiting for owners to drive their own traffic. The marketplace gives the platform a discovery loop the dashboard alone can't generate.

Self-hosted LiveKit over managed services

I chose to run LiveKit myself instead of paying per minute to Vapi or Retell. The tradeoff was real: I had to operate WebRTC infrastructure end-to-end (Docker stack, STUN/TURN config, ICE debugging, audio quality monitoring). In return, the platform has predictable costs, full control over the audio pipeline, and no vendor lock-in.

Realtime API and traditional pipeline, both

Each agent can run on OpenAI's Realtime API for the lowest latency, or fall back to a traditional STT → LLM → TTS pipeline for cost control and reliability. That doubled the agent worker codebase and the testing matrix, but it gave Xplor a way to pick quality vs. cost per agent, and a fallback when Realtime had downtime.

OTP-only auth on the call side

Callers don't sign up. They enter an email, get a code, and they're in the call. No passwords, no profiles, no friction. The tradeoff is a hard SMTP dependency for the call funnel. I added a console fallback in dev and rate limiting (5 OTPs per hour per email) in production.

Impact

Three milestones shipped end-to-end. Every one approved on first review and paid.

Live in production at va.xplor.com.ng with real users on the marketplace.

Full call lifecycle wired up: voice → live transcript → GPT-4o summary and next steps → creator dashboard. Background processing so the API responds immediately.

Predictable costs from running infrastructure ourselves. No per-minute metered fees.

Single pnpm monorepo (five packages: frontend, backend, agent worker, LiveKit server, Whisper service) for clean handover.

Reflection

Building the marketplace and the creator dashboard at the same time felt risky every week of the project. It worked because the marketplace drove the data model. Asking “what does a publishable agent look like?” forced the creator UX to stay honest, and forced me to cut anything that didn't serve a real publishable agent.

The lesson I'd take to any platform like this: build the discovery layer first, even when it's empty. If you bolt it on later, you'll be retrofitting forever.

Tech Stack

Next.js 14Express.jsTypeScriptLiveKitOpenAI RealtimeTwilioPrismaMySQLReact FlowElevenLabsshadcn/uiTailwind CSSpnpm Monorepo