Contact Centres
Anti-Scam Utilities

Intake scam reports with AI chat

Workflow purpose

This guide demonstrates how to use Proto's platform to capture a scam report from a citizen in a single conversation – reporter details, what happened, and supporting evidence – with the same LLM-assisted extraction pattern used for complaint intake. Scam reports are often filed in a hurry, in mixed language, and with an incomplete first message. Structuring the intake this way still gets a complete case record without forcing the reporter through a rigid form.

Who can benefit from this guide:

  • Central banks and financial regulators operating a national anti-scam centre
  • Consumer protection agencies handling scam and fraud reports
  • Telecom and payments providers with their own scam reporting channel
  • Anti-fraud teams who need consistent, structured case data for triage

Intake a scam report

This workflow captures reporter details, scam specifics, and supporting evidence, then files a structured case with the anti-scam centre's system. See how to intake scam reports with AI chat.

Just starting with the platform?
For initial setup of your AI agent – including workspace setup, agent training, and channel deployment – please start here. This workflow guide assumes your AI agent is set up and ready for more advanced configurations.

1. Create a trigger

Purpose: Start the flow when a citizen wants to report a scam.

  • Navigate to the Actions tab in the AI agent settings.
  • Click “+ Add Trigger” and select the Message Received trigger type.
  • Name the trigger “Scam Report Intake”.
  • Add a description such as “Triggers if user requests to report a scam, fraud, or suspicious transaction.”

2. Opening message

Purpose: Set expectations before collecting sensitive details.

  • Add a Send message action: “I’m sorry this happened. I can help you file a scam report and pass it to our anti-scam team. I’ll need a few details.”

3. LLM action – scam report details

Purpose: Extract the scam’s key facts from the reporter’s own words, asking only for what’s missing.

  • Add a Set chat variable action: description = _user_input.
  • Add an LLM action named Scam report details. Input: {description}. Output variable: scam_details.
  • Success branch: first action is Set chat variablescam_details = _.json_parse(scam_details).
  • System prompt fields: scam_type (string|null), channel (string|null, e.g. SMS, call, app), amount_lost (string|null), date (string|null), suspect_details (string|null), follow_up_question (string).

4. Branch – ask for missing details

Purpose: Loop back for the single most important missing field rather than asking everything at once.

  • Add a Branch action. Condition: scam_details["follow_up_question"] != "none" and scam_details["follow_up_question"] != none.
  • If true: Send message with {scam_details["follow_up_question"]}, Survey more_details (Text, skip: On), then a Branch (back check) – “back” in _.lower(more_details) → jump to menu – followed by Set chat variable description = {description} {more_details}, then jump back to the LLM action.

5. Survey – supporting attachments

Purpose: Collect evidence that strengthens the case without requiring it to proceed.

  • Add a Survey action titled Scam evidence.
  • Field attachmentsAttachment(s)Upload screenshots, messages, or transaction records that support your report.Required: Off.

6. File the case

Purpose: Send the structured case to the anti-scam centre’s system for triage.

  • Add a Send API request action with the collected fields, mapped to the anti-scam case system. Store the response as case_id.

7. Confirmation message

Purpose: Give the reporter a reference and set expectations for next steps.

  • Add a Send message action: “Your report has been filed. Reference: {case_id}. Our team will review it and reach out if we need anything else.”

8. Test the flow

Purpose: Confirm the extraction loop and evidence upload both behave under real conditions.

  • Submit a vague first message (“I got scammed”) and confirm the follow-up loop asks for the missing fields one at a time.
  • Submit a report with no attachments and confirm it still files successfully.
  • Submit in a mixed-language message and confirm the extraction still returns a usable scam_type.