PCI-DSS compliant data collection for sensitive information
Secure Sessions create a “clean room” for collecting sensitive data like credit card numbers, Social Security Numbers, and PINs. The AI never sees the raw values, ensuring compliance with data privacy standards including PCI-DSS.
Traditional AI agents process all input through the LLM:
User speaks: "My credit card number is 4532-1234-5678-9010" ↓STT converts to text ↓LLM sees: "My credit card number is 4532-1234-5678-9010" ← SECURITY RISK ↓LLM processes and stores in conversation history ↓Data appears in logs, training data, and embeddings
This violates PCI-DSS requirements that prohibit storing unencrypted cardholder data.
Iqra AI’s Secure Sessions bypass the AI layer entirely for sensitive input:
User presses: 4-5-3-2-1-2-3-4-5-6-7-8-9-0-1-0 (DTMF tones) ↓Deterministic engine captures keypad input directly ↓Encrypts immediately (before any processing) ↓Stores in variable: customer_card_number = "[ENCRYPTED]" ↓Validation result sent to AI: "valid" or "invalid" ↓LLM never sees the actual digits
{ "Key": "customer_pin", "Type": "String", "IsVisibleToAgent": false, // AI cannot see this "IsEditableByAI": false, // AI cannot modify this "Description": { "en": "Customer's encrypted PIN (never visible to AI)" }}
With IsVisibleToAgent: false, the variable:
Does NOT appear in the LLM system prompt
Does NOT appear in conversation history
Does NOT appear in embeddings or RAG context
Is NOT included in tool call contexts (unless explicitly passed)
Set variable: payment_token = "tok_1234567890"Set variable: card_last4 = "9010"Set variable: card_brand = "visa"// Encrypted card_number and card_cvv are never decrypted on AI infrastructure
7
Confirm with safe information
AI Response: "Thank you. I've securely saved your {{ variables.card_brand }} ending in {{ variables.card_last4 }}."
The AI speaks non-sensitive metadata only.
The encrypted card data is automatically purged after the session ends. Only the token persists for future transactions.
Your Backend API (PCI-compliant infrastructure) ↓Receives: { "encrypted_pin": "Xk7pQ9..." } ↓Decrypts using shared secret ↓Validates against database ↓Returns: { "valid": true } ↓Cleartext never leaves your PCI environment
Your backend must be PCI-DSS compliant to handle decrypted cardholder data. Use a certified payment processor (Stripe, Braintree) whenever possible instead of handling raw card data.
AI: "Please enter your account number" ↓DTMF: Collect encrypted account number ↓Custom Tool: Lookup account ↓Set variables: - account_exists = true - account_type = "checking" - account_balance = 1250.00 ↓AI: "I found your {{ variables.account_type }} account with a balance of ${{ variables.account_balance }}."
Even non-sensitive data like account numbers benefit from encryption to prevent social engineering attacks where attackers guess account numbers.
While attempts < 3: Collect encrypted input Validate If invalid: AI: "That doesn't seem right. Let's try again." Increment attempts Else: BreakIf attempts >= 3: AI: "I'm having trouble verifying your information. Let me transfer you to a representative." Transfer to Human