Bops
A team of AI bots that runs your business ops: inbox, pipeline, invoices, reports. Each one has its own computer, email and phone number, and remembers everything.
翻訳待ち
リポジトリ情報はまだ収集していません。
No updates detected yet. GitHub releases will appear here.
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗Mi resolución del desafío técnico de Paperclip.
Desarrollé esta solución con Claude Code, que usé como herramienta para el código, la plataforma y la documentación, y que además ejecuta a los agentes de OpFarma. Estuvieron a mi cargo la definición del problema, las decisiones de diseño y toda la operación con sistemas reales. Di de alta y configuré la cuenta de WhatsApp Business de OpFarma cuando Meta bloqueó la primera, cargué las credenciales, aprobé cada tarjeta en Paperclip, ejecuté el circuito completo en macOS y en Windows, recibí las ofertas en un celular real y verifiqué los servidores en producción.
OpFarma es una distribuidora de insumos médicos armada como compañía de agentes. Los agentes detectan los lotes que se van a vencer en el depósito, buscan qué cliente puede consumir cada uno antes de la fecha según lo que realmente compra, y le mandan la oferta por WhatsApp. El lote que ninguna cuenta absorbe se ofrece a clínicas nuevas con un posteo en LinkedIn, y ese posteo queda listo para que Grok Bot lo publique. Una persona aprueba el margen, cada mensaje y cada posteo.
Cubre las tres vías del desafío. B2 (WhatsApp) con envío real, B3 (LinkedIn) con un dry-run del pedido exacto, y B1 (Grokbot) con el traspaso listo en la tarea.
/api/mcp/inventory y /api/mcp/whatsapp, protegidos con clave.scripts/export-evidence.mjs y
sin datos personales.research/RESEARCH.md.
La versión extendida está en research/PAPERCLIP.md.DECISIONS.md. El detalle
técnico de cada obstáculo está en docs/BITACORA.md.VERIFICATION.md.research/CANALES.md.docs/LINKEDIN.md.research/EXPIRY.md.docs/PRODUCCION.md.El enunciado deja libre el objetivo de la compañía. No quería una demo en la que el agente manda un WhatsApp que una persona podría mandar igual. Busqué una tarea que a mano no se llega a hacer.
En un distribuidor de insumos médicos, un lote que vence en depósito no reduce el
margen. Se pierde el 100% del costo. Saber qué se vence es fácil, porque
cualquier sistema lo avisa. Lo difícil es saber a quién vendérselo antes de la
fecha, y eso exige cruzar cada lote con la rotación de cada cuenta. Con cientos
de cuentas, esa tarea simplemente no se hace. El software del rubro avisa pero
no coloca; los proyectos de redistribución la resuelven dentro de una red
hospitalaria, y los marketplaces de excedentes publican el stock y esperan a un
comprador. No encontré herramientas que, del lado del distribuidor, busquen
activamente al cliente que va a consumir cada lote a tiempo. Las auditorías,
normas, estudios y entrevistas que respaldan el problema están en
research/EXPIRY.md.
Paperclip (el molde) platform/ (las manos, en Vercel)
┌───────────────────────────┐ ┌──────────────────────────────┐
│ OpFarma │ │ /api/mcp/inventory │
│ │ MCP │ escanear, colocar, ofertar│
│ MarginReviewer (qa) │◀──────────▶│ margen: aprobación humana │
│ ▲ │ │ /api/mcp/whatsapp │
│ │ reportan │ │ envío: aprobación humana │
│ StockScout (general) │ │ /api/mcp/social │
│ GrowthScout (cmo) │ │ │
│ │ │ posteo: aprobación humana │
│ detectar │ └──────────────────────────────┘
│ ofertar ◀── revisor │ │ │
│ aprobar y enviar │ ▼ ▼
│ postear en LinkedIn │ WhatsApp Cloud API LinkedIn (dry-run)
│ traspaso a Grok Bot ─────┼──MCP──▶ mcp.grokbot.dev ──▶ una persona lo pega en Grok
└───────────────────────────┘
Separé las "manos" a propósito. El servidor de inventario no puede contactar a nadie; el de WhatsApp y el de redes son los únicos que salen hacia afuera. Son riesgos distintos, así que tienen conexiones y políticas distintas. Grokbot es de terceros y de sólo lectura, así que entra sin clave y sin permisos especiales.
This is the beginning of the README. Read the rest at the original. Read the full README ↗