Real-time voice conversations with historical figures — grounded in real web sources, zero hallucinations.
AI chatbots hallucinate historical facts. DeadTalk doesn't.
Pick any historical figure — Tesla, Einstein, Cleopatra — and have a real voice conversation. Every response is grounded in live web sources via Firecrawl Search. The figure speaks with a custom AI voice that matches their personality, era, and emotion. You hear Tesla's passionate intensity about alternating current. You hear Curie's quiet determination about radioactivity. Every fact is cited. Every voice is unique.
| Feature | Description | |
|---|---|---|
| 🎙️ | Real-Time Voice Conversations | Speak naturally — STT captures your question, the figure responds with a custom AI voice |
| 🔍 | Zero Hallucinations | Every response is backed by Firecrawl Search — real web sources, cited in real time |
| 🎭 | Emotional Voice Delivery | Responses use ElevenLabs Audio Tags — anger, wonder, sadness, laughter — matching the moment |
| ✨ | Create Any Historical Figure | Type a name → 6 automated Firecrawl searches → AI portrait → custom voice → ready to talk |
| 🖼️ | AI-Generated Portraits | Each character gets a unique painted portrait via Google Imagen 4 |
| 🌐 | Bilingual | Full EN/ES support — conversations adapt to your language |
| 📱 | Mobile-First 9:16 | Designed for vertical screens — optimized for sharing on TikTok, Reels, Stories |
| Tesla | Einstein | Curie | Cleopatra | Jobs |
|---|---|---|---|---|
| ⚡ | 🌌 | ☢️ | 🏛️ | 💡 |
| Inventor | Physicist | Chemist | Pharaoh | Visionary |
Each with unique voice, personality, emotional triggers, and animated background effects.
┌─────────────┐
│ You speak │
└──────┬──────┘
▼
┌──────────────────────┐
│ ElevenLabs STT │ ← Real-time speech recognition
└──────┬───────────────┘
▼
┌──────────────────────┐
│ Claude LLM │ ← Generates response with emotion tags
│ + Firecrawl Search │ ← Searches the web for real sources
└──────┬───────────────┘
▼
┌──────────────────────┐
│ ElevenLabs TTS │ ← Custom voice with emotional delivery
│ (Voice Design) │
└──────┬───────────────┘
▼
┌─────────────────────────┐
│ You hear the answer │
│ + see source cards │
└─────────────────────────┘
On every single response, the LLM calls Firecrawl Search to find relevant biographical data before answering. This isn't optional context — it's a hard requirement in the system prompt. No search = no response.
Left: Voice conversation with Ada Lovelace · Right: Transcription with cited sources
Left: Live web sources backing every answer · Right: Full conversation metadata
The most Firecrawl-intensive feature. Type any historical figure's name and DeadTalk autonomously:
1. RESEARCH → 6 Firecrawl searches (biography, personality, appearance,
quotes, key events, audio recordings)
2. SYNTHESIZE → LLM distills raw results into structured persona data
3. PORTRAIT → Google Imagen 4 generates a painted portrait
4. VOICE → Firecrawl searches audio archives (archive.org, LoC, BBC)
→ Found? ElevenLabs IVC clones the real voice
→ Not found? ElevenLabs Voice Design generates one from description
5. READY → Full character with system prompt, voice, portrait, greetings
~12-18 Firecrawl API calls per character creation. Each search query is tailored to extract specific biographical dimensions — not generic queries, but targeted research patterns.
| API | Usage |
|---|---|
| ElevenAgents | Orchestrates the full conversation loop (STT → LLM → TTS) |
| Text to Speech | Streams character responses with custom voices |
| Speech to Text | Real-time transcription of user speech |
| Voice Design | Generates unique voices from text descriptions |
| Instant Voice Cloning | Clones real historical voices from audio samples |
| Audio Tags | Emotional delivery — [excited], [sad], [angry], [laughing] |
| API | Usage |
|---|---|
| Search | Real-time web search on every conversation turn (grounding) |
| Search (batch) | 6 targeted searches per custom character creation |
| Extract | Structured data extraction from search results |
| Layer | Technology |
|---|---|
| Frontend | Nuxt 4 · Vue 3 · Tailwind CSS 4 · Pinia |
| Backend | Express · TypeScript · tsbean-orm · WebSocket |
| Database | MongoDB |
| Image Gen | Google Imagen 4 Fast (portraits) |
| LLM | Claude (conversation + research synthesis) |
┌───────────────────────────────────────────────────────────┐
│ FRONTEND │
│ Nuxt 4 · Vue 3 · Tailwind CSS 4 │
│ ┌──────────┐ ┌──────────┐ ┌───────────────┐ │
│ │ Landing │ │ Session │ │ Create Char. │ │
│ │ (9:16) │ │ (Voice) │ │ (Firecrawl) │ │
│ └──────────┘ └──────────┘ └───────────────┘ │
│ │ ▲ WebSocket ▲ │
└───────────┼─────────┼────────────┼────────────────────────┘
│ │ │
┌───────────┼─────────┼────────────┼─────────────────────────┐
│ ▼ ▼ ▼ BACKEND │
│ ┌─────────────────────────────────────┐ │
│ │ WebSocket Orchestrator │ │
│ └──────────┬──────────────────────────┘ │
│ ▼ │
│ ┌─────────────────────┐ ┌────────────────────────┐ │
│ │ Conversation Engine │ │ Character Creation │ │
│ │ STT → LLM → TTS │ │ Research → Image → │ │
│ │ + Firecrawl Search │ │ Voice → System Prompt │ │
│ └─────────┬───────────┘ └────────┬───────────────┘ │
│ │ │ │
│ ┌─────────▼───────────────────────▼───────────────┐ │
│ │ External APIs │ │
│ │ ElevenLabs · Firecrawl · Imagen · Claude │ │
│ └─────────────────────────────────────────────────┘ │
│ │
│ ┌──────────────┐ │
│ │ MongoDB │ ← Persisted custom characters │
│ └──────────────┘ │
└────────────────────────────────────────────────────────────┘
git clone https://github.com/dvald/DeadTalk.git
cd DeadTalk/web-application
cp backend/.env.example backend/.env
# Add your API keys to backend/.env
docker compose up --buildRequired API keys:
| Key | Source |
|---|---|
ELEVENLABS_API_KEY |
elevenlabs.io |
FIRECRAWL_API_KEY |
firecrawl.dev |
GOOGLE_GENAI_API_KEY |
Google AI Studio |
OPENAI_API_KEY |
OpenAI |
Open http://localhost → pick a character → start talking.
Built for ElevenHacks Season 1 — Week 1: Firecrawl × ElevenLabs
DeadTalk — Where history speaks back.
#ElevenHacks · @elevenlabsio · @firecrawl_dev






