Внутренняя автоматизация · Team OS

Каждая встреча сама доезжает до нужной команды

Записал созвон в Fireflies — дальше ноль ручной работы. Транскрипт сам классифицируется, ложится в репозиторий нужного отдела и пингует меня в Telegram. Если система не уверена — спрашивает одной кнопкой.

опрос каждые 15 мин окно ~6 часов 2 контура stack: Fireflies · GitHub Actions · Cloudflare · Telegram
Контур A

Опрос по расписанию

Фоновый процесс. Раз в 15 минут забирает свежие встречи, раскладывает по командам и оставляет уведомление. Меня не дёргает, пока всё понятно.

1
Источник

Fireflies записал встречу

На входе — транскрипт, список участников и дата. Это единственное, что делается «руками»: просто провести созвон.

2
Триггер · cron

GitHub Actions опрашивает Fireflies

Воркфлоу meeting-router-poll.yml запускается каждые 15 минут и берёт встречи за последние ~6 часов. Уже обработанные отсекаются по реестру .processed-meetings.json — один и тот же созвон не попадёт в команду дважды.

3
Классификация

Куда это отнести?

По ключевым словам в названии и составу участников встреча получает destination (команда), confidence (уверенность) и решение, что делать дальше:

write · уверенно

Сразу пишем в папку нужной команды. Тишина — ничего спрашивать не надо.

ask · неясно

Кладём во входящие _inbox и спросим человека в Telegram.

4
Маршрутизация · манифест

Определяем физическое место

Манифест repos.json знает, в какой репозиторий писать каждую команду:

отделы-хабpilots, people, internal-projects → пишутся локально в os-hub
мигрированныеproduct, operations, sales-marketing, strategy → в свой репо os-<dept> через GitHub API
private:*приватные — только пинг, поллер туда не пишет
_inboxспорные — остаются в хабе до решения
5
Запись

Транскрипт сохраняется как .md

Файл с frontmatter: meeting_id, routed_to, action и прямая ссылка на Fireflies. Всё версионируется в гите.

6
Уведомление · @meetings_bot

Сообщение в Telegram

когда уверенно
✅ Транскрипт записан → product
↗ ссылка на встречу
когда неясно
Куда отнести встречу?
product sales strategy operations
я тапаю кнопку или пишу боту — и включается второй контур
Контур B

Мой ответ — мгновенно

Здесь cron уже не при делах. Cloudflare Worker ловит webhook от Telegram и реагирует в реальном времени через Claude tool-use loop.

7
Обработчик · Cloudflare Worker

telegram-agent

Получает webhook от Telegram и решает, что я хочу, тремя инструментами:

route_meetingтап по кнопке или текст → переносит встречу из _inbox в команду
add_rule«впредь так же» → заводит правило в routing-rules, чтобы дальше не спрашивать
read_transcriptссылка + «о чём встреча / выпиши задачи» → пересказ и задачи прямо в чат Фаза 1
Если коротко

Пять шагов без меня и один — со мной

  1. Fireflies записал созвон — это весь ручной труд.
  2. Cron каждые 15 минут забирает новые встречи и отсекает дубли.
  3. classify() решает: уверен → пишет в команду, не уверен → в _inbox и спрашивает.
  4. resolveTarget() кладёт транскрипт в правильный репозиторий и шлёт пинг в Telegram.
  5. Я тапаю кнопку — Worker мгновенно переносит встречу или заводит правило на будущее.
  6. Бонус: прошу пересказ или задачи по ссылке — и получаю их в чате.