Личный проект · реальный кейс · 2026
Портал учебной группы, который сам собирает расписание, дедлайны и записи занятий
Собственный проект: портал для учебной группы, в которой я учусь сам. Расписание, дедлайны, материалы по предметам, записи занятий и конспекты — в одном месте, сайтом в браузере и приложением внутри Telegram. Содержимое подтягивается автоматически: расписание из файла учебного офиса, дедлайны и объявления из учебной почты и чатов, конспекты из записей занятий. Человек подтверждает только спорное. В группе около 80 человек: аккаунт завели 43, и за восемь суток наблюдения на портал заходили 34.
- Клиент
- Собственный проект, учебная группа на 80 человек
- Формат
- Сайт, приложение в Telegram, бот, агенты по расписанию
- Языки
- Русский
- Статус
- Работает с мая 2026, группа пользуется каждый день
Публичной ссылки у кейса нет: портал закрыт входом по списку участников группы. Экраны на этой странице свёрстаны заново с выдуманными данными — настоящие показывать нельзя.
Что портал делает без человека
Расписание никто не переписывает в чат, дедлайны не собирают заново перед сессией, конспект после занятия не просят у группы.
- 296
- занятий в расписании: портал перечитывает файл учебного офиса раз в сутки
- 181
- расшифровка занятий: речь распознаёт арендованный сервер, отдельной оплаты за это нет
- 264
- напоминания о парах и утренние сводки бот отправил сам — тем, кто их включил
спорное портал сам не публикует: в очередь на подтверждение попало 40 кандидатов в дедлайны, человек подтвердил 22 и отклонил 18
Привет, Сергей
вторник, 16 сентября · МСК+2
Статистика
семинар · сегодня · 15:00–16:20 · МСК 13:00
до начала
Привет, Сергей
вторник, 16 сентября · МСК+2
Просрочено 2
📊Статистика
семинар · 15:00–16:20
до начала
Ближайшие дедлайны
01 / Предыстория
Информация о группе жила в пяти местах сразу
Групповые чаты в Telegram, учебная почта, папка с расписанием на Яндекс.Диске и два сайта вуза — пять источников, и ни один не знал про остальные. Расписание в учебном приложении расходилось с файлом учебного офиса, дедлайн, названный в чате один раз, там же и оставался, а чтобы собрать полную картину, нужно было обойти все пять мест и сверить их между собой. Столько времени нет ни у кого: пока обойдёшь все пять мест, часть уже устарела. И разобрать весь этот поток, чтобы понять, что в нём важно, руками тоже некогда.
Поэтому я собрал портал: одно место, куда всё подтягивается автоматически и обновляется без просьб. Отдельная история — записи занятий: преподаватели их теряли или выкладывали на диск с опозданием, и запись переставала быть чем-то, на что можно рассчитывать. Тогда появился бот, который заходит на занятие и пишет его сам. Дальше запись уходит на распознавание речи — локальная модель GigaAM от Сбера на арендованном сервере, без внешних сервисов, — а расшифровки раз в пять часов разбирает Claude и превращает в конспекты.
Предметы, преподаватели, расписание, дедлайны и записи занятий теперь лежат в одном месте и обновляются сами — группа больше не тратит время на то, чтобы их собирать.
02 / Как информация попадает на портал
Содержимое подтягивается автоматически, человек подтверждает только спорное
У расписания, дедлайнов и записей занятий свой путь на портал. Человек появляется в этом пути один раз — там, где нужно решение.
Расписание
Раз в сутки, целиком
- 01
Excel-файл учебного офиса
Лежит в публичной папке облачного диска. Учебный офис правит его когда угодно: переносит пары, меняет время, выкладывает новый файл на следующий модуль.
- 02
Скрипт разбирает файл
Запускается раз в сутки с домашнего компьютера. Открывает книгу Excel, берёт все файлы второго курса, читает обе группы по колонкам, различает лекции потока и семинары по группам.
- 03
35 дней расписания на портале
Окно перезаписывается целиком, история не трогается. Правки руками внутри окна сотрутся: у расписания один источник — файл.
Дедлайны
Раз в сутки, с проверкой человеком
- 01
Учебная почта и учебные чаты
Агент читает их за последние 48 часов и отдельно ищет по словам вроде «сдать до» без ограничения по времени: о контрольной часто пишут один раз за несколько недель до неё.
- 02
Claude разбирает найденное
Работает по расписанию на домашнем компьютере. Сначала забирает с портала то, что уже опубликовано, чтобы не завести второй такой же дедлайн, потом дособирает детали: что сдавать, куда, до какого часа и какими материалами можно пользоваться.
- 03
Уверен — сразу на портал
Дедлайн появляется на главной, в календаре, на странице предмета, в задачах и в подписке на календарь телефона. Повторный запуск правит ту же запись, а не заводит вторую.
- 04
Сомневается — отдаёт человеку
Кандидат уходит в очередь вместе с цитатой источника, причиной сомнения и уверенностью в процентах — в среднем она была 57 из 100. Человек правит поля и публикует или отклоняет. Так прошло 40 записей: 22 опубликованы, 18 отклонены.
Занятия
Каждое занятие, без участия человека
- 01
За 12 минут до пары
Планировщик на арендованном сервере держит план на сутки вперёд и поминутно сверяется с ним, не дёргая портал. Перед парой он освежает план: ссылку на комнату могли поменять утром.
- 02
Бот заходит в комнату
Отдельный контейнер на каждое занятие: свой виртуальный экран, своя звуковая карта и настоящий Chrome — у безголового браузера нет звукового выхода. Микрофон молчащий, поэтому в комнату от бота ничего не уходит. Пишет 1080p и ещё 15 минут после звонка.
- 03
GigaAM от Сбера распознаёт речь
Модель работает локально на том же сервере, на процессоре, без видеокарты и без внешних сервисов: запись занятия никуда не уезжает. Если в файле тишина — значит, в комнату не пустили, и на распознавание он не идёт.
- 04
Claude пишет конспект
Раз в пять часов берёт занятия без конспекта и пишет четыре вещи: заголовок, краткое содержание, разбор темы простыми словами и полный конспект. Повторная заливка записи написанное не трогает.
- 05
Страница занятия
Запись с проигрывателем, конспект и расшифровка лежат вместе. Две пары подряд по одному предмету становятся одной записью и одной страницей.
Человек в этой схеме стоит в одном месте — там, где агент не уверен. Всё остальное происходит по расписанию: на домашнем компьютере, на арендованном сервере и на самом портале.
На подтверждении
Агент нашёл эти дедлайны, но не уверен в них. Пока вы не подтвердите, на портале их нет.
Вторая часть проекта
Статистика
— не указана —
23:59
Проект
Срок назван словами «на следующей неделе», точной даты в сообщении нет.
цитата источника: «…вторую часть сдаём на следующей неделе, файл пришлю позже»
Пересдача, запись до конца недели
На подтверждении
Агент нашёл эти дедлайны, но не уверен в них. Пока вы не подтвердите, на портале их нет.
Вторая часть проекта
Статистика
— не указана —
23:59
Проект
Срок назван словами «на следующей неделе», точной даты в сообщении нет.
«…вторую часть сдаём на следующей неделе, файл пришлю позже»
Пересдача, запись до конца недели
03 / Что видит студент
Вход без пароля, свои пары и свои сроки в своём часовом поясе
Портал открывается двумя способами — сайтом в браузере и приложением внутри Telegram, — и вход в обоих через Telegram. Дальше путь один: главная с ближайшей парой, карточка дедлайна с отметкой «сдал», календарь телефона и напоминания.
- 01
Пароля нет: и на сайте, и в приложении вход через Telegram
На сайте студент нажимает кнопку, открывается чат с ботом, он жмёт «Старт» — и уже внутри. Ссылка живёт 10 минут и срабатывает один раз: по одной и той же две вкладки не войдут. В приложении внутри Telegram входить не нужно вовсе — кто открыл, мессенджер знает сам. Войти может только тот, кто заранее заведён в списке участников группы, остальным бот отвечает, что доступ закрыт. Пароля у студенческого аккаунта нет — заводить, раздавать и восстанавливать нечего.
- 02
На главной — что просрочено, что можно сдать сейчас и когда ближайшая пара
Сверху обращение по имени, ниже просроченное в красной рамке и то, что можно сдать прямо сейчас, — в зелёной. Дальше карточка ближайшей пары с тикающим счётчиком до начала, колонки «Сегодня» и «Завтра», ближайшие дедлайны и новости. Ничего искать не нужно: то, что горит, стоит выше того, что не горит.
- 03
Время показано в поясе студента, рядом продублировано московское
Свой пояс человек указывает при первом входе — сдвигом в часах относительно Москвы. Дальше время пары и дедлайна выводится в его поясе, а рядом стоит московское. Это не украшение: из 43 человек с аккаунтами 28 живут не в московском поясе. Пересчитывать часы в уме не нужно.
- 04
В карточке дедлайна собрано всё, что нужно, чтобы его сдать
Тип задания полным словом, метка «блокирующий», плитки «Открыто с», «Дата», «Время» и «Осталось» — со счётчиком, если срок сегодня или завтра. Ниже описание и блок «Скорее всего на паре» со ссылкой на занятие того же дня: портал находит его сам. Студент отмечает «сдал» и может оставить заметку, которую видит только он. Свой личный срок тоже можно завести — его не увидит никто. За всё время 226 отметок от 19 человек по 71 дедлайну.
- 05
Расписание подписывается в календарь телефона, а бот напоминает о паре
Расписание и дедлайны подписываются в календарь телефона двумя лентами — дедлайны можно выключить, не теряя расписание. Бот пишет за 5 минут до пары название и ссылку на подключение, а утром присылает день целиком. Напоминания по умолчанию выключены: их включили 15 человек, и бот отправил 264 сообщения.
Занятие 4. Как читать отчёт о движении денег
📊Статистика
- Разобрали, из чего складывается отчёт и чем он отличается от прибыли.
- К следующему занятию — разбор одного отчёта на выбор, сдавать файлом.
Прибыль считают на бумаге, а этот отчёт показывает живые деньги на счёте…
04 / Что это даёт
Что больше не нужно делать руками
Расписание обновляется само, и сверять версии не нужно
Скрипт раз в сутки разбирает файл учебного офиса и кладёт занятия в базу портала. Сейчас в расписании 296 занятий на 67 учебных дней, у 252 есть ссылка на подключение. Искать, где лежит свежая версия, и пересылать её в чат не приходится.
Срок, названный в чате один раз, не теряется
Агент перечитывает почту и чаты за двое суток, а по ключевым словам ищет и то, о чём написали однажды несколько недель назад. Найденный срок становится дедлайном и виден на главной, в календаре, на странице предмета, в задачах и в подписке на календарь. Сейчас их 82, и собирать список заново перед сессией не нужно.
Спорное не уходит в общий список само
Если агент в чём-то не уверен, дедлайн идёт не на страницы портала, а в очередь. В карточке видно, откуда он взят, цитату источника, причину сомнения и уверенность в процентах; правит и публикует человек. Через очередь прошло 40 кандидатов: 22 подтверждены, 18 отклонены — и эти 18 на портал не попали.
Занятие записывается само, по расписанию
За двенадцать минут до пары сервер поднимает запись: бот заходит на площадку видеовстреч как участник и пишет экран и звук. Сдвоенная пара остаётся одной записью. К 70 занятиям привязана 81 запись, и просить у кого-то запись и код доступа больше не нужно.
Конспект появляется независимо от того, вёл ли его кто-то
Расшифровка занятия подтягивается на портал сама, а раз в пять часов второй агент берёт занятия без конспекта и пишет краткое содержание, разбор простыми словами и полный текст. Так заполнены все 70 занятий — 830 689 знаков, у каждого есть расшифровка и ссылка на запись.
Списки собираются под каждого, а личное видит только автор
Занятия и сроки отбираются по группе, выбранному майнору и предметам, от которых человек отписался: так сделали 27 человек, майнор выбрали 11. Личный дедлайн не открывается даже администратору. Одни и те же правила отбора работают на сайте, в подписке на календарь и в рассылке бота, поэтому списки нигде не расходятся.
05 / Надёжность
Система работает, когда за ней никто не смотрит
Портал, агенты и сервер записи работают по расписанию, когда за ними никто не следит. Отсюда три правила.
Повторная заливка правит запись, а не заводит вторую: тот же предмет, дата и заголовок — обновление на месте. Так же устроены расписание, заметки и новости, поэтому агента можно запускать хоть каждый день и не чистить за ним дубли.
Служебные будильники на сервере держат план на сутки вперёд и поминутно считают по нему. Раньше они дёргали портал каждую минуту, и база не засыпала неделями, сжигая оплаченные часы. Теперь план обновляется раз в четыре часа, и обе службы делают это в одну минуту — чтобы разбудить базу один раз, а не дважды.
Запись без звука на распознавание не идёт вовсе. Зависший распознаватель сторож снимает через 15 минут и второй раз за него не берётся. Одновременно идёт не больше трёх записей: сервер уже уходил в отказ по памяти, и тогда вместо занятия сорок минут писалась страница ошибки.
Пустой конспект выглядел бы как обработанное занятие и прятал бы пропажу, поэтому тихая запись останавливается раньше.
06 / Дизайн
Дерево из четырёх веток: данные сходятся там, где их ищут
Портал открывается на главной, и с неё видно, что горит сегодня. Вглубь ведут четыре ветки, и в каждой данные из разных источников собираются в одном месте.
Вход через Telegram
Сайт в браузере или приложение внутри мессенджера — дальше всё одинаково
Главная
Что горит прямо сейчас
Просрочено
Красной рамкой, с отметкой «сдал»
Можно сдать прямо сейчас
Зелёной рамкой
Ближайшая пара
Со счётчиком до начала
Сегодня и завтра
Две колонки занятий
Ближайшие дедлайны и новости
Календарь → День
Здесь сходится всё, что происходит в один день
Неделя или месяц
На телефоне — список дней карточками
Пары этого дня
Плитками, цветом предмета
Дедлайны этого дня
Строкой внизу ячейки
Страница пары
Тема, преподаватель, ссылка на подключение, время в своём поясе
Предметы → Предмет → Занятие
Здесь сходится всё, что есть по предмету
Заметка с материалами
Слева, вкладками, если их несколько
Ближайшие пары и следующий дедлайн
Преподаватели, ведомость, ссылки
Карточками справа
Занятие
Запись, «кратко за минуту», разбор простыми словами, полный конспект
Расшифровка
Под раскрытием, с кнопками «Скопировать» и «Скачать»
Мои задачи и профиль
То, что касается только меня
Предстоящие, прошедшие, сданные
С полосой прогресса по наступившим
Свой дедлайн
Виден только автору
Группа, часовой пояс, майнор, выборочные предметы
Подписка на календарь телефона и напоминания в боте
Один и тот же дедлайн виден в четырёх местах — на главной, в календаре, на странице предмета и в задачах, — но запись у него одна. Правила, кому что показывать, тоже одни: и для сайта, и для ленты календаря, и для рассылки бота, поэтому списки нигде не расходятся.
У каждого предмета свой цвет: он же на его парах в календаре и на кромке карточки дедлайна, поэтому предмет узнаётся раньше, чем прочитано название.
Длинное прячется под раскрытие: прошедшие дедлайны, полный конспект, расшифровка. Экран не давит, но ничего не потеряно.
Тем две. Тёмная тёплая, почти чёрно-коричневая; выбор запоминается и применяется до того, как страница нарисуется, — светлая не вспыхивает перед тёмной.
07 / Объём
Что входит в проект
Портал
- Главная: просроченное, то, что можно сдать прямо сейчас, ближайшая пара со счётчиком, занятия на сегодня и завтра, дедлайны и новости
- Календарь: неделя и месяц на широком экране, список дней на телефоне; выбранный вид запоминается
- Страница предмета: заметки, ближайшие пары, следующий дедлайн, преподаватели и ссылки
- Страница занятия: запись с проигрывателем, краткое содержание, разбор простыми словами, полный конспект и расшифровка с кнопками «Скопировать» и «Скачать»
- Карточка дедлайна: тип, срок, счётчик «Осталось», отметка «сдал» и заметка, которую видит только автор
- «Мои задачи»: предстоящие, прошедшие неотмеченные и история сданных
- Свой дедлайн: студент заводит личный срок, и его не видит больше никто
- Первый вход в три шага: группа, часовой пояс и выборочные предметы
- Время в часовом поясе студента, рядом продублировано московское
- Подписка на календарь телефона: две ленты, расписание и дедлайны, чтобы вторую можно было выключить
- Вход через мессенджер по списку участников: ни регистрации, ни паролей
- Внутри мессенджера портал открывается как приложение
Наполнение без человека
- Раз в сутки агент читает учебную почту и учебные чаты за двое суток, а по ключевым словам находит и то, о чём написали однажды несколько недель назад
- Найденный дедлайн он дополняет деталями: что сдать, куда сдавать, до какого часа, какие материалы разрешены
- Дедлайн с тем же предметом, датой и смыслом заголовка обновляется, а не заводится вторым
- Спорное не публикуется, а уходит в очередь: человек правит текст и нажимает «Подтвердить и опубликовать»
- Тот же агент обновляет расписание, новости и полезные ссылки
- Отдельный агент ведёт страницу предмета по выбору: заметки, ссылки и сроки
- Раз в пять часов второй агент берёт занятия без конспекта и пишет заголовок, краткое содержание, разбор простыми словами и полный конспект
- За 12 минут до пары сервер поднимает бота: тот заходит на площадку видеовстреч, пишет занятие и ещё 15 минут после звонка
- Сдвоенная пара становится одной записью и одним конспектом: перерыв до 45 минут считается переменой
- Запись без звука на расшифровку не идёт, чтобы пустой конспект не выглядел готовым
- Речь распознаётся на арендованном сервере, без видеокарты
- Бот пишет за 5 минут до пары название, время и ссылку, а в 10:00 по Москве — расписание на день; по умолчанию напоминания выключены
Основа
- Next.js на облачной платформе развёртывания
- Управляемый Postgres, 22 таблицы; расшифровки лежат отдельной базой на арендованном сервере
- Арендованный сервер: запись занятий и распознавание речи локальной моделью GigaAM от Сбера, без внешних сервисов
- Агенты на Claude по расписанию: сбор дедлайнов раз в сутки, конспекты раз в пять часов
- 32 926 строк кода, 273 коммита, автор один
Нужна автоматизация, которая сводит данные в одно место?
Этот портал я собрал для своей учебной группы, но устроен он так же, как то, что мы делаем для компаний. Данные приходят кусками в переписке: заявки, заказы, документы, сроки по проектам. Агент по расписанию читает почту и рабочие чаты, сверяется с тем, что уже заведено, и правит запись вместо того, чтобы плодить дубли. Спорное он кладёт не в базу, а в очередь: человек видит, откуда взята запись и почему агент засомневался, правит поля и подтверждает одним нажатием. Где проходит граница между «публикуем сразу» и «показываем человеку», решаем вместе с вами. Первый разговор бесплатный: разберём, откуда у вас приходят данные и что из этого имеет смысл собирать автоматически.