Задача
Небольшая компания по услугам попросила одно место, где видно все заявки.
До этого заявки шли тремя дорогами - из телеграм-бота, с формы на сайте и просто в личку менеджеру.
Один и тот же человек мог оставить заявку дважды, и ему звонили два разных менеджера.
Владелец не мог ответить на простые вопросы - сколько заявок было за неделю, у кого сколько в работе, на каком этапе всё встало.
Просили простую панель под свой процесс, без большой коробочной CRM.
Что сделал
Сделал веб-админку - FastAPI на бэке, React на фронте, база PostgreSQL, всё в Docker на VPS.
Дубли ловятся по телефону и телеграм-id - повторная заявка прилипает к существующей карточке и новой сделки не заводит.
Отчёт по источникам и по конверсии между этапами, период выбирается, выгрузка в Excel одной кнопкой.
Первое, что рушит такую панель - заявка пропадает, если приёмник в момент отправки лежал или отвалилась база.
Поэтому сырое тело запроса пишется в лог до любой обработки, упавшие разборы прогоняются повторно и ничего не теряется.
Результат
Заявки собраны в одном списке, почту и переписку ради них больше не открывают.
Владелец смотрит отчёт за неделю сам, просить выгрузку не нужно.
За первый месяц через панель прошло около 300 заявок, порядка тридцати из них склеилось как дубли.
Заказчику отдал исходники в его репозиторий, доступ к серверу и короткую инструкцию - как завести менеджера и как поменять этапы воронки.