AI-powered adaptive survey experiences
Smart Surveys use AI to create conversational survey experiences that adapt in real-time based on respondent answers. Instead of static question lists, Smart Surveys generate contextual follow-up questions to explore topics more deeply.
AI generates follow-ups based on context
Natural dialogue, not rigid forms
Uncover root causes automatically
Initialize a session with your survey's topic and objectives. The AI receives context about what you want to learn.
Based on the topic and previous responses, the AI generates the next most relevant question to ask.
Each response is analyzed for sentiment and key themes, which inform the next question.
When enough context is gathered or max questions reached, the session completes with a summary.
Start by creating a session with your survey's objectives:
POST /api/v1/surveys/{surveyId}/smart-sessions
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json
{
"respondentId": "resp_abc123", // Optional: link to known respondent
"metadata": { // Optional: pass to AI for context
"department": "Engineering",
"tenure": "2 years"
}
}
// Response
{
"data": {
"sessionId": "ss_xyz789",
"surveyId": "srv_abc123",
"status": "active",
"currentQuestion": {
"id": "q_001",
"text": "How would you describe your overall experience working here?",
"type": "open_text",
"isGenerated": true
},
"questionCount": 1,
"maxQuestions": 10,
"createdAt": "2026-02-04T10:00:00Z"
}
}After the respondent answers, submit the response to receive the next AI-generated question:
POST /api/v1/surveys/{surveyId}/smart-sessions/{sessionId}/respond
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json
{
"questionId": "q_001",
"answer": "Overall it's been positive, though I sometimes feel disconnected from other teams."
}
// Response
{
"data": {
"sessionId": "ss_xyz789",
"status": "active",
"responseRecorded": {
"questionId": "q_001",
"sentiment": "mixed", // positive | negative | neutral | mixed
"themes": ["collaboration", "team communication"]
},
"nextQuestion": {
"id": "q_002",
"text": "You mentioned feeling disconnected from other teams. Can you tell me more about what makes collaboration difficult?",
"type": "open_text",
"isGenerated": true,
"followUpTo": "q_001" // Indicates this is a follow-up
},
"questionCount": 2,
"maxQuestions": 10
}
}Sessions complete automatically when max questions are reached, or you can complete manually:
POST /api/v1/surveys/{surveyId}/smart-sessions/{sessionId}/complete
Authorization: Bearer YOUR_API_KEY
// Response
{
"data": {
"sessionId": "ss_xyz789",
"status": "completed",
"summary": {
"totalQuestions": 6,
"totalResponses": 6,
"duration": 420, // seconds
"overallSentiment": "mixed",
"keyThemes": [
"cross-team collaboration",
"communication tools",
"meeting overload"
],
"insights": [
"Respondent values team relationships but struggles with cross-functional coordination",
"Communication tools are seen as inadequate for async collaboration",
"Meeting frequency is a concern affecting productivity"
]
},
"completedAt": "2026-02-04T10:07:00Z"
}
}Customize Smart Survey behavior in your survey settings or per session:
| Parameter | Default | Description |
|---|---|---|
| maxQuestions | 10 | Maximum questions per session (5-20) |
| followUpDepth | 2 | How many follow-ups on same topic (1-3) |
| tone | professional | Question tone: professional, casual, empathetic |
| language | en | ISO language code for questions |
| includeScaleQuestions | true | Mix in rating scale questions |
The Embed SDK has built-in Smart Survey support with real-time callbacks:
import { Revuloop } from '@revuloop/embed';
const survey = new Revuloop({
token: 'YOUR_EMBED_TOKEN',
surveyId: 'srv_abc123',
mode: 'smart', // Enable Smart Survey mode
// Smart Survey callbacks
onSmartSurveyInit: (session) => {
console.log('Session started:', session.sessionId);
console.log('First question:', session.currentQuestion.text);
},
onSmartQuestionChange: (data) => {
console.log('New question:', data.question.text);
console.log('Question #:', data.questionNumber);
console.log('Is follow-up:', !!data.question.followUpTo);
},
onSmartResponseRecorded: (data) => {
console.log('Sentiment:', data.sentiment);
console.log('Themes:', data.themes);
},
onComplete: (summary) => {
console.log('Session complete!');
console.log('Key themes:', summary.keyThemes);
console.log('Insights:', summary.insights);
}
});
survey.open();Each question generation and response analysis uses credits from your account:
smart_surveys:readView Smart Survey sessionssmart_surveys:writeCreate sessions and submit responsesThe AI uses your survey title and description to guide question generation. Be specific about what you want to learn.
Include relevant metadata (department, role, tenure) to help the AI ask more contextual questions.
5-8 questions work well for quick pulse surveys. Use 10-15 for in-depth exploration of complex topics.
The AI-generated insights and themes provide valuable context that complements your analytics.