Как спроектировать веб-приложение для заявок на расчет сметы: единый формат, файлы, этапы, шаблоны ответов и назначение исполнителя.

Когда запросы на расчет сметы приходят в мессенджерах, письмах и звонках, быстро появляется один и тот же набор проблем: вместо чертежа прислали фото, забыли адрес, файлы потерялись в переписке, а важные уточнения остались в голосовых. В итоге сметчик тратит время не на расчет, а на поиски и догадки.
Единый формат заявки решает это простым правилом: вход всегда один и понятный. Чаще всего это веб-приложение, где клиент или менеджер заполняет одинаковую форму, прикладывает файлы, и заявка сразу попадает в работу без ручного копирования.
Трекер этапов нужен не «для красоты», а чтобы убрать хаос со статусами вроде «смотрю», «почти готово» и «жду ответа». Когда статус выбирается из короткого списка, любой сотрудник понимает, что происходит и что блокирует движение дальше.
Успех после запуска обычно видно по простым признакам: меньше уточнений по каждой заявке, всегда понятны текущий статус и ответственный, клиент получает ответ в тот же день (даже если смета будет завтра), файлы и версии не теряются, сроки и загрузку сметчиков легче контролировать.
Помогает заранее разделить данные на «всегда нужны» и «можно запросить позже». Всегда нужны хотя бы контакты, тип работ и исходные материалы. Детали вроде брендов материалов или точного графика можно добирать на этапе уточнений.
Чтобы заявка не превращалась в переписку на 20 сообщений, важнее всего договориться об одном формате. Даже простая форма работает лучше, когда у каждого лида есть понятный набор полей: что за объект, какой объем и к какому сроку нужна цифра.
Минимальный набор стоит держать коротким, но достаточным для первого расчета:
Дополнительные поля добавляйте не «на всякий случай», а по типу работ. Для ремонта часто нужны «состояние сейчас» и «нужен ли дизайн-проект». Для стройки - этажность, фундамент, наличие проекта. Для инженерки - мощность, количество контуров, тип оборудования, доступ к щитовой или котельной. Хороший прием - показывать такие поля только после выбора типа работ, чтобы форма не выглядела бесконечной.
С проверками лучше без лишней жесткости. Обязательными делайте только то, без чего расчет невозможен. Вместо сухого отказа работают подсказки: «Укажите хотя бы ориентировочную площадь, можно примерно» или «Выберите диапазон сроков, если точной даты нет». Так меньше брошенных заявок.
Отдельно продумайте историю изменений. Полезно хранить, кто и когда поменял поле, старое и новое значение и короткий комментарий «почему поправили» (например, «уточнили площадь по плану»). Тогда в спорной ситуации видно, откуда взялись цифры.
Файлы - главный источник правды для сметы. Если они лежат в мессенджере, на почте и на «рабочем столе», почти неизбежно потеряются версии, перепутаются объекты или исходники придется собирать заново перед расчетом.
Сначала решите, какие форматы вы принимаете всегда. В большинстве случаев хватает фото (JPEG/PNG), PDF (ТЗ, КП, акты), таблиц (XLSX/CSV) и, если работаете с проектной документацией, DWG. Для больших пакетов удобны ZIP-архивы.
Дальше задайте ограничения, чтобы заявка не «ломалась» в последний момент: максимальный размер одного файла, максимальное число вложений, список поддерживаемых форматов. И обязательно сделайте понятные сообщения об ошибках: не «500», а «Файл 78 МБ, а лимит 50 МБ. Сожмите PDF или загрузите архивом».
Привязка вложений должна быть однозначной: файл всегда относится к конкретной заявке, а при необходимости - еще и к этапу. Например, «Замеры» - фото объекта, «Проект» - DWG, «Согласование» - подписанный PDF. Так исполнителю не нужно гадать, что актуально именно сейчас.
С версиями обычно хватает одного из двух подходов:
В обоих случаях полезны комментарий «что изменилось и кем» и возможность быстро откатиться к прошлому варианту, если «поправили не то».
Добавьте мини-предпросмотр там, где это помогает: картинки, первую страницу PDF, название и размер файла. И оставьте поле для короткой подписи к каждому вложению: «финальная спецификация», «планировка после правок клиента», «фото узла 3».
Когда заявок становится больше пары в день, проблемы чаще всего начинаются не из-за формы, а из-за размытых статусов. Лучше сразу зафиксировать короткую схему и не расширять ее без причины.
Базового набора обычно хватает: новая, на уточнении, в расчете, согласование, готово, отказ. По одному взгляду должно быть ясно, «мяч» у клиента или у команды, и какой следующий шаг.
Причину отказа лучше хранить внутри заявки отдельным полем, а не превращать ее в новый статус. Например: не наш профиль, нет исходных данных, не устроили сроки, не устроила цена, дубль.
Переходы между статусами стоит описать правилами, чтобы не было «прыжков»:
Еще помогает простое SLA: например, на первый ответ по новой заявке - 30 минут в рабочее время, на расчет - 1-2 дня (в зависимости от типа работ). Это не бюрократия, а защита от потерянных лидов.
По визуализации обычно достаточно двух режимов: список с фильтрами по статусу и ответственному и канбан для ежедневной работы.
Главный риск хаотичного входа - не только в том, что кто-то забыл ответить. Риск в том, что люди видят лишнее и делают лишние действия. Поэтому роли и доступы лучше заложить сразу.
Чаще всего хватает трех ролей. Менеджер принимает лид, уточняет вводные и держит контакт с клиентом. Сметчик считает и задает вопросы по технике и объемам. Админ один раз настраивает справочники, шаблоны и права доступа.
Думайте не про «кто хороший», а про «кому это нужно для работы». Чаще всего ограничивают контакты и финальные цифры.
Так меньше случайных утечек, и проще подключать новых сотрудников или подрядчиков.
В простом варианте менеджер выбирает сметчика вручную. Это удобно, когда команда маленькая или заявки нестандартные. Когда поток растет, добавьте правила: очередь (кто свободен), специализация (например, «кровля» или «электрика»), регион, приоритет.
Чтобы не плодить переписки, обсуждения лучше вести внутри заявки: короткие комментарии, упоминания коллег и вопросы по файлам. Клиенту при этом уходит уже собранный ответ от менеджера.
И вещь, которая спасает нервы: аудит. В карточке заявки должно быть видно, кто поменял статус, кто назначил исполнителя и кто отправил ответ.
Когда заявки идут потоком, скорость ответа часто решает, кто получит заказ. Шаблоны помогают отвечать одинаково вежливо и по делу, а еще не забывать важные детали.
Начните с шаблонов для уточнений. Их цель - быстро получить недостающее, чтобы не гонять клиента по кругу. Хороший шаблон задает конкретные вопросы и объясняет, зачем они нужны.
Обычно достаточно 3-4 заготовок под 80% переписки:
Чтобы шаблоны не выглядели как рассылка, добавьте переменные: {Имя}, {Номер_заявки}, {Объект}, {Срок_ответа}, {Менеджер}. Например: «{Имя}, заявку #{Номер_заявки} по {Объект} приняли. Вернемся с расчетом до {Срок_ответа}».
Финальное сообщение удобно держать коротким: итог, ключевые позиции, сроки, условия и оговорки (например, «цены актуальны 7 дней» или «без учета доставки»). А саму смету прикладывать файлом.
Чтобы не терять контекст, храните переписку прямо в карточке заявки: лог отправок, входящие ответы клиента и вложения, внутренние комментарии команды, отметки о канале (почта, мессенджер, звонок).
MVP здесь - это рабочий минимум: вы приняли заявку, не потеряли файлы, видите статус и можете быстро ответить.
Соберите процесс так, чтобы он помещался «на одной странице». Например: «Новая - Уточнение - В расчете - Готово - Отказ». Это снимает хаос и помогает команде говорить одинаковыми словами.
Дальше двигайтесь короткими шагами:
Когда основа заработала, ускорьте общение с клиентом: несколько готовых ответов и «быстрая кнопка», которая подставляет шаблон и дает дописать одну строку.
Клиенту удобно написать как получится: пару строк и несколько фото. Вам удобно, когда это сразу попадает в один и тот же формат.
Анна оставляет заявку: «Нужно посчитать ремонт кухни 9 м2». Прикрепляет 6 фото и короткое видео. Заявка появляется у менеджера как новая, с понятной карточкой: контакты, объект, примерные сроки, список вложений. Ничего не нужно искать в мессенджерах.
Менеджер видит, что не хватает данных: высота потолка, материал пола, нужна ли электрика. Он отправляет шаблон уточнения (с подстановкой имени и номера заявки), а статус меняет на «на уточнении». Клиент сразу понимает, что от него нужно.
Через час клиент досылает замеры и план в PDF. Все файлы прикрепляются к той же заявке, без дублей и «версия_финал_2» в разных чатах. Менеджер назначает сметчика Сергея. С этого момента видно, кто отвечает за расчет и сколько заявка находится в работе.
Сергей ведет расчет и фиксирует вопросы в карточке. Если всплывает неопределенность (например, «плитка на фартуке до потолка или до 60 см»), он пишет комментарий и отмечает менеджера. Менеджер отвечает там же или задает вопрос клиенту тем же шаблоном, не теряя контекст.
Когда смета готова, Сергей прикрепляет файл (PDF или Excel), ставит статус «готово» и оставляет заметку: что включено и какие допущения. Менеджер отправляет клиенту финальный ответ по шаблону и видит историю: кто что запросил, что клиент прислал, и когда задача закрыта.
Первая версия почти всегда ломается не из-за кода, а из-за мелочей в процессе. Важно не перегрузить людей и не потерять управляемость уже на первой неделе.
Самая частая проблема - форма превращается в анкету на 30 полей. Клиент открывает, видит сложность и закрывает. Лучше собрать минимум для старта, а уточнения добирать позже.
Вторая боль - статусы без правил. Если непонятно, что значит этап и по какому событию туда переходят, все застревает в одном состоянии вроде «в работе».
Третья ошибка - вложения живут отдельно. Файлы в мессенджерах, на почте и в папках, а в карточке заявки только текст. Потом теряется связь: какой чертеж относится к какой версии расчета.
Четвертая - шаблоны ответов начинают вредить. Их написали один раз, условия поменялись, а текст продолжает обещать лишнее или звучит грубо.
Пятая - нет ответственности. Исполнителя не назначают, или назначают без уведомления и сроков. В итоге все думают, что делает кто-то другой.
Перед пилотом достаточно базовой проверки:
Перед запуском пройдитесь по процессу глазами менеджера, сметчика и клиента. Если хотя бы одному неудобно, люди быстро вернутся к чатам и таблицам.
Возьмите реальный лид и прогоните его от создания до выдачи сметы: клиент прикрепляет план в PDF и фото, менеджер уточняет детали по шаблону, затем назначает сметчика, сметчик возвращает задачу на уточнения с комментарием.
Если на любом шаге появляется мысль «проще написать в мессенджере», значит, не хватает одного поля, подсказки или шаблона.
Когда MVP уже обрабатывает заявки без потерь, не «допиливайте на глаз». Дайте системе неделю пожить в реальной работе и соберите короткую обратную связь: где теряется время, какие поля лишние, каких статусов не хватает, что в ответах клиенту приходится переписывать.
Дальше добавьте простую аналитику по этапам: сколько заявок сейчас в каждом статусе и сколько дней в среднем они там стоят. Этого хватает, чтобы быстро увидеть узкое место.
Из улучшений чаще всего окупаются правила назначения исполнителя (по типу работ, региону, загрузке или приоритету) и хранение версий документов, чтобы не путаться в правках.
Если хочется собрать такой сервис без долгой разработки, это удобно делать в TakProsto (takprosto.ai): описываете процесс в Planning Mode (роли, статусы, поля, правила назначения, шаблоны), а затем собираете интерфейс и логику через чат в формате vibe-кодинга. Когда процесс устоится, можно включить развертывание, снимки с откатом и при необходимости выгрузку исходников.
Начните с одного обязательного входа: короткая форма, куда всегда попадают контакты, тип работ, объект и исходники. Это сразу убирает поиски по чатам и снижает число уточнений, потому что команда видит одну и ту же структуру по каждой заявке.
Делайте обязательными только поля, без которых нельзя начать расчет: контакт, объект, тип работ, объем и сроки. Остальное переносите в уточнения и добавляйте условно, например после выбора типа работ, чтобы форма не выглядела бесконечной.
Обычно хватает JPEG/PNG для фото, PDF для ТЗ и планов, XLSX/CSV для таблиц и DWG, если вы работаете с проектной документацией. Сразу задайте лимиты по размеру и количеству файлов и показывайте понятные ошибки, чтобы пользователь мог исправить загрузку без поддержки.
Привязывайте каждый файл строго к конкретной заявке, а при необходимости — еще и к этапу, чтобы было понятно, где он нужен. Добавьте подпись к вложению и храните историю версий, чтобы можно было быстро понять, что актуально и что менялось.
Держите короткий набор, который отвечает на два вопроса: кто сейчас должен сделать следующий шаг и что мешает двигаться дальше. Для старта чаще всего достаточно статусов «новая», «на уточнении», «в расчете», «согласование», «готово», «отказ», а причины отказа лучше хранить отдельным полем.
Опишите простые правила переходов: в расчет — только когда заполнены ключевые поля и назначен ответственный, в согласование — только если приложена смета или заполнен итог, в готово — после отметки об отправке клиенту. Так статусы перестают быть словами «для галочки» и становятся управлением процессом.
Введіть три роли: менеджер ведет клиента и уточнения, сметчик считает и задает технические вопросы, админ настраивает справочники и права. Контакты и финальные условия обычно показывают менеджеру, а сметчику — только данные для расчета и файлы, чтобы снизить риск лишних доступов.
В маленькой команде проще начать с ручного назначения менеджером. Когда поток вырастет, добавляйте правила по очереди, специализации, региону и приоритету, чтобы заявки распределялись предсказуемо и без постоянных согласований в чатах.
Соберите 3–4 шаблона под основные ситуации: приняли в работу, уточнение данных, промежуточный статус, готовый ответ. Используйте переменные вроде имени, номера заявки и срока ответа, но регулярно обновляйте тексты, чтобы шаблоны не обещали лишнего и не звучали сухо.
Соберите минимальный цикл: создание заявки, загрузка файлов, статус, ответственный, комментарии и история изменений. В TakProsto это удобно делать через Planning Mode: сначала описываете роли, поля, статусы и правила, затем через чат собираете интерфейс и логику, а позже подключаете развертывание, снимки с откатом и выгрузку исходников при необходимости.