Skip to main content

Scenario

Your Qualtrics survey has 5,000+ responses across 40 questions — demographics, psychographics, behavioral data, and open-ended feedback. This is the richest persona-building dataset in your organization, but it sits in a Qualtrics dashboard that only the research team accesses. This job exports the full response dataset using Qualtrics’ async export flow (create export → poll for completion → download CSV), sends it to Mave Agent for segment discovery, then creates a comprehensive persona library in Mavera. The result is an enterprise-grade persona set grounded in thousands of real survey responses. Flow: Qualtrics async export (POST /surveys/{id}/export-responsesGET .../export-responses/{exportId} → Download) → Parse CSV → Mave segment discovery → POST /api/v1/personas per segment → Comprehensive persona library

Architecture

Code

Example Output

Error Handling

Qualtrics exports are async: create → poll → download. Large surveys (10K+ responses) may take 5+ minutes. The code polls for up to 5 minutes (60 × 5s). For very large surveys, increase the timeout.
Qualtrics CSV exports include 3 header rows (column names, import IDs, question text). The code skips rows 2-3 by filtering on the Status field. Verify your export format matches.
The export downloads as a ZIP file containing one CSV. Python uses zipfile; JavaScript needs jszip. Install jszip with npm install jszip.
The API URL includes your datacenter ID (e.g., ca1, iad1, fra1). Find it in Account Settings → Qualtrics IDs. Using the wrong DC returns 404.