Imagiland · Sistema

Contraseña

Imagiland Digital · Sistema operativo

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.

9APIs activas
29tablas en DB
13reglas codificadas
3mercados (DE/ES/UK)
~30€/mes infra

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:

  1. Cómo los datos entran al sistema (APIs y su frecuencia real).
  2. Cómo se aterrizan en Postgres y se pueden cruzar con flexibilidad.
  3. Las 13 reglas que automatizan decisiones (con prioridades reales).
  4. Qué procesos eran manuales y ahora corren solos.
  5. El dashboard como capa de confianza y control.
  6. 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.

SP-API cada 1h

Pedidos

Cada hora se sincronizan pedidos nuevos, cambios de estado, devoluciones. Cron 0 * * * *.

Endpoint /orders/v0/orders · multimarket DE/ES/UK

SP-API cada 2h

Inventario FBA

Stock disponible, en tránsito, recibiéndose, reservado, no disponible. Doce snapshots por día.

FBA Inventory API · alertas por umbral (warning 30d / critical 7d)

SP-API cada 3h

Eventos financieros

Cargos, fees de Amazon, promociones, reembolsos. La base del cálculo de margen real.

Finances API · alimenta cogs_history y financial_events

ADS API cada 3h

Campañas, ad groups, keywords

Estado, presupuesto, bid, match type. Todo lo que cambia en una campaña, capturado ocho veces al día.

SP campaigns/adGroups/keywords · v3

ADS API 2× / día

Reports de performance

Impresiones, clicks, gasto, ventas, ACoS por campaña, keyword y placement. 4 AM y 4 PM UTC.

spCampaignPerformance · spKeywordPerformance · spPlacement

ADS API 2× / día

Search term reports

La búsqueda exacta del cliente. La materia prima de los harvests y los negativos. 5 AM y 5 PM UTC.

spSearchTermPerformance · feed del rule "Harvest Winning Search Terms"

SP-API diario

Catálogo de listings

Title, bullets, descripción, A+, backend keywords. Snapshot diario para detectar drifts y huecos SEO.

Listings Items API · 3 AM UTC

SCRAPE diario

Reviews de cliente

Cada review nuevo. Después, una vez por semana, un LLM resume sentimiento, quejas y oportunidades.

Seller Central scrape 7 AM UTC · resumen Claude semanal

ECB semanal

Tasas FX

GBP→EUR oficiales para normalizar UK al consolidar P&L multimarket. Lunes 2 AM UTC.

Frankfurter API (ECB) · sin coste

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.

SP-API

Amazon Pedidos / Inventario / Finanzas

9 endpoints distintos, cadencias 1–24h

ADS API

Campañas, keywords, search terms

Pull cada 3h + reports 2×/día

ETL

Extracción periódica · scheduler.js

Normaliza, deduplica, escribe a Postgres. Si falla, lo registra en sync_log.

POSTGRES

29 tablas · DE / ES / UK unificados

Histórico completo. Sin agregación destructiva. Pregúntale cualquier corte y responde.

CRUNCH

13 reglas · prioridades 5–70

Propone bids, presupuestos, negativos, pausas. Output: filas en automation_log.

DASHBOARD

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.

P5activa

Bid Up Exact Stars

Sube el bid +25% en keywords exactas con ACoS < 50% del target Y ≥5 órdenes en 7d.

P10activa

Bid Up Winners

Escala el bid por fórmula ×(target/actual ACoS) en ganadores con ≥3 órdenes. Cap +30%.

P20activa

Bid Down Bleeders

Corta agresivo en keywords con ACoS ≥ 2× target. Cap −20%.

P25activa

Moderate Bid Down Underperformers

Recorta suave (1–2× target ACoS). Cap −10%, da espacio a recuperar.

P30activa

Pause Dead Weight Keywords

Pausa keywords con 20+ clicks y cero órdenes en 30d. Stop al gasto inútil.

P35apagada

Pause Low Impression Keywords

Pausa keywords con <50 impresiones en 60d. Off por ahora — falta calibrar umbral.

P40activa

Harvest Winning Search Terms

Promociona search terms con ≥3 órdenes de Auto/Broad a Exact. Y deja la fuente negada al graduarse.

P45apagada

Harvest Broad to Phrase

Paso intermedio Broad → Phrase. Off — la promoción directa a Exact funciona mejor.

P50activa

Negate Bleeding Search Terms

Negativa diaria para términos con ≥15 clicks y €5+ gasto sin venta. La defensa de presupuesto.

P55apagada

Negate High ACoS Search Terms

Negativa para términos con ACoS ≥ 3× target aunque conviertan. Off — demasiado agresiva todavía.

P60activa

Budget Boost Top Performers

+20% presupuesto a campañas con ACoS < target y ≥€50 ventas 7d. Da gasolina a lo que escala.

P65activa

Budget Cut Bleeding Campaigns

−15% presupuesto a campañas con ACoS ≥ 2× target y ≥€20 gasto en 14d. Quita gasolina.

P70apagada

Pause Zero-Impression Campaigns

Pausa campañas con 0 impresiones en 14d teniendo budget. Off — falsos positivos en lanzamientos.

8activas hoy
5en banco de pruebas
JSONBcondiciones editables sin redeploy
Mié 8 AMventana de ejecución viva

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.

Proceso
Antes
Ahora
Ajuste de bids
Excel pivot table semanal, retoque manual en Seller Central de los keywords prioritarios
Reglas P5/P10/P20/P25 calculan bids por fórmula, cooldown 3d
Negativos
Revisión trimestral de search term reports
Negativa diaria por regla P50 cuando se cumple el umbral
Presupuestos
Revisión mensual, ajuste por intuición
P60/P65 reasignan +20% o −15% semanal según ACoS y volumen
Graduación de keywords
Lista manual trimestral, copy-paste a campañas exactas
P40 detecta ≥3 órdenes en Auto/Broad y promociona a Exact + negativa fuente
Alertas de stock
Chequear Seller Central manualmente
Inventario cada 2h, alertas por umbral (30d/7d) al Telegram bot
SEO de listings
Auditoría anual de títulos y bullets
Engine semanal cruza search terms vs listing actual, propone cambios con evidencia
P&L por SKU
Reconciliación manual de varias hojas Excel
amazon_pl_sync.py mensual: orders + fees + ads + COGS → XLSX y Markdown
Reviews
Leer manualmente en Seller Central
Scrape diario + resumen semanal Claude-Haiku (top quejas, sentimiento, acciones)

Nada 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.

PULSO ● ok

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
ERRORES ● 2 abiertos

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
IMPACTO ● última corrida Mié 8:00

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
CONTROL ● live · ●○ dry-run · ✕ off

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:

1automation_live_mode

Candado maestro. Si está en false, ningún cambio se ejecuta — solo se loggea.

2automation_dry_run

Candado global. Si está activo, la regla simula y registra en automation_log sin tocar Amazon.

3is_dry_run por regla

Cada una de las 13 reglas puede entrar en dry-run individualmente.

4automation_approvals

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.

1

Lunes – Martes

Ingesta corre normal. El dashboard refleja la semana en vivo. Si pasa algo raro, alerta.

2

Miércoles 8:00 CET

Las 13 reglas evalúan condiciones contra los últimos 7/14/30 días. Propuestas escritas en automation_log.

3

Aprobación

Las propuestas que requieren visto bueno entran en cola. Pablo aprueba/rechaza desde dashboard o Telegram.

4

Push a Amazon

push-changes.js envía bids, presupuestos, negativos a la Ads API. Confirmación queda registrada.

5

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.

Hoy

ASIN · día · marketplace

  • Ventas / Ads / Inventario por ASIN
  • Search terms y keywords trackeados
  • P&L mensual por SKU
Q3 2026

Keyword · placement · día

  • Optimización por placement (TOS / ROS / PP)
  • Atribución de orgánico vs paid
  • Dayparting (hora del día)
Q4 2026

Forecast por SKU

  • Demanda esperada por semana
  • Necesidades de reposición FBA
  • Target ACoS dinámico por margen
2027

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.

+ SKU

Coste operativo ≈ 0

Una fila nueva en products. La regla P10 ya sabe qué hacer con sus keywords desde el día 1.

+ Mercado

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.

+ Ciclo

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.

Infra

Hetzner VPS · Nginx · PM2

Servidor europeo, ~30 €/mes total. Nginx terminando TLS, PM2 supervisa los procesos Node. Backups Postgres diarios.

DB

PostgreSQL · 29 tablas · migraciones idempotentes

Schema en db/schema.sql. Migraciones numeradas 001–016. JSONB para condiciones, índices por fecha.

Backend

Node.js · Express · node-cron

API REST en /api/*. Sincs programados en scheduler.js. Errores escritos a sync_log.

Frontend

React · Tailwind · Vite

Dashboard en fullautoloop.com. KPIs en cards, filtros de fecha, comparación período sobre período.

Interfaces

Telegram Bot · CLI scripts

17 comandos read-only para mirar el sistema sin abrir el browser. CLI backfill.js para reprocessar rangos.

LLM

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.

12SKUs hoy
50+SKUs sin re-arquitectura
5mercados EU posibles
~30€/mes coste fijo