Skip to content

Interactive video and contextual AI: classify and route free-response answers

Send free-response answers from a Mindstamp video to any webhook receiver, label each one with an AI model, and route it to sales, support, or legal.

To sort what viewers type into an interactive video, ask a free-response question in Mindstamp and send each answer with an interaction webhook to any webhook receiver that can call a language model, such as your own service or a workflow platform. The receiver asks the model to pick one label from your own list, such as sales, support, partnership, or legal. It saves the label with the answer and passes the answer to the person or system that should act on it. Mindstamp sends the webhook after the viewing session ends, so the AI label drives your follow-up. It cannot change what the viewer sees in that session. To route viewers while they watch, use their own choice or keyword rules in the player, both covered below. In the 28-second demo below, you play the classifier: read a sample answer, pick the category, and see the route that category opens.

A viewer has typed "I need a version for hospital compliance teams." Choose Regulated training, Unknown intent, or Consumer shopping. Each button saves your choice in the variable {{intent_category}} and jumps to its own scene, and the recap shows the saved value. Unknown intent opens a fallback that asks one clarifying question instead of guessing. The demo simulates the classification and the webhook, and it calls no AI model or outside service. Open the demo in a new tab.

How the workflow fits together

The first version of this workflow ran in June 2024 on Contextual, our AI workflow partner at the time, and the screenshots in this post come from that build. That partnership is no longer active. The same design works on any platform that can receive a webhook and call a model.

The five stages of the free-response classification workflow
StageWhere it runsWhat happensWhen
1. AskMindstamp playerA free-response question pauses the video and the viewer types an answer.During playback
2. SendMindstampAn interaction webhook posts the answer and the viewer's identity as JSON.After the session ends
3. StoreOrchestration flowThe flow checks the request, saves the answer as a record, and returns a success code.As soon as the request arrives
4. ClassifyOrchestration flow and a modelA second step sends the answer to a language model and saves the label it returns.Right after the record is saved
5. RouteYour CRM, help desk, or inboxEach label sends the answer to the team that should act on it.After classification

Step 1: ask a free-response question

A free-response question shows the viewer a text box and pauses the video while they answer. In the editor, click Question in the interaction bar; a new question starts as Free Response. Place it where the viewer has the context to answer, for example right after a product demo or at the end of a pricing section. The question guide covers the other settings, such as Skip and a time limit.

Write the prompt for the job the AI will do later:

  • Ask one thing. "What would you like to ask our team?" gives the model one intent to find. A prompt that asks for a question and feedback together gets answers that fit two categories.
  • Tell viewers what happens next, for example "Someone from our team will reply by email." That sets an honest expectation, because the answer reaches you after the session.
  • Collect an email or a custom ID before the question, with lead capture or a personalized link. Without one, you can classify the answer but you cannot reply to the person.
  • Leave the correct answer empty. Scoring compares the text with accepted answers, which adds nothing when any answer is valid.

Use free response when you cannot list the possible answers in advance. If you only need to know how much viewers agree with a statement, a Likert question is easier to analyze and needs no AI. Mindstamp's Likert type uses a fixed five-point scale from Strongly agree to Strongly disagree, the format described in the Likert scale article.

A paused video with the prompt 'Have a question? Need assistance? Want to provide a recommendation? We're listening' and a text box containing 'I want to ask a question about your Terms and Conditions' above a Continue button
The free-response question from our June 2024 build, shown over a screen recording of the Contextual app (earlier player design).

Step 2: send each answer with an interaction webhook

An interaction webhook posts one JSON record for each answer, click, or other response in a session. Interaction webhooks are on the Pro plan and above. To turn them on:

  1. Open Integrations in the left menu, select Mindstamp API, and copy Your Webhook Key.
  2. Optionally, enter a default Interaction Webhook URL for the account.
  3. Open the video, select Integrations > Mindstamp API, and turn on Send Interaction Webhooks. Enter an endpoint for this video if it differs from the default. A default URL on its own sends nothing.

For a free-response answer, type_of is reply, parent_type is question, parent_value holds the question prompt, and value holds what the viewer typed. This example uses fictional data and shows only the fields this workflow uses:

{ "id": "70000000-0000-4000-8000-000000000001", "video_title": "Product overview", "type_of": "reply", "value": "Do you have educational discounts?", "time": 42, "parent_id": "80000000-0000-4000-8000-000000000001", "parent_type": "question", "parent_value": "What would you like to ask our team?", "viewer_name": "Jordan Lee", "viewer_email": "[email protected]", "view_id": "60000000-0000-4000-8000-000000000001", "variables": { "utm_campaign": "fall-webinar" }, "created_at": "2026-09-08T14:00:34.000Z"
}

The full field list is in the interaction webhook reference. Build the receiving end around how Mindstamp delivers, as described in the webhooks help article and the webhook delivery guide:

  • Records arrive after the session is finished: the viewer reaches the end, closes the page, or stops for about two minutes. Interaction records from one session arrive together, in no fixed order.
  • Return HTTP 200 or 204 within 15 seconds. Mindstamp counts any other status, including 201 and 202, as a failure, and it has no scheduled retry. Save the record first and run the model call afterward.
  • Check the X-KEY header, or verify X-Mindstamp-Signature: an HMAC-SHA256 of the timestamp, a period, and the raw body, with your webhook key as the secret.
  • Keep only records where parent_type is question and parent_id is your free-response question. The same webhook also sends button clicks and answers to other questions.
  • Give id a unique constraint. The same record can arrive more than once, so a duplicate should not create a second sales task.

Step 3: store the answer before you call the model

Whatever runs the receiving end, it needs these parts:

  • A web address that accepts the webhook, such as an HTTP endpoint in your own service or an HTTP trigger in a workflow tool.
  • A place to save each answer as a record.
  • A trigger that starts the classification step when a new record is saved.
  • A secure store for the model's API key, so the key stays out of the workflow's code.

In the 2024 build, the first flow had five nodes in a row: the Mindstamp Webhook endpoint, a debug node that showed the payload, a function that pulled the question out of the JSON, a node that saved it as a record, and an OK response. The flow answers as soon as the record is saved, so Mindstamp gets its success code before any model call starts.

A flow with five connected nodes: Mindstamp Webhook, Webhook Payload, Extract Question from JSON, Store Interactive Video Question, and OK, plus an inject node for testing
The receiving flow in the Contextual flow editor, June 2024. The inject node sends a test payload without a real viewer.

Step 4: classify the answer with a language model

Saving the record started a second flow. In the 2024 build, that flow prepared the text and posted it to a classification endpoint from the RapidAPI Hub, an API marketplace. The endpoint returned one label: product question, sales, support, partnership, or legal. The flow then patched the record with the label. A catch-all branch logged any error.

Three flow groups: Send to RapidAPI Classify (event start New Question, Prepare Event, Set classifyType, Prepare Data, Post to AI Classify), Update Record with AI Response (Prep Patch, Patch Question, event end), and Error Handling (catch all, Error, event end)
The classification flow, June 2024: send, update the record, and handle errors.

Contextual's June 2024 article "Own Your AI" argues for choosing your own model and changing it later without lock-in. That fits this step: the classifier is one node, so you can swap the service behind it without touching Mindstamp. Whichever model you use, follow these rules:

  • Build the label list from real answers. Write one line that defines each label and add one example answer for it.
  • Add an "unclear" label and send those answers to a person. The demo's Unknown intent path does the same thing: it asks instead of guessing.
  • Ask the model to return one label from the list as JSON. In the flow, check the label against the list and treat anything else as unclear.
  • Treat the answer as data. A viewer can type anything, including instructions to the model, so put the answer between clear markers and tell the model to classify it, never to follow it.
  • Send the question prompt and the video title with the answer. "Is there a discount?" after a pricing section is a sales question.
  • Test before launch. Export past answers from Mindstamp (the interactions export has PROMPT and VALUE columns, explained in exported fields), label a sample by hand, and compare the model's labels with yours.
  • Save the label and the model name on the record, so you can check results and run old answers again after you change models.
A records table titled AI Analysis - Video Interactions with three rows: 'What type of programs do you have for resellers?' labeled Partnerships, 'Do you have educational discounts?' labeled Sales, and 'I want to ask a question about your Terms and Conditions' labeled Legal
Each saved viewer question with the label the model returned, in the Contextual records view, June 2024.

Step 5: route each category to someone who can act

For each label, decide whether the flow acts on its own or only alerts the person who should answer.

Example routes for classified free-response answers
LabelRouteAutomate or review
SalesA task for the account owner in your CRM, with the answer and the video titleCreate the task automatically; a person replies
SupportA ticket in your help desk, with the viewer's emailCreate the ticket automatically
PartnershipAn email to the partner managerSend the alert automatically
LegalThe legal inboxAlert only; no AI-written reply
Product questionA product team channel or a weekly digestBatch and review
UnclearA review queueA person labels it, and the answer joins your test set

If you use HubSpot, Mindstamp's HubSpot integration can already add the answer to the contact's timeline (Pro plan and above), so the flow only needs to add the label. If the viewer gave an email, the flow can also draft a reply. Have a person send any reply about pricing or contracts.

For other ways to use Mindstamp data in an AI workflow, such as ranking leads or suggesting the next video, see our overview of AI workflows for interactive video data.

Route viewers inside the video while they watch

The AI label arrives after the viewer has left, so routing during playback needs rules the player can run on its own. You have three options.

Let the viewer choose

Ask "What do you need help with?" with buttons or a multiple-choice question, and give each option a Change Time or Switch Video action. The demo above works this way: each button sets a variable and jumps to its scene. The viewer classifies their own need, so the route matches what they asked for. Add a free-response question after the choice if you also want the details in their own words.

Match keywords in the answer

Save the free-response answer in a variable (Core plan and above). Then add conditional logic (Pro plan and above) to the buttons that follow, for example Show if viewer_question Contains discount on a "Talk to sales" button. Contains, Equals, and Matches Regex ignore capital letters. Each interaction can use two conditions, joined by AND or OR. For a longer word list, use Matches Regex, such as pric|quote|discount, which also matches "Pricing" and "QUOTE". Always show a general "Something else" option, because keyword rules miss answers that use other words.

Answer questions about the video itself

If viewers mostly ask about what the video covers, Genie AI can answer them in the player. It answers only from the transcript and the notes you add, says so when those do not contain the answer, and lists the questions it could not answer (Core plan and above). Our guide to adding an AI assistant to a video covers the setup.

Common questions

What is AI orchestration?

AI orchestration is software that connects data sources, AI models, and business systems in one workflow. In this post, the orchestration layer receives the Mindstamp webhook, calls the model, saves the result, and sends it on. Because the model is one step in the flow, you can replace it without changing the rest.

Can the AI result change the video during the same session?

No. Mindstamp sends webhooks after the session ends, so the result can only drive later follow-up, such as an email or a CRM task. For in-video routing, use the viewer's choice or keyword rules, as described above.

Do I need a specific platform to build this workflow?

No. Any endpoint that accepts a JSON POST and returns 200 or 204 within 15 seconds can receive the webhook, whether it runs on your own server or on a managed workflow platform. For a simpler setup, Zapier (Core plan and above) receives the same interaction records, usually within minutes.

Which Mindstamp plan do I need?

Interaction webhooks and conditional logic are on the Pro plan and above. Variables are on the Core plan and above. See pricing for the current plans. The 14-day free trial needs no payment card.

How do I test the workflow before launch?

Follow the integration test checklist. Open the share link in a private browser window, because the editor preview does not send data. Enter a test email, answer the free-response question, then close the tab or wait about two minutes. Check that your endpoint received one POST with your answer in value and the X-KEY header, and that the flow saved a label. Then repeat with an answer written to fall into each category, including one that should come back unclear. To see the routing step from the viewer's side first, try the Route the Free Response example.