Gald AI Trend Tracker PRODUCT Predix → ← Back to gald.ai
6 fuentes · ciclo de 5 minutos · RD primero

Detecta el tema antes de que sea mercado.

El Trend Tracker escucha X, Reddit, YouTube, prensa y GDELT en español, agrupa lo que de verdad se está moviendo en República Dominicana y LATAM, y redacta la pregunta de mercado con su regla de resolución y su fuente oficial. Ningún mercado sale sin que una persona lo apruebe.

5 min
Ciclo de ingesta
6
Fuentes conectadas
$0.032
Costo por propuesta
Umbral «hot»
trend_score ≥ 0.70
Cola de aprobación
4 esperando revisión
trend-tracker · /v1/trends?status=hot EN VIVO
Posts / 24h
18,412
Clústeres
147
Hot
9
Propuestas
23
esperando el próximo ciclo…
El motor

De un tuit suelto a un mercado que se puede resolver.

Ocho pasos, todos automáticos menos uno: la aprobación. Cada paso corre en su propio beat de Celery, así que una fuente caída nunca detiene al resto de la cadena.

01 — INGESTA

Escuchar

Seis ingestores traen posts, videos, hilos y notas de prensa en español. Cada uno con su propia cadencia y su propio manejo de límites de API.

ingestion/*_ingestor.py
02 — LIMPIEZA

Deduplicar

SimHash con ventana de 24 horas y umbral Hamming de 6 (~93% de similitud). El retuit copiado mil veces entra una sola vez al corpus.

utils/dedup.py
03 — VECTORES

Embeber

Modelo multilingüe E5 sobre cada post, guardado en Qdrant. El español dominicano, el mexicano y el titular de prensa caen cerca cuando hablan de lo mismo.

embeddings/encoder.py
04 — CLÚSTERES

Agrupar

HDBSCAN sobre una ventana de 72 horas. Los clústeres nuevos se reconectan con los existentes por similitud de centroide, así una tendencia mantiene su identidad entre pasadas.

clustering/clusterer.py
05 — PUNTAJE

Medir

Velocidad, volumen, relevancia geográfica, dispersión entre plataformas y novedad. Los componentes que no informan nada se descartan y los pesos se renormalizan.

clustering/scorer.py
06 — CURADURÍA

Redactar

Claude lee los ocho posts más representativos y devuelve de una a tres variantes con salida estructurada: pregunta, resultados, regla de resolución, fuente y banderas de riesgo.

market_scorer/pipeline.py
07 — DEDUP

Contrastar

Cada pregunta se compara contra los mercados que ya existen en PREDIX. Por encima de 0.90 de similitud coseno se marca duplicada y no llega a la cola.

market_scorer/dedup.py
08 — ENTREGA

Aprobar y enviar

Una persona aprueba o rechaza. Lo aprobado sale por webhook firmado con HMAC-SHA256, con clave de idempotencia y hasta cinco reintentos.

webhook/sender.py
Fuentes

Una sola plataforma miente. Seis se contradicen menos.

La dispersión entre plataformas vale 15% del puntaje: un tema que solo vive en X pesa menos que uno que además aparece en prensa y en Reddit. Cada fuente corre en su propio intervalo y se apaga sola si le faltan credenciales.

X

X / Twitter

ACTIVA

Cuatro consultas en español afinadas para RD: LIDOM y béisbol, política y Congreso, deportes LATAM, y cripto y mercados.

cada 5 minAPI v2 · 100/req
R

Reddit

ACTIVA

Nueve subreddits de la región, de r/Dominican y r/SantoDomingo a r/mexico, r/argentina y r/PuertoRico.

cada 10 min25 por listado
Y

YouTube

ACTIVA

Tendencias por país en siete mercados más los canales dominicanos que marcan la conversación: Alofoke, Cachicha, Z101.

cada 1 h7 países
N

Prensa RSS

ACTIVA

Feeds de medios dominicanos y regionales. El cuerpo del artículo se extrae completo y viaja al prompt, no solo el titular.

cada 15 min30 por feed
G

GDELT

ACTIVA

Cobertura global indexada, útil cuando una historia internacional empieza a tocar la región antes de que la prensa local la levante.

cada 30 min6 h hacia atrás
T

TikTok

EN ESPERA

Ingestor escrito y probado, apagado por bandera hasta que el acceso a la API de contenido quede aprobado.

listo para 30 mintiktok_enabled=false
Puntaje en vivo

Mueve las señales y mira cómo se decide qué es tendencia.

Esta es la fórmula real del motor, no una animación. Los cinco componentes se normalizan a [0,1], se ponderan y se suman. Si un componente no puede variar en este despliegue, se descarta y su peso se reparte entre los que sí informan.

Velocidad 0.35
z = 3.8
Posts de la última hora contra la línea base de las 71 anteriores, con la desviación acotada en un post y el z-score limitado a ±5.
Volumen 0.25
523 posts
Escala logarítmica: mil posts en 24 horas equivalen a 1.0. Duplicar el ruido no duplica el puntaje.
Geografía 0.15
0.96 · RD
Inclinación, no filtro: RD 1.0, Puerto Rico 0.85, resto de LATAM 0.7, resto del mundo 0.5. Una historia global grande sigue ganándole a una local tibia.
Dispersión 0.15
0.61 · 4 fuentes
Entropía de Shannon normalizada sobre el reparto de fuentes. En 0 con una sola fuente el componente se considera degenerado y sale de la fórmula.
Novedad 0.10
14 h de vida
Decae linealmente hasta cero a las 24 horas. Lo que ya lleva dos días no es una tendencia emergente.
0.81
trend_score
HOT

Por encima de 0.70 el clúster entra en la cola del curador y Claude redacta sus variantes.

velocidad
0.305
volumen
0.227
geografía
0.144
dispersión
0.092
novedad
0.042
Propuestas

Lo que el curador entregó esta semana, sin retoques.

Seis clústeres reales del 25 de agosto de 2026. Elige uno y verás exactamente lo que Claude devolvió: la pregunta en español, la regla que la resuelve, la fuente oficial, las banderas de riesgo y el resultado del contraste contra los mercados existentes.

Límites

Lo que nunca se convierte en mercado.

El curador marca is_marketable: false y explica por qué. Estos rechazos no son un filtro posterior: son parte del contrato de salida del modelo, y quedan guardados para alimentar los ejemplos del próximo prompt.

Salud o daño a personas

Enfermedad, muerte o daño a alguien identificable. Se rechaza aunque la conversación sea enorme.

Menores de edad

Cualquier pregunta que gire alrededor de un menor, sin excepción.

Violencia política

Y todo lo que dependa de que alguien salga lastimado para resolverse.

Estereotipos y discriminación

Preguntas que apuntan a grupos protegidos o que se apoyan en un prejuicio.

Subjetivo o ambiguo

Si dos personas de buena fe pueden leer el resultado distinto, no hay mercado.

Sin fuente de resolución

Sin un box score, un boletín oficial o un precio de referencia, la propuesta no pasa.

Entrega

Aprobado por una persona. Enviado por webhook firmado.

La aprobación queda registrada aparte del estado de envío, porque son dos cosas distintas: una es la decisión humana, la otra es si el paquete llegó.

Firma HMAC-SHA256

Cada envío va firmado con un secreto compartido. El receptor de PREDIX verifica la firma antes de mirar el cuerpo.

Idempotencia real

La idempotency_key es única en base de datos. Cinco reintentos con la misma clave crean un mercado, no cinco.

Modo de ensayo

Con predix_webhook_dry_run encendido el paquete se registra completo pero no sale. Así se probó toda la cadena antes de que existiera el receptor.

La decisión sobrevive al envío

El beat de despacho mueve approved → sent en menos de 60 segundos. Por eso decision y decided_at se guardan por separado: si no, los ejemplos aprobados desaparecerían del prompt casi al instante.

Versionado desde el día uno

El campo schema_version viaja en cada paquete, así el contrato puede evolucionar sin romper receptores viejos.

POST /webhooks/market.create 200 OK · 412 ms
// X-Predix-Signature: sha256=8f2c…d41b
{
  "schema_version": "1.0",
  "event": "market.create",
  "idempotency_key": "mp_10482_a41f9c",

  "proposal": {
    "id": 10482,
    "group_id": "a41f9c2e-7b30-4d1a-9f85-2c6e0b3d5417",
    "variant_label": "binary",
    "category": "sports",
    "question": "¿Conectará Vladimir Guerrero Jr. su
                  jonrón número 50 antes del 15 de septiembre?",
    "outcome_type": "binary",
    "outcomes": ["Sí", "No"],
    "resolution_source": "MLB.com — box score oficial",
    "expiry_at": "2026-09-15T03:59:00Z",
    "initial_probability": 0.41,
    "scorer_confidence": 0.88,
    "risk_flags": [],
    "model_used": "claude-opus-5"
  },

  "trend": {
    "cluster_id": "c_7f3a91",
    "trend_score": 0.81,
    "volume": 523,
    "velocity_z": 3.8,
    "country_codes": ["DO", "PR", "US"],
    "source_counts": { "x": 412, "news": 51,
                        "reddit": 38, "youtube": 22 },
    "source_diversity": 0.61
  },

  "source_metadata": {
    "platform": "trend-tracker",
    "platform_version": "0.8"
  }
}
412
Tendencias evaluadas · 30 días
1,036
Variantes redactadas
$33.54
Gasto estimado en el modelo
88%
Tokens de entrada servidos del caché
Construido por Gald

¿Tienes datos que se mueven y nadie los está leyendo?

Este motor lo diseñamos, lo escribimos y lo operamos nosotros — de la ingesta al webhook firmado. Lo mismo aplica a cualquier flujo donde alguien está leyendo a mano lo que una máquina debería estar leyendo sola.

Hablemos de tu caso Ver Predix, la plataforma