A multi-persona AI panel that watches you over WebRTC, reads your project document, and challenges you in real time, so you walk into your pitch, viva, or interview having already faced the hardest questions.
Founders, researchers, and job-seekers routinely fail high-stakes presentations not because they lack knowledge, but because they have never practiced under real adversarial pressure.
The Defense Panel puts you in front of two hyper-realistic Beyond Presence avatars — one interrogating your logic, one tracking your delivery — that have read your actual document and will interrupt you when you waffle or contradict yourself.
Sessions are automatically graded and stored in Supabase so you can track improvement over time. The product runs entirely in the browser via WebRTC with no plugins required.
| Field | Details |
|---|---|
| Track | Best Use of Beyond Presence |
| Beyond Presence Integration | Two live WebRTC avatar agents run in parallel per session, created dynamically via the Beyond Presence REST API with GPT-4o-generated system prompts derived from the user's uploaded document |
| Demo URL | https://defense-panel-two.vercel.app |
| Tech Stack | React 18 · Vite 6 · Vercel Functions · OpenAI GPT-4o · Beyond Presence · LiveKit · Supabase · Dodo Payments |
Founders preparing investor pitches, postgraduate researchers approaching their viva voce, and candidates facing technical interviews share a common blind spot: they rehearse their material but never rehearse under adversarial, real-time pressure.
When a VC says:
"Your CAC payback period doesn't add up"
or an examiner says:
"You contradict your own methodology on page 47"
most people freeze — not because they lack the answer, but because they have never been asked that way before.
If left unsolved:
- Founders lose funding rounds
- PhD candidates fail vivas
- Qualified candidates fail interviews they were capable of passing
- Startup pitch success rates for first-time founders hover around 1–3%
- Viva failure and major correction rates exceed 15%
- Technical interview pass rates at top-tier companies are below 20%
Existing practice methods are:
- Expensive
- Difficult to schedule
- Rarely adversarial enough
The issue is not a lack of preparation tools.
There are:
- Flashcard apps
- Slide coaches
- Interview question banks
But none provide:
- Persistent contextual memory
- Real-time adversarial interruption
- Awareness of the uploaded document
- Dynamic challenge generation
Users upload:
- Pitch decks
- Theses
- CVs
The backend:
- Extracts document text
- Sends it to GPT-4o
- Generates a structured Context Matrix
Two Beyond Presence avatars are then created:
- Interrogator → challenges logic
- Ah-Counter → tracks delivery quality
Users enter a live WebRTC arena where both avatars:
- See and hear them
- Interrupt weak answers
- React contextually
At the end:
- GPT-4o grades the transcript
- Results are stored in Supabase
| Feature | User Need Addressed |
|---|---|
| Document-aware AI personas | Catch contradictions specific to the user's content |
| Live WebRTC barge-in interruption | Simulates real pressure |
| Dual avatar panel | Separates logic critique from delivery feedback |
| Three simulation modes | Startup Pitch / Viva / Interview |
| Difficulty levels | Friendly / Standard / Brutal |
| Auto-grading & transcript persistence | Tracks improvement over time |
| Inline document preview | Mirrors real presentation setup |
| Vision mode toggle | Optional body-language commentary |
- Three simulation modes
- Dual Beyond Presence agents
- LiveKit real-time media bridge
- GPT-4o grading pipeline
- Supabase authentication and session history
- PDF / DOCX / PPTX extraction
- Dodo Payments integration
- Public deployment
- Native mobile apps
- Enterprise SSO
- Custom avatar creation
- Voice cloning
- Real-time transcript display
- Upload PDF/DOCX/PPTX
- GPT-generated Context Matrix within 10 seconds
- Live avatar session
- Context-aware interruptions
- Simulation mode selection
- Auto-generated grading
- Session persistence
- Email/password and Google OAuth authentication
- Session bookmarking
- Difficulty and session-length configuration
- Second avatar observer
- Practice goal selection
- Inline document preview
- Vision mode
- Native mobile apps
- Real-time transcript display
- Collaborative sessions
- Voice/avatar customization
- Email reports
- Document processing < 10 seconds
- Agent creation < 30 seconds
- Grading < 60 seconds
- Structured error handling
- Frontend toast notifications
- Graceful extraction fallbacks
- Automatic agent cleanup
- Single-page application flow
- Minimal controls during session
- Chromium browser recommendation
- Stateless API sessions
- Supabase RLS multi-tenancy
- Serverless auto-scaling
| Layer | Technology |
|---|---|
| Frontend | React 18 + Vite 6 + Tailwind CSS |
| Realtime Media | Beyond Presence + LiveKit |
| Backend | Vercel Functions |
| Parsing | pdf-parse, mammoth, jszip |
| AI | OpenAI GPT-4o |
| Database/Auth | Supabase |
| Payments | Dodo Payments |
| Hosting | Vercel |
- User uploads document
- Backend extracts text
- GPT-4o generates Context Matrix
- User configures session
- Backend creates Beyond Presence agents
- Browser launches WebRTC arena
- Session runs with live interruptions
- User ends session
- GPT grades transcript
- Results saved to Supabase
GPT-4o performs:
- Context extraction
- Persona generation
- Transcript grading
Outputs:
- System prompt
- Greeting
- Role objectives
- Conversation structure
- Starting script
- Document summary
Grading returns:
- Overall score
- Filler word count
- Critical feedback
- WebRTC interruption latency may vary
- PPTX extraction weak for image-heavy decks
- Dodo sidecar is single-process
- Transcript retrieval may occasionally fail
- Supabase Auth
- JWT verification
- Row Level Security
- Documents processed in-memory only
- No payment data stored
Secrets stored only server-side:
- OPENAI_API_KEY
- BEYOND_PRESENCE_API_KEY
- SUPABASE_SERVICE_ROLE_KEY
- DODO_PAYMENTS_API_KEY
- MIME validation
- 10MB upload limit
- JSON validation for AI outputs
I want to upload my pitch deck and be challenged by an AI investor panel.
I want to simulate my viva with AI examiners.
I want to practice technical interviews with AI recruiters.
I want to track my progress across sessions.
- User uploads deck
- AI processes document
- User configures session
- Arena launches
- AI interrupts weak reasoning
- Session continues dynamically
- Grading begins
- Feedback dashboard appears
- Session saved to history
- Image-heavy PPTX uploads
- Blocked microphone permissions
- Very short sessions
- User leaves session early
- Startup founders
- PhD researchers
- Technical interview candidates
Targets:
- Viva preparation
- Startup fundraising
- Technical interview coaching
| Competitor | Weakness |
|---|---|
| Yoodli / Poised | Delivery analysis only |
| ChatGPT / Claude | No real-time presence |
| Human mock panels | Expensive and hard to schedule |
- 3 sessions/month
- Standard difficulty
- Single avatar
- Unlimited sessions
- Dual avatars
- Brutal difficulty
- Full history
- £12–£18/month
- Annual discount
- Institutional plans
- University outreach
- Startup accelerator partnerships
- Short-form social content
- Sponsor collaborations
- Dual avatars
- GPT grading
- Session history
- Payments integration
- Real-time transcript display
- Better PPTX extraction
- Progress analytics
- Voice cloning
- Institutional dashboards
- Native mobile apps
- Dynamic document-generated prompts
- Dual Beyond Presence agents
- Real-time contextual interruptions
- Full AI orchestration lifecycle
Every feature directly supports adversarial practice under pressure.
- Public deployment
- Working production stack
- End-to-end integration
- Payments + persistence included
Applicable to:
- Startups
- Academia
- Technical hiring
The product has:
- Clear monetization
- Viral demo moments
- Institutional expansion potential
| Member | Responsibility |
|---|---|
| Kaveesha Ginodh | Team leadership, coordination, debugging |
| Dulaksha Dulan | UI/UX and frontend |
| Thesaru Praneeth | Backend and AI integration |
| Prabuddha Paranawithana | Payments and database architecture |
The team covers:
- Frontend
- Backend
- AI
- Infrastructure
- Payments
- Deployment
See REQUIREMENTS.md for full clone-and-run instructions (Node 22.13+, all env vars, Supabase SQL, dual-terminal API setup, and troubleshooting).
Quick start:
npm install
cp .env.example .envFill in .env from .env.example (Supabase, OpenAI, Beyond Presence). Run supabase/pitch_sessions.sql in Supabase (and optionally supabase/pitch_sessions_extended.sql for dashboard/debrief enrichment fields). Enable Email auth. For briefing deploy and live agents, also run npx vercel dev --listen 3000 in a second terminal (see REQUIREMENTS.md).
npm run dev- Auth — Login (email/password) or Register (username, email, password)
- Lobby — Select Startup Pitch, Academic Viva, or Technical Interview
- Briefing — Upload mode-specific PDF, DOCX, or PPTX context
- Arena — Startup Pitch: multi-format presentation preview + presenter PIP + panelists; other modes: full webcam + panelists
- Debrief — Performance analytics (mock data until API is wired)
npm run buildThis repo is configured for one-click deployment as a Vite SPA with serverless functions in /api.
git push- Vercel will auto-detect the Vite framework (also pinned in
vercel.json). - Build command:
npm run build· Output directory:dist· Install:npm install. - Node runtime is pinned to
>=20viapackage.json#engines.
Required for all environments (Production / Preview / Development):
| Variable | Used by |
|---|---|
VITE_SUPABASE_URL |
Frontend Supabase client |
VITE_SUPABASE_ANON_KEY |
Frontend Supabase client |
SUPABASE_URL |
/api/* serverless |
SUPABASE_ANON_KEY |
/api/end-session, /api/sessions (JWT verification) |
SUPABASE_SERVICE_ROLE_KEY |
/api/end-session, /api/sessions (admin inserts) |
OPENAI_API_KEY |
/api/process-document, /api/end-session |
BEYOND_PRESENCE_API_KEY |
/api/start-session, /api/start-call, /api/end-session |
BEY_AVATAR_ID |
/api/start-session (Beyond Presence avatar persona) |
DODO_PAYMENTS_API_KEY |
/api/create-checkout (Dodo Payments secret key) |
DODO_API_URL |
/api/create-checkout (e.g. https://test.dodopayments.com or https://live.dodopayments.com) |
PRODUCT_ID |
/api/create-checkout (default Dodo product) |
Optional:
| Variable | Default | Purpose |
|---|---|---|
BEY_CHAT_EMBED_ORIGIN |
https://bey.chat |
Override the iframe-fallback embed origin |
BEY_AVATAR_ID2 |
unset | Second Beyond avatar: silent panelist agent + LiveKit slot 2 in the arena |
VITE_USE_API_SESSIONS |
unset | Force the frontend to use /api/sessions instead of direct Supabase reads. Production already uses /api/* automatically. |
FRONTEND_URL |
request origin | Fallback return_url host for /api/create-checkout after payment |
VITE_DODO_API_URL |
unset | Point Pricing checkout at the standalone dodo/ Express gateway instead of /api/create-checkout |
Never expose OPENAI_API_KEY, BEYOND_PRESENCE_API_KEY, or SUPABASE_SERVICE_ROLE_KEY to the frontend — only the VITE_-prefixed pair is bundled into the client.
In the Supabase SQL editor, run:
supabase/pitch_sessions.sqlsupabase/pitch_sessions_extended.sql(debrief scores)supabase/pitch_sessions_transcript.sql(Beyond transcript columns)
Enable Email auth in Supabase, and add your Vercel domain to the Site URL / redirect allowlist.
vercel.json bumps memory and maxDuration for the AI endpoints (process-document, end-session) so OpenAI + Beyond Presence calls have time to complete. On the Hobby plan max duration is capped at 60s — the values in vercel.json stay within that limit.