Case study · Instagram DM · Mexico CityCaso de estudio · Instagram DM · CDMX

Atico Film Lab

An analog film processing lab that took every order by hand over Instagram DMs, with no system and no traceability. I built the bot, the backend and the dashboard the team uses every day.

Un laboratorio de revelado analógico que tomaba cada pedido a mano por Instagram, sin sistema y sin trazabilidad. Construí el bot, el backend y el dashboard que el equipo usa todos los días.

In production since March 2026En producción desde marzo 2026
$50K+ MXN
processed in the first two monthsprocesados en los primeros dos meses
150+
film rolls tracked through the systemrollos con seguimiento en el sistema
<5 s
average bot responserespuesta promedio del bot
25+
releases shipped (v3.25)versiones publicadas (v3.25)

The problemEl problema

A whole operation living in a DM inbox. No system, no history, no way to grow.Toda una operación viviendo en una bandeja de mensajes. Sin sistema, sin historial y sin forma de crecer.

No traceabilitySin trazabilidad

Every order lived in the team’s memory. Quoting mistakes, lost confirmations and customers left without an answer.

Cada pedido vivía en la memoria del equipo. Errores al cotizar, confirmaciones perdidas y clientes sin respuesta.

No financial visibilitySin visibilidad financiera

How much came in this week? How many rolls? Nobody knew without reading every conversation by hand.

¿Cuánto entró esta semana? ¿Cuántos rollos? Nadie lo sabía sin revisar cada conversación a mano.

Hours lost in DMsHoras perdidas en DMs

Answering the same questions, quoting by hand and confirming payments over chat, instead of developing film.

Responder las mismas preguntas, cotizar a mano y confirmar pagos por chat, en vez de revelar película.

What I builtLo que construí

Every conversation becomes a structured order that moves through the lab’s real stages, from the first question to delivery.Cada conversación se convierte en un pedido estructurado que avanza por las etapas reales del laboratorio, desde la primera pregunta hasta la entrega.

  1. Inquiry
  2. Quoting
  3. Pending confirmation
  4. Confirmed
  5. Paying
  6. In process
  7. Developing
  8. Delivered
  1. Consultando
  2. Cotizando
  3. Por confirmar
  4. Confirmado
  5. Pagando
  6. En proceso
  7. Revelando
  8. Entregado

The order states the system tracks for each order.Los estados que el sistema registra para cada pedido.

Conversational botBot conversacional

Answers on Instagram with the lab’s real catalog and prices, confirms the order and guides payment.

Responde en Instagram con el catálogo y los precios reales del laboratorio, confirma el pedido y guía el pago.

  • Generates an order ID (ORD-YYYYMM-XXXX) for each confirmed order
  • Spanish and English, detected automatically
  • Handles Instagram’s real constraints: 24-hour window, message types, retries
  • Genera un ID de pedido (ORD-YYYYMM-XXXX) por cada pedido confirmado
  • Español e inglés, con detección automática
  • Respeta las restricciones reales de Instagram: ventana de 24 h, tipos de mensaje, reintentos

Operations dashboardDashboard de operación

What the team opens every morning to run the lab.

Lo que el equipo abre cada mañana para operar el laboratorio.

  • Conversations with human takeover: pause the bot and reply by hand
  • Order board by stage and channel (Instagram, web, manual)
  • Finances by day, week, month, 3 and 6 months
  • Conversaciones con toma de control: se pausa el bot y se responde a mano
  • Tablero de pedidos por etapa y por canal (Instagram, web, manual)
  • Finanzas por día, semana, mes, 3 y 6 meses

Backend and dataBackend y datos

Node.js on Railway with Supabase/PostgreSQL as the single source of truth.

Node.js en Railway con Supabase/PostgreSQL como única fuente de verdad.

  • Webhook deduplication so no message is processed twice
  • Customers, orders, payments and receipts stored as structured records
  • Error monitoring with Sentry
  • Deduplicación de webhooks para que ningún mensaje se procese dos veces
  • Clientes, pedidos, pagos y comprobantes guardados como registros estructurados
  • Monitoreo de errores con Sentry

Search over conversationsBúsqueda en conversaciones

A retrieval pipeline (embeddings in pgvector) so the team can ask questions about past conversations in plain language.

Un pipeline de búsqueda (embeddings en pgvector) para que el equipo pregunte sobre conversaciones pasadas en lenguaje natural.

  • Example: “Which customers asked about scanning?”
  • Answers grounded in the real conversation history
  • Ejemplo: “¿Qué clientes preguntaron por escaneo?”
  • Respuestas basadas en el historial real de conversaciones

ResultsResultados

In production since March 2026. The team runs the lab from the dashboard every day: pausing orders, checking payments and reviewing finances.

Customers can now also order directly from the lab’s own web page, and those orders land in the same pipeline as Instagram.

En producción desde marzo 2026. El equipo opera el laboratorio desde el dashboard todos los días: pausa pedidos, revisa pagos y consulta sus finanzas.

Ahora los clientes también pueden ordenar directo desde la página del laboratorio, y esos pedidos entran al mismo flujo que los de Instagram.

RoleRol
Design, development and operation, end to endDiseño, desarrollo y operación, de punta a punta
Stack
Node.js, Express, OpenAI, Instagram Graph API, Supabase, PostgreSQL, pgvector, Stripe, Railway, Sentry
DataDatos
Customers, orders, payments and receipts, order status, conversationsClientes, pedidos, pagos y comprobantes, estado de pedidos, conversaciones