Automate customer onboarding with data validation + sanctions screening (LATAM)

Hey everyone — sharing a workflow pattern I use for client onboarding in Latin America. The challenge: validating customer data that comes in messy formats (Spanish compound surnames, inconsistent phone formats, informal city names) and running compliance checks before creating the record in our CRM.

What the workflow does

  1. Receives new customer data (from a form, webhook, or spreadsheet row)
  2. Validates in parallel:
    • Name → standardized (canonical form + gender detection + person type)
    • Email → syntax + MX records + disposable domain check
    • City → resolved to official name with country subdivision code
    • Tax ID → format validation by country (CO NIT, MX RFC, PE RUC, CL RUT)
  3. Screens against sanctions lists (OFAC, UN, EU) with fuzzy matching for Spanish names
  4. Routes by result: clean → create in CRM / flagged → human review queue

The parallel validation step

This is the part I find most useful. Instead of sequential calls (slow), n8n lets you fan out to multiple HTTP requests simultaneously:

[Trigger] → [Set customer data]
                ├── [Standardize Name]     → ─┐
                ├── [Validate Email]       → ─┤
                ├── [Resolve City]         → ─┼── [Merge] → [Sanctions Check] → [IF clean → CRM]
                └── [Validate Tax ID]      → ─┘

Each validation is one HTTP call to mediavox.co/mvapi/api/v1/datatools/*. They run in parallel (~300ms total vs ~1.2s sequential).

Example: Name standardization for Spanish

Input: "maria del carmen rodriguez perez"

Output:

{
  "canonical": "María Del Carmen Rodríguez Pérez",
  "gender": "F",
  "person_type": "natural",
  "confidence": 0.96
}

It handles compound surnames (Rodríguez Pérez stays together), accent restoration, and distinguishes business names from person names automatically.

Example: City resolution

Input: "bogota" (no accent, lowercase)

Output:

{
  "official_name": "Bogotá, D.C.",
  "department": "Bogotá D.C.",
  "country": "CO",
  "dane_code": "11001"
}

Works for 6 countries (CO, MX, PE, CL, EC, PA) with their official codes (DANE, INEGI, UBIGEO, etc.).

Sanctions screening with fuzzy matching

This is critical for compliance. The API checks against OFAC SDN, UN Security Council, EU sanctions, and PEP lists. The fuzzy matching handles:

  • Name order variations: “García López, Juan” vs “Juan García López”
  • Accents: “Perez” matches “Pérez”
  • Transliterations: common in names of Arabic/Cyrillic origin
{
  "is_sanctioned": false,
  "closest_match": "Juan García Márquez",
  "match_score": 0.43,
  "lists_checked": ["OFAC_SDN", "UN_SC", "EU_SANCTIONS", "PEP_CO"]
}

Score < 0.70 = clear. Score 0.70-0.85 = review. Score > 0.85 = blocked.

Download the workflow

I published the complete workflow as a JSON you can import directly:

Download: Compliance KYC Onboarding

It uses the n8n-nodes-mediavox community node (install from Settings > Community Nodes). Or replace with HTTP Request nodes if you prefer — the API is standard REST.

Setup

  1. Install: n8n-nodes-mediavox in Community Nodes
  2. Get a free API key at mediavox.co/mvdevportal (100 requests/month free)
  3. Import the workflow JSON
  4. Configure your credential (mediaAPI product, paste your key)
  5. Replace the sample data with your trigger (webhook, Google Sheets, etc.)

Why I built this for LATAM specifically

Most data validation APIs are built for US/EU data (ZIP codes, SSN format, English names). When you try them with “María José Hernández de la Cruz” or a Colombian NIT like “900.123.456-7” they either fail or return garbage.

This handles:

  • Compound Spanish/Portuguese surnames (up to 4 parts)
  • Country-specific tax IDs with check digit validation
  • Phone numbers in E.164 for 6 LATAM countries
  • City names with local slang (“Cali” → “Santiago de Cali”, “CDMX” → “Ciudad de México”)

Hope this helps someone building onboarding flows for LATAM. Happy to answer questions about the matching logic or edge cases.


API reference: mediavox.co/mvdevportal | Node on npm: n8n-nodes-mediavox

1 Like