Бот отвечает инвесторам без меня: автоматические отчёты по виллам прямо в Telegram
Каждый месяц у меня была одна и та же история. Инвесторы начинали писать. «Юрий, как дела по вилле за март?» «Какая загрузка в феврале?» «Когда будет выплата?» Семь человек, у каждого вилла или доля в нескольких. Каждый хочет знать свои цифры.
Я лезу в систему. Нахожу нужную виллу. Вытаскиваю бронирования за месяц. Считаю загрузку. Проверяю выручку. Форматирую ответ. Отправляю. Следующий. Ещё раз. И так семь раз.
Полчаса минимум. Каждый месяц. Иногда в выходной, иногда поздно вечером, потому что инвесторы живут в разных часовых поясах и пишут, когда им удобно.
31 марта 2026 года я закрыл этот вопрос раз и навсегда.
Почему это вообще было ручным
Технически данные уже были в системе. У меня с нескольких месяцев назад работал финансовый мониторинг — база данных с бронированиями, выручкой, загрузкой по каждой вилле. Информация актуальная, обновляется автоматически.
Проблема была в интерфейсе. Данные были в базе, а инвестор был в Telegram. Между ними стоял я: как переводчик между системой и человеком, который хочет просто получить ответ на свой вопрос.
Я мог бы сделать дашборд и дать каждому инвестору логин. Но это создаёт другую проблему: нужно объяснять интерфейс, поддерживать доступы, отвечать на вопросы «куда нажать». Инвестор хочет не интерфейс — он хочет ответ. Там, где он уже есть: в Telegram.
Значит, нужен бот, который понимает вопрос и сам достаёт нужные данные.
Как это работает
Архитектура получилась простой. Бот работает через Telegram API. У него есть список авторизованных пользователей — только те Telegram ID, которые есть в базе как инвесторы. Все остальные получают стандартный ответ «этот бот не для публичного использования».
Когда авторизованный пользователь пишет боту — любое сообщение про статистику, загрузку, выручку, бронирования — бот делает несколько вещей:
- Определяет Telegram ID отправителя
- Ищет его в таблице инвесторов в базе данных
- Смотрит, какие виллы за ним закреплены
- Запрашивает данные по этим виллам за нужный период
- Форматирует ответ и отправляет
Весь этот процесс занимает несколько секунд. Инвестор не ждёт, пока я открою ноутбук и полезу в базу. Бот отвечает мгновенно.
Что хранится в базе
Ключевое дизайн-решение: вся конфигурация в базе данных, не в коде. Это значит, что добавить нового инвестора или изменить привязку вилл — это одна SQL-команда, после которой всё работает сразу. Не нужно менять код, перезапускать бот или деплоить обновление.
Таблица инвесторов простая:
investors:
id, telegram_id, name, telegram_username, active
investor_villas:
investor_id, villa_id, share_percentage, notes
Когда нужно подключить нового партнёра — добавляю его Telegram ID в таблицу инвесторов, привязываю вилл через investor_villas, и через минуту он уже может писать боту и получать данные.
31 марта именно так подключил нового партнёра по вилле 061#. Добавил запись в базу. Написал ему, что теперь может писать боту напрямую. Через минуту он прислал первый вопрос и получил полный отчёт за март: 110 забронированных ночей, 32,5 миллиона рупий выручки, 40 бронирований.
Как бот понимает вопрос
Инвесторы не пишут SQL-запросы. Они пишут живым языком: «покажи март», «что по загрузке за прошлый месяц», «когда ближайшая свободная дата у виллы».
Для распознавания намерения использую Claude API. Бот передаёт сообщение в Claude с системным промптом, описывающим доступные типы запросов. Claude возвращает структурированный ответ: тип запроса (статистика за период, ближайшие бронирования, история выплат) и параметры (период, конкретная вилла если упомянута).
Это намного надёжнее, чем пытаться распарсить текст регулярными выражениями. Инвестор может написать «как апрель?» или «апрельские цифры» или «что там по апрелю» — Claude понимает все три варианта одинаково.
Если запрос непонятен или выходит за рамки того, что бот умеет, — он вежливо объясняет, что может и чего не может: «Могу показать статистику по вашим виллам за любой период, ближайшие бронирования или историю выплат. Что именно вас интересует?»
Пример отчёта
Вот как выглядит типичный ответ на вопрос «покажи март»:
Вилла 061# (Чангу)
Загрузка: 73% (22 из 31 ночи)
Выручка: 32 500 000 IDR
Бронирований: 8 (средняя длина 2.7 ночи)
Ваша доля (50%): 16 250 000 IDR
Вилла 044# (Семиньяк)
Загрузка: 61% (19 из 31 ночи)
Выручка: 24 200 000 IDR
Бронирований: 6 (средняя длина 3.2 ночи)
Ваша доля (30%): 7 260 000 IDR
Итого доля: 23 510 000 IDR (~$1 440)
Инвестор видит именно то, что ему нужно: свои виллы, своя доля, конкретные цифры. Не чужие данные, не весь портфель из 16 объектов — только то, что к нему относится.
Важная деталь: изоляция данных
У меня 11 инвесторов с разными виллами и долями. Принципиально важно, чтобы каждый видел только своё. Инвестор А не должен видеть виллы инвестора Б, даже если случайно спросит о них.
Изоляция работает на уровне базы данных. Бот никогда не достаёт данные «по вилле X» напрямую. Он достаёт данные «по виллам, закреплённым за инвестором с этим Telegram ID». Даже если инвестор каким-то образом укажет ID чужой виллы в сообщении — бот проверит по базе, что эта вилла за ним не закреплена, и ответит только по своим.
Это не паранойя. У меня в системе реальные финансовые данные чужих людей. Правильная изоляция — это базовое требование, не дополнительная фича. После недавнего аудита безопасности я особенно внимательно отношусь к таким вещам.
Когда мои автоответы отключены — бот всё равно работает
Одна из причин, почему я хотел этот бот — разделить «отвечаю инвесторам» и «отвечаю всем остальным».
У меня несколько Telegram-аккаунтов и ботов. Иногда я отключаю автоответы на один аккаунт — например, когда занят конкретным проектом и не хочу отвлекаться на входящие. Но инвесторы должны получать ответы всегда, независимо от того, что я делаю в данный момент.
Инвесторский бот работает отдельно от моих личных ботов и автоответчиков. Он не зависит от того, онлайн я или нет. Инвестор в Москве в 3 часа ночи по Бали может написать «какой апрель?» и получить ответ немедленно — пока я сплю.
Что изменилось после запуска
До запуска: инвестор пишет → я отвечаю через несколько часов (или когда увижу сообщение) → он доволен или немного раздражён ожиданием.
После запуска: инвестор пишет → бот отвечает за несколько секунд → я узнаю об этом из уведомления (или не узнаю, если всё прошло штатно).
Первые недели после запуска я наблюдал интересное: инвесторы начали писать чаще. Не потому что появились новые вопросы, а потому что исчезло ощущение «беспокою человека». Когда знаешь, что ответит бот — можно написать в любой момент без угрызений совести. И люди пользуются этим.
Это, кстати, полезно и для меня. Чем чаще инвестор проверяет данные, тем лучше он понимает состояние своей виллы. Меньше тревоги, меньше звонков «объясни что происходит», больше доверия к системе в целом.
Что бот не делает (и правильно)
Бот не принимает никаких решений и не выполняет никаких действий. Он только читает данные и отвечает на вопросы. Никаких изменений в базе через бота, никаких транзакций, никаких обязательств.
Это сознательное ограничение. Доверие инвесторов строится на том, что система прозрачна, но не может навредить. Бот — это окно в данные, не рычаг управления.
Если инвестор хочет что-то изменить (поменять даты блокировки, уточнить условия аренды) — это идёт через меня. Бот об этом честно говорит: «Для изменений свяжитесь с управляющим напрямую». Это граница, которую я намеренно не убираю.
Масштабирование: добавить нового инвестора за пять минут
Протестировал сценарий добавления нового инвестора 31 марта, когда подключал партнёра по вилле 061#. Весь процесс:
- Спросить Telegram username нового инвестора
- Найти его Telegram ID (через бот или через API)
- Добавить запись в таблицу investors
- Добавить привязку виллы в investor_villas с указанием доли
- Написать инвестору, что теперь может пользоваться ботом
Пять минут. После этого — всё. Инвестор пишет боту, бот видит его в базе, отдаёт данные по его объектам. Никаких дополнительных настроек, никакого кода.
Это работает потому что конфигурация в данных, а не в логике. Если бы я хардкодил список инвесторов в коде — каждое изменение требовало бы деплоя. С базой данных — это просто добавление строки.
Применимость за пределами вилл
Я рассказываю про конкретный кейс с виллами и инвесторами, но схема работает для любой ситуации, где у вас есть:
- Несколько людей, которым нужен доступ к разным подмножествам одних и тех же данных
- Данные, которые обновляются автоматически и хранятся в базе
- Потребность отвечать быстро, независимо от вашей доступности
Это может быть клиентский сервис для SaaS-продукта (каждый клиент видит только свои метрики), HR-бот для сотрудников (каждый получает данные только по своему отпуску и зарплате), партнёрский портал (каждый партнёр видит свои продажи и комиссии).
Технически это одна и та же схема: Telegram-бот + авторизация по ID пользователя + изоляция данных на уровне базы + NLU для распознавания запроса.
Чему я учусь, делая это
Каждая такая автоматизация учит меня одному и тому же уроку в новом контексте: ценность не в технологии, а в устранении потерь.
Полчаса в месяц на ручные отчёты — это не большая потеря. Но это полчаса невозможно предсказуемого времени, которое случается тогда, когда инвестор написал, а не тогда, когда мне удобно. Это прерывание, которое ломает фокус. Это зависимость моей доступности для получения базовой информации.
Автоматизация убирает эти потери. И не только для меня — для инвестора тоже. Ему больше не нужно ждать, не нужно думать «удобно ли сейчас писать», не нужно пересчитывать часовые пояса.
В моей роли наладчика это именно то, что нужно делать: находить места, где я стою между данными и человеком, которому они нужны, и убирать себя из этой цепочки.
— Бот авторизует инвестора по Telegram ID, смотрит его виллы в БД
— Claude распознаёт свободный текст → структурированный запрос
— Данные изолированы: каждый видит только свои объекты
— Добавить нового инвестора — 5 минут и 2 SQL-записи
— Работает независимо от моей доступности, в любое время суток
— После запуска инвесторы стали запрашивать данные чаще → больше доверия к системе