The debate arena lets you engage in structured 1v1 debates with AI opponents. Unlike the Q&A discussions, debates are focused, time-bounded exchanges with automatic synthesis at the end.
How debates work
Debates provide an immersive experience:
Choose your topic
Enter any topic you want to debate - from technology trends to philosophical questions
Meet your opponent
The system selects an AI expert opponent based on the topic’s domain
Exchange arguments
5 rounds of back-and-forth with real-time streaming responses
Receive synthesis
AI analyzes the debate and generates a comprehensive report with winner determination
Debate structure
Data model
interface Debate {
id : string ;
topic : string ;
userProfile : {
name : string ;
avatar : string ;
bio ?: string ;
};
opponentProfile : {
name : string ;
avatar : string ;
bio ?: string ;
};
messages : DebateMessage [];
synthesis ?: DebateSynthesis ;
status : 'pending' | 'in_progress' | 'completed' ;
userId : string ;
createdAt : Date ;
updatedAt : Date ;
}
interface DebateMessage {
role : 'user' | 'opponent' ;
name : string ;
content : string ;
timestamp : number ;
}
Status lifecycle
pending
in_progress
completed
Initial state when debate is created but not yet started. Opponent is being selected.
Active debate with ongoing message exchanges. Synthesis has not been generated.
All rounds finished and synthesis report generated. Debate is archived.
Real-time streaming
Debates use Server-Sent Events (SSE) for real-time content delivery:
SSE event types
// Opponent initialization
{ event : 'init' , data : { opponent : AIExpert } }
// Turn indication
{ event : 'start' , data : { speaker : 'opponent' | 'user' } }
// Streaming content chunks
{ event : 'chunk' , data : { content : string } }
// Complete message
{ event : 'message' , data : { role , name , content , timestamp } }
// Synthesis generation started
{ event : 'synthesizing' , data : {} }
// Final synthesis
{ event : 'synthesis' , data : DebateSynthesis }
// Debate completion
{ event : 'done' , data : {} }
// Error handling
{ event : 'error' , data : { message : string } }
The streaming format enables character-by-character rendering for a natural conversation feel.
Client implementation
const eventSource = new EventSource ( '/api/debate' );
eventSource . addEventListener ( 'init' , ( e ) => {
const { opponent } = JSON . parse ( e . data );
displayOpponent ( opponent );
});
eventSource . addEventListener ( 'chunk' , ( e ) => {
const { content } = JSON . parse ( e . data );
appendToCurrentMessage ( content );
});
eventSource . addEventListener ( 'synthesis' , ( e ) => {
const synthesis = JSON . parse ( e . data );
displaySynthesisReport ( synthesis );
});
eventSource . addEventListener ( 'done' , () => {
eventSource . close ();
});
Debate synthesis
After all rounds complete, an AI judge analyzes the debate:
interface DebateSynthesis {
consensus : string []; // Points both sides agreed on
disagreements : string []; // Core areas of disagreement
winner : 'user' | 'opponent' | 'tie' ;
winnerReason : string ; // Explanation of victory
conclusion : string ; // Overall takeaway
recommendations : string []; // Suggested next steps or readings
}
Synthesis example
{
"consensus" : [
"AI will significantly impact employment" ,
"Regulation is necessary for safety"
],
"disagreements" : [
"Timeline for AGI development" ,
"Role of government vs. industry self-regulation"
],
"winner" : "opponent" ,
"winnerReason" : "Provided more concrete evidence and addressed counterarguments systematically" ,
"conclusion" : "Both perspectives highlight the complexity of AI governance. A balanced approach combining innovation with safety measures appears most viable." ,
"recommendations" : [
"Study the EU AI Act for regulatory frameworks" ,
"Explore multi-stakeholder governance models"
]
}
The synthesis is generated by GPT-4o-mini analyzing the full debate transcript with structured prompting.
Debate configuration
Debates are configured with specific parameters:
Rounds : 5 exchanges (user speaks, opponent responds)
Response length : 100-200 characters per turn
Model : gpt-4o-mini for all responses
Temperature : 0.7 for natural variation
Timeout : 8 requests per minute rate limit
Debates cannot be resumed once completed. Each debate is a single-session experience.
Debate history
All your debates are saved and accessible:
// GET /api/debate/history
{
debates : Debate []; // Last 20 debates, sorted by newest
}
Each saved debate includes:
Complete message transcript
Synthesis report
Timestamps and metadata
Opponent profile
Review past debates to track your argumentation improvement and explore how different opponents approach the same topic.
Opponent selection
The system intelligently matches you with relevant opponents:
Analyzes your debate topic keywords
Scores AI experts based on expertise overlap
Selects an expert with relevant background
Injects their personality into debate responses
const opponent = selectBestOpponent ( topic );
// Returns expert with highest relevance score
Use cases
Test arguments Stress-test your ideas against expert counterarguments
Learn perspectives Understand how different experts approach the same issue
Practice rhetoric Improve your argumentation and debate skills
Explore topics Deep-dive into subjects through dialectic exchange
Differences from Q&A discussions
Feature Debates Q&A Discussions Structure Fixed 5 rounds Open-ended threads Participants 1v1 only Multiple users + experts Duration Single session Ongoing Synthesis Auto-generated Manual interpretation Focus Dialectic exchange Collaborative knowledge
Next steps
AI experts Meet the expert opponents
API Reference Build with the Debate API