Экспортные инвойсы, технические спецификации и сертификаты соответствия собирались руками, ячейка за ячейкой. В каждом — коды, веса и итоги, где одна переставленная цифра означает отказ на отгрузке.
Документы были учётной системой. Инвойс существовал как таблица, и только в этой таблице жили позиции, коды классификации и веса. Сделать следующий документ означало скопировать предыдущий и отредактировать.
Это работает до тех пор, пока не перестаёт. После правки итоги расходятся с позициями. Код классификации переезжает от товара, которого в инвойсе больше нет. Нетто и брутто перестают сходиться. Ничего из этого не видно на странице — это видно на границе, через несколько дней, когда груз задержан.
И дорогой частью была проверка. Сделать документ было быстро; убедиться, что он внутренне непротиворечив, — дольше, и делал это человек, наименее способный быть объективным, а именно тот, кто его только что и набрал.
Решение — не лучший шаблон. Решение — вынести источник истины из документа в данные, из которых документ рендерится.
Конвейер, где главными являются структурированные данные, а каждый документ — их отображение. Позиции, коды классификации, вес по позиции и итоговый, валюта и условия поставки считаются один раз и переиспользуются во всех типах документов.
Проверка идёт до рендера, а не после. Сходится ли сумма весов позиций с заявленным итогом? Есть ли у каждой позиции валидный код классификации? Сходятся ли суммы строк с итогом инвойса? Документ, не прошедший эти проверки, не создаётся — значит, и не уйдёт.
Одна структурированная запись на партию держит позиции, количества, цены, веса, коды и условия. Инвойс, упаковочная спецификация и сертификат — три представления этой записи, а не три файла, которые надо руками держать в согласии.
Арифметика и полнота проверяются до рендера: итоги сходятся с позициями, веса суммируются, у каждой позиции есть код классификации, обязательные для страны назначения поля заполнены. Непройденная проверка останавливает документ — ошибка всплывает за столом, а не на границе.
Каждый формат — это шаблон поверх тех же данных. Добавить новый документ — таможенную форму другого рынка, привычную покупателю вёрстку — это шаблон, а не проект.
Коды, веса и итоги вычисляются, а не генерируются языковой моделью. AI помогает в мягких частях — черновики описаний, подбор вероятного кода классификации для подтверждения человеком. Цифры, которые будет проверять таможенник, — это арифметика, и они ею и остаются.
Собрано и проверено на реальной партии груза.
Дорогая половина работы — проверка — почти исчезла. Документ непротиворечив по построению, поэтому человек смотрит на коммерческий смысл, а не на арифметику.
Добавить тип документа стало дёшево. Второй и третий форматы стоят доли первого, потому что читают те же данные.
Сбой сместился раньше и стал громче. Отсутствующий код классификации — теперь сообщение за рабочим столом, а не звонок от экспедитора.
Любому бизнесу, который делает повторяющиеся документы с высокой ценой ошибки из данных, уже где-то существующих в структурированном виде: экспортные и таможенные бумаги, коммерческие предложения, технические спецификации, сертификаты соответствия и испытаний, регулярная отчётность.
Плохо подходит для документов, которые действительно уникальны каждый раз. Если ни один документ не повторяет структуру другого, шаблонизировать нечего, и честный ответ — продолжать писать их руками.
Расскажите, что не работает. Первый разговор бесплатный — разработка, долгосрочное партнёрство или просто вопросы: вы получите честную оценку и понятный следующий шаг.
Начать разговор →