Multi-persona AI panel that pressure-tests startup ideas — with web-grounded objections
Status: early prototype. Built to learn applied agent engineering. The core engine works end-to-end locally; this is not a polished product.
You give it an idea. It runs a panel of distinct AI personas — each with a role, profile, and stance. Personas search the web for evidence as they argue. A moderator agent steers phases and produces a final synthesis.
The goal isn't to predict whether the idea is good. It's to stress-test it from many angles, with sources, fast — so the founder spends their real customer-research time on sharper questions.
A single-prompt panel is one model wearing five hats. ValidVision runs each persona as its own agent, with separate memory, role, and tool access. The differences that matter:
- Distinct voices. Each persona is a separate agent with its own profile and reasoning trace.
- Web grounding. Personas call Exa search mid-discussion to back claims with real sources.
- Structured workflow. Multi-phase discussion with state that compounds — not free-form chat.
- Transparent. Every message tags sentiment and exposes the tool calls + results behind it.
- Streaming. Live transcript via Mastra's workflow streaming, surfaced through Next.js.
You need Bun, an OpenAI key, and an Exa key.
bun install
cp .env.example .env # then fill in OPENAI_API_KEY and EXA_API_KEY
# install pinned agent skills (Mastra, Prisma, shadcn, etc. — see skills-lock.json)
bun run skills:install
# initialize the local SQLite DB + seed
bun run db:migrate
bun run db:seed
# Run the app
bun dev # runs the mastra and Next app in paralel
Open http://localhost:3000. In dev mode the app auto-logs in as the seeded dev user.
See .env.example for the full list. Minimum:
OPENAI_API_KEY— for the persona + moderator agentsEXA_API_KEY— for web search (free tier works for local play)DATABASE_URL— defaults tofile:./dev.dbNEXT_PUBLIC_MASTRA_URL— defaults tohttp://localhost:4111