- A goal describing what you’re trying to learn.
- A channel for the invitations — email with a personal interview link (
in_app_chat), Slack DM (slack), or Microsoft Teams chat (teams). - A question set organized as topics and sub-topics, with goals, priorities, and typed questions — open-ended plus structured components (single/multiple choice, Likert, ranking, matrix, sliders).
- A list of contacts to interview.
- A schedule — send invitations at launch, or hold them for a start date; plus a soft response deadline.
- A language (
default_language) that fixes the participant-facing copy, interview UI, conversation, and voice. - A synthesis target that defines the final report shape.
Lifecycle
Launching and scheduling
POST /v1/interviews/{id}/start validates the campaign (goal, at least one contact, at least one question, channel prerequisites), marks it active, and sends the invitations on the campaign’s channel. Participants self-schedule via their personal link — there is no calendar coordination.
- Send now (default): invitations go out at launch.
- Scheduled send: with
start_immediately: falseand a futuretimeframe_start, invitations are held and sent automatically when the campaign opens. Date-only start values resolve to 08:00 in the campaign’s timezone, so participants get invited in their morning, not at midnight UTC. The detail endpoint exposes the exact instant asinvitations_scheduled_for. - Soft deadline:
timeframe_endis shown to participants as the response deadline (in invitations and reminders) but never blocks late responses.
Topics and questions
Each topic carries agoal, a priority (required / important / optional), and a free-text success_threshold describing when the topic counts as sufficiently covered. Sub-topics and explicit questions narrow the agent’s focus without scripting it.
Questions have a question_type: open_ended (default), single_choice, multiple_choice, likert_scale, statement, and the interactive components ranking, matrix, and range_slider (configured via component_config, answered through structured UI in the session, and aggregated deterministically).
The interview agent is not a fixed script. It uses topics as a coverage target and improvises follow-ups based on what each respondent says.
Contacts
A contact is the person being interviewed. Minimum required fields are name and email (Slack campaigns acceptslack_user_id instead); richer metadata (department, job title, seniority) feeds into persona synthesis.
You can add contacts:
- One at a time via
POST /v1/interviews/{id}/contacts - In bulk via JSON (
POST /v1/interviews/{id}/contacts/bulk) - In bulk via CSV upload (
POST /v1/interviews/{id}/contacts/import)
What you get back
Once the campaign reachescompleted, four synthesis outputs become available:
- Cartography — a map of processes, categorized and connected. See Synthesis.
- Roadmap — proposed solutions grouped by horizon (now / next / later).
- Personas — per-contact and per-department behavioral profiles.
- Conversations — individual transcripts with summaries and citations.