fedorthinks
Все проекты
В проде2026

Tovayo — бесплатный ИИ-ресепшн для малого бизнеса

Open-source ИИ-ресепшионист для малого сервисного бизнеса, который живёт в мессенджерах — салоны, репетиторы, коучи, астрологи. Он отвечает клиентам, записывает и переносит реальные записи, собирает нужные для брони данные и шлёт напоминания — 24/7, на языке клиента — через Telegram-бота, которого владелец подключает, вставив один токен. Мультиарендный, model-agnostic, гексагональный бэкенд на Python/FastAPI + дашборд на Next.js, транспорт webhook-primary / polling-fallback, чувствительные действия под Airlock. Бесплатно: свой хостинг или наш — на tovayo.com.

ОткрытьОткрыть код
Роль
Соло — дизайн, реализация, тесты
Стек
Python · FastAPI · PostgreSQL · Next.js · Telegram Bot API · OpenRouter · Hexagonal architecture · Docker · Railway
Период
2026

Развернуть у себя одной командой — или пользоваться готовым бесплатно на tovayo.com:

docker compose up

Проблема в одном предложении

Огромное число малых бизнесов живёт целиком в мессенджерах — салон, репетитор, коуч, астролог — и теряет записи по одной скучной причине: не успевает быстро ответить.

Клиент пишет «можно завтра во второй половине дня?» в 23:00. Пока владелец это увидит — клиент уже записался к другому. Владелец занят настоящим делом — стрижёт, учит, читает карты, — а не сидит в переписке. Живой ресепшионист стоит дороже, чем приносит бизнес; существующие CRM громоздкие и хотят ежемесячный счёт за софт, который владелец ни разу не открывает.

Что делает Tovayo

Tovayo — это ИИ-ресепшионист, который живёт в канале, которым клиент уже пользуется: Telegram-бот, которого владелец подключает, вставив один токен. Дальше он:

  • Отвечает из собственных услуг, цен, часов и FAQ бизнеса — ничего не выдумывает.
  • Записывает, переносит и отменяет реальные записи, с защитой от двойного бронирования на уровне БД, а не «на честном слове» в промпте.
  • Собирает нужное для брони перед подтверждением — дату и место рождения для астролога, цель для коуча — настраивается под каждую услугу.
  • Шлёт напоминания перед записью, чтобы неявки прекратились.
  • Уступает по команде. Владелец может зайти в любой диалог и отвечать сам; ИИ замолкает, пока тот не вернёт управление.
  • Говорит на четырёх языках из коробки (английский, испанский, русский, китайский), на языке клиента.

Два способа запустить, оба бесплатны: берёте открытый код и разворачиваете где угодно — в том числе коммерчески — или пользуетесь хостингом на tovayo.com, бесплатно и без лимитов.

Где здесь инженерия

Интересное — не чат, а всё вокруг него, что делает чат тем, чему можно доверять.

Настоящие записи, а не симуляция календаря. Доступность считается из часов работы услуги, lead time и буферов; сама запись защищена exclusion-constraint в Postgres, так что два клиента, гонящиеся за одним слотом на 14:00, не могут оба победить. Ассистент предлагает время, вызывая инструмент find_availability, и бронирует через book — он не выдумывает слот.

Модель можно перехватить, поэтому «денежные» действия — под гейтом. Tovayo дог-фудит Airlock: отмены, переносы и всё чувствительное ставятся на паузу до подтверждения владельцем в дашборде. Перехваченная инъекцией или просто ошибшаяся модель может предложить отмену, но не выполнить её сама.

Мультиарендность и model-agnostic. Один деплой обслуживает много бизнесов, у каждого свой бот, расписание, промпт и (по желанию) свой ключ к LLM. Модель достаётся через OpenRouter-адаптер за протоколом LlmProvider — меняется в конфиге, без кода.

Транспорт, который выживает в реальности. Telegram доставляет апдейты двумя способами. Tovayo предпочитает webhooks (пуш в публичный API) и per-bot откатывается на polling — тот же флаг webhook_set разделяет их, так что бот, чей вебхук не зарегистрировался, всё равно обслуживается поллером и никогда — обоими сразу. Webhooks требуют домена; polling не требует ничего, поэтому работает и сразу после docker compose up на ноутбуке.

Сделано по тому же стандарту, что и всё здесь. Гексагональная архитектура с границами под import-linter, зависимости через протоколы с in-memory-фейками (а не моками), Pydantic и Zod на краях, чистые mypy --strict и tsc, гейт на покрытие. Бэкенд на FastAPI; дашборд владельца на Next.js (en/es/ru/zh); вход по email или Google OAuth; деплой на Railway как API + воркер + Telegram-поллер + Postgres.

Почему бесплатно и открыто

Ресепшионист не должен быть подпиской, которую бизнес-одиночка не может себе позволить. Код открыт, чтобы любой мог развернуть, прочитать и довериться; хостинг бесплатный, чтобы те, кому это нужнее всех — кто не хочет трогать сервер, — получили это всё равно. Диалоги хранятся, чтобы у ассистента был контекст, и владелец может удалить аккаунт и все следы своих данных в любой момент, безвозвратно. Честность здесь — суть.