Triage sanctions and watchlist screening hits
Grayson compares a screening hit's list entry with your customer record, names the identifiers that rule it out, and picks clear, request information, escalate or block.
Grayson reads a screening hit the way a level 1 analyst does: the list entry your screening vendor returned, next to your customer record, accounts, payments, earlier screening decisions and adverse media. It returns how likely it is that your customer is the listed party, which of the entry's identifiers your record contradicts (the reason to record when you clear it), whether the adverse media is about your customer and financial crime, and whether to clear, request information, escalate or block. It costs about $0.55 to $0.81 per 1,000 decisions.
- Decides: Decide whether a sanctions or watchlist hit is your customer, record why, and clear, request information, escalate or block.
- Call it: When customer or payment screening returns a possible match against a sanctions, PEP or watchlist entry
- Questions: 1 score, 1 multiple choice, 1 yes/no, 1 choice
- Cost: $0.00055 to $0.00081 per decision ($0.55 to $0.81 per 1,000) for these examples' 15,701 to 23,019 input tokens
- Latency: 243 to 333 ms for these examples, the median of 5 calls each through api.finic.ai from US-West
Examples
Three OFAC SDN hits on existing customers, each sent with the full KYC record, twelve months of monthly totals, every posted item since August 1, two years of wires, earlier screening alerts, the held payment and the vendor's adverse media. They are an exporter whose passport number, birth date and address appear on a new entry, a framer whose wire home hits a new alias on a cartel financier's entry, and a machine repair shop owner who shares a name and birth year with a newly designated exporter in Armenia.
Open in Playground
A new SDN entry with our customer's passport number, birth date and address. OFAC added an exporter and his New Jersey freight company to the SDN list for shipping US electronics to Russia through Central Asia. The entry carries our customer's passport number, date of birth and home address, his company is listed too, and an $86,400 wire from one of his designated buyers is now held.
| Question | Grayson's answer |
|---|---|
same_party | 3.99 of 4, confidence over 99% |
conflicting_identifiers | None at 50% or more |
adverse_media_financial_crime | 99% true |
action | block_and_report, confidence 96% |
23,019 input tokens, $0.00081 per decision, answered in 281 ms.
The request, with long lists cut short. The full request is fraud.json (79 KB).
{
"model": "grayson-1",
"state": {
"case": {
"case_id": "SANC-2026-10-0412",
"opened": "2026-10-07T15:35:00Z",
"queue": "Sanctions screening, level 1",
"institution": "US bank; this case was assembled by our case-management system from the screening alert and our records",
"alerts_in_case": [
"SCR-CUST-20261006-031944 (customer rescreening)",
"PAY-SCR-20261007-00873 (incoming wire)"
]
},
"customer": {
"customer_id": "C-0048213377",
"customer_since": "2019-05-14",
"name": {
"first": "Aidos",
"middle": "Serik",
"last": "Temirkhanov",
"as_on_id": "TEMIRKHANOV AIDOS"
},
"other_names": [],
"date_of_birth": "1986-02-19",
"place_of_birth": "Almaty, Kazakhstan",
"gender": "Male",
"citizenship": [
"Kazakhstan"
],
"us_status": "Lawful permanent resident since 2018",
"identity_documents": [
{
"type": "Passport",
"issuer": "Kazakhstan",
"number": "N13894572",
"issued": "2019-03-12",
"expires": "2029-03-12",
"verified": "2019-05-14, documentary, in branch"
},
{
"type": "US permanent resident card",
"issuer": "United States",
"number": "masked (ends 4417)",
"expires": "2028-07-30",
"verified": "2019-05-14, documentary, in branch"
},
{
"type": "Taxpayer ID",
"issuer": "United States",
"number": "SSN, masked (ends 2291)",
"verified": "2019-05-14, non-documentary"
}
],
"addresses": [
{
"type": "residential",
"address": "1840 Palisade Crest Dr, Apt 9E, Fort Lee, NJ 07024",
"since": "2022-06-01"
},
{
"type": "previous residential",
"address": "61 Brighton 11th St, Apt 3R, Brooklyn, NY 11235",
"from": "2019-05-14",
"to": "2022-05-31"
}
],
"phone": "+1 201-555-0143",
"email": "a.temirkhanov@example.com",
"occupation": "Owner, freight forwarding and electronic components export (Temir Global Logistics LLC)",
"source_of_funds": "Business income",
"risk_rating": {
"rating": "Medium",
"since": "2021-03-22",
"reason": "Owns an exporting business with wires to Central Asia and the UAE"
},
"kyc_reviews": [
{
"date": "2023-03-20",
"type": "periodic review",
"result": "no change; export documentation for three shipments reviewed"
},
{
"date": "2025-03-18",
"type": "periodic review",
"result": "no change; customer said buyers are distributors in Kazakhstan and Kyrgyzstan"
}
],
"sar_history": "none"
},
"accounts": [
{
"account": "x4471",
"type": "personal checking",
"opened": "2019-05-14",
"owners": [
"Aidos S. Temirkhanov"
],
"status": "open",
"debit_card": "x0391, active"
},
{
"account": "x4489",
"type": "personal savings",
"opened": "2019-05-14",
"owners": [
"Aidos S. Temirkhanov"
],
"status": "open"
},
{
"account": "x8820",
"type": "business checking",
"opened": "2021-03-22",
"owners": [
"Temir Global Logistics LLC"
],
"status": "open",
"business": {
"legal_name": "Temir Global Logistics LLC",
"formed": "2021-02-08, New Jersey, single-member LLC",
"ein": "masked (ends 7745)",
"naics": "488510 Freight transportation arrangement",
"address": "300 Tenafly Rd, Suite 214, Englewood, NJ 07631",
"beneficial_owners": [
{
"name": "Aidos S. Temirkhanov",
"ownership_pct": 100,
"control_person": true
}
],
"stated_activity": "Buys electronic components from US distributors and ships them to distributors in Kazakhstan, Kyrgyzstan and the UAE; arranges air freight",
"expected_activity": {
"monthly_wires_in_usd": 150000,
"wire_countries": [
"KZ",
"KG",
"AE"
],
"cash": "none"
}
},
"debit_card": "business debit x8836, active"
}
],
"monthly_summary": {
"x4471": {
"columns": [
"month",
"credits_usd",
"debits_usd",
"card_purchases_usd",
"ach_and_transfers_in_usd",
"… 6 more in fraud.json"
],
"rows": [
[
"2025-10",
8000,
6725.09,
1563.91,
8000,
"… 6 more in fraud.json"
],
[
"2025-11",
8000,
7123.99,
2209.94,
8000,
"… 6 more in fraud.json"
],
[
"2025-12",
8000,
7428.35,
1726.15,
8000,
"… 6 more in fraud.json"
],
[
"2026-01",
8000,
9151.07,
3946.41,
8000,
"… 6 more in fraud.json"
],
[
"2026-02",
8000,
7324.79,
2066.01,
8000,
"… 6 more in fraud.json"
],
"… 8 more in fraud.json"
]
},
"x8820": {
"columns": [
"month",
"credits_usd",
"debits_usd",
"card_purchases_usd",
"ach_and_transfers_in_usd",
"… 6 more in fraud.json"
],
"rows": [
[
"2025-10",
138641.27,
204894.32,
8074.81,
0,
"… 6 more in fraud.json"
],
[
"2025-11",
176152.59,
166511.84,
90,
0,
"… 6 more in fraud.json"
],
[
"2025-12",
124216.69,
234499.74,
749.33,
0,
"… 6 more in fraud.json"
],
[
"2026-01",
205378.38,
98172.48,
3745.17,
0,
"… 6 more in fraud.json"
],
[
"2026-02",
70328.05,
107999.86,
6819.19,
0,
"… 6 more in fraud.json"
],
"… 8 more in fraud.json"
]
},
"x4489": {
"columns": [
"month",
"credits_usd",
"debits_usd",
"card_purchases_usd",
"ach_and_transfers_in_usd",
"… 6 more in fraud.json"
],
"rows": [
[
"2025-10",
500,
0,
0,
500,
"… 6 more in fraud.json"
],
[
"2025-11",
500,
0,
0,
500,
"… 6 more in fraud.json"
],
[
"2025-12",
500,
0,
0,
500,
"… 6 more in fraud.json"
],
[
"2026-01",
500,
0,
0,
500,
"… 6 more in fraud.json"
],
[
"2026-02",
500,
0,
0,
500,
"… 6 more in fraud.json"
],
"… 8 more in fraud.json"
]
}
},
"wires": {
"note": "Every incoming and outgoing wire on the customer's accounts since 2024-10-01",
"columns": [
"ts",
"direction",
"amount_usd",
"account",
"counterparty",
"… 4 more in fraud.json"
],
"rows": [
[
"2024-10-07T16:30:54Z",
"out",
1000,
"x4471",
"Serik Temirkhanov",
"… 4 more in fraud.json"
],
[
"2024-10-16T14:07:24Z",
"in",
130647.62,
"x8820",
"SARYARKA TECHSUPPLY LLP",
"… 4 more in fraud.json"
],
[
"2024-10-31T15:24:35Z",
"in",
31658.33,
"x8820",
"SARYARKA TECHSUPPLY LLP",
"… 4 more in fraud.json"
],
[
"2024-11-06T17:30:09Z",
"out",
1000,
"x4471",
"Serik Temirkhanov",
"… 4 more in fraud.json"
],
[
"2024-11-13T14:19:30Z",
"in",
123030.79,
"x8820",
"TIENSHAN ELEKTRONIKA OSOO",
"… 4 more in fraud.json"
],
"… 68 more in fraud.json"
]
},
"transactions": {
"note": "Every posted item since 2026-08-01; amounts signed (debits negative); balance after the item",
"x4471": {
"columns": [
"posted",
"type",
"amount_usd",
"balance_usd",
"description",
"detail"
],
"rows": [
[
"2026-08-01T10:35:59Z",
"ach_debit",
-2650,
8670.65,
"PALISADE CREST APTS RENT WEB PMT",
"ACH WEB, payee since 2022-06"
],
[
"2026-08-01T15:08:29Z",
"card_purchase",
-50.55,
8620.1,
"SQ *NAVRUZ HALAL GRILL Fort Lee NJ",
"mcc 5812, contactless"
],
[
"2026-08-02T16:05:38Z",
"card_purchase",
-124.63,
8495.47,
"TARGET 00012831 EDGEWATER NJ",
"mcc 5310, chip"
],
[
"2026-08-03T02:14:06Z",
"card_purchase",
-19.69,
8475.78,
"SHELL OIL 57442 FORT LEE NJ",
"mcc 5541, chip"
],
[
"2026-08-03T11:02:53Z",
"online_transfer",
4000,
12475.78,
"TRANSFER FROM CHK x8820 TEMIR GLOBAL LOGISTICS",
null
],
"… 102 more in fraud.json"
]
},
"x8820": {
"columns": [
"posted",
"type",
"amount_usd",
"balance_usd",
"description",
"detail"
],
"rows": [
[
"2026-08-03T11:02:00Z",
"online_transfer",
-4000,
328265.74,
"TRANSFER TO CHK x4471 OWNER DRAW",
null
],
[
"2026-08-03T12:53:04Z",
"ach_debit",
-455.9,
327809.84,
"MERIDIAN CUSTOMS BROKERAGE FEES",
"ACH CCD, customs broker, Elizabeth NJ"
],
[
"2026-08-03T14:24:12Z",
"ach_debit",
-27456.75,
300353.09,
"REDWOOD MICRO SUPPLY LLC PAYMENTS INV 423885",
"ACH CCD, broker of semiconductors, Phoenix AZ"
],
[
"2026-08-05T12:05:19Z",
"ach_debit",
-1850,
298503.09,
"BERGEN FLEX SPACE RENT SUITE 214",
"ACH CCD, office and storage unit, Englewood NJ"
],
[
"2026-08-10T14:06:10Z",
"ach_debit",
-32924.55,
265578.54,
"NORTHGATE COMPONENTS INC PAYMENTS INV 469895",
"ACH CCD, distributor of electronic components, Allentown PA"
],
"… 34 more in fraud.json"
]
},
"x4489": {
"columns": [
"posted",
"type",
"amount_usd",
"balance_usd",
"description",
"detail"
],
"rows": [
[
"2026-08-26T11:00:20Z",
"online_transfer",
500,
27900,
"TRANSFER FROM CHK x4471",
null
],
[
"2026-09-26T11:00:08Z",
"online_transfer",
500,
28400,
"TRANSFER FROM CHK x4471",
null
],
[
"2026-10-06T23:52:37Z",
"online_transfer",
4000,
32400,
"TRANSFER FROM CHK x4471",
"online banking, usual iPhone"
]
]
}
},
"screening_history": [
{
"date": "2019-05-14",
"type": "onboarding screening",
"lists": "OFAC SDN and non-SDN lists, UN, UK, EU, PEP",
"result": "no hits"
},
{
"date": "2021-03-22",
"type": "onboarding screening, Temir Global Logistics LLC and its owner",
"result": "no hits"
},
{
"date": "2024-02-27",
"type": "list update rescreening",
"result": "1 hit, cleared",
"detail": "Weak hit on an EU list entry for 'TEMIRKHANOVA, Aida', a woman born 1961 in Shymkent. Cleared by the analyst: gender and date of birth differ."
},
{
"date": "2026-04-02",
"type": "periodic rescreening",
"result": "no hits"
}
],
"case_notes": [
{
"ts": "2026-10-07T13:14:00Z",
"by": "Sanctions screening analyst (L1)",
"note": "Picked up list-update alert from last night with the incoming wire alert that arrived this morning on the same customer. Comparing KYC to the new SDN entries. Customer has not been contacted. Accounts are not yet restricted; one card purchase and one savings transfer posted after the list update."
}
],
"adverse_media": {
"note": "Articles your screening vendor's adverse media search returned for the screened names, newest first, as the vendor shows them",
"articles": [
{
"published": "2026-10-06",
"source": "US Treasury press release",
"title": "Treasury Targets Third-Country Suppliers of Microelectronics to Russia's Military-Industrial Base",
"matched_names": [
"Aidos Temirkhanov",
"Temir Global Logistics LLC"
],
"excerpt": "Today, the Department of the Treasury's Office of Foreign Assets Control (OFAC) designated 14 individuals and entities in Kazakhstan, Kyrgyzstan, the United Arab Emirates and the United States for supplying US-origin microelectronics and navigation components to Russian defense manufacturers. [...] Aidos Serikovich Temirkhanov, a Kazakhstani national who lives in Fort Lee, New Jersey, owns and directs Temir Global Logistics LLC, an Englewood, New Jersey freight company. Since at least 2023, Temir Global Logistics has purchased integrated circuits and GNSS modules from US distributors and shipped them to Saryarka Techsupply LLP in Kazakhstan and Tienshan Elektronika OsOO in Kyrgyzstan, which re-exported them to Russia, often through freight forwarders in the UAE. Temirkhanov was designated pursuant to E.O. 14024 for operating or having operated in the technology sector of the Russian Federation economy. Temir Global Logistics, Saryarka Techsupply and Tienshan Elektronika were also designated. As a result of today's action, all property and interests in property of the designated persons that are in the United States or in the possession or control of US persons are blocked and must be reported to OFAC."
},
{
"published": "2026-10-07",
"source": "Trade publication covering export controls",
"title": "OFAC, Commerce hit Central Asian network, NJ forwarder over chip shipments to Russia",
"matched_names": [
"Aidos Temirkhanov"
],
"excerpt": "The designations also cover an Englewood, N.J., freight forwarder, Temir Global Logistics, and its owner, Aidos Temirkhanov, 40. Commerce added the same companies to the Entity List. Shipping records reviewed by the publication show at least 60 air shipments from New York to Almaty since 2024 declared as 'electronic parts' with values just under the threshold for an export filing. Temirkhanov did not respond to a request for comment left at the company's office."
}
]
},
"held_payment": {
"payment_id": "WIRE-IN-20261007-00873",
"received": "2026-10-07T14:02:41Z",
"status": "held by payment screening, not credited",
"direction": "incoming",
"amount_usd": 86400,
"message_type": "pacs.008 (cross-border customer credit transfer) via intermediary bank",
"debtor": {
"name": "SARYARKA TECHSUPPLY LLP",
"address": "Almaty, Kazakhstan",
"account": "IBAN masked (KZ** ****)",
"agent": "bank in Almaty, Kazakhstan (SWIFT ****KZKA)"
},
"creditor": {
"name": "TEMIR GLOBAL LOGISTICS LLC",
"address": "300 TENAFLY RD STE 214 ENGLEWOOD NJ",
"account": "x8820"
},
"remittance_information": "/RFB/INV TGL-26914 ELECTRONIC COMPONENTS AND FREIGHT",
"screening_hits": [
"debtor name: SARYARKA TECHSUPPLY LLP, OFAC SDN (added 2026-10-06), score 100",
"creditor name: TEMIR GLOBAL LOGISTICS LLC, OFAC SDN (added 2026-10-06), score 100"
]
},
"alert": {
"alert_id": "SCR-CUST-20261006-031944",
"created": "2026-10-06T22:10:00Z",
"screening_type": "customer rescreening after a list update",
"list_update": "OFAC SDN list, update of 2026-10-06 (14 entries added)",
"screened_party": {
"customer_id": "C-0048213377",
"screened_name": "AIDOS SERIK TEMIRKHANOV",
"date_of_birth": "1986-02-19",
"nationality": "KZ",
"country_of_residence": "US",
"also_screened": "TEMIR GLOBAL LOGISTICS LLC (business account x8820, customer is 100% owner)"
},
"match_threshold": 85,
"hits": [
{
"rank": 1,
"list": "OFAC SDN",
"entry_uid": "OFAC-61842",
"match_score": 96,
"matched_name": "TEMIRKHANOV, Aidos Serikovich",
"name_match": "first and last name exact; middle name 'Serik' matches the start of patronymic 'Serikovich'",
"secondary_fields": [
{
"field": "date_of_birth",
"customer": "1986-02-19",
"list": "19 Feb 1986",
"result": "match"
},
{
"field": "nationality",
"customer": "Kazakhstan",
"list": "Kazakhstan",
"result": "match"
},
{
"field": "passport",
"customer": "N13894572 (Kazakhstan)",
"list": "N13894572 (Kazakhstan)",
"result": "match"
},
{
"field": "address",
"customer": "Fort Lee, NJ 07024, US",
"list": "Fort Lee, NJ 07024, United States",
"result": "match"
},
{
"field": "gender",
"customer": "Male",
"list": "Male",
"result": "match"
}
],
"list_entry": {
"entry_type": "Individual",
"programs": [
"RUSSIA-EO14024"
],
"names": [
{
"type": "primary",
"name": "TEMIRKHANOV, Aidos Serikovich"
},
{
"type": "a.k.a.",
"name": "TEMIRHANOV, Aidos"
},
{
"type": "a.k.a.",
"name": "TEMIRKHANOV, Aydos"
},
{
"type": "original script",
"name": "ТЕМИРХАНОВ, Айдос Серикович"
}
],
"dates_of_birth": [
"19 Feb 1986"
],
"places_of_birth": [
"Almaty, Kazakhstan"
],
"nationalities": [
"Kazakhstan"
],
"gender": "Male",
"identifications": [
{
"type": "Passport",
"number": "N13894572",
"country": "Kazakhstan",
"expires": "12 Mar 2029"
}
],
"addresses": [
"1840 Palisade Crest Drive, Fort Lee, NJ 07024, United States",
"Almaty, Kazakhstan"
],
"linked_to": [
"TEMIR GLOBAL LOGISTICS LLC",
"SARYARKA TECHSUPPLY LLP"
],
"date_listed": "2026-10-06",
"list_text": "TEMIRKHANOV, Aidos Serikovich (Cyrillic: ТЕМИРХАНОВ, Айдос Серикович) (a.k.a. TEMIRHANOV, Aidos; a.k.a. TEMIRKHANOV, Aydos), 1840 Palisade Crest Drive, Fort Lee, NJ 07024, United States; Almaty, Kazakhstan; DOB 19 Feb 1986; POB Almaty, Kazakhstan; nationality Kazakhstan; Gender Male; Passport N13894572 (Kazakhstan) expires 12 Mar 2029 (individual) [RUSSIA-EO14024] (Linked To: TEMIR GLOBAL LOGISTICS LLC; Linked To: SARYARKA TECHSUPPLY LLP)."
}
},
{
"rank": 2,
"list": "OFAC SDN",
"entry_uid": "OFAC-61845",
"match_score": 100,
"matched_name": "TEMIR GLOBAL LOGISTICS LLC",
"screened_name": "TEMIR GLOBAL LOGISTICS LLC (business account x8820)",
"secondary_fields": [
{
"field": "address",
"customer": "300 Tenafly Rd, Suite 214, Englewood, NJ 07631",
"list": "300 Tenafly Road, Suite 214, Englewood, NJ 07631, United States",
"result": "match"
}
],
"list_entry": {
"entry_type": "Entity",
"programs": [
"RUSSIA-EO14024"
],
"list_text": "TEMIR GLOBAL LOGISTICS LLC, 300 Tenafly Road, Suite 214, Englewood, NJ 07631, United States; Organization Established Date 08 Feb 2021; Organization Type: Freight transportation arrangement [RUSSIA-EO14024] (Linked To: TEMIRKHANOV, Aidos Serikovich)."
}
}
]
}
},
"questions": {
"same_party": {
"type": "score",
"instructions": "How likely is it that the screened party is the same person, organization or vessel as the list entry the screening matched, judging by everything in our records against the entry's names and identifiers? If the alert has several hits, answer for the strongest one.",
"criteria": [
"Very unlikely (under 10%)",
"Unlikely (10-40%)",
"Uncertain (40-60%)",
"Likely (60-90%)",
"Very likely (over 90%)"
]
},
"conflicting_identifiers": {
"type": "multi_choice",
"instructions": "Which of the list entry's identifiers does our record of the screened party clearly contradict, so that the two cannot be the same party? Count an identifier only when both our record and the entry give it. A spelling or transliteration variant, a missing value or a past address is not a contradiction.",
"criteria": {
"date_of_birth": "Date of birth: our full date of birth differs from every date of birth the entry gives (where the entry gives only a year, from every year it gives)",
"place_of_birth": "Place of birth: our record gives a different town or country of birth",
"nationality": "Nationality: none of the entry's nationalities or citizenships appears in our record",
"id_number": "ID number: a permanent number of the same kind and country as one in the entry (national ID, tax ID or CURP) is different, or a passport from the same country that was valid at the same time has a different number",
"gender": "Gender: the entry gives a different gender",
"party_type": "Party type: the entry is a different kind of party, such as an organization or a vessel when we screened an individual"
}
},
"adverse_media_financial_crime": {
"type": "noul",
"instructions": "Does any of the adverse media returned with this alert describe our customer, rather than another person or company with a similar name, in connection with financial crime such as fraud, money laundering, bribery, sanctions or export-control evasion, or terrorist financing?"
},
"action": {
"type": "choice",
"instructions": "What should the screening analyst do with this alert now?",
"criteria": {
"clear": "Clear the alert as a false positive, record the identifiers that rule the entry out, and release any held payment",
"request_information": "Keep any payment on hold and ask the customer for the specific information that would settle the match, such as an identity document, a full date of birth, an address or the purpose of a payment",
"escalate": "Escalate to the sanctions compliance officer for a decision, keeping any payment on hold",
"block_and_report": "Treat it as a true match on a blocking sanctions list: block the funds and accounts and report the blocking to the regulator (to OFAC within 10 business days)"
}
}
}
}The response. Probabilities and confidence are shortened to four decimals here, and the score to three; responses carry full precision.
{
"id": "dec_851678f6c42c48f598e51b46b8768a46",
"model": "grayson-1",
"answers": {
"same_party": {
"type": "score",
"score": 3.992,
"legend": {
"0": "Very unlikely (under 10%)",
"1": "Unlikely (10-40%)",
"2": "Uncertain (40-60%)",
"3": "Likely (60-90%)",
"4": "Very likely (over 90%)"
},
"confidence": 0.9961,
"probabilities": {
"0": 0.0013,
"1": 0.0003,
"2": 0.0006,
"3": 0.0009,
"4": 0.9969
}
},
"conflicting_identifiers": {
"type": "multi_choice",
"multi_choice": [],
"probabilities": {
"date_of_birth": 0.0032,
"place_of_birth": 0.0086,
"nationality": 0.0025,
"id_number": 0.0124,
"gender": 0.0059,
"party_type": 0.0373
}
},
"adverse_media_financial_crime": {
"type": "noul",
"noul": 0.9933
},
"action": {
"type": "choice",
"choice": "block_and_report",
"confidence": 0.964,
"probabilities": {
"clear": 0.001,
"request_information": 0.0031,
"escalate": 0.0229,
"block_and_report": 0.973
}
}
},
"usage": {
"input_tokens": 23019,
"output_tokens": 0
}
}Open in Playground
A framer's wire home hits a new alias on a cartel financier's SDN entry. A Houston framing foreman's $1,850 wire to his mother was held because OFAC added an alias to a Culiacán money launderer's entry that exactly matches his name, which also ended the good-guy record from two earlier clears. His birth date, birthplace and CURP all differ from the entry, and 24 monthly wires to the same payee look the same.
| Question | Grayson's answer |
|---|---|
same_party | 0.02 of 4, confidence 99% |
conflicting_identifiers | date_of_birth, place_of_birth, id_number |
adverse_media_financial_crime | Under 1% true |
action | clear, confidence 95% |
15,701 input tokens, $0.00055 per decision, answered in 243 ms.
The request, with long lists cut short. The full request is legitimate.json (53 KB).
{
"model": "grayson-1",
"state": {
"case": {
"case_id": "SANC-2026-10-0477",
"opened": "2026-10-08T14:20:00Z",
"queue": "Sanctions screening, level 1",
"institution": "US bank; this case was assembled by our case-management system from the screening alert and our records",
"alerts_in_case": [
"PAY-SCR-20261008-00112 (outgoing wire)"
]
},
"customer": {
"customer_id": "C-0031180542",
"customer_since": "2014-08-11",
"name": {
"first": "José Luis",
"last": "Zamudio Olivares",
"as_on_id": "ZAMUDIO OLIVARES JOSE LUIS"
},
"other_names": [
"Jose Luis Zamudio (name used by employer payroll)"
],
"date_of_birth": "1981-03-27",
"place_of_birth": "Pénjamo, Guanajuato, Mexico",
"gender": "Male",
"citizenship": [
"Mexico"
],
"us_status": "Lawful permanent resident since 2013",
"identity_documents": [
{
"type": "Passport",
"issuer": "Mexico",
"number": "G41877309",
"issued": "2022-05-10",
"expires": "2032-05-10",
"curp_shown": "ZAOL810327HGTMLS04",
"verified": "2022-06-03, documentary, updated in branch"
},
{
"type": "CURP (Mexican population registry number)",
"issuer": "Mexico",
"number": "ZAOL810327HGTMLS04",
"verified": "from passport and matrícula consular"
},
{
"type": "US permanent resident card",
"issuer": "United States",
"number": "masked (ends 8820)",
"expires": "2033-01-14"
},
{
"type": "Taxpayer ID",
"issuer": "United States",
"number": "SSN, masked (ends 6603)"
},
{
"type": "Matrícula consular",
"issuer": "Consulate of Mexico in Houston",
"number": "masked (ends 1185)",
"verified": "2014-08-11, at account opening"
}
],
"addresses": [
{
"type": "residential",
"address": "7710 Willowbend Blvd, Apt 214, Houston, TX 77071",
"since": "2019-02-01"
},
{
"type": "previous residential",
"address": "4515 Bissonnet St, Apt 6, Houston, TX 77401",
"from": "2014-08-11",
"to": "2019-01-31"
}
],
"phone": "+1 713-555-0167",
"email": "jlzamudio81@example.com",
"occupation": "Framing foreman, Gulf Coast Framing Inc. (construction), Houston",
"source_of_funds": "Wages",
"risk_rating": {
"rating": "Low",
"since": "2014-08-11"
},
"kyc_reviews": [
{
"date": "2022-06-03",
"type": "ID update after passport renewal",
"result": "no change"
}
],
"sar_history": "none"
},
"accounts": [
{
"account": "x2208",
"type": "personal checking",
"opened": "2014-08-11",
"owners": [
"José Luis Zamudio Olivares"
],
"status": "open",
"debit_card": "x5530, active",
"features": [
"online banking",
"international wires through online banking (enrolled 2015-03)"
]
},
{
"account": "x2216",
"type": "personal savings",
"opened": "2016-01-05",
"owners": [
"José Luis Zamudio Olivares"
],
"status": "open"
}
],
"monthly_summary": {
"x2208": {
"columns": [
"month",
"credits_usd",
"debits_usd",
"card_purchases_usd",
"ach_and_transfers_in_usd",
"… 6 more in legitimate.json"
],
"rows": [
[
"2025-10",
6672.85,
4785.99,
1940.02,
6672.85,
"… 6 more in legitimate.json"
],
[
"2025-11",
4710.04,
5064.84,
2047.47,
4710.04,
"… 6 more in legitimate.json"
],
[
"2025-12",
4422.86,
5399.03,
1802.96,
4422.86,
"… 6 more in legitimate.json"
],
[
"2026-01",
4621.91,
4423.56,
1575.14,
4621.91,
"… 6 more in legitimate.json"
],
[
"2026-02",
4649.3,
5344.41,
2264.13,
4649.3,
"… 6 more in legitimate.json"
],
"… 8 more in legitimate.json"
]
},
"x2216": {
"columns": [
"month",
"credits_usd",
"debits_usd",
"card_purchases_usd",
"ach_and_transfers_in_usd",
"… 6 more in legitimate.json"
],
"rows": [
[
"2025-10",
150,
0,
0,
150,
"… 6 more in legitimate.json"
],
[
"2025-11",
150,
0,
0,
150,
"… 6 more in legitimate.json"
],
[
"2025-12",
150,
0,
0,
150,
"… 6 more in legitimate.json"
],
[
"2026-01",
150,
0,
0,
150,
"… 6 more in legitimate.json"
],
[
"2026-02",
150,
0,
0,
150,
"… 6 more in legitimate.json"
],
"… 8 more in legitimate.json"
]
}
},
"wires": {
"note": "Every incoming and outgoing wire on the customer's accounts since 2024-10-01",
"columns": [
"ts",
"direction",
"amount_usd",
"account",
"counterparty",
"… 4 more in legitimate.json"
],
"rows": [
[
"2024-10-04T00:48:38Z",
"out",
500,
"x2208",
"Maria Guadalupe Olivares Ruiz",
"… 4 more in legitimate.json"
],
[
"2024-11-05T01:57:54Z",
"out",
650,
"x2208",
"Maria Guadalupe Olivares Ruiz",
"… 4 more in legitimate.json"
],
[
"2024-12-03T01:36:34Z",
"out",
500,
"x2208",
"Maria Guadalupe Olivares Ruiz",
"… 4 more in legitimate.json"
],
[
"2025-01-04T01:21:03Z",
"out",
550,
"x2208",
"Maria Guadalupe Olivares Ruiz",
"… 4 more in legitimate.json"
],
[
"2025-02-04T01:59:24Z",
"out",
650,
"x2208",
"Maria Guadalupe Olivares Ruiz",
"… 4 more in legitimate.json"
],
"… 19 more in legitimate.json"
]
},
"transactions": {
"note": "Every posted item since 2026-08-01; amounts signed (debits negative); balance after the item",
"x2208": {
"columns": [
"posted",
"type",
"amount_usd",
"balance_usd",
"description",
"detail"
],
"rows": [
[
"2026-08-01T11:44:11Z",
"ach_debit",
-1375,
1418.36,
"WILLOWBEND APTS RENT",
"ACH WEB, payee since 2019-02"
],
[
"2026-08-01T16:12:26Z",
"card_purchase",
-85.91,
1332.45,
"CRICKET WIRELESS 0412 HOUSTON TX",
"mcc 4814, chip"
],
[
"2026-08-01T17:59:41Z",
"card_purchase",
-20.75,
1311.7,
"TAQUERIA LOS GALLOS HOUSTON TX",
"mcc 5812, contactless"
],
[
"2026-08-01T23:15:25Z",
"atm_withdrawal",
-60,
1251.7,
"ATM WITHDRAWAL 9400 BELLAIRE BLVD HOUSTON TX",
null
],
[
"2026-08-02T12:43:58Z",
"card_purchase",
-50.88,
1200.82,
"BUC-EE'S #34 KATY TX",
"mcc 5541, chip"
],
"… 110 more in legitimate.json"
]
},
"x2216": {
"columns": [
"posted",
"type",
"amount_usd",
"balance_usd",
"description",
"detail"
],
"rows": [
[
"2026-08-20T12:00:56Z",
"online_transfer",
150,
7800,
"TRANSFER FROM CHK x2208",
null
],
[
"2026-09-20T12:00:14Z",
"online_transfer",
150,
7950,
"TRANSFER FROM CHK x2208",
null
]
]
}
},
"screening_history": [
{
"date": "2014-08-11",
"type": "onboarding screening",
"lists": "OFAC SDN and non-SDN lists, UN, UK, EU, PEP",
"result": "no hits"
},
{
"date": "2024-03-06",
"type": "payment screening, outgoing wire $500.00 to Maria Guadalupe Olivares Ruiz",
"result": "1 hit, cleared, wire released after 47 minutes",
"detail": "Originator name hit OFAC SDN entry OFAC-48217 'OLIVARES ZAMUDIO, Jose Luis' (score 88, surnames reversed). Cleared by the analyst: date of birth 27 Mar 1981 against the entry's 11 Sep 1981; CURP ZAOL810327HGTMLS04 against the entry's OIZL810911HSLLMS09; place of birth Pénjamo, Guanajuato against Culiacán, Sinaloa. Good-guy record GG-20240306-118 created for this customer and entry OFAC-48217."
},
{
"date": "2025-06-04",
"type": "payment screening, outgoing wire $550.00 to Maria Guadalupe Olivares Ruiz",
"result": "1 hit, cleared, wire released after 2 hours 10 minutes",
"detail": "Same entry, re-alerted because OFAC amended entry OFAC-48217 on 2025-06-03 (address added), which ends the good-guy record. Cleared again on date of birth and CURP; good-guy record GG-20250604-031 created."
},
{
"date": "2025-08-12",
"type": "periodic rescreening",
"result": "hit suppressed by good-guy record GG-20250604-031"
}
],
"case_notes": [
{
"ts": "2026-10-08T13:52:00Z",
"by": "Sanctions screening analyst (L1)",
"note": "Wire held overnight. Hit is on the alias OFAC added on 10-06, so the 2025 good-guy record no longer applies. Customer has not been contacted; online banking shows the wire as 'in review'. Customer called the branch at 08:31 asking when his mother would receive the money; told it was under standard review."
}
],
"adverse_media": {
"note": "Articles your screening vendor's adverse media search returned for the screened names, newest first, as the vendor shows them",
"articles": [
{
"published": "2026-10-06",
"source": "US Treasury press release",
"title": "Treasury Sanctions Financial Facilitators of Sinaloa-Based Drug Trafficking Organization",
"matched_names": [
"Jose Luis Olivares Zamudio",
"Jose Luis Zamudio Olivares"
],
"excerpt": "OFAC today designated four individuals and six companies in Sinaloa and Sonora who launder proceeds for a Sinaloa-based drug trafficking organization through currency exchange houses and produce exporters [...] OFAC also updated the existing entry for Jose Luis Olivares Zamudio, designated in 2023, who operates exchange houses in Culiacán and moves cash for the organization, to add a new alias and a new address."
},
{
"published": "2024-11-19",
"source": "Regional newspaper, Sinaloa (Spanish; vendor translation)",
"title": "Prosecutors seize exchange houses linked to 'El Contador'",
"matched_names": [
"Jose Luis Olivares Zamudio"
],
"excerpt": "State prosecutors seized three currency exchange offices in Culiacán that they attribute to José Luis Olivares Zamudio, alias 'El Contador', 43, sanctioned by the US Treasury last year. Olivares Zamudio has not been located; prosecutors believe he lives between Culiacán and Mazatlán."
},
{
"published": "2025-07-22",
"source": "Local news site, Houston",
"title": "Framers say new county heat-break ordinance is overdue",
"matched_names": [
"Jose Luis Zamudio"
],
"excerpt": "On a site off the Southwest Freeway, framing foreman José Luis Zamudio, 44, said his crew of nine starts at 6 a.m. to beat the heat. 'We drink water every hour, but the breaks should be the rule for everyone,' said Zamudio, who has framed houses in Houston for 12 years. His employer, Gulf Coast Framing, said it already follows the new rules."
}
]
},
"held_payment": {
"payment_id": "WIRE-OUT-20261008-00112",
"initiated": "2026-10-08T00:41:09Z",
"channel": "online banking, customer's usual phone (registered 2023-04), home IP, Houston",
"status": "held by payment screening, not sent",
"direction": "outgoing",
"amount_usd": 1850,
"fee_usd": 25,
"message_type": "pacs.008 (cross-border customer credit transfer)",
"debtor": {
"name": "JOSE LUIS ZAMUDIO OLIVARES",
"address": "7710 WILLOWBEND BLVD APT 214 HOUSTON TX 77071",
"account": "x2208"
},
"creditor": {
"name": "MARIA GUADALUPE OLIVARES RUIZ",
"address": "PENJAMO, GUANAJUATO, MX",
"account": "CLABE masked (ends 4471)",
"agent": "bank in Mexico"
},
"remittance_information": "FAMILY SUPPORT / MEDICAL",
"payee_history": "Paid 24 times since 2024-10 ($400 to $900); payee since 2015-03",
"screening_hits": [
"debtor name: JOSE LUIS ZAMUDIO OLIVARES against OFAC SDN entry OFAC-48217, score 100 on the a.k.a. added 2026-10-06"
]
},
"alert": {
"alert_id": "PAY-SCR-20261008-00112",
"created": "2026-10-08T00:41:09Z",
"screening_type": "payment screening, outgoing international wire",
"screened_party": {
"customer_id": "C-0031180542",
"role": "originator (debtor)",
"screened_name": "JOSE LUIS ZAMUDIO OLIVARES",
"date_of_birth": "1981-03-27",
"nationality": "MX",
"country_of_residence": "US"
},
"match_threshold": 85,
"good_guy_check": "Good-guy record GG-20250604-031 exists for this customer and entry OFAC-48217 but was not applied: the entry was amended on 2026-10-06",
"hits": [
{
"rank": 1,
"list": "OFAC SDN",
"entry_uid": "OFAC-48217",
"match_score": 100,
"matched_name": "ZAMUDIO OLIVARES, Jose Luis",
"name_match": "exact on an a.k.a. added 2026-10-06 (the primary name has the surnames reversed)",
"secondary_fields": [
{
"field": "date_of_birth",
"customer": "1981-03-27",
"list": "11 Sep 1981",
"result": "no match (same year)"
},
{
"field": "nationality",
"customer": "Mexico",
"list": "Mexico",
"result": "match"
},
{
"field": "gender",
"customer": "Male",
"list": "Male",
"result": "match"
},
{
"field": "national_id",
"customer": "CURP ZAOL810327HGTMLS04",
"list": "C.U.R.P. OIZL810911HSLLMS09",
"result": "no match"
},
{
"field": "address",
"customer": "Houston, TX, US",
"list": "Culiacán, Sinaloa, Mexico; Mazatlán, Sinaloa, Mexico",
"result": "no match"
}
],
"list_entry": {
"entry_type": "Individual",
"programs": [
"ILLICIT-DRUGS-EO14059"
],
"names": [
{
"type": "primary",
"name": "OLIVARES ZAMUDIO, Jose Luis"
},
{
"type": "a.k.a.",
"name": "\"EL CONTADOR\""
},
{
"type": "a.k.a.",
"name": "ZAMUDIO OLIVARES, Jose Luis",
"added": "2026-10-06"
}
],
"dates_of_birth": [
"11 Sep 1981"
],
"places_of_birth": [
"Culiacán, Sinaloa, Mexico"
],
"nationalities": [
"Mexico"
],
"gender": "Male",
"identifications": [
{
"type": "C.U.R.P.",
"number": "OIZL810911HSLLMS09",
"country": "Mexico"
},
{
"type": "R.F.C.",
"number": "OIZL810911K25",
"country": "Mexico"
}
],
"addresses": [
"Calle Rio Culiacan 1408, Col. Guadalupe, Culiacán, Sinaloa, Mexico",
"Av. del Mar 3311, Mazatlán, Sinaloa, Mexico (added 2025-06-03)",
"Blvd. Pedro Infante 2650, Culiacán, Sinaloa, Mexico (added 2026-10-06)"
],
"linked_to": [
"CAMBIOS EL DORADO DEL PACIFICO, S.A. DE C.V."
],
"date_listed": "2023-05-16",
"last_amended": "2026-10-06",
"list_text": "OLIVARES ZAMUDIO, Jose Luis (a.k.a. \"EL CONTADOR\"; a.k.a. ZAMUDIO OLIVARES, Jose Luis), Calle Rio Culiacan 1408, Col. Guadalupe, Culiacan, Sinaloa, Mexico; Av. del Mar 3311, Mazatlan, Sinaloa, Mexico; Blvd. Pedro Infante 2650, Culiacan, Sinaloa, Mexico; DOB 11 Sep 1981; POB Culiacan, Sinaloa, Mexico; nationality Mexico; Gender Male; C.U.R.P. OIZL810911HSLLMS09 (Mexico); R.F.C. OIZL810911K25 (Mexico) (individual) [ILLICIT-DRUGS-EO14059] (Linked To: CAMBIOS EL DORADO DEL PACIFICO, S.A. DE C.V.)."
}
}
]
}
},
"questions": {
"same_party": {
"type": "score",
"instructions": "How likely is it that the screened party is the same person, organization or vessel as the list entry the screening matched, judging by everything in our records against the entry's names and identifiers? If the alert has several hits, answer for the strongest one.",
"criteria": [
"Very unlikely (under 10%)",
"Unlikely (10-40%)",
"Uncertain (40-60%)",
"Likely (60-90%)",
"Very likely (over 90%)"
]
},
"conflicting_identifiers": {
"type": "multi_choice",
"instructions": "Which of the list entry's identifiers does our record of the screened party clearly contradict, so that the two cannot be the same party? Count an identifier only when both our record and the entry give it. A spelling or transliteration variant, a missing value or a past address is not a contradiction.",
"criteria": {
"date_of_birth": "Date of birth: our full date of birth differs from every date of birth the entry gives (where the entry gives only a year, from every year it gives)",
"place_of_birth": "Place of birth: our record gives a different town or country of birth",
"nationality": "Nationality: none of the entry's nationalities or citizenships appears in our record",
"id_number": "ID number: a permanent number of the same kind and country as one in the entry (national ID, tax ID or CURP) is different, or a passport from the same country that was valid at the same time has a different number",
"gender": "Gender: the entry gives a different gender",
"party_type": "Party type: the entry is a different kind of party, such as an organization or a vessel when we screened an individual"
}
},
"adverse_media_financial_crime": {
"type": "noul",
"instructions": "Does any of the adverse media returned with this alert describe our customer, rather than another person or company with a similar name, in connection with financial crime such as fraud, money laundering, bribery, sanctions or export-control evasion, or terrorist financing?"
},
"action": {
"type": "choice",
"instructions": "What should the screening analyst do with this alert now?",
"criteria": {
"clear": "Clear the alert as a false positive, record the identifiers that rule the entry out, and release any held payment",
"request_information": "Keep any payment on hold and ask the customer for the specific information that would settle the match, such as an identity document, a full date of birth, an address or the purpose of a payment",
"escalate": "Escalate to the sanctions compliance officer for a decision, keeping any payment on hold",
"block_and_report": "Treat it as a true match on a blocking sanctions list: block the funds and accounts and report the blocking to the regulator (to OFAC within 10 business days)"
}
}
}
}The response. Probabilities and confidence are shortened to four decimals here, and the score to three; responses carry full precision.
{
"id": "dec_0e511d9ee9124d0eaa307f60f0601f55",
"model": "grayson-1",
"answers": {
"same_party": {
"type": "score",
"score": 0.024,
"legend": {
"0": "Very unlikely (under 10%)",
"1": "Unlikely (10-40%)",
"2": "Uncertain (40-60%)",
"3": "Likely (60-90%)",
"4": "Very likely (over 90%)"
},
"confidence": 0.9851,
"probabilities": {
"0": 0.9881,
"1": 0.0067,
"2": 0.0012,
"3": 0.0013,
"4": 0.0028
}
},
"conflicting_identifiers": {
"type": "multi_choice",
"multi_choice": [
"date_of_birth",
"place_of_birth",
"id_number"
],
"probabilities": {
"date_of_birth": 0.9047,
"place_of_birth": 0.9914,
"nationality": 0.011,
"id_number": 0.9914,
"gender": 0.023,
"party_type": 0.0141
}
},
"adverse_media_financial_crime": {
"type": "noul",
"noul": 0.0022
},
"action": {
"type": "choice",
"choice": "clear",
"confidence": 0.9497,
"probabilities": {
"clear": 0.9623,
"request_information": 0.0094,
"escalate": 0.02,
"block_and_report": 0.0083
}
}
},
"usage": {
"input_tokens": 15701,
"output_tokens": 0
}
}Open in Playground
A Glendale spindle rebuilder shares a name and birth year with a designated Yerevan exporter. OFAC designated the Yerevan owner of a company shipping used US machine tools to Russia, under our customer's exact name and birth year. Our customer was born in Gyumri, rebuilds CNC spindles in Glendale, buys parts in Armenia and sold two used spindles to Turkey in June, but has run his shop here daily for years and the list's 2021 passport isn't one we hold.
| Question | Grayson's answer |
|---|---|
same_party | 1.80 of 4, confidence 13% (Very unlikely 31%, Unlikely 21%, Uncertain 10%, Likely 14%, Very likely 24%) |
conflicting_identifiers | None at 50% or more |
adverse_media_financial_crime | 88% true |
action | escalate, confidence 49% |
19,179 input tokens, $0.00067 per decision, answered in 333 ms.
The request, with long lists cut short. The full request is ambiguous.json (66 KB).
{
"model": "grayson-1",
"state": {
"case": {
"case_id": "SANC-2026-10-0389",
"opened": "2026-10-05T17:05:00Z",
"queue": "Sanctions screening, level 1",
"institution": "US bank; this case was assembled by our case-management system from the screening alert and our records",
"alerts_in_case": [
"SCR-CUST-20261002-029310 (customer rescreening)",
"PAY-SCR-20261005-00419 (outgoing wire)"
]
},
"customer": {
"customer_id": "C-0022917604",
"customer_since": "2012-04-18",
"name": {
"first": "Garnik",
"last": "Terzian",
"as_on_id": "TERZIAN GARNIK"
},
"other_names": [
"Garnik Terzyan (spelling on his Armenian passport)"
],
"date_of_birth": "1979-06-02",
"place_of_birth": "Gyumri, Armenia",
"gender": "Male",
"citizenship": [
"United States (naturalized 2016)",
"Armenia"
],
"identity_documents": [
{
"type": "Passport",
"issuer": "United States",
"number": "masked (ends 3306)",
"issued": "2024-01-22",
"expires": "2034-01-21",
"verified": "2024-02-05, documentary, ID update"
},
{
"type": "Passport",
"issuer": "Armenia",
"number": "AK0193377",
"issued": "2009-03-03",
"expires": "2019-03-02",
"verified": "2012-04-18, documentary, at account opening (expired; no current Armenian passport on file)"
},
{
"type": "Taxpayer ID",
"issuer": "United States",
"number": "SSN, masked (ends 7719)"
}
],
"addresses": [
{
"type": "residential",
"address": "1328 Raymond Ave, Glendale, CA 91201",
"since": "2018-09-01"
},
{
"type": "previous residential",
"address": "455 W Doran St, Apt 12, Glendale, CA 91203",
"from": "2012-04-18",
"to": "2018-08-31"
}
],
"phone": "+1 818-555-0122",
"email": "garnik.terzian@example.net",
"occupation": "Owner, Terzian Precision Services (CNC machine repair and spindle rebuilding), Glendale",
"employment_history_on_file": "2012 to 2017: CNC service technician, Valley Precision Machining, Burbank (payroll deposits to x6610); 2017 onward: own business",
"source_of_funds": "Business income",
"risk_rating": {
"rating": "Medium",
"since": "2017-05-02",
"reason": "Business owner with international wires to Armenia"
},
"kyc_reviews": [
{
"date": "2024-02-05",
"type": "periodic review",
"result": "no change; customer explained Armenia wires as parts bought from his brother's rebuild shop and money for his mother"
}
],
"sar_history": "none"
},
"accounts": [
{
"account": "x6610",
"type": "personal checking",
"opened": "2012-04-18",
"owners": [
"Garnik Terzian",
"Lusine Terzian (spouse)"
],
"status": "open",
"debit_cards": [
"x2280 (Garnik), active",
"x2298 (Lusine), active"
]
},
{
"account": "x6628",
"type": "personal savings",
"opened": "2014-11-03",
"owners": [
"Garnik Terzian",
"Lusine Terzian"
],
"status": "open"
},
{
"account": "x6637",
"type": "business checking",
"opened": "2017-05-02",
"owners": [
"Garnik Terzian dba Terzian Precision Services"
],
"status": "open",
"business": {
"legal_name": "Garnik Terzian dba Terzian Precision Services",
"structure": "sole proprietorship, fictitious business name filed in Los Angeles County 2017",
"address": "6120 San Fernando Rd, Unit C, Glendale, CA 91201",
"naics": "811310 Commercial and industrial machinery repair",
"stated_activity": "Repairs CNC machines and rebuilds spindles for machine shops in the San Fernando Valley; buys rebuilt spindle cartridges from a supplier in Armenia; occasionally sells used spindle units",
"expected_activity": {
"monthly_deposits_usd": 70000,
"wire_countries": [
"AM"
],
"cash": "rare"
}
},
"debit_card": "business debit x6651, active"
}
],
"monthly_summary": {
"x6610": {
"columns": [
"month",
"credits_usd",
"debits_usd",
"card_purchases_usd",
"ach_and_transfers_in_usd",
"… 6 more in ambiguous.json"
],
"rows": [
[
"2025-10",
10000,
8292.59,
2892.92,
10000,
"… 6 more in ambiguous.json"
],
[
"2025-11",
5000,
9349.73,
3961.68,
5000,
"… 6 more in ambiguous.json"
],
[
"2025-12",
15000,
10289.72,
2849.42,
15000,
"… 6 more in ambiguous.json"
],
[
"2026-01",
10000,
9986.13,
4612.12,
10000,
"… 6 more in ambiguous.json"
],
[
"2026-02",
5000,
8041.04,
2635.01,
5000,
"… 6 more in ambiguous.json"
],
"… 8 more in ambiguous.json"
]
},
"x6637": {
"columns": [
"month",
"credits_usd",
"debits_usd",
"card_purchases_usd",
"ach_and_transfers_in_usd",
"… 6 more in ambiguous.json"
],
"rows": [
[
"2025-10",
43112.24,
43102.01,
0,
43112.24,
"… 6 more in ambiguous.json"
],
[
"2025-11",
38623.2,
41408.24,
0,
38623.2,
"… 6 more in ambiguous.json"
],
[
"2025-12",
46047.25,
47277.1,
0,
46047.25,
"… 6 more in ambiguous.json"
],
[
"2026-01",
56180.89,
64452.54,
0,
56180.89,
"… 6 more in ambiguous.json"
],
[
"2026-02",
51305.73,
38163.62,
0,
51305.73,
"… 6 more in ambiguous.json"
],
"… 8 more in ambiguous.json"
]
},
"x6628": {
"columns": [
"month",
"credits_usd",
"debits_usd",
"card_purchases_usd",
"ach_and_transfers_in_usd",
"… 6 more in ambiguous.json"
],
"rows": [
[
"2025-10",
500,
0,
0,
500,
"… 6 more in ambiguous.json"
],
[
"2025-11",
500,
0,
0,
500,
"… 6 more in ambiguous.json"
],
[
"2025-12",
500,
0,
0,
500,
"… 6 more in ambiguous.json"
],
[
"2026-01",
500,
0,
0,
500,
"… 6 more in ambiguous.json"
],
[
"2026-02",
500,
0,
0,
500,
"… 6 more in ambiguous.json"
],
"… 8 more in ambiguous.json"
]
}
},
"wires": {
"note": "Every incoming and outgoing wire on the customer's accounts since 2024-10-01",
"columns": [
"ts",
"direction",
"amount_usd",
"account",
"counterparty",
"… 4 more in ambiguous.json"
],
"rows": [
[
"2024-11-12T18:32:16Z",
"out",
4800,
"x6637",
"SHIRAK MACHINE PARTS LLC",
"… 4 more in ambiguous.json"
],
[
"2024-12-18T02:47:06Z",
"out",
1500,
"x6610",
"Anahit Terzyan",
"… 4 more in ambiguous.json"
],
[
"2025-02-18T18:21:02Z",
"out",
3900,
"x6637",
"SHIRAK MACHINE PARTS LLC",
"… 4 more in ambiguous.json"
],
[
"2025-03-26T01:31:28Z",
"out",
1000,
"x6610",
"Anahit Terzyan",
"… 4 more in ambiguous.json"
],
[
"2025-05-20T17:30:54Z",
"out",
5250,
"x6637",
"SHIRAK MACHINE PARTS LLC",
"… 4 more in ambiguous.json"
],
"… 8 more in ambiguous.json"
]
},
"transactions": {
"note": "Every posted item since 2026-08-01; amounts signed (debits negative); balance after the item",
"x6610": {
"columns": [
"posted",
"type",
"amount_usd",
"balance_usd",
"description",
"detail"
],
"rows": [
[
"2026-08-01T13:48:55Z",
"ach_debit",
-3412.66,
8192.99,
"ROCKET MORTGAGE PMT",
"ACH PPD, mortgage on Glendale home"
],
[
"2026-08-01T14:41:05Z",
"card_purchase",
-89.73,
8103.26,
"SQ *CAFE KALINKA GLENDALE CA",
"mcc 5812, contactless"
],
[
"2026-08-02T21:07:21Z",
"card_purchase",
-65.99,
8037.27,
"COSTCO WHSE #0479 BURBANK CA",
"mcc 5300, chip"
],
[
"2026-08-02T21:25:55Z",
"card_purchase",
-57.03,
7980.24,
"CHEVRON 0209441 GLENDALE CA",
"mcc 5541, chip"
],
[
"2026-08-03T00:40:26Z",
"card_purchase",
-56.53,
7923.71,
"SQ *CAFE KALINKA GLENDALE CA",
"mcc 5812, contactless"
],
"… 102 more in ambiguous.json"
]
},
"x6637": {
"columns": [
"posted",
"type",
"amount_usd",
"balance_usd",
"description",
"detail"
],
"rows": [
[
"2026-08-01T14:14:15Z",
"ach_debit",
-4200,
94833.06,
"SAN FERNANDO RD PROPERTIES SHOP RENT",
"ACH CCD, shop lease, Glendale"
],
[
"2026-08-03T18:23:29Z",
"ach_debit",
-2337.82,
92495.24,
"WEST COAST SPINDLE REBUILD PMT",
"parts and supplies"
],
[
"2026-08-04T12:51:59Z",
"merchant_settlement",
1737.46,
94232.7,
"CARD PROCESSOR DEPOSIT TERZIAN PRECISION",
"card sales settled from the shop's terminal"
],
[
"2026-08-04T16:39:55Z",
"ach_credit",
4185.7,
98418.4,
"BURBANK TOOL & DIE",
"customer payment for repair work"
],
[
"2026-08-05T12:09:16Z",
"merchant_settlement",
1884.6,
100303,
"CARD PROCESSOR DEPOSIT TERZIAN PRECISION",
"card sales settled from the shop's terminal"
],
"… 68 more in ambiguous.json"
]
}
},
"screening_history": [
{
"date": "2012-04-18",
"type": "onboarding screening",
"lists": "OFAC SDN and non-SDN lists, UN, UK, EU, PEP",
"result": "no hits"
},
{
"date": "2017-05-02",
"type": "onboarding screening, business account",
"result": "no hits"
},
{
"date": "2022-09-14",
"type": "periodic rescreening",
"result": "1 hit, cleared",
"detail": "PEP database entry 'TERZYAN, Garnik Samveli', deputy governor of an Armenian province 2014 to 2018, born 1958. Cleared by the analyst: date of birth differs by 21 years; good-guy record GG-20220914-077 created for that PEP entry only."
},
{
"date": "2025-09-10",
"type": "periodic rescreening",
"result": "hit suppressed by good-guy record GG-20220914-077"
}
],
"case_notes": [
{
"ts": "2026-10-05T16:48:00Z",
"by": "Sanctions screening analyst (L1)",
"note": "List-update alert from Friday night, not yet worked; this morning's outgoing wire to Shirak Machine Parts was held on the same entry and joined to the case. Customer not contacted. Card and ACH activity over the weekend posted normally. Checked the list entry's linked company in the vendor's corporate registry data: Araks Technotrade LLC, registered in Yerevan 2022, director and sole shareholder 'Garnik Terzyan', no date of birth or ID given in the registry extract."
}
],
"adverse_media": {
"note": "Articles your screening vendor's adverse media search returned for the screened names, newest first, as the vendor shows them",
"articles": [
{
"published": "2026-10-02",
"source": "US Treasury press release",
"title": "Treasury Designates Machine-Tool Suppliers to Russia's Defense Industry in Armenia, Türkiye and Kyrgyzstan",
"matched_names": [
"Garnik Terzyan"
],
"excerpt": "OFAC today designated nine entities and five individuals that have supplied computer numerical control (CNC) machine tools, spindles and components to Russian defense manufacturers [...] Araks Technotrade LLC (Araks), based in Yerevan, Armenia, has since 2023 bought used and refurbished CNC machining centers and spindle assemblies in the United States, Europe and Türkiye and shipped them to Russia through Armenia. Garnik Terzyan, a former chief engineer at a Gyumri machine-tool plant, founded Araks in 2022 and is its director and owner. Araks and Terzyan were designated pursuant to E.O. 14024 for operating or having operated in the manufacturing sector of the Russian Federation economy."
},
{
"published": "2024-05-28",
"source": "Armenian business news site (Armenian; vendor translation)",
"title": "Yerevan firm bets on refurbished Western machine tools",
"matched_names": [
"Garnik Terzyan"
],
"excerpt": "Araks Technotrade, which opened a 1,200-square-meter warehouse in the Shengavit district this spring, refurbishes CNC machines bought abroad and sells them to manufacturers 'in Armenia and the region'. Director Garnik Terzyan, who spent years servicing machine tools in Gyumri and abroad, said the company buys most of its equipment at auctions of closing US and Turkish machine shops. 'A good American spindle can be rebuilt three times,' he said."
}
]
},
"held_payment": {
"payment_id": "WIRE-OUT-20261005-00419",
"initiated": "2026-10-05T16:12:33Z",
"channel": "online banking, customer's usual laptop, shop IP, Glendale",
"status": "held by payment screening, not sent",
"direction": "outgoing",
"amount_usd": 6400,
"fee_usd": 45,
"message_type": "pacs.008 (cross-border customer credit transfer)",
"debtor": {
"name": "GARNIK TERZIAN DBA TERZIAN PRECISION SERVICES",
"address": "6120 SAN FERNANDO RD UNIT C GLENDALE CA 91201",
"account": "x6637"
},
"creditor": {
"name": "SHIRAK MACHINE PARTS LLC",
"address": "GYUMRI, ARMENIA",
"account": "IBAN-style account masked (AM** ****)",
"agent": "bank in Gyumri, Armenia"
},
"remittance_information": "/INV/2026-131 REFURBISHED SPINDLE CARTRIDGES AND BEARINGS",
"payee_history": "Paid 7 times since 2024-11 ($3,900 to $6,100); payee since 2019-06",
"screening_hits": [
"debtor name: GARNIK TERZIAN against OFAC SDN entry OFAC-61707, score 92 on the a.k.a."
]
},
"alert": {
"alert_id": "SCR-CUST-20261002-029310",
"created": "2026-10-02T23:40:00Z",
"screening_type": "customer rescreening after a list update",
"list_update": "OFAC SDN list, update of 2026-10-02 (14 entries added)",
"screened_party": {
"customer_id": "C-0022917604",
"screened_name": "GARNIK TERZIAN",
"date_of_birth": "1979-06-02",
"nationality": "US, AM",
"country_of_residence": "US"
},
"match_threshold": 85,
"hits": [
{
"rank": 1,
"list": "OFAC SDN",
"entry_uid": "OFAC-61707",
"match_score": 92,
"matched_name": "TERZIAN, Garnik",
"name_match": "exact on the a.k.a.; primary name 'TERZYAN' is a transliteration variant, which our record also holds as another name",
"secondary_fields": [
{
"field": "date_of_birth",
"customer": "1979-06-02",
"list": "1979; alt. 1980",
"result": "year match"
},
{
"field": "nationality",
"customer": "United States, Armenia",
"list": "Armenia",
"result": "match"
},
{
"field": "gender",
"customer": "Male",
"list": "Male",
"result": "match"
},
{
"field": "passport",
"customer": "AK0193377 (Armenia), expired 2019",
"list": "AT0472918 (Armenia), issued 14 May 2021",
"result": "no match"
},
{
"field": "address",
"customer": "Glendale, CA, US",
"list": "Yerevan, Armenia",
"result": "no match"
}
],
"list_entry": {
"entry_type": "Individual",
"programs": [
"RUSSIA-EO14024"
],
"names": [
{
"type": "primary",
"name": "TERZYAN, Garnik"
},
{
"type": "a.k.a.",
"name": "TERZIAN, Garnik"
},
{
"type": "original script",
"name": "ՏԵՐԶՅԱՆ, Գառնիկ"
}
],
"dates_of_birth": [
"1979",
"1980"
],
"places_of_birth": [],
"nationalities": [
"Armenia"
],
"gender": "Male",
"identifications": [
{
"type": "Passport",
"number": "AT0472918",
"country": "Armenia",
"issued": "14 May 2021"
}
],
"addresses": [
"Yerevan, Armenia"
],
"linked_to": [
"ARAKS TECHNOTRADE LLC"
],
"date_listed": "2026-10-02",
"list_text": "TERZYAN, Garnik (Armenian: ՏԵՐԶՅԱՆ, Գառնիկ) (a.k.a. TERZIAN, Garnik), Yerevan, Armenia; DOB 1979; alt. DOB 1980; nationality Armenia; Gender Male; Passport AT0472918 (Armenia) issued 14 May 2021 (individual) [RUSSIA-EO14024] (Linked To: ARAKS TECHNOTRADE LLC)."
}
}
]
}
},
"questions": {
"same_party": {
"type": "score",
"instructions": "How likely is it that the screened party is the same person, organization or vessel as the list entry the screening matched, judging by everything in our records against the entry's names and identifiers? If the alert has several hits, answer for the strongest one.",
"criteria": [
"Very unlikely (under 10%)",
"Unlikely (10-40%)",
"Uncertain (40-60%)",
"Likely (60-90%)",
"Very likely (over 90%)"
]
},
"conflicting_identifiers": {
"type": "multi_choice",
"instructions": "Which of the list entry's identifiers does our record of the screened party clearly contradict, so that the two cannot be the same party? Count an identifier only when both our record and the entry give it. A spelling or transliteration variant, a missing value or a past address is not a contradiction.",
"criteria": {
"date_of_birth": "Date of birth: our full date of birth differs from every date of birth the entry gives (where the entry gives only a year, from every year it gives)",
"place_of_birth": "Place of birth: our record gives a different town or country of birth",
"nationality": "Nationality: none of the entry's nationalities or citizenships appears in our record",
"id_number": "ID number: a permanent number of the same kind and country as one in the entry (national ID, tax ID or CURP) is different, or a passport from the same country that was valid at the same time has a different number",
"gender": "Gender: the entry gives a different gender",
"party_type": "Party type: the entry is a different kind of party, such as an organization or a vessel when we screened an individual"
}
},
"adverse_media_financial_crime": {
"type": "noul",
"instructions": "Does any of the adverse media returned with this alert describe our customer, rather than another person or company with a similar name, in connection with financial crime such as fraud, money laundering, bribery, sanctions or export-control evasion, or terrorist financing?"
},
"action": {
"type": "choice",
"instructions": "What should the screening analyst do with this alert now?",
"criteria": {
"clear": "Clear the alert as a false positive, record the identifiers that rule the entry out, and release any held payment",
"request_information": "Keep any payment on hold and ask the customer for the specific information that would settle the match, such as an identity document, a full date of birth, an address or the purpose of a payment",
"escalate": "Escalate to the sanctions compliance officer for a decision, keeping any payment on hold",
"block_and_report": "Treat it as a true match on a blocking sanctions list: block the funds and accounts and report the blocking to the regulator (to OFAC within 10 business days)"
}
}
}
}The response. Probabilities and confidence are shortened to four decimals here, and the score to three; responses carry full precision.
{
"id": "dec_7624dbdd677042c4a850bac6f30619cb",
"model": "grayson-1",
"answers": {
"same_party": {
"type": "score",
"score": 1.799,
"legend": {
"0": "Very unlikely (under 10%)",
"1": "Unlikely (10-40%)",
"2": "Uncertain (40-60%)",
"3": "Likely (60-90%)",
"4": "Very likely (over 90%)"
},
"confidence": 0.1331,
"probabilities": {
"0": 0.3065,
"1": 0.2106,
"2": 0.0995,
"3": 0.1448,
"4": 0.2387
}
},
"conflicting_identifiers": {
"type": "multi_choice",
"multi_choice": [],
"probabilities": {
"date_of_birth": 0.0534,
"place_of_birth": 0.0851,
"nationality": 0.0293,
"id_number": 0.1329,
"gender": 0.018,
"party_type": 0.023
}
},
"adverse_media_financial_crime": {
"type": "noul",
"noul": 0.8808
},
"action": {
"type": "choice",
"choice": "escalate",
"confidence": 0.4897,
"probabilities": {
"clear": 0.0128,
"request_information": 0.0395,
"escalate": 0.6173,
"block_and_report": 0.3304
}
}
},
"usage": {
"input_tokens": 19179,
"output_tokens": 0
}
}A yes/no answer is Grayson's probability that it's true. A choice answer is the top option and Grayson's confidence: 0% when every option is equally likely, 100% when one option has all the probability. A score answer is the expected level, numbering the levels in its criteria from 0, with its confidence measured the same way and, when no level reaches 70%, each level's probability. A multiple-choice answer lists the options at 50% or more.
action: releaseclearabove a high threshold with the reason fromconflicting_identifierswritten to the case, and send everything else to an analyst. Never let a model block on its own: routeblock_and_reportto whoever signs blocking reports.same_party: sort your queue by it, and audit a sample of the alerts cleared at "Very unlikely" each month.conflicting_identifiersis the audit trail: a clear backed by a different date of birth and national ID number is strong; a clear with nothing listed should go to a person.
Call it from your code
Save an example as request.json, such as fraud.json, and send it with your API key in GRAYSON_API_KEY:
curl https://api.finic.ai/v1/decide \
-H "Authorization: Bearer $GRAYSON_API_KEY" \
-H "Content-Type: application/json" \
--data @request.jsonThe problem
Screening tools match names, so a common name or a new alias on an old entry raises the same alert every time it appears, and most of a sanctions team's day goes to clearing hits that a date of birth rules out. The few real matches look much like them at first, and telling them apart means comparing every identifier, reading the customer's history and the press release, and writing down why.
What to send
Send the alert with the record your analysts would open next to it. The examples use about 15,700 to 23,000 input tokens.
- The list entry as your vendor returns it. All names and aliases, dates and places of birth, nationalities, ID numbers, addresses, linked parties, the program and when the entry was added or amended.
- The vendor's match details. The score, which name or alias matched, and how each secondary field compared.
- Your KYC record. Legal name and other names, date and place of birth, citizenships, every ID document with its number and dates, addresses with their dates, occupation and business.
- Accounts, payments and wires. Where your customer lives, works and sends money shows whether they can be the person the entry describes.
- Earlier screening decisions. A hit cleared twice before on the same identifiers, and why it came back, often settles the case.
- The held payment, when screening stopped one: the full message, with every party and agent.
- Adverse media with the text, so Grayson can tell whether it describes your customer or the listed person.
Add your own policy
Many institutions require a second person, usually the sanctions compliance officer, to decide every block, so put your procedure in the state in your team's words.
Your four-eyes blocking procedure adds this to the state of the obvious example:
{
"institution_policy": "Sanctions screening procedure SS-3 (revised 2026-07): Level 1 analysts never block funds or accounts and never file blocking reports, however strong the match. When a hit on a blocking list (the OFAC SDN list, or an entity owned 50% or more by listed persons) looks like a true match, keep any payment on hold, place a temporary debit restriction on the customer's accounts and escalate the case to the Sanctions Compliance Officer the same day. Only the Sanctions Compliance Officer decides to block and files the report to OFAC. Level 1 analysts clear false positives and request information from customers as usual."
}| Question | Without | With your four-eyes blocking procedure |
|---|---|---|
same_party | 3.99 of 4, confidence over 99% | 3.99 of 4, confidence over 99% |
conflicting_identifiers | None at 50% or more | None at 50% or more |
adverse_media_financial_crime | 99% true | 99% true |
action | block_and_report, confidence 96% | escalate, confidence 98% |
Applied to the clear true match example: the exporter's passport number, birth date and home address are on the new entry, but under this procedure a level 1 analyst never blocks, so the action moves from blocking and reporting to escalating with a hold, while the match likelihood, conflicting identifiers and adverse media answers stay the same.
Where to call it
- On every alert, before it reaches the queue, to order it and to prepare the comparison and the reason for each clear.
- In the payment path, when payment screening holds a wire, so false positives are released in minutes instead of hours.
- After each list update, across the batch of new hits from rescreening your whole customer base.
Cost and latency
| Example | Input tokens | Per decision | Per 1,000 decisions | Latency |
|---|---|---|---|---|
| Obvious | 23,019 | $0.00081 | $0.81 | 281 ms |
| Legitimate | 15,701 | $0.00055 | $0.55 | 243 ms |
| Ambiguous | 19,179 | $0.00067 | $0.67 | 333 ms |
You pay only for input tokens, at $0.035 per million, and each request is rounded up to the next millionth of a dollar, so a request with a larger state costs proportionally more; every response reports its size in usage.input_tokens. Latency is the median of 5 calls each through api.finic.ai from US-West, and grows with the number of input tokens. Add your own network time to api.finic.ai.
Evaluate on your own data
Score Grayson on your own past cases before you use it: a CSV with one row per case and a column with the right answer to each question. Every other column is sent as the case.
pipx install https://docs.finic.ai/downloads/grayson_cli-0.4.0-py3-none-any.whl
grayson eval my-cases.csv --questions https://docs.finic.ai/recipes/sanctions-screening-triage/questions.json --label same_party=<column> --label conflicting_identifiers=<column> --label adverse_media_financial_crime=<column> --label action=<column>Each --label names the column with that question's right answer:
same_party: a level, such as "Very likely (over 90%)"conflicting_identifiers: option keys separated by|(date_of_birth,place_of_birth,nationality,id_number,gender,party_type)adverse_media_financial_crime:trueorfalseaction:clear,request_information,escalate,block_and_report
Or run grayson on its own to set up your questions step by step. You get each question's accuracy and a CSV with Grayson's answer next to yours for every case.
FAQ
Can Grayson clear alerts on its own?
It can if your policy and regulators allow automated clearing with a documented rationale: use a high threshold on clear, require at least one entry in conflicting_identifiers, and keep the answers with the alert. Most teams start by using it to order the queue and prepare the comparison, then measure its clears against their analysts' on past alerts before letting any close without review.
Does it work for PEP and adverse media hits, not just sanctions?
Yes. The identity questions are the same for a politically exposed person or a watchlist entry, and you can send a PEP database record in place of a sanctions entry. A true PEP match isn't blocked, so add your own outcome, such as enhanced due diligence, to the action options or describe it in your procedure.
What about the OFAC 50 percent rule?
An entity owned 50% or more in total by blocked persons is blocked even when it isn't on the list, so screening its name finds nothing. Screen your customers' beneficial owners and send the ownership chain with the alert, and Grayson can weigh a hit on an owner the same way.
Related recipes
Triage AML transaction monitoring alerts
Close, ask the customer, escalate or file on a transaction monitoring alert, with the typology and how likely it meets the SAR standard
Detect account opening fraud and synthetic identities
Approve, step up or decline a deposit account application at risk of stolen or synthetic identity fraud.
Detect money mule accounts
Whether an account is passing other people's money through, whether the holder knows, and what to do
Recipes
Every use case, with its questions and cost per decision.
Money mules
Decide whether an account is a money mule, whether the holder is complicit or was deceived by a job or romance scam, and whether to restrict or close it.
Merchant and platform risk
The merchants on your payments platform, and abuse of your rewards and promotions. Ready-to-run Grayson recipes with real responses, cost and latency.