HOJA DE DATOSVENTICINQUE, MAUROFrontend · Full-Stack

Rev. 2026.08reemplaza a 2025.11

English

Copiado

A-05

Madernoa

Materiales para arquitectura y construcción del NOA. Landing en Astro, bot de WhatsApp y un servidor MCP que le da el catálogo al bot.

Especificación
ClienteMadernoa · Tucumán
Tipofreelance
PlataformaAstro · Cloudflare
Año2026
RolFull-stack, end to end
StackAstro 5 · CSS nativo (oklch) · Cloudflare Workers · Supabase Postgres · Hyperdrive · pg_trgm · Zod
Commits landing32 commits
Commits MCP46 commits

Ver en vivo →

Captura de la interfaz de Madernoa, en madernoa.com
FIG A-05madernoa.com1440×9002026-08-18

Contexto

Madernoa vende materiales de construcción en el norte argentino. Necesitaba dos cosas que suelen tratarse por separado: presencia web propia y un bot de WhatsApp que sepa responder por precio y stock sin que alguien copie y pegue de una planilla.

Opciones

Para el bot, lo habitual es cargarle un PDF del catálogo o pegarle el listado en el prompt. Funciona el primer día y envejece mal: el precio cambia y el bot sigue afirmando el viejo, con la misma seguridad.

Decisión

Separar la landing del dato. La landing es Astro 5 con CSS nativo y oklch, sin framework de estilos: es una landing, no necesita 40 KB de utilidades.

El catálogo va aparte, en Postgres sobre Supabase, y se expone al bot como un servidor MCP corriendo en un Cloudflare Worker. El bot no tiene el catálogo adentro: lo consulta. Cuando cambia un precio en la planilla, el bot responde el precio nuevo sin que nadie toque el bot.

Dos detalles de base de datos que hacen la diferencia en búsqueda en español: unaccent para que «cemento» encuentre «Cemento», y pg_trgm para que un nombre mal escrito igual encuentre el producto. Entre el Worker y Postgres va Hyperdrive, porque abrir una conexión nueva por consulta desde el edge es caro.

Verificación

madernoa.com responde 200. La ingesta es un script de Node que lee el Excel del cliente y lo normaliza; los tipos y los esquemas Zod son compartidos entre los paquetes del monorepo.

Consecuencias

Son tres piezas en vez de una, y hay que saber cuál falló cuando algo no responde. A cambio, el dato tiene un solo dueño y el bot no puede mentir por estar desactualizado.

← Archivo