Pipeline de decisión
Cada 10 minutos corremos un ciclo que pasa por 4 etapas. Sólo lo que supera todas se guarda como incidente.
- Recolectar. Pulimos RSS + Telegram + Reddit + ADL + Bellingcat en paralelo. ~200 fuentes RSS + ~90 subreddits + ~35 canales de Telegram + ADL + Bellingcat. 800-1500 items por ciclo, 31 idiomas de matching.
- Filtrar basura. Descartamos items con artefactos de Google Translate ("please select two distinct languages", etc.), widgets, y texto demasiado corto. Ver
lib/junk-filter.mjs. - Match de keywords. El item tiene que mencionar al menos una palabra de nuestro lexicon (ver abajo). Este es el filtro que marca items en rojo en el feed LIVE.
- Clasificar. Los items que hicieron match pasan al LLM (Groq
llama-3.3-70b-versatile) que extrae país + tipo + severidad + traducciones ES/EN. Si Groq tiene rate-limit, retry con modelo más chico (llama-3.1-8b-instant); si falla la red completa, fallback a Anthropic Claude Haiku o Google Gemini Flash; si todo cae, heurístico local.
Lexicon — 31 idiomas
El match de keywords es el filtro más visible. Un item entra al feed de antisemitismo sólo si contiene al menos una de estas raíces (case-insensitive, substring). Cubrimos:
| Idioma | Ejemplos de keywords |
|---|---|
| 🇸🇦 العربية (árabe) | معاد للسامية, يهود, المحرقة, نازي |
| 🇧🇬 Български (búlgaro) | антисемит, синагога, евреи, еврейск, холокост, нацист, свастика |
| 🇨🇿 Čeština (checo) | antisemit, antisemitismus, synagoga, žid, žido, holokaust, šoa, nacista, hákový kříž |
| 🇩🇰 Dansk (danés) | antisemit, synagoge, jøde, jøder, jødisk, holocaust, shoah, nazist, hagekors |
| 🇩🇪 Deutsch (alemán) | antisemit, synagoge, jüdisch, juden, holocaust, shoah, hakenkreuz, holocaustleugnung |
| 🇬🇷 Ελληνικά (griego) | αντισημιτ, συναγωγή, εβραί, εβραϊκ, ιουδα, ολοκαύτωμα, σοά, ναζί, σβάστικα, κιπά |
| 🇬🇧 English (inglés) | antisemit, synagogue, jewish, holocaust, shoah, nazi, swastika, yarmulke, kippah, tefillin |
| 🇪🇸 Español | antisemit, antisemita, sinagoga, judío, holocausto, shoah, nazi, neonazi, esvástica, kipá, daia, amia |
| 🇪🇪 Eesti (estonio) | antisemit, sünagoog, juut, juudi, holokaust, natsi, haakrist |
| 🇫🇷 Français | antisémit, synagogue, juif, juive, holocauste, shoah, svastika, croix gammée, kippa, crif |
| 🇮🇱 עברית (hebreo) | אנטישמי, יהוד, בית כנסת, שואה, נאצי, כיפה |
| 🇭🇷 Hrvatski (croata) | antisemit, sinagoga, židov, židovsk, holokaust, nacist, kukasti križ |
| 🇮🇸 Íslenska (islandés) | andgyðing, gyðingahat, samkunduhús, gyðing, helför, nasist, hakakross |
| 🇮🇹 Italiano | antisemit, sinagoga, ebreo, ebrei, olocausto, shoah, svastica, croce uncinata |
| 🇱🇻 Latviešu (letón) | antisemīt, sinagoga, ebrej, holokaust, nacist, kāškrust |
| 🇲🇰 Македонски (macedonio) | антисемит, синагога, евреин, еврејск, холокауст, нацист, свастика |
| 🇭🇺 Magyar (húngaro) | antiszemit, zsinagóga, zsidó, holokauszt, náci, horogkereszt |
| 🇳🇱 Nederlands | antisemit, synagoge, joods, jodendom, holocaust, hakenkruis, keppeltje |
| 🇳🇴 Norsk (noruego) | antisemitt, synagoge, jøde, jøder, jødisk, holocaust, nazist, hakekors |
| 🇵🇱 Polski (polaco) | antysemit, synagoga, żyd, żydow, żydowsk, holokaust, swastyka, jarmułka |
| 🇵🇹 Português | antissemit, sinagoga, judeu, holocausto, suástica, quipá |
| 🇷🇴 Română (rumano) | antisemit, sinagog, evreu, evrei, evreic, holocaust, nazist, svastică |
| 🇷🇺 Русский (ruso) | антисемит, синагог, еврей, иудей, холокост, нацис, свастик |
| 🇷🇸 Српски / Srpski (serbio) | антисемит, синагога, јеврејин, холокауст / antisemit, jevrej, holokaust, nacist |
| 🇸🇰 Slovenčina (eslovaco) | antisemit, synagóga, žid, žido, holokaust, šoa, nacista, hákový kríž |
| 🇸🇮 Slovenščina (esloveno) | antisemit, antisemitizem, sinagoga, žid, judov, holokavst, šoa, nacist, kljukasti križ |
| 🇦🇱 Shqip (albanés) | antisemit, antisemitizm, sinagogë, hebre, hebrenj, hebraik, holokaust, nazist, svastikë |
| 🇫🇮 Suomi (finlandés) | antisemitismi, synagoga, juutalais, holokaust, natsi, uusnatsi, hakaristi |
| 🇸🇪 Svenska (sueco) | antisemit, synagoga, jude, judar, judisk, förintelsen, shoah, nazist, nynazist, hakkors, kippa |
| 🇹🇷 Türkçe (turco) | antisemit, antisemitik, sinagog, yahudi, yahudiler, holokost, şoa, nazi, gamalı haç |
| 🇺🇦 Українська (ucraniano) | антисеміт, синагог, єврей, голокост, нацис, свастик |
El lexicon completo está en lib/language.mjs. Si ves un match que creés que es falso positivo o falta una palabra, escribinos y lo revisamos.
Qué NO es antisemitismo (según el pipeline)
Un item con keyword match no es automáticamente un incidente. Lo que se guarda como incidente tiene que cumplir tres condiciones adicionales:
- Describir algo concreto. El LLM rechaza 16 descripciones genéricas tipo "discurso de odio antisemita en redes sociales", "vandalismo antisemita", "amenaza a comunidad judía" — son plantillas vacías. Tiene que haber lugar + actor + acción.
- Mínimo 25 caracteres de descripción. Cortar debajo descarta tags, metadatos, fragmentos.
- La descripción debe volver a mencionar una keyword. Si el LLM parafrasea y pierde el ángulo antisemita, se descarta: significa que la clasificación se desvió del tema.
Además, el Monitor NO cataloga como antisemitismo:
- Contenido satírico, artístico o editorial que no describa un hecho concreto.
- Crítica a políticas del Estado de Israel per se (distinguido de ataques a judíos o instituciones judías — línea IHRA).
- Declaraciones del propio Estado de Israel (los prompts del LLM lo descartan por no ser incidente).
- Noticias donde "Israel" aparece como tema colateral sin contexto de agresión, legislación, discurso o ataque a judíos.
Clasificación con IA
Los items que pasan el keyword match se mandan al LLM con este prompt (resumen):
Sos un analista de antisemitismo GLOBAL. Identificá INCIDENTES CONCRETOS
— ataques a sinagogas / cementerios judíos, agresiones físicas, vandalismo
nazi, discurso de odio de figuras públicas, legislación discriminatoria,
boicots, negacionismo del Holocausto, amenazas a comunidades judías.
Para cada uno:
country → código ISO-3166 alfa-2
type → attack | vandalism | hate_speech | legislation | boycott |
denial | threat
severity → low | medium | high | critical
description_es / description_en → traducciones mutuas del MISMO hecho
concreto, con lugar + actor + acción
original_language → idioma fuente
sourceIdx → número [N] de la noticia fuente
Modelo principal: llama-3.3-70b-versatile en Groq, temperature: 0.15, response_format: json_object, max 80 noticias por call.
Cadena de fallback
El clasificador tiene varias capas de recuperación cuando algo falla, en este orden:
- Rate limit en Groq (HTTP 429): backoff de 20s y retry con modelo más chico
llama-3.1-8b-instant(vive en otro bucket de rate-limit), batch reducido a 40. - Falla de red en Groq (DNS, fetch failed): si hay
ANTHROPIC_API_KEYseteado, retry con Claude Haiku 4.5; si no, con Gemini Flash 2.0 (free tier). Mantienen JSON mode y misma forma de output. - Todos los proveedores caídos: heurístico local que asigna
type: "hate_speech",severity: "low", detecta país por aliases (lib/country-aliases.mjs) o cae aZZ(global), y no traduce — guarda el texto fuente tal cual en ambos campos ES/EN. El siguiente ciclo con LLM disponible puede re-clasificar desderaw_text.
Corroboración entre fuentes
Cuando el mismo hecho aparece en más de un medio independiente, lo marcamos como verificado. Esto se ve en el dashboard como el toggle "solo verificados" de los filtros, y en el RSS feed por defecto solo entran verificados.
El cómputo es simple:
- Cada incidente tiene un campo
source_countcon el número de fuentes que lo reportaron. Se incrementa cada vez que el dedup colapsa otro item al mismo hash. source_count >= 2⇒ verificado (✓).credibility_scorees un peso adicional que combina cantidad de fuentes y calidad (un reporte de ADL o Bellingcat pesa más que un Telegram aleatorio). Vive enlib/source-credibility.mjs.
Verificación NO significa "verdad confirmada por nosotros" — significa que el hecho fue reportado por al menos dos medios distintos que monitoreamos. Para uso académico o legal, vale lo mismo: contrastá contra las fuentes primarias.
Cómo se calcula el índice continental
El índice Antisemitismo por continente · 30 días que ves arriba del feed es un score absoluto: cada continente tiene su propio número que sube y baja independientemente de los otros. Antes el índice era relativo (max-normalizado a 0-100), pero eso fijaba al continente más activo en 100 cada día y daba la falsa impresión de "techo permanente". Ahora cada continente vive en una banda categórica fija.
Fórmula
score(continente) = Σ [ peso_severidad(inc) × frescura(inc) ]
donde
peso_severidad = { low: 1, medium: 2, high: 4, critical: 8 }
frescura(inc) = max(0, 1 - días_de_antigüedad / 30) // decay lineal
(redondeado a 1 decimal)
Bandas (thresholds fijos)
| Banda | Score (raw) | Significado típico |
|---|---|---|
| Calmo | 0 – 0.5 | sin actividad detectada o caso muy aislado |
| Bajo | 0.5 – 5 | 1-5 incidentes leves o 1-2 medios en el mes |
| Moderado | 5 – 20 | volumen sostenido medio o algunos incidentes high |
| Elevado | 20 – 50 | varios incidentes high, actividad recurrente |
| Crítico | 50+ | multitud de incidentes graves recientes |
Ejemplo
Si MENA acumula 10 incidentes high dentro de la última semana, su contribución es 10 × 4 × ~0.8 = 32 → banda Elevado. Si LATAM tiene 2 incidentes low de hace 25 días, contribuyen 2 × 1 × ~0.16 = 0.32 → banda Calmo. Los dos números viven independientemente; LATAM no se ve "más bajo" por culpa de MENA.
La barra visual del dashboard está caped a 50 (un score de 50 llena la barra). Arriba de 50 la barra se queda llena pero el número absoluto sigue creciendo en la etiqueta. Esto evita que un continente outlier comprima visualmente el resto.
Bucketeo por continente
Código ISO-3166 alfa-2 entre paréntesis. Continentes y países ordenados alfabéticamente.
- África Subsahariana (16): Angola (AO), Camerún (CM), Costa de Marfil (CI), Etiopía (ET), Ghana (GH), Kenia (KE), Mozambique (MZ), Nigeria (NG), RDC (CD), Ruanda (RW), Senegal (SN), Sudáfrica (ZA), Tanzania (TZ), Uganda (UG), Zambia (ZM), Zimbabue (ZW).
- Asia (22): Afganistán (AF), Bangladesh (BD), Camboya (KH), China (CN), Corea del Sur (KR), Filipinas (PH), Hong Kong (HK), India (IN), Indonesia (ID), Japón (JP), Kazajistán (KZ), Malasia (MY), Mongolia (MN), Myanmar (MM), Nepal (NP), Pakistán (PK), Singapur (SG), Sri Lanka (LK), Tailandia (TH), Taiwán (TW), Uzbekistán (UZ), Vietnam (VN).
- Europa (41): Albania (AL), Alemania (DE), Austria (AT), Bélgica (BE), Bielorrusia (BY), Bosnia (BA), Bulgaria (BG), Chequia (CZ), Chipre (CY), Croacia (HR), Dinamarca (DK), Eslovaquia (SK), Eslovenia (SI), España (ES), Estonia (EE), Finlandia (FI), Francia (FR), Grecia (GR), Hungría (HU), Irlanda (IE), Islandia (IS), Italia (IT), Kosovo (XK), Letonia (LV), Lituania (LT), Luxemburgo (LU), Macedonia del Norte (MK), Malta (MT), Moldavia (MD), Montenegro (ME), Noruega (NO), Países Bajos (NL), Polonia (PL), Portugal (PT), Reino Unido (UK), Rumania (RO), Rusia (RU), Serbia (RS), Suecia (SE), Suiza (CH), Ucrania (UA).
- LATAM (20): Argentina (AR), Bolivia (BO), Brasil (BR), Chile (CL), Colombia (CO), Costa Rica (CR), Cuba (CU), Ecuador (EC), El Salvador (SV), Guatemala (GT), Haití (HT), Honduras (HN), México (MX), Nicaragua (NI), Panamá (PA), Paraguay (PY), Perú (PE), Rep. Dominicana (DO), Uruguay (UY), Venezuela (VE).
- MENA (21): Arabia Saudita (SA), Argelia (DZ), Baréin (BH), Egipto (EG), Emiratos (AE), Irak (IQ), Irán (IR), Israel (IL), Jordania (JO), Kuwait (KW), Líbano (LB), Libia (LY), Marruecos (MA), Omán (OM), Palestina (PS), Qatar (QA), Siria (SY), Sudán (SD), Turquía (TR), Túnez (TN), Yemen (YE).
- Norteamérica (2): Canadá (CA), EEUU (US).
- Oceanía (2): Australia (AU), Nueva Zelanda (NZ).
Incidentes sin país detectable (ZZ) aparecen en el timeline pero no entran al índice continental — no tienen continente al cual sumar.
Qué NO es el índice
- No es un ranking absoluto de "dónde viven más judíos en riesgo". Un continente con menos cobertura mediática tendrá score bajo aunque la realidad sea peor.
- No mide percepción ni opinión pública. Sólo incidentes clasificados por el pipeline — ver sección anterior.
- No suma años: la ventana de 30 días limita el horizonte temporal, y el decay hace que un incidente de hace 29 días casi no cuente. Para análisis histórico, usar
/api/incidents?since=…directo. - No es per-cápita. ADL/CST publican estadísticas normalizadas por población judía; nosotros no lo hacemos por ahora porque las estimaciones poblacionales varían. Acá el score es volumen ponderado puro.
Fuentes monitoreadas
Cada incidente que guardamos tiene un campo source_url clickable. Fuentes ordenadas alfabéticamente:
- ADL — feed directo de la Anti-Defamation League.
- Bellingcat — investigaciones OSINT sobre extremismo.
- Newswires RSS — ~200 medios en 31 idiomas. Regiones y medios en orden alfabético:
- África: allAfrica (general + Ethiopia + Ghana + Kenya + Nigeria), BBC Afrique (francófona), Daily Maverick, Mail & Guardian, South African Jewish Report, Standard Media (KE), The Citizen (SA), The Namibian, This Day (NG).
- Asia-Pacífico: ABC Australia, Australian Jewish News, Bangkok Post, Channel News Asia, Dawn (Pakistán), Geo News, Global Times, Japan Times, Korea Herald, Korea Times, NDTV, Nikkei Asia, RNZ, SBS, SCMP, SMH, Straits Times, The Conversation AU, The Daily Star (Bangladesh), The Hindu, Times of India, TOI World, Xinhua, Yonhap.
- Balcanes: Balkan Insight, Danas (RS), Delo (SI), ERT News, Greek Reporter, Index.hr, Koha (Kosovo), N1 Serbia, Naftemporiki, Neos Kosmos (diáspora), Politika (RS), RTV Slovenia, Telegrafi, To Vima, tportal (HR), Vijesti (ME).
- Bálticos: 15min Lituania, Baltic Times, ERR Estonia, LSM Latvia (EN+LV), Postimees (ET).
- Europa central: ABC España, ANSA, BBC World, Corriere, Corriere Esteri, Der Standard (AT), DW, Economist, El Mundo, Euronews (EN+ES), France Info, FT, Gazeta Wyborcza, Guardian, Le Monde, Libération, Meduza, NOS (NL), Notes from Poland, NV Ukraine (EN), OKO.press, Politico EU, Repubblica, Spiegel, Tagesschau, The Independent, TVN24, Ukrainska Pravda, Zeit.
- Europa del Este / CEE: České noviny, Deník N (CS), Denník N (SK), Digi24 (RO), HotNews, Hungary Today, iDNES, Meta.mk, Republika (MK), Seznam Zprávy, Sofia Globe (BG), Telex (HU), Ziarul de Gardă (MD).
- LATAM: 14ymedio, Aristegui, Ámbito, BBC Mundo, Chequeado, Clarín, Cronista, El Comercio PE, El Deber BO, El Mundo SV, El País (España), El País UY, El Tiempo CO, Emol, Enlace Judío MX, Estadão, Folha, France 24 (ES), InSight Crime, Jornada Mundo, La Jornada, La Nación AR, La Prensa PA, La Tercera, Los Tiempos, Página Siete, Perfil, Prensa Libre GT.
- MENA: Al Jazeera (EN+AR), Al-Monitor, Anadolu Agency (Turquía), Arab News, Asharq Al-Awsat, Daily Sabah, Egypt Independent, Egyptian Streets, Fanack, Hürriyet, Hürriyet Daily News, Mehr News, Middle East Eye, Middle East Monitor, Morocco World News, Tehran Times, The Arab Weekly, The National UAE.
- Nórdicos: Aftonbladet, Dagens Nyheter, DR (DK), Helsingin Sanomat, NRK (NO), RÚV (IS), SVT, Yle Finland (EN).
- Norteamérica: ABC News, CBC, Fox News, Newsweek, NYT, WSJ.
- Prensa judía / monitores antisemitismo: ADL, ADL Antisemitism Uncovered, AJC, Algemeiner, Amadeu Antonio Stiftung (DE), Arutz Sheva, Campaign Against Antisemitism (UK), Combat Antisemitism Movement, Forward, Haaretz (HE+EN), Hope Not Hate (UK), i24News, Israel Hayom, JCPA, Jerusalem Post, Jewish Chronicle UK, Jewish Journal, Jewish News UK, Jewish Press, JNS, JTA, Moment, NGO Monitor, Times of Israel, YNet.
La lista completa vive en
apis/sources/newswires.mjs. Nuevos feeds se agregan ahí y entran al próximo ciclo automáticamente. - Reddit — ~75 subreddits. Dedicados: r/antisemitism, r/Holocaust, r/HolocaustHistory, r/IsraelPalestine, r/Israel, r/Jews, r/JewsOfConscience, r/Judaism, r/jewishevents. Aggregators: r/africa, r/asia, r/EuropeanPolitics, r/europe, r/geopolitics, r/MiddleEastNews, r/news, r/politics, r/worldnews, r/worldpolitics. País/región (orden alfa): r/argentina, r/australia, r/austria, r/bangladesh, r/bosnia, r/brasil, r/bulgaria, r/Chile, r/china, r/colombia, r/croatia, r/czech, r/denmark, r/deutschland, r/egypt, r/Estonia, r/Ethiopia, r/Finland, r/france, r/germany, r/greece, r/hungary, r/iceland, r/india, r/indonesia, r/iran, r/ireland, r/italy, r/japan, r/Kenya, r/korea, r/latinamerica, r/latvia, r/lebanon, r/lithuania, r/malaysia, r/mexico, r/Netherlands, r/newzealand, r/Nigeria, r/norway, r/pakistan, r/palestine, r/peru, r/philippines, r/poland, r/polska, r/Romania, r/russia, r/serbia, r/slovakia, r/slovenia, r/southafrica, r/spain, r/sweden, r/syria, r/turkey, r/ukpolitics, r/ukraine, r/unitedkingdom, r/uruguay, r/venezuela.
- Telegram — ~35 canales públicos con preview
/s/(orden alfa): @algemeiner, @alertacolombia, @alertamundialnews, @animalpolitico, @cibercuba, @ClarinCom, @crhoy, @cronicauno, @cubanosporelmundo, @diariolibre, @elcomercioperu, @eldestapeweb, @elheraldohn, @estadao, @fastcheckcl, @folha, @g1noticias, @infobae, @jerusalem_post, @jtanews, @laprensani, @lemonde_fr, @lenouvelliste, @meduzalive, @NHK_WORLD, @OSINTdefender, @pagina12, @primiciasec, @rainews, @revistaistoe, @scmp_news, @sinembargomx, @spiegel_online, @tehran_times, @Times_of_Israel, @welt_de.
Dedup y persistencia
El dedup corre en dos capas para colapsar la misma noticia reportada por múltiples medios en una sola fila (con su source_count incrementado, ver corroboración):
- Hash exacto: cada incidente se guarda con un
sha1(country|type|description_prefix_120). Si dos clasificaciones producen hashes idénticos, mergea automáticamente. - Fuzzy second-pass: si el hash no matchea, comparamos la descripción contra los últimos 50 incidentes del mismo país y tipo en las últimas 48h. Usamos distancia de Levenshtein normalizada (
edit_distance / max_length, sobre el texto en lowercase + sin diacríticos + sin artículos). Si la similitud es ≥ 85% (ratio ≤ 0.15) los tratamos como el mismo evento. Esto captura casos donde dos medios escriben "Asalto fuera de sinagoga..." vs "Asalto fuera de una sinagoga..." — variaciones de phrasing que el hash no podría agrupar.
Para textos cortos (< 30 caracteres normalizados) el threshold se aprieta a 7.5%, porque ahí cada palabra pesa mucho — "Sinagoga atacada en Berlín" vs "...en Londres" tiene similitud alta pero son eventos distintos. El cap de 48h evita que dos eventos similares pero separados en el tiempo se mergeen erróneamente.
Storage: SQLite con WAL mode + backups automáticos diarios. La tabla incidents es append-only — no eliminamos histórico, los incidentes solo crecen en source_count y credibility_score a medida que llegan corroboraciones.
Cómo acceder a los datos
Siete maneras de consumir el Monitor según tu caso:
- Dashboard web — antisemitismo.kavnes.com. Visualización en vivo con índice continental, feed LIVE, filtros y timeline. Para navegación general.
- Archivo navegable — /archivo. Búsqueda full-text (FTS5) sobre todo el histórico, filtros por país / tipo / severidad / rango de fechas / verificados, y export CSV de los resultados. Para investigación histórica o citas puntuales.
- Digest semanal por email — Suscripción gratis con doble opt-in (desde la home). Llega los viernes 9am ART con una narrativa editorial breve, los top incidentes de la semana ranqueados por credibilidad y el índice continental actualizado. Sin spam, baja con un click.
- Feed RSS — /rss (instrucciones de suscripción) o /incidents.rss (XML directo para readers). Por defecto solo entran incidentes verificados (≥2 fuentes). Acepta filtros por query string:
?country=AR,?type=attack,?severity=high,?lang=en,?verified=0para incluir todos. - Widget embebible — /embed. Iframe ready-to-paste que muestra el índice continental en tiempo real. Pensado para periodistas / ONGs / blogs que quieren citar el índice en sus propias páginas. Se actualiza solo cada minuto, sin cookies, CSP
frame-ancestors *. - API JSON — para uso programático:
/api/incidents,/api/index/continent,/api/countries,/api/search,/api/stream. Documentación completa de endpoints con params, ejemplos curl y response shapes. Sin auth, rate-limited a uso razonable. - Track-record por fuente — /fuentes. Volumen de incidentes contribuidos por cada outlet, tasa de corroboración (qué tan seguido otras fuentes confirman), y breadth geográfica.
Los datos generados por el Monitor (clasificación, traducciones, scores) están bajo CC BY 4.0 — usalos libremente con atribución. El texto original de las noticias pertenece a sus medios.
Limitaciones honestas
- Clasificación sesgada del LLM. Los modelos tienen sesgos heredados. La clasificación de severity es especialmente ruidosa — usarla como indicador, no como verdad absoluta.
- Falsos negativos. Un ataque usando lenguaje eufemístico (ej. "sionista" sin mencionar judíos) puede no disparar el lexicon.
- Falsos positivos. El heurístico a veces clasifica como incidente un artículo analítico que menciona "antisemitismo" sin ser un hecho concreto. El validador los filtra pero no siempre.
- Sesgo de cobertura. Si un incidente no aparece en ningún medio que monitoreamos, no existe para el Monitor. Comunidades pequeñas o países con prensa censurada quedan subrepresentadas.
- Traducción imperfecta. Las descripciones en ES y EN son del LLM, no de traductor humano. Para citar en reportes, volvé siempre a la fuente original (campo
source_url). - Falsos colapsos del fuzzy dedup. El segundo-pass que mergea descripciones con similitud ≥ 85% (ver dedup) tiene tasa de error baja pero no nula. Eventos genuinamente distintos con phrasing muy parecido y mismo país+tipo en las mismas 48h pueden colapsar a una fila. Los incidentes mergeados quedan trazables vía
additional_sources, pero la descripción visible será una sola. - Métricas de fuente son volumen, no precisión. El track-record en /fuentes mide cuántos incidentes contribuye cada outlet y qué tan seguido otros confirman. NO mide accuracy real (eso requeriría ground-truth manual). Una fuente "tier 5" puede ser tan confiable como una "tier 10" en su nicho.
Cómo citar este trabajo
El Monitor Global de Antisemitismo es un recurso público y gratuito. Si lo usás en una nota, reporte, paper o publicación, por favor citá así:
Cita corta (general)
Monitor Global de Antisemitismo (2026). antisemitismo.kavnes.com [accedido: DD-MM-YYYY]
Cita de un incidente específico
Cada incidente tiene un permalink con ID estable. Citá así:
Monitor Global de Antisemitismo (2026). "Ataque a sinagoga en Villa Crespo."
antisemitismo.kavnes.com/inc/1234 [accedido: DD-MM-YYYY]
Fuente primaria: {URL original del medio}
Siempre citá también la fuente primaria (campo source_url) — el Monitor es agregador, no reportero. Nuestra clasificación es heurística/IA y puede tener errores. Para uso académico o legal, verificá contra el medio original.
Cita del índice continental
Índice Global de Antisemitismo por Continente, Monitor Global de Antisemitismo (2026). antisemitismo.kavnes.com/metodologia#indice-continental Ventana: últimos 30 días. Score absoluto ponderado, banda categórica.
Formato BibTeX
@misc{monitor_antisemitismo_2026,
title = {Monitor Global de Antisemitismo},
author = {Kavnes, LLC},
year = {2026},
url = {https://antisemitismo.kavnes.com},
note = {Accedido: DD-MM-YYYY}
}
Licencia de datos
Los metadatos que generamos (clasificación, traducción, score) se pueden usar libremente con atribución (CC BY 4.0). El texto original de las noticias pertenece a sus medios respectivos — respetá su licencia cuando reproduzcas contenido.
Contacto
Para consultas, correcciones, colaboraciones o sugerencias de fuentes nuevas:
Si ves un incidente mal clasificado o una noticia antisemita que se nos pasó, mandá el link y lo revisamos manualmente. Priorizamos respuestas que incluyan URL de la fuente primaria.