Skip Navigation
Skutr_DH
Бизнес и экономика 6 март
Telegram
📍Skutr Docs — День 12


📍Skutr Docs — День 12. Мультиорганизации

Вчера — юридическая точность промптов и мобильная адаптация. Сегодня — фрилансер перестал быть привязан к одному ИП.


🏢 Организации — отдельная сущность

Раньше реквизиты хранились в профиле пользователя. Одно ИНН, одно название, один расчётный счёт. Но фрилансер может быть самозанятым Ивановым И.И. для мелких заказов и ИП Иванов для крупных. Или закрыть ИП и перейти на самозанятость — а старые документы должны остаться с прежними реквизитами.

Вынес организации в отдельную таблицу. 12 полей, связь 1:N с пользователем, флаг «по умолчанию». Миграция перенесла существующие данные из профиля в первую организацию автоматически — ни один пользователь ничего не потерял.

CRUD API, страница управления в кабинете, выбор организации во всех четырёх формах документов. Бот: «Мои реквизиты» стали «Мои организации» — список с ⭐️ у основной, добавление новых, переключение между ними.



🔀 Выбор организации при создании документа

Если организация одна — всё работает как раньше, пользователь ничего не замечает. Если две и больше — перед созданием счёта, акта, КП или договора появляется шаг «Выберите организацию-исполнителя» с inline-кнопками.
Выбранная организация прокидывается в генератор и записывается в документ.

Архитектурно: _maybe_choose_org() — единый хелпер для всех четырёх FSM. Один паттерн, четыре точки вызова, ноль дублирования.



✏️ Редактирование всех документов в кабинете

Счета и акты можно было редактировать после создания. КП и договоры — только при создании в модалке превью. После сохранения — read-only. Почему? Потому что canEdit проверял только invoice и act.

Перенёс полную логику редактирования из модалки в страницу документа. КП: заголовок, введение, секции с пунктами, стоимость по позициям с автоподсчётом, срок действия, следующие шаги. Договор: преамбула, секции с параграфами (добавление/удаление), сумма. Теперь документ, созданный голосом в боте в 2 часа ночи, можно спокойно отредактировать утром в кабинете.



🧹 Три мелочи, которые раздражали

Бейджи без подписи. Документы из бота через «быстрые документы» создавались с source="quick". Фронтенд знал только "bot" и "web". 27 документов висели без метки. Поменял на "bot", обновил существующие одним UPDATE.

Навигация назад. Заходишь в раздел «Счета», открываешь конкретный счёт, нажимаешь «К документам» — попадаешь в «Все». Теперь кнопка говорит «К счетам» и возвращает в раздел счетов. Query-параметр ?tab=invoice — просто и надёжно.

Поиск в боте. Кнопка «🔍 Поиск документа» в «Мои документы». При этом документы уже разбиты по разделам, а в кабинете — полноценный поиск с фильтрами. Убрал. Меньше кнопок — меньше когнитивной нагрузки.



💡 Инсайт дня

Мультиорганизации — это не фича для корпораций. Это реальность фриланса. Самозанятый открывает ИП — и ему нужны оба набора реквизитов. Дизайнер работает как физлицо для российских клиентов и как ИП для зарубежных. Если продукт привязывает человека к одному юрлицу — он не понимает свою аудиторию.



🎯 Итого за день: модель Organization с CRUD API и миграцией, выбор организации в боте при 2+ орг, полное редактирование КП и договоров в кабинете, фикс бейджей source, навигация по табам, чистка UI.



#buildinpublic #skutrdocs #AI #фриланс #самозанятые #стартап #SaaS #продукт #UX
Skutr_DH
Бизнес и экономика 6 март
Telegram
📍Skutr Docs — День 11


📍Skutr Docs — День 11. Документы под контролем

Вчера — бриф стал редактируемым и клиент, который не пришёл. Сегодня — юридическая точность, управление документами и мобильный кабинет.


⚖️ Промпты КП и договоров — переписаны с нуля
КП звучало как «рады предложить вам наши услуги».
Теперь — как senior account director: результат-ориентированные заголовки, консалтинговая лексика, запрет на клише вроде «команда профессионалов» и «индивидуальный подход».

В договорах нашёл критический баг: ссылка на ст. 139 ГК РФ в NDA-секции. Эта статья удалена из Гражданского кодекса с 2008 года. Заменил на ФЗ-98 «О коммерческой тайне» и ст. 1465–1472 ГК РФ. Добавил антикоррупционную оговорку (ФЗ-273), электронный документооборот (ФЗ-63), персональные данные (ФЗ-152), возврат материалов. Усилил ссылки по всем типам: услуги, подряд, NDA.


💰 Стоимость: пять мест, где терялась цена фрилансера

Фрилансер ставит итоговую стоимость 700 000 в кабинете. Открывает договор — в тексте «80 000», в итого «700 000», а прописью «восемьдесят тысяч». Три разных числа в одном документе.

Причина: final_price не прокидывался в пять точек — бот-PDF, текст секции «Стоимость», итого договора, сумма прописью, КП. В каждом месте LLM подставлял свою оценку вместо реальной цены.

Исправил все пять. Добавил regex-постпроцессинг текста секции «Стоимость». И защитный пересчёт суммы прописью при рендере PDF — даже если в БД старые данные, PDF будет корректным.


🗑 Удаление документов и проектов

Раньше документы и проекты можно было только создавать. Тестовый договор, неудачное КП, проект-черновик — всё копилось. Теперь на каждой карточке — иконка корзины. Диалог подтверждения, каскадное удаление связанных данных (бриф, ТЗ, интервью, материалы). Документы при удалении проекта сохраняются — у них обнуляется project_id.


📱 Мобильная адаптация — 12 компонентов

Прошёлся по всему кабинету глазами мобильного экрана 320px. Поиск с фиксированной шириной вылезал за экран.
Бейджи проектов толкали контент. Модалки упирались в края. Кнопки «Сохранить / Бриф / ТЗ» не влезали в шапку.

Исправил: адаптивные padding и margin, truncate на длинных текстах, скрытие второстепенных элементов на мобилке, компактные кнопки, overflow-x-auto на табах.


💼 Кнопка «Мой кабинет»

Веб-кабинет с полным функционалом существовал давно: создание документов, контрагенты, реквизиты, PDF. Но попасть туда можно было только через проект или вручную набрав URL.

Добавил кнопку «Мой кабинет» в главное меню бота. Обычная ссылка — открывается в браузере, не Mini App. Теперь фрилансер, которому не нужны проекты и AI-брифование, может просто работать с документами в кабинете. Плюс после создания каждого документа в боте — кнопка «Открыть в кабинете».


💡 Инсайт дня

Удалённая статья закона в шаблоне договора — это не баг, это репутационный риск. Если фрилансер отправляет клиенту NDA со ссылкой на несуществующую норму — доверие к сервису обнуляется за секунду. AI генерирует текст, но ответственность за юридическую корректность — на продукте.


🎯 Итого за день: переработка промптов КП и договоров, исправление 5 точек потери цены, удаление документов и проектов, мобильная адаптация 12 компонентов, кнопка «Мой кабинет» в боте.


#buildinpublic #skutrdocs #AI #фриланс #самозанятые #стартап #SaaS #продукт #UX
Skutr_DH
Бизнес и экономика 6 март
Telegram
📍Skutr Docs — День 10


📍Skutr Docs — День 10. Когда клиент не пришёл, а бриф нужен

Вчера — голос, который понимает бизнес. Сегодня — два больших куска: полноценное редактирование брифа в веб-кабинете и сценарий, когда клиент не пришёл на интервью.



📝 Бриф стал редактируемым

Раньше бриф в веб-кабинете был read-only — AI сгенерировал, фрилансер смотрит. Но на практике бриф всегда нужно подправить: уточнить ЦА, добавить интеграцию, поменять сроки. Теперь все 9 полей брифа редактируются прямо в кабинете. А после правок — кнопка «Перегенерировать ТЗ», которая пересоздаёт техническое задание и стоимость из обновлённого брифа.



💰 Валидация: нет цены — нет документа

Обнаружил, что фрилансер мог сохранить проект и скачать PDF без указания итоговой стоимости. Получался документ с пустым полем цены — такое отправлять клиенту нельзя.

Теперь: ручное сохранение блокируется без final_price > 0. PDF-генерация — тоже. И на фронте (toast-уведомление), и на бэкенде (400-ошибка). При этом автосохранение каждые 30 секунд работает без ограничений — чтобы промежуточные правки не терялись.



✏️ Мелочи, которые важны

Название проекта теперь редактируется inline — клик на заголовок, ввод, Enter. PDF переименован в «Бриф и ТЗ» — потому что теперь включает и бриф. Обновлены промпты для всех 12 типов проектов.



🔀 Когда клиент не пришёл на интервью

Вторая часть дня. Фрилансер создаёт проект, выбирает путь А (AI-интервью), отправляет ссылку клиенту. А клиент не приходит. Фрилансер забрифовал его сам — по телефону, в переписке — и хочет загрузить материалы в уже созданный проект. А UI для этого не было. Экран «Ожидаем клиента» крутил спиннер и ждал. Бесконечно.

Добавил кнопку «Загрузить материалы самостоятельно» на экран ожидания. Полноценная форма: текст + голос + фото + файл. Загрузил — нажал «Генерировать ТЗ» — pipeline подхватывает.

Но под капотом — pipeline падал. Проект создан с brief_source = "interview", pipeline шёл в ветку интервью, интервью пустое — ошибка. Загруженные материалы рядом лежат, но pipeline их не видит.

Исправил: теперь pipeline определяет источник по факту, а не по метке. Есть данные интервью — берёт их. Нет, но есть загруженные материалы — upload-путь.



💡 Инсайт дня

Продукт ломается не на happy path. Клиент не пришёл на интервью — это не edge-кейс, это половина реальности фрилансера. Если продукт не умеет с этим работать — он игрушка, а не инструмент.



🎯 Итого за день: редактируемый бриф с перегенерацией ТЗ, валидация итоговой стоимости, inline-редактирование названия, загрузка материалов в существующий проект, автодетекция источника данных в pipeline.



#buildinpublic #skutrdocs #AI #фриланс #самозанятые #стартап #SaaS #продукт #UX

Управлять можно с клавиатуры

Работает в лентах: голосование, переход между постами и разворот текста.

W
S
A
D
F
Топ авторов за месяц
Свежие комментарии