<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Mediavox</title>
    <description>The latest articles on DEV Community by Mediavox (@mediavox).</description>
    <link>https://dev.to/mediavox</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3974744%2F48a07730-8901-4ea2-ae7a-10b20541171c.png</url>
      <title>DEV Community: Mediavox</title>
      <link>https://dev.to/mediavox</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/mediavox"/>
    <language>en</language>
    <item>
      <title>Detecting brand impersonation in Spanish SMS — the position trick</title>
      <dc:creator>Mediavox</dc:creator>
      <pubDate>Mon, 22 Jun 2026 23:06:04 +0000</pubDate>
      <link>https://dev.to/mediavox/detecting-brand-impersonation-in-spanish-sms-the-position-trick-16me</link>
      <guid>https://dev.to/mediavox/detecting-brand-impersonation-in-spanish-sms-the-position-trick-16me</guid>
      <description>&lt;h1&gt;
  
  
  Detecting brand impersonation in Spanish SMS — the position trick
&lt;/h1&gt;

&lt;p&gt;Phishing in Latin America has a pattern most detection systems miss: &lt;strong&gt;where&lt;/strong&gt; the brand name appears in the message matters.&lt;/p&gt;

&lt;h2&gt;
  
  
  The insight
&lt;/h2&gt;

&lt;p&gt;In legitimate bank notifications, the brand appears at the &lt;strong&gt;end&lt;/strong&gt; as a signature:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Su transferencia por $500,000 fue exitosa. — Tu Banco
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In phishing, the brand appears at the &lt;strong&gt;beginning&lt;/strong&gt; as a fake sender identity:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Tu Banco: Su cuenta sera bloqueada en 24h. Verifique: bit.ly/xyz
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This single heuristic (brand at position 0-2 words = impersonation pattern) catches ~70% of LATAM phishing messages before any URL analysis.&lt;/p&gt;

&lt;h2&gt;
  
  
  Implementation (simplified)
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;static&lt;/span&gt; &lt;span class="kt"&gt;bool&lt;/span&gt; &lt;span class="nf"&gt;IsBrandImpersonation&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;string&lt;/span&gt; &lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kt"&gt;string&lt;/span&gt;&lt;span class="p"&gt;[]&lt;/span&gt; &lt;span class="n"&gt;knownBrands&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;firstSegment&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Split&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="sc"&gt;' '&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sc"&gt;':'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sc"&gt;'-'&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;)[&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nf"&gt;ToLowerInvariant&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;knownBrands&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Any&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;b&lt;/span&gt; &lt;span class="p"&gt;=&amp;gt;&lt;/span&gt; 
        &lt;span class="n"&gt;firstSegment&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Contains&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;ToLowerInvariant&lt;/span&gt;&lt;span class="p"&gt;()));&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Real implementation adds:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Levenshtein distance for typosquatting ("Banamex" → "Banamx", "Nequi" → "Nequii")&lt;/li&gt;
&lt;li&gt;Alias matching (263+ brands across CO, MX, PE, CL, EC, AR)&lt;/li&gt;
&lt;li&gt;Position scoring (start = 0.9, middle = 0.3, end/signature = 0.1)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Combining with other signals
&lt;/h2&gt;

&lt;p&gt;Brand position alone isn't enough. We stack 7 signals in a single pass:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Signal&lt;/th&gt;
&lt;th&gt;Weight&lt;/th&gt;
&lt;th&gt;Cost&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Brand at start (impersonation)&lt;/td&gt;
&lt;td&gt;0.25&lt;/td&gt;
&lt;td&gt;Free&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Domain age &amp;lt; 7 days&lt;/td&gt;
&lt;td&gt;0.20&lt;/td&gt;
&lt;td&gt;1 RDAP call&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;URL shortener → suspicious domain&lt;/td&gt;
&lt;td&gt;0.20&lt;/td&gt;
&lt;td&gt;1 redirect follow&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Spanish urgency language&lt;/td&gt;
&lt;td&gt;0.15&lt;/td&gt;
&lt;td&gt;Free (regex)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Safe Browsing match&lt;/td&gt;
&lt;td&gt;0.10&lt;/td&gt;
&lt;td&gt;1 API call&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Phone number not official&lt;/td&gt;
&lt;td&gt;0.05&lt;/td&gt;
&lt;td&gt;DB lookup&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CTA pattern detected&lt;/td&gt;
&lt;td&gt;0.05&lt;/td&gt;
&lt;td&gt;Free (regex)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Combined confidence &amp;gt; 75% = fraudulent verdict.&lt;/p&gt;

&lt;h2&gt;
  
  
  Results
&lt;/h2&gt;

&lt;p&gt;Processing 10K+ real messages (crowdsourced from users across LATAM):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;94% accuracy on fraudulent messages&lt;/li&gt;
&lt;li&gt;2% false positive rate (legitimate marketing that starts with brand)&lt;/li&gt;
&lt;li&gt;&amp;lt; 200ms p95 response time&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The false positives are almost always marketing SMS that mimic phishing patterns — which is a problem for the brands themselves.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-X&lt;/span&gt; POST https://mediavox.co/mvapi/api/v1/security/threats/analyze &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"X-API-Key: your-key"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{"message": "TuBanco: Detectamos actividad inusual. Verifica tu cuenta: bit.ly/tb-verify"}'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Free tier: 500 analyses/month. No credit card.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;We built this for Latin America because English-focused tools don't understand Spanish urgency patterns, regional brand aliases, or the specific phishing templates used in CO/MX/PE/CL. If you're building for LATAM, happy to chat about what we've learned.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>security</category>
      <category>programming</category>
      <category>npl</category>
    </item>
    <item>
      <title>Building a fraud detection and data quality API for Latin America</title>
      <dc:creator>Mediavox</dc:creator>
      <pubDate>Mon, 08 Jun 2026 19:50:00 +0000</pubDate>
      <link>https://dev.to/mediavox/building-a-fraud-detection-and-data-quality-api-for-latin-america-31dm</link>
      <guid>https://dev.to/mediavox/building-a-fraud-detection-and-data-quality-api-for-latin-america-31dm</guid>
      <description>&lt;p&gt;If you've built anything for Latin America, you know the pain:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;2M+ phishing SMS per month in Colombia alone — in Spanish, targeting local banks and fintechs&lt;/li&gt;
&lt;li&gt;Names like "INVERSIONES DEMO S.A.S." that need to be split into company name + legal suffix + country&lt;/li&gt;
&lt;li&gt;Addresses like "Cra 7 # 32-16 Of 2301" that geocoding services can't parse without local context&lt;/li&gt;
&lt;li&gt;Phone numbers with country codes that don't match the user's declared country&lt;/li&gt;
&lt;li&gt;Sanctions screening that can't fuzzy-match "José García" vs "JOSE GARCIA LOPEZ" (accents, middle names, order)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The existing tools (phone validators, safe browsing APIs, breach databases) work for the US. They don't understand that a brand name at the start of an SMS is an impersonation pattern in LATAM, or that "S.A.S." means the input is a Colombian company, not a person.&lt;/p&gt;

&lt;h2&gt;
  
  
  What we built
&lt;/h2&gt;

&lt;p&gt;A REST API designed for Spanish-speaking Latin America. Five capabilities under one API key:&lt;/p&gt;




&lt;h3&gt;
  
  
  1. Security — Detect fraud in real time
&lt;/h3&gt;

&lt;p&gt;The biggest pain in LATAM right now. Phishing via SMS, WhatsApp, and email targeting banks, telcos, and fintechs.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Analyze a suspicious message&lt;/span&gt;
curl &lt;span class="nt"&gt;-X&lt;/span&gt; POST https://mediavox.co/mvapi/api/v1/security/threats/analyze &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"X-API-Key: your-key"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{"message": "Su cuenta sera bloqueada. Verifique en bit.ly/xyz"}'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Response:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"verdict"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"fraudulent"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"confidence"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;95&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"signals"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"urgencyScore"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;0.85&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"brandDetected"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"urlAnalysis"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"finalDomain"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"entidad-verify.tk"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"domainAgeDays"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"safeBrowsing"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"malicious"&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"phones"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[],&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"ctaFound"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;What it checks in a single call:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;263+ LATAM brands&lt;/strong&gt; with impersonation detection (position-aware: brand at start = sender pattern)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Domain age&lt;/strong&gt; via RDAP (domains &amp;lt; 7 days = almost always fraud)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Redirect chain resolution&lt;/strong&gt; (follows bit.ly → final destination, up to 10 hops)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Safe browsing check&lt;/strong&gt; (known malicious domains database)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Urgency patterns&lt;/strong&gt; in Spanish ("será bloqueada", "últimas horas", "activa ya")&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Phone extraction&lt;/strong&gt; with official number verification&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CTA detection&lt;/strong&gt; (suspicious call-to-action patterns)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Also available: sanctions screening (OFAC, UN, EU, PEP — 65K+ entities with Spanish fuzzy matching), brand registration for monitoring, and a crowdsourced threat feed that grows with every analysis.&lt;/p&gt;




&lt;h3&gt;
  
  
  2. DataTools — Clean your data
&lt;/h3&gt;

&lt;p&gt;Every company in LATAM has dirty data. Names misspelled, emails that bounce, addresses that geocoding services can't understand.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Standardize a name (handles Spanish, 60K+ dictionary)&lt;/span&gt;
curl &lt;span class="nt"&gt;-X&lt;/span&gt; POST https://mediavox.co/mvapi/api/v1/datatools/names/standardize &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"X-API-Key: your-key"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{"text": "INVERSIONES DEMO S.A.S."}'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Response:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"standardized"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Inversiones Demo"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"company"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"company_info"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"legal_suffix"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"SAS"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"legal_suffix_full"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Sociedad por Acciones Simplificada"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"country_detected"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"CO"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Available endpoints:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;names/standardize&lt;/strong&gt; — 60K+ name dictionary, gender detection, legal suffix separation for 6 countries (CO, MX, PE, CL, EC, AR)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;emails/validate&lt;/strong&gt; — disposable detection, typo correction, MX record verification&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;addresses/standardize&lt;/strong&gt; — Colombian address parsing + geocoding + DANE/INEGI/UBIGEO official codes&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;domains/validate&lt;/strong&gt; — brand identification, DNS resolution, registration data&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;quality-score&lt;/strong&gt; — cross-field coherence (email vs name, phone prefix vs country, disposable email with real data)&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  3. Compliance — KYC in one call
&lt;/h3&gt;

&lt;p&gt;If you're a fintech, bank, or insurance company in LATAM, regulatory compliance isn't optional. Sarlaft (Colombia), UIF (Mexico), SBS (Peru) all require screening.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Screen an entity against global sanctions lists&lt;/span&gt;
curl &lt;span class="nt"&gt;-X&lt;/span&gt; POST https://mediavox.co/mvapi/api/v1/security/sanctions/check &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"X-API-Key: your-key"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{"name": "Jose Garcia Lopez", "country": "CO"}'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Screens against OFAC, UN, EU, Interpol, and local PEP lists. Spanish fuzzy matching handles accents, name order variations, and abbreviations.&lt;/p&gt;

&lt;p&gt;The compliance bundle (one call) combines: sanctions check + name standardization + document ID validation + quality score.&lt;/p&gt;




&lt;h3&gt;
  
  
  4. Finance — LATAM tax and banking
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Validate a Colombian tax ID (NIT)&lt;/span&gt;
curl &lt;span class="nt"&gt;-X&lt;/span&gt; POST https://mediavox.co/mvapi/api/v1/finance/tax-id/validate &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"X-API-Key: your-key"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{"document_id": "900534082", "country": "CO"}'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Validates tax IDs (NIT Colombia, RFC Mexico, RUT Chile, RUC Peru, RUC Ecuador), verifies bank account formats, and categorizes financial transactions.&lt;/p&gt;




&lt;h3&gt;
  
  
  5. Recognition — OCR with structure
&lt;/h3&gt;

&lt;p&gt;Extract text from documents (invoices, IDs, contracts) with computer vision, then apply NER to pull structured entities: tax IDs, amounts, dates, company names, addresses.&lt;/p&gt;




&lt;h2&gt;
  
  
  How it works under the hood
&lt;/h2&gt;

&lt;p&gt;Three things make this different from wrapping existing APIs:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Self-improving dictionaries.&lt;/strong&gt; The more the API is used, the more accurate it becomes. Day one: 90%+ accuracy on names, cities, and brands across 6 LATAM countries. With traffic: approaches 99% as the system learns from every request.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Native Spanish NLP.&lt;/strong&gt; Not a translation layer on top of English tools. Built from scratch for ñ, accents, regional variations, and the specific patterns of Latin American fraud (urgency language, impersonation positions, local brand aliases).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Crowdsourced intelligence.&lt;/strong&gt; A free public bot (WhatsApp + Telegram) lets citizens verify suspicious messages. Every analysis enriches the threat feed. Every report strengthens detection. API customers benefit from intelligence generated organically by real users — without lifting a finger.&lt;/p&gt;




&lt;h2&gt;
  
  
  Beyond the API — The full ecosystem
&lt;/h2&gt;

&lt;p&gt;mediaAPI is one piece. The same platform offers three more products for different use cases:&lt;/p&gt;

&lt;h3&gt;
  
  
  Turing AI — Embeddable AI assistant
&lt;/h3&gt;

&lt;p&gt;Drop an intelligent chatbot into any website with one script tag. It connects to your actual data (CRM, invoices, inventory) and answers questions with real numbers — not generic AI responses.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;script &lt;/span&gt;&lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;"https://mediavox.co/mvai/mediavox-turing.js?v=2.5"&lt;/span&gt; 
        &lt;span class="na"&gt;data-key=&lt;/span&gt;&lt;span class="s"&gt;"your-key"&lt;/span&gt; &lt;span class="na"&gt;data-theme=&lt;/span&gt;&lt;span class="s"&gt;"light"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Features: RAG with your own content, function calling against your database, multi-tenant (one setup, many clients), feedback loop that improves over time. Supports Spanish natively.&lt;/p&gt;

&lt;p&gt;Use case: Your customer asks "When is my next payment due?" → Turing queries your billing system and answers with the actual date and amount.&lt;/p&gt;

&lt;h3&gt;
  
  
  DocumentPower — Document intelligence
&lt;/h3&gt;

&lt;p&gt;Upload contracts, invoices, IDs, or any document. The system extracts structured entities (amounts, dates, tax IDs, names, companies) using NER, then indexes everything for semantic search.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Upload and extract entities&lt;/span&gt;
curl &lt;span class="nt"&gt;-X&lt;/span&gt; POST https://mediavox.co/mvai/api/v1/documents/upload &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"X-Turing-Key: your-key"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-F&lt;/span&gt; &lt;span class="s2"&gt;"file=@contract.pdf"&lt;/span&gt;

&lt;span class="c"&gt;# Search across all your documents&lt;/span&gt;
curl &lt;span class="s2"&gt;"https://mediavox.co/mvai/api/v1/documents/search?query=penalty+clause"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Use case: A compliance team uploads 500 supplier contracts. Later, they search "penalty clauses above $10K" and get instant results with page citations.&lt;/p&gt;

&lt;h3&gt;
  
  
  Sales Copilot — AI for field sales via WhatsApp
&lt;/h3&gt;

&lt;p&gt;A sales rep sends a WhatsApp voice note or text: "Send 5 boxes of motor oil to Store #47". The AI identifies the product, the client, checks inventory and pricing, and creates the order — no app needed.&lt;/p&gt;

&lt;p&gt;Built for LATAM distribution (TAT/retail channel). Handles Spanish product synonyms, voice transcription, and integrates with existing ERP inventory.&lt;/p&gt;

&lt;p&gt;Use case: 900 sales reps × 30 daily store visits = 27,000 orders/month processed by AI, zero manual data entry.&lt;/p&gt;




&lt;h2&gt;
  
  
  n8n integration
&lt;/h2&gt;

&lt;p&gt;If you use n8n, there's a community node:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install &lt;/span&gt;n8n-nodes-mediavox
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;48+ operations across all products. Drop it into any workflow — validate data before loading to your CRM, screen suppliers against sanctions lists, detect fraud in incoming messages. No code required.&lt;/p&gt;




&lt;h2&gt;
  
  
  Pricing
&lt;/h2&gt;

&lt;p&gt;Free tier available (no credit card required). Paid plans for higher volume. Check the developer portal for current pricing.&lt;/p&gt;




&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Register at the developer portal (10 seconds, no credit card)&lt;/li&gt;
&lt;li&gt;Get your API key&lt;/li&gt;
&lt;li&gt;Start calling endpoints&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The interactive playground lets you test every endpoint with your own data before writing a single line of code.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>security</category>
      <category>webdev</category>
      <category>latam</category>
    </item>
  </channel>
</rss>
