Sovereign AI workflows·Operational in 14 markets
Payments
Customer Support
Enterprise Max

Report lost or stolen cards with AI chat

Workflow purpose

This guide shows how to build a lost or stolen card reporting workflow using Proto’s AI agent. The workflow handles a distressed customer with immediate empathy, verifies their identity conversationally using an LLM Action, identifies the affected card via API, triggers an immediate block, and logs a support ticket – all without manual intervention from bank staff. Every step runs within the AI agent’s Actions, with no code required.

Who can benefit from this guide:

  • Retail and digital banking fraud and card-services teams
  • Customer support managers reducing IVR wait times for urgent card cases
  • Fintech card issuers offering 24/7 self-service blocking
  • IT teams deploying conversational AI across WhatsApp, web, and mobile banking channels
  • Any financial institution that needs to block a card the moment a customer reports loss or theft
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.

Step 1: Create the trigger

Set up a new workflow to capture lost and stolen card reports.

  • Navigate to the Actions tab in the AI agent settings.
  • Click + New workflow and select Message received as the trigger type.
  • Set Name to: Lost or Stolen Card
  • Set Description to: Triggers when a customer reports a lost, stolen, or compromised card.
  • Add training phrases: My card is lost, I lost my card, My card was stolen, Block my card, Someone stole my card, I can’t find my debit card, Cancel my card immediately.

Step 2: Send an empathetic opening message

Reassure a likely-distressed customer and explain what happens next before collecting any details.

  • Add a Send Message action under the trigger.

I’m sorry to hear that – I can block your card right away to prevent any unauthorised use. I just need to verify a few details first. This only takes a minute. Please share your full name, date of birth, registered phone number, and national ID number and I’ll get started.

Step 3: Verify the customer’s identity

Confirm the customer’s identity conversationally before exposing any account details or triggering a card block.

Capture the message

  • Add a Set Chat Variable after the Send Message. Set identity_input to _user_input.

Configure the LLM action

  • Add an LLM Action. Set Model to GPT-4o, Input text to {identity_input}, and Output variable to identity_details.

You are an identity verification assistant for a banking lost or stolen card service.

Extract the following fields from the customer’s message:

 full_name           (string or null)  – full name as it appears on the card
 date_of_birth       (string or null)  – customer’s date of birth
 phone               (string or null)  – registered phone number
 id_number           (string or null)  – national ID or CNIC number
 follow_up_question  (string)          – one conversational question targeting
                                         the most important missing required field

Rules:
1. Extract only what is explicitly stated. Do not infer.
2. full_name is highest priority. If missing, ask for it first.
3. If full_name is present but date_of_birth is missing, ask for it.
4. If full_name and date_of_birth are present but phone is missing, ask for it.
5. If all three are present but id_number is missing, ask for it.
6. If all required fields are present, set follow_up_question to “none”.
7. follow_up_question pattern:
  [Empathy if customer is distressed] + [What is needed]
  + [What the customer should do next].
  Examples:
  “I completely understand – let’s get this sorted quickly.
   Could you share your full name as it appears on the card?”
  “Got it. Could you also share your date of birth so I can
   verify your identity?”
8. The follow_up_question must be in {language}.
9. Do not add extra fields.
10. Output must be a valid JSON object only. No explanations.
   Do NOT wrap in markdown or code blocks.
   Do NOT include ```json or ``` anywhere in the response.

Inside the Success branch

  • Add a Set Chat Variable as the first action – set identity_details to _.json_parse(identity_details).
  • Add an If/Else with condition: identity_details["follow_up_question"] != "none" and identity_details["follow_up_question"] != none

If true – follow-up needed

  • Add a Send Message: {identity_details["follow_up_question"]}
  • Add an Ask Survey – Variable: more_identity, Type: Text, Skip: On.
  • Add a Set Chat Variable – set identity_input to {identity_input} {more_identity}.
  • Add a Jump to Trigger/Action back to the LLM action.

Else – all details collected

Add four Set Chat Variable actions to unpack the response fields:

| Variable | Chat script |

| — | — |

| full_name | identity_details[“full_name”] |

| date_of_birth | identity_details[“date_of_birth”] |

| phone | identity_details[“phone”] |

| id_number | identity_details[“id_number”] |

  • Add a Send API Request to validate identity against the bank’s customer system. Pass {full_name}, {date_of_birth}, {phone}, {id_number}. Set Output variable to verification_response.
  • Add a Set Chat Variable – set verification_response to _.json_parse(verification_response).
  • Add an If/Else: if verification_response["status"] == "verified", continue to Step 4. Otherwise route to Human Handoff.

I wasn’t able to verify those details in our system. Let me connect you with a member of our team who can help you directly.

Inside the Error and Timeout branches

  • Add a Jump to Trigger/Action back to the LLM action to re-run.

Step 4: Identify the affected card

Retrieve the customer’s active cards and confirm which one needs to be blocked.

  • Add a Send API Request to fetch active cards using {verification_response["customer_id"]}. Set Output variable to customer_cards.
  • Add a Set Chat Variable – set customer_cards to _.json_parse(customer_cards).
  • Add a Send Message with quick reply options from {customer_cards}, each showing card type and last 4 digits (e.g. Visa Debit •••• 4421). Add a Set Chat Variable immediately after – set selected_card to _user_input.
  • Add a Send Message: What happened to the card? Add quick replies: Lost Stolen Compromised / suspicious activity Damaged
  • Add a Set Chat Variable – set incident_type to _user_input.

Step 5: Block the card via API

Trigger an immediate card block so the card cannot be used for further transactions.

  • Add a Send API Request action. Set Method to POST and URL to your card block endpoint.
  • Set the request body to: {"customer_id": "{verification_response[customer_id]}", "card": "{selected_card}", "reason": "{incident_type}"}
  • Set Output variable to block_response. Add a Set Chat Variable – set block_response to _.json_parse(block_response).
  • Add an If/Else: if block_response["status"] == "success", continue to Step 6. Otherwise route to Human Handoff.

I’m sorry – I wasn’t able to block the card automatically. Let me connect you with someone from our team right away so they can action this immediately.

Step 6: Create a ticket and confirm

Log the card block as a support ticket for follow-up and send the customer a clear confirmation.

  • Add a Create Ticket action. Set Subject to Card block: {full_name} – {selected_card}. Set Tags to card-block and {incident_type}.
  • Add a Send Message with the confirmation:

All done, {full_name}. Your card ending {selected_card} has been blocked (reference: {block_response[“reference”]}). A replacement will be arranged and our fraud team will follow up if any suspicious activity is detected. Stay safe.

  • Add a Send Message with quick replies: Order replacement card Review recent transactions I’m done
  • Add a Set Chat Variable – set next_step to _user_input.

Step 7: Test the flow

Validate the full lost or stolen card sequence using the AI agent tester before going live.

  • Open the AI agent tester panel on the right side of the workflow builder.
  • Type My card was stolen – confirm the empathetic opening message appears.
  • Provide only a name – confirm the LLM asks for date of birth next.
  • Provide all identity details in one message – confirm the API verification fires and the card selection appears.
  • Select a card and incident type – confirm the block API fires and the ticket is created.
  • Confirm the confirmation message displays the correct {block_response["reference"]} and {selected_card}.
  • Simulate a failed identity verification – confirm the flow routes to Human Handoff with an empathetic message.
  • Simulate a failed card block – confirm the flow routes to Human Handoff immediately.