Technology
Как мы строим Norman: AI-агенты, которые делают настоящую бухгалтерскую и налоговую работу, и системы, которые держат их в норме. Заметки прямо от команды.
Голосовой ввод в бухгалтерии: где ломается поток
Голосовой ввод способен заменить ручное заполнение в бухгалтерии, и почти ничего из voice-стека 2026 года для этого не нужно. Вот поток, который мы выпустили, четыре места, где он рвётся, и апгрейд модели, стоивший нам определения языка.
Бухгалтерия e-commerce: что ломают заказы от ИИ
Автоматическая бухгалтерия для интернет-магазинов работает в основном потому, что учётная система предполагает наличие карточки клиента. Заказы от ИИ-агентов приходят без неё, а вместе с ней исчезает страна, определяющая НДС. Что мы измерили в собственной базе.
Точность AI-бухгалтерии: почему 95 % ничего не значат
Почти каждый AI-инструмент для бухгалтерии заявляет точность 95 % и выше, и эта цифра почти бессмысленна. В нашей собственной немецкой базе программа, которая всегда отвечает "НДС 19 %", набрала бы около 87 процентов, а на крупнейший один процент расходных строк приходится половина денег. Что стоит измерять вместо этого.
Может ли ИИ-агент собрать недостающие чеки?
ИИ-агент может добыть часть недостающих чеков и почти ни один не должен разбирать в том порядке, который вы ожидаете. Почти двести тысяч расходных строк в наших собственных книгах без документа, семь из десяти меньше ста евро, а главный сигнал приоритета был сломан в нашем коде.
Соответствует ли ИИ-бухгалтерия GoBD? Проверьте протокол
ИИ-бухгалтерия соответствует GoBD только если протокол изменений может назвать, кто сделал каждую проводку, а большинство протоколов не умеют называть модель. Что требует GoBD, почему EU AI Act не поможет и что мы нашли в своём протоколе.
ELSTER MCP server: может ли ИИ-агент подать вашу декларацию?
Один существует, и это браузерный робот, управляющий порталом с вашими учётными данными. В Германии нет API подачи, которое можно обернуть: передача идёт через ERiC из сертифицированного софта и подписывается сертификатом, принадлежащим человеку. Вот что агент может и чего не может в немецкой декларации, и как мы автоматизируем каждый шаг до подписи.
MCP-серверы для бухгалтерского софта: у кого он есть
«sevDesk MCP», «DATEV MCP», «WISO Steuer MCP» уже ищут в поиске. Почти никто из вендоров не публикует свой сервер, а те, что существуют, в основном community-обёртки над публичными API. Состояние MCP в бухгалтерском и налоговом софте в 2026 году и чем настоящий вендорский сервер отличается от обёртки.
Половина ответа всегда лежит в другой системе
Norman теперь MCP-клиент, так что агент может читать из инструментов, которыми бизнес и так пользуется: платёжный провайдер, почта, хранилище документов, твой собственный внутренний сервер. Что это открывает, с реальными вопросами, которые люди задают, и одно правило, которое всё это формирует: читаем снаружи, пишем внутри.
У половины наших фоновых задач был дедлайн, который никто не выбирал
Дефолт из командной строки в нашем образе контейнера молча ограничивал каждую фоновую задачу 120 секундами, включая батчи с десятками вызовов модели. Поправить число было простой половиной работы. Сложной было научить задачи умирать.
Мы не пишем тест-кейсы для нашего ИИ. Их пишет продакшен.
Golden dataset, написанный руками, портится на той же неделе, когда вы его составили. Наш регрессионный набор для ИИ-категоризации генерируется из реальных правок пользователей, а промах должен повториться три раза, прежде чем заслужит тест. Ниже сам пайплайн, цифры за ним и шарнир, который всё это время был тихо сломан.
У нашего агента 102 инструмента. Вся инженерия в том, чего он не видит
Все рефлексы в дизайне агентов сейчас работают на сложение: больше инструментов, больше инструкций, больше памяти. Norman отдаёт 102 инструмента и 19 плейбуков, и почти каждое архитектурное решение было вычитанием. Вот что мы отнимаем у модели и почему агент делает свою работу лучше именно потому, что никогда не знает, на каком он шаге.
Стриминг ИИ-агента: это задача про протокол
Ответ в чате выглядит как сокет, из которого сыплются слова. В продакшене это протокол: аддитивные типы событий, идентификатор, приходящий последним, правило ретрая, которое знает, успел ли выполниться инструмент, и бюджет таймаутов, где каждый слой обязан пережить самый медленный ход. Здесь описано, что на самом деле отправляет наш чат-стрим и зачем нужна каждая его часть.
Наш пакетный планировщик на самом деле load balancer
Каждую ночь Norman балансирует на одних и тех же воркерах двух очень разных «жильцов»: терпеливые, сетевые банковские синхронизации и голодные, вычислительно тяжёлые AI-джобы, которые читают чеки и категоризируют постоянный поток транзакций. Вот как мы относимся к планировщику как к load balancer, измеряем давление очередей по каждой нагрузке и куда ведём это дальше: раскладываем тяжёлую AI-работу по живой нагрузке, а не по вручную выбранной минуте крона.
Как мы отслеживаем каждый прогон ИИ-агента, не сохраняя твои данные
Каждый вызов модели в Norman оставляет аудиторский след: какой воркфлоу, какая модель, во сколько обошёлся, сколько занял. Чего он не оставляет, это твои чеки и банковские данные. Мы храним хеши, а не payload. Вот слой наблюдаемости за нашими агентами.
Как наш категоризатор учится на одном-единственном исправлении
Каждая транзакция в Norman получает категорию, и большинство из них ни разу не касаются модели. Интересная инженерия тут не в LLM: она в том, чтобы превратить одно ручное исправление в память конкретной компании, которая никогда не протекает наружу, обязана заслужить доверие и о которой можно доказать, что она держится. Вот как это устроено.
Как мы собрали агента, который сам подаёт твою декларацию по НДС
Autofiling полностью готовит и подаёт твою немецкую UStVA, от начала до конца. Сложным было никогда не само модель, а то, как сделать стохастического агента достаточно безопасным, чтобы он совершал юридически значимую подачу. Вот как устроен дизайн.