SISTEMA OPERATIVO · 2026-05-19 · CONFIDENCIAL
El sistema que opera
Imagiland por dentro.
Nueve APIs sincronizando 24/7. Veintinueve tablas en Postgres. Trece reglas ejecutándose cada semana. Un dashboard donde el humano confía, valida y mantiene control. Esto es cómo escalamos catálogo sin escalar el equipo.
TESIS
El 95% de los vendedores en Amazon opera con intuición.
Bids, presupuestos, negativos, inventario, listings, atribución, devoluciones. Veinticinco palancas por SKU. Cada semana. En tres mercados.
A escala humana, es ingobernable. Por eso la mayoría termina contratando agencias caras o quemándose. Nosotros construimos el operador.
Lo que verás en las próximas secciones:
- Cómo los datos entran al sistema (APIs y su frecuencia real).
- Cómo se aterrizan en Postgres y se pueden cruzar con flexibilidad.
- Las 13 reglas que automatizan decisiones (con prioridades reales).
- Qué procesos eran manuales y ahora corren solos.
- El dashboard como capa de confianza y control.
- Cómo cada ciclo, el sistema decide mejor.
PARTE 1 · INGESTA
Las APIs nunca paran de hablar.
Cada hora, cada dos horas, cada tres. Distintas cadencias para distintos tipos de dato. El sistema decide qué pedir cuándo, y aterriza todo en una sola base.
Pedidos
Cada hora se sincronizan pedidos nuevos, cambios de estado, devoluciones. Cron 0 * * * *.
Inventario FBA
Stock disponible, en tránsito, recibiéndose, reservado, no disponible. Doce snapshots por día.
Eventos financieros
Cargos, fees de Amazon, promociones, reembolsos. La base del cálculo de margen real.
Campañas, ad groups, keywords
Estado, presupuesto, bid, match type. Todo lo que cambia en una campaña, capturado ocho veces al día.
Reports de performance
Impresiones, clicks, gasto, ventas, ACoS por campaña, keyword y placement. 4 AM y 4 PM UTC.
Search term reports
La búsqueda exacta del cliente. La materia prima de los harvests y los negativos. 5 AM y 5 PM UTC.
Catálogo de listings
Title, bullets, descripción, A+, backend keywords. Snapshot diario para detectar drifts y huecos SEO.
Reviews de cliente
Cada review nuevo. Después, una vez por semana, un LLM resume sentimiento, quejas y oportunidades.
Tasas FX
GBP→EUR oficiales para normalizar UK al consolidar P&L multimarket. Lunes 2 AM UTC.
Todo se programa desde un solo punto: server/sync/scheduler.js. Cada job
escribe en sync_log con timestamp, número de registros, errores. Si algo falla, queda
registrado y aparece en el dashboard antes de causar un problema.
EL FLUJO COMPLETO
Cómo viaja un dato.
Desde que Amazon lo emite hasta que vuelve convertido en una decisión — validada por el humano, ejecutada por la máquina.
Amazon Pedidos / Inventario / Finanzas
9 endpoints distintos, cadencias 1–24h
Campañas, keywords, search terms
Pull cada 3h + reports 2×/día
Extracción periódica · scheduler.js
Normaliza, deduplica, escribe a Postgres. Si falla, lo registra en sync_log.
29 tablas · DE / ES / UK unificados
Histórico completo. Sin agregación destructiva. Pregúntale cualquier corte y responde.
13 reglas · prioridades 5–70
Propone bids, presupuestos, negativos, pausas. Output: filas en automation_log.
Capa de confianza y control
Cada acción pasa por aquí. Aprobar, pausar, override. Lo que se ejecuta, queda auditado.
PARTE 2 · LOS DATOS COMO ACTIVO
Una vez aterrizados, los datos son nuestros.
Amazon nos los presta a través de la API. Postgres los hace nuestros. Y porque son nuestros, podemos cortarlos como queramos.
29 tablas, 5 dominios
- Operativo · products, orders, order_items, inventory, financial_events
- Ads · 11 tablas (campaigns, keywords, search_terms, daily breakdowns)
- Automatización · rules, log, approvals
- Contenido · listings, listing_versions, listing_recommendations, review_summaries
- Sistema · settings, sync_log
Cuatro maneras de consultarlos
- Dashboard React · KPIs, filtros, rangos de fecha
- REST API ·
/api/dashboard,/api/campaigns,/api/automation/log - psql directo · cualquier query SQL ad-hoc, JSONB incluido
- Telegram bot · 17 comandos (
/topkeywords,/bleeding,/inventory_low,/p_and_l)
Diseñado para preguntar cosas raras
- JSONB en
conditions,actions,evidence— queryable con-> - Índices por fecha en todas las tablas de performance
- Historiales sin colapsar (listing_versions, cogs_history)
- Backfill por rango:
scripts/backfill.js --from --to
Ejemplos de preguntas que la BD ya sabe responder:
-- Términos de búsqueda con gasto alto y cero conversión, últimos 14 días
SELECT search_term, SUM(cost) AS spend, SUM(clicks) AS clicks
FROM ad_search_terms
WHERE date >= CURRENT_DATE - 14 AND orders_7d = 0
GROUP BY search_term ORDER BY spend DESC LIMIT 20;
-- Reglas tipo "bid_adjustment" que han tocado más entidades esta semana
SELECT r.name, COUNT(*) AS executions
FROM automation_log l JOIN automation_rules r ON r.id = l.rule_id
WHERE r.rule_type = 'bid_adjustment' AND l.created_at >= NOW() - INTERVAL '7 days'
GROUP BY r.name ORDER BY executions DESC;
-- ASINs con menos de 7 días de stock al ritmo actual de ventas
SELECT p.asin, p.title_short, i.fulfillable_quantity, p.daily_sales_30d
FROM inventory i JOIN products p USING (asin)
WHERE i.fulfillable_quantity / NULLIF(p.daily_sales_30d, 0) < 7;
PARTE 3 · LAS 13 REGLAS
La intuición operativa, codificada.
Cada regla es una pieza de doctrina PPC convertida en SQL + parámetros. Tiene prioridad, ventana de evaluación, umbrales, fórmula, y respeta cooldowns. Lo que un buen operador haría — solo que sin olvidar nada.
Bid Up Exact Stars
Sube el bid +25% en keywords exactas con ACoS < 50% del target Y ≥5 órdenes en 7d.
Bid Up Winners
Escala el bid por fórmula ×(target/actual ACoS) en ganadores con ≥3 órdenes. Cap +30%.
Bid Down Bleeders
Corta agresivo en keywords con ACoS ≥ 2× target. Cap −20%.
Moderate Bid Down Underperformers
Recorta suave (1–2× target ACoS). Cap −10%, da espacio a recuperar.
Pause Dead Weight Keywords
Pausa keywords con 20+ clicks y cero órdenes en 30d. Stop al gasto inútil.
Pause Low Impression Keywords
Pausa keywords con <50 impresiones en 60d. Off por ahora — falta calibrar umbral.
Harvest Winning Search Terms
Promociona search terms con ≥3 órdenes de Auto/Broad a Exact. Y deja la fuente negada al graduarse.
Harvest Broad to Phrase
Paso intermedio Broad → Phrase. Off — la promoción directa a Exact funciona mejor.
Negate Bleeding Search Terms
Negativa diaria para términos con ≥15 clicks y €5+ gasto sin venta. La defensa de presupuesto.
Negate High ACoS Search Terms
Negativa para términos con ACoS ≥ 3× target aunque conviertan. Off — demasiado agresiva todavía.
Budget Boost Top Performers
+20% presupuesto a campañas con ACoS < target y ≥€50 ventas 7d. Da gasolina a lo que escala.
Budget Cut Bleeding Campaigns
−15% presupuesto a campañas con ACoS ≥ 2× target y ≥€20 gasto en 14d. Quita gasolina.
Pause Zero-Impression Campaigns
Pausa campañas con 0 impresiones en 14d teniendo budget. Off — falsos positivos en lanzamientos.
PARTE 4 · AUTOMATIZADO
Lo que antes hacía un humano todas las semanas.
Cada fila de esta tabla representa varias horas/mes de trabajo manual que la máquina ahora hace en segundos. La diferencia no es solo velocidad — es consistencia, cobertura, y trazabilidad.
amazon_pl_sync.py mensual: orders + fees + ads + COGS → XLSX y MarkdownNada de esto sustituye al humano. Lo libera para hacer lo que la máquina no puede: pensar lanzamientos, hablar con fábrica, mirar el catálogo desde arriba.
PARTE 5 · LA CAPA DE CONFIANZA
El dashboard es lo único que el humano necesita mirar.
No es donde se ven los números — es donde se confía en que la máquina decide bien. Cuatro vistas, ninguna sobrante.
Estado del sistema
- Ingesta SP-API · última hace 47 min
- Ingesta Ads API · última hace 1h 12m
- Postgres · 29 tablas saludables
- Listings sync · UK retrasado 4h
Alertas y anomalías
- Chamäleon DE · CTR cae 28% sin causa
- Pintaluz ES · stock 6d (umbral crítico)
- Sin más eventos en últimas 24h
Qué hizo cada automatización
- P10 Bid Up Winners · 23 keywords +12% bid medio
- P50 Negate Bleeding · 41 términos negados (€187 ahorro/mes est.)
- P60 Budget Boost · 4 campañas +20% (Chamäleon DE, ZooLoco DE)
- P30 Pause Dead Weight · 17 keywords pausadas
Pausa, override, dry-run
- automation_live_mode ·
true - automation_dry_run ·
false - P55 Negate High ACoS · paused
- Aprobación requerida en bid changes ≥30%
Cuatro candados, ningún botón rojo grande.
Antes de que cualquier acción llegue a Amazon, pasa por:
Candado maestro. Si está en false, ningún cambio se ejecuta — solo se loggea.
Candado global. Si está activo, la regla simula y registra en automation_log sin tocar Amazon.
Cada una de las 13 reglas puede entrar en dry-run individualmente.
Reglas con requires_approval = true esperan visto bueno humano. Notificación a Telegram, expiración 48h.
PARTE 6 · EL LOOP
Cada miércoles, el sistema decide mejor.
No estamos construyendo una máquina estática. Estamos construyendo una que aprende ciclo a ciclo, con el humano calibrando los umbrales y la máquina ejecutando con consistencia.
Lunes – Martes
Ingesta corre normal. El dashboard refleja la semana en vivo. Si pasa algo raro, alerta.
Miércoles 8:00 CET
Las 13 reglas evalúan condiciones contra los últimos 7/14/30 días. Propuestas escritas en automation_log.
Aprobación
Las propuestas que requieren visto bueno entran en cola. Pablo aprueba/rechaza desde dashboard o Telegram.
Push a Amazon
push-changes.js envía bids, presupuestos, negativos a la Ads API. Confirmación queda registrada.
Medición
Reports de los próximos 7/14d miden el efecto. El número va al dashboard de "Impacto".
Aprendizaje
Si una regla está produciendo malos resultados, se ajusta el JSONB de condiciones. Sin redeploy.
PARTE 7 · DATOS CADA VEZ MÁS GRANULARES
El sistema gana resolución con cada trimestre.
No tenemos que reconstruir nada para mirar más fino. La infra ya captura datos a nivel atómico (search term, día, market). Solo queda construir las vistas que extraen valor de capas más profundas.
ASIN · día · marketplace
- Ventas / Ads / Inventario por ASIN
- Search terms y keywords trackeados
- P&L mensual por SKU
Keyword · placement · día
- Optimización por placement (TOS / ROS / PP)
- Atribución de orgánico vs paid
- Dayparting (hora del día)
Forecast por SKU
- Demanda esperada por semana
- Necesidades de reposición FBA
- Target ACoS dinámico por margen
Cross-sell · cohortes
- Compradores que vuelven (LTV por SKU de entrada)
- Baskets típicos del catálogo
- Defensa de la propia marca en Amazon
Lo importante: nada de esto requiere infra nueva. La BD ya captura los hechos. Lo que cambia es la profundidad de las preguntas que el sistema responde solo.
PARTE 8 · POR QUÉ ESCALA
Coste marginal por SKU adicional: cero.
Cada nuevo producto entra al mismo dashboard, evaluado por las mismas reglas, pasando por los mismos candados. No hay vista nueva ni regla custom por SKU.
Coste operativo ≈ 0
Una fila nueva en products. La regla P10 ya sabe qué hacer con sus keywords desde el día 1.
Misma infra, mismo dashboard
FR, IT añadirían un marketplace_id más. El scheduler ya itera por mercado. Postgres ya guarda DE/ES/UK juntos.
Cada semana decide mejor
Los umbrales y JSONB de las reglas se calibran sin redeploy. Lo que aprendemos sobre Chamäleon, lo aplicamos a Waschbär.
PARTE 9 · EL STACK
Sencillo a propósito.
Cada componente fue elegido por durabilidad y portabilidad, no por novedad. Si Hetzner desaparece mañana, esto se mueve a cualquier VPS en una tarde.
Hetzner VPS · Nginx · PM2
Servidor europeo, ~30 €/mes total. Nginx terminando TLS, PM2 supervisa los procesos Node. Backups Postgres diarios.
PostgreSQL · 29 tablas · migraciones idempotentes
Schema en db/schema.sql. Migraciones numeradas 001–016. JSONB para condiciones, índices por fecha.
Node.js · Express · node-cron
API REST en /api/*. Sincs programados en scheduler.js. Errores escritos a sync_log.
React · Tailwind · Vite
Dashboard en fullautoloop.com. KPIs en cards, filtros de fecha, comparación período sobre período.
Telegram Bot · CLI scripts
17 comandos read-only para mirar el sistema sin abrir el browser. CLI backfill.js para reprocessar rangos.
Claude (resumen de reviews + SEO)
Modelos Anthropic vía API. Tokens contados y registrados por análisis. No hay LLM en el camino crítico de decisión.
CIERRE
La pregunta para inversores no es si la tecnología funciona.
Funciona. Está corriendo en producción doce horas al día desde hace meses. La pregunta es cuánto catálogo y cuántos mercados podemos meterle encima antes de que pidan el siguiente nivel de granularidad.
Con la infra actual, cada SKU adicional cuesta cero operar. Cada mercado adicional reutiliza la misma capa. Cada ciclo, decisiones más finas con la misma gente.