Skip to content
tightlip
Menu

For banks, credit unions, wealth and insurance

Put AI to work on disputes without sending the account numbers.

Tightlip finds card, account, routing and Social Security numbers on the device, checks the ones that carry a check digit, and swaps them for placeholders before a prompt reaches the AI. The answer comes back with the real numbers restored locally.

1. Your textOn your device
Dear Ms. Whitfield, I am disputing two charges on my Visa card 4111 1111 1111 1111 from 12 August. I never received the furniture from Oakline Home Inc. Account holder: Thomas Reyes Checking account 000123456789, routing 021000021 SSN 219-09-9999, phone 312-555-0187, email t.reyes@fastmail.com Please reverse the $2,340.00 and confirm by email. Sincerely, Thomas Reyes
2. What the AI seesSent to the AI
Dear Ms. [PERSON_2], I am disputing two charges on my Visa card [CREDIT_CARD_1] from 12 August. I never received the furniture from [ORG_1] Account holder: [PERSON_1] Checking account [BANK_ACCOUNT_1], routing [ROUTING_NUMBER_1] SSN [SSN_1], phone [PHONE_1], email [EMAIL_1] Please reverse the $2,340.00 and confirm by email. Sincerely, [PERSON_1]
3. The answer you readRestored on your device
Asked: Summarise this dispute for the case file.Thomas Reyes disputes two Visa charges on card 4111 1111 1111 1111, $2,340.00 in total, for furniture from Oakline Home Inc. that never arrived. Next step: provisional credit, and a confirmation email to t.reyes@fastmail.com.
Real output from Tightlip on a made-up card dispute: 9 items protected (2 names, 1 card number, 1 organisation, 1 account number, 1 routing number and 3 more). The swap table that links each placeholder to its real value stayed on the device.

What Tightlip catches in financial text

Numbers with a built-in check digit are confirmed before they are swapped. That keeps ordinary reference numbers readable for the AI and swaps the ones that identify a customer.

Card numbers[CREDIT_CARD_1]
Checked with the Luhn check digit and known issuer ranges, so order numbers and invoice numbers are left alone.
Routing numbers[ROUTING_NUMBER_1]
ABA routing numbers confirmed by their 3-7-1 checksum and Federal Reserve prefix.
Account numbers[BANK_ACCOUNT_1]
Six to seventeen digits after an account keyword. IBANs checked with mod 97 and the right length for their country. SWIFT codes near a keyword.
Tax and identity numbers[SSN_1]
Social Security numbers that follow the official structure rules, individual tax IDs, employer IDs near a keyword, dates of birth, passport and driver licence numbers.
Customers and counterparties[PERSON_1]
Names after “account holder”, “borrower” or “claimant”, in greetings and signatures, and company names ending in Inc., LLC, N.A., Bank or Credit Union.
Contact details[EMAIL_1]
Email addresses, phone numbers and street addresses.

For the security review

The questions a CIO or CISO asks first, answered in one place.

Where it runs

Detection and restore run in the browser or in your own server process. The swap table stays in memory there.

What we receive

From the extension, SDK and proxy: an API key and a credit count. No prompt text. In the web workspace, protected text passes through our server to the model and is not stored.

What is not built yet

Single sign-on, an admin console and audit export are on the roadmap. Today each person has their own account.

Read the full data flow and sub-processor list

How an institution starts

  1. 1

    Run a sample

    Paste a dispute letter or call note into the free leak check. It runs in the browser and sends nothing.
  2. 2

    Pilot with a team

    Each person gets USD 20 of credits at sign-up, enough for 400 protected prompts.
  3. 3

    Wire it into your tools

    Use the SDK in internal apps, or the local proxy in front of tools you cannot change.
  4. 4

    Agree an annual plan

    Invoiced volume pricing through hello@tightlipai.com.

Common questions

Does this replace our data loss prevention tools?
No. It sits at a different point: the moment a person or an app sends text to an AI. It swaps the values instead of blocking the message, so the work still gets done.
Which AI tools does it work with?
The extension works on ChatGPT, Claude, Gemini, Copilot and Perplexity in the browser. The SDK wraps the OpenAI and Anthropic clients. The proxy works with any tool that speaks the OpenAI or Anthropic API.
What happens when credits run out?
The extension and SDK stop and say why. They do not send the unprotected text instead.
Can we see what was sent?
The person sending always sees the protected text. Organisation-wide audit export is on the roadmap.

Paste a dispute letter. See what the AI would have read.