fedorthinks
Todos los trabajos
En producción2026

Tovayo — una recepción con AI gratuita para pequeños negocios

Un recepcionista con AI de código abierto para los pequeños negocios de servicios que viven en la mensajería — peluquerías, profesores particulares, coaches, astrólogos. Atiende a los clientes, agenda y reprograma citas reales, recoge lo que cada reserva necesita y envía recordatorios — 24/7, en el idioma del cliente — sobre un bot de Telegram que el dueño conecta pegando un token. Multi-tenant, model-agnostic, backend hexagonal en Python/FastAPI + panel en Next.js, transporte por webhooks con polling de respaldo, y las acciones sensibles controladas por Airlock. Gratis para autohospedar o usar alojado, gratis, en tovayo.com.

AbrirVer código
Rol
Solo — diseño, implementación, tests
Stack
Python · FastAPI · PostgreSQL · Next.js · Telegram Bot API · OpenRouter · Hexagonal architecture · Docker · Railway
Período
2026

Autohospédalo con un solo comando, o úsalo alojado gratis en tovayo.com:

docker compose up

El problema, en una frase

Un montón de pequeños negocios funcionan enteramente sobre la mensajería — una peluquería, un profesor particular, un coach, un astrólogo — y pierden reservas por una razón aburrida: no pueden responder lo bastante rápido.

Un cliente escribe «¿puedo pasar mañana por la tarde?» a las 11 de la noche. Para cuando el dueño lo ve, ya ha reservado en otro sitio. El dueño está ocupado haciendo el trabajo de verdad — cortando el pelo, dando clase, leyendo cartas — no pegado al teléfono. Un recepcionista de verdad cuesta más de lo que el negocio gana; los CRM existentes son torpes y quieren cobrar una cuota mensual por un software que el dueño nunca abre.

Qué hace Tovayo

Tovayo es un recepcionista con AI que vive en el canal que el cliente ya usa — un bot de Telegram que el dueño conecta pegando un solo token. A partir de ahí:

  • Responde desde los propios servicios, precios, horarios y FAQ del negocio — nunca se inventa nada.
  • Agenda, reprograma y cancela citas reales, con protección contra dobles reservas garantizada en la base de datos, no confiada a un prompt.
  • Recoge lo que la reserva necesita antes de confirmar — una fecha y un lugar de nacimiento para un astrólogo, un objetivo para un coach — configurado por servicio.
  • Envía recordatorios antes de cada cita para que se acaben las ausencias.
  • Se aparta cuando se lo pides. El dueño puede entrar en cualquier conversación y responder como él mismo; la AI se calla hasta que se la devuelve.
  • Habla cuatro idiomas de fábrica (inglés, español, ruso, chino), en el idioma del propio cliente.

Son dos formas de usarlo, ambas gratis: toma el código abierto y córrelo donde quieras — incluso comercialmente — o usa el servicio alojado en tovayo.com, gratis e ilimitado.

Dónde está la ingeniería

Lo interesante no es el chat; es todo lo que lo rodea y que hace que el chat sea confiable.

Reservas reales, no un calendario simulado. La disponibilidad se calcula a partir del horario de trabajo de cada servicio, su antelación y sus márgenes; la escritura real está protegida por una exclusion constraint de Postgres, así que dos clientes que pelean por el mismo hueco de las 14:00 no pueden ganar ambos. El asistente propone horarios llamando a una herramienta find_availability y reserva llamando a book — nunca se inventa un hueco.

El modelo es secuestrable, así que las acciones con forma de dinero están controladas. Tovayo usa su propia medicina con Airlock: las cancelaciones, las reprogramaciones y cualquier cosa sensible se detienen para que el dueño las apruebe en el panel antes de ejecutarse. Un modelo con inyección de prompt o equivocado puede sugerir un reembolso; no puede ejecutarlo por su cuenta.

Multi-tenant y model-agnostic. Un solo despliegue sirve a muchos negocios, cada uno con su propio bot, horario, prompt y (opcionalmente) su propia clave de LLM. Al modelo se llega a través de un adaptador estilo OpenRouter detrás de un protocolo LlmProvider — cambia el modelo en la configuración, sin tocar código.

Un transporte que sobrevive a la realidad. Telegram entrega las actualizaciones de dos maneras. Tovayo prefiere los webhooks (un push a la API pública) y cae al polling por bot — el mismo flag webhook_set los separa, así que un bot cuyo webhook no se registró sigue atendido por el poller y nunca por ambos. Los webhooks necesitan un dominio; el polling no necesita nada, así que también corre justo después de un docker compose up en un portátil.

Construido con el mismo estándar que todo lo demás aquí. Arquitectura hexagonal con los límites garantizados por import-linter, dependencias inyectadas a través de protocolos con fakes en memoria (no mocks), Pydantic y Zod en los bordes, mypy --strict y tsc limpios, y una compuerta de cobertura. El backend es FastAPI; el panel del dueño es Next.js (en/es/ru/zh); la autenticación es por email o Google OAuth; se despliega en Railway como API + worker + poller de Telegram + Postgres.

Por qué es gratis y abierto

Un recepcionista no debería ser una suscripción que un negocio de una sola persona no pueda justificar. El código está abierto para que cualquiera pueda correrlo, leerlo y confiar en él; la versión alojada es gratis para que las personas que más la necesitan — las que no quieren tocar un servidor — la tengan igual. Las conversaciones se guardan para que el asistente tenga contexto, y un dueño puede borrar su cuenta y todo rastro de sus datos en cualquier momento, de forma irreversible. La honestidad es justo el punto.