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

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

- **Author:** Фёдор Чищин
- **Role:** Соло — дизайн, реализация, тесты
- **Period:** 2026
- **Stack:** Python · FastAPI · PostgreSQL · Next.js · Telegram Bot API · OpenRouter · Hexagonal architecture · Docker · Railway
- **Source:** https://fedorthinks.com/ru/work/tovayo

---

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

<Command>docker compose up</Command>

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

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

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

## Что делает Tovayo

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

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

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

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

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

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

**Модель можно перехватить, поэтому «денежные» действия — под гейтом.** Tovayo дог-фудит
[Airlock](/work/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.

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

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