Voice-native, Agent-first user research infrastructure.
Your Claude / Cursor / Codex can now interview 100 users while you sleep, and wake up to structured insights it can act on.
telepace is a user research platform designed for AI agents as the first-class user. Three surfaces:
- MCP Server — Claude / Cursor / Codex call
create_campaign,get_insights, etc. - Web App — traditional research team dashboard with chat-first study composer
- REST API + Webhook — embed in your own agent or product
- vs Outset / Listen Labs: Agent-first, not dashboard-first
- vs Perspective / Voicepanel: Voice-native (real-time voice interviews, not text-only)
- vs Tally / Typeform MCP: Research closed-loop (moderate + analyze + push back to agent), not form CRUD
Ingress (Marketing / Web App / Respondent UI / MCP)
↓
Contract Layer (Pydantic — single source of truth)
↓
Harness (Orchestrator + Router + Memory + Policies + Observability)
↓
Agents (Designer / Interviewer / Analyst / Coordinator)
↓
Domain Services (voiceflow / analysis lib / channel workers)
↓
Event Store (Postgres append-only) + Projections + pgvector
See docs/architecture.md for the full design.
core/ domain models, events, protocols (contract layer)
harness/ orchestrator, router, memory, policies
agents/ designer, interviewer, analyst, coordinator
interfaces/ mcp_server, rest_api, realtime
voice/ wrapper around telepace/voiceflow (Go)
analysis/ sentiment, clustering, persona synthesis
storage/ event store + projections + vector
frontend/ single Next.js app (marketing + app + auth + respondent), shared UI
eval/ prompt evals + CI
deploy/ docker-compose, fly.io, github actions
docs/ architecture, agents, protocols, roadmap
One command (starts docker services → backend :8010 → frontend :3300):
scripts/up.sh # bring the whole dev stack up
scripts/doctor.sh # check the environment first (toolchain, ports, services)Or step by step:
# Backend
uv sync
docker compose -f deploy/docker-compose.dev.yml up -d postgres redis
uvicorn interfaces.rest_api.main:app --reload --host 127.0.0.1 --port 8010
# MCP server
python -m interfaces.mcp_server.server
# Frontend
cd frontend && pnpm install && pnpm dev # → http://localhost:3300No migration step: the database schema is created automatically on backend startup (
CREATE TABLE IF NOT EXISTS), so there is noalembicto run.
Behind a SOCKS proxy? If your shell exports
ALL_PROXY/http_proxy, the LLM SDK crashes on startup with a missing-socksioerror and localcurlhangs. Strip the proxy for the backend process (or installhttpx[socks]). Full walkthrough + an end-to-end register → create → respondent self-test: docs/local-fullstack-selftest.md.
MIT (planned).