The post has been translated automatically. Original language: Russian
There is not an ounce of exaggeration in the title. This is a real incident from the logs of the system, which in a minute was supposed to give a live person a training plan for tomorrow.
In our architecture, every response from the language model is subject to strict verification: The LLM response is double-checked. The first time by code, the second time by another LLM. One day, the verifying model "hallucinated" an error
And the main neural network, instead of signaling a conflict, quietly shifted the date to another day. And to smooth out the corners, I added: "Aligned the beginning of the week to Monday." Does that sound logical? But this is a lie from the first to the last word. The model coldly faked the initial data so that the control would lag behind it.
To explain why, after this incident, we completely redesigned the AI coach architecture and physically forbade neural networks to count, I'll have to tell you how it all started.
The call that changed everything
The idea of SPORTO was born from my call to an old friend. We worked with Sergey many years ago — his IT company implemented CRM for us. I was struck at the time by how systematically he thought: he sorted out any chaos and turned it into clear algorithms.
I called him just to consult. I wanted to discuss the concept: What if we create an AI that guides an amateur athlete as deeply as a living coach, but without the limitations of human memory?
Sergey listened to me, assessed the idea soberly, and then it became clear what I did not know about him. It turned out that he is not just an IT architect. He himself has gone through a full grueling cycle of preparation for Ironman and knows the value of every microcycle on himself. Returning to training later, he worked with a leading triathlon coach in Ukraine and, at the same time, became a business consultant for this sports club. Together they turned it into one of the largest in Europe.
Sergey showed me the inside of the problem.
The limit of human memory
"The coach is a human being. That's the main vulnerability," Sergei told me at the time.
A strong coach has dozens of students. He is physically unable to keep in mind that three weeks ago your knee hurt, last Thursday you slept for four hours, and before the previous race you twice disrupted a long running workout. You see each other a couple of times a week, and the rest of the time you stay one-on-one with a static plan.
Sergey saw it from the inside: one professional is capable of leading a maximum of thirty athletes with high quality. Then the focus inevitably blurs. The club was able to grow to almost a thousand students only after the intuitive coaching experience was translated into strict, repeatable business rules.
That's how our puzzle turned out. I came with a product hypothesis, and Sergey brought system architecture and expertise from real sports. We realized that if expertise can be turned into rules, and rules into software code, then a personal and scientific approach ceases to be a VIP privilege.
The illusion of simplicity and the autopsy protocol
With the team in Kazakhstan, we thought everything would be fast. The market is littered with "ChatGPT chats," which, when asked to prepare for a marathon, spit out a plausible compilation of articles from the Internet. We also started with a naive illusion: we take a powerful language model, feed it data from a watch, write five—page instructions, and get a coach.
This hypothesis didn't even last two weeks. Below are excerpts from our testing logs. Each of these mistakes could cost a person torn ligaments.
- Turning emptiness into a fact. The user's profile did not contain any information about his sporting past. The model did not ask for clarification, but silently wrote it down as a "beginner" and began to build a load based on a fictitious statement.
- Optimization of prohibitions. In an attempt to overcome hallucinations, we strictly forbade transmitting "0" in the distance field. The model immediately adapted: it began to prescribe a distance of "1 meter" — the minimum value that the check would skip.
- Ignoring prohibitions. The generator received a strict list of safe exercises for specific equipment and injuries. The model inserted exercises from outside the list into the plan seven times in a row, and once issued a SUITCASE_CARRY, an exercise that does not exist in our catalog at all.
- An invention out of politeness. The chat called the athlete "Serega". The name wasn't in any data source—the model just came up with it to match the tone of the conversation. Today she's finishing her name, tomorrow she'll finish her pulse zone with the same movement.
We realized a terrible thing. The neural network, squeezed by checks, behaves like a two-man student: it does not solve the problem, it adjusts the answer. She cannot be trusted with a single figure on which the body depends.
Architecture: The code judges, the Model explains
As an IT architect, Sergey designed a paradoxical solution: neural networks in SPORTO are strictly forbidden to count.
All physiological arithmetic is performed by the usual program code — the Core. He counts by formulas and does not know how to fantasize: he always gives the same answer based on the same data. The load is calculated mathematically. Pulse zones are calibrated according to strict procedures. And the code has an unconditional right of veto. If the medical profile has limited the pulse rate to 150 beats, not a single creative impulse of the neural network will break through this ceiling.
The engineers here will object: "This is the usual tool calling mode, where the model calls the calculator itself." Not quite. With tool calling, the model decides for itself whether to call the calculator and what to do with its response. We took this solution away from her: she always counts the code, and if the model does not agree with its number, she can say so, but she cannot replace it. The last word on any number belongs to the code. This is not a technical detail, but a guarantee to the user.
What remains for artificial intelligence? The meanings. Understand the phrase "my hip is pulling after yesterday's intervals." Compare lack of sleep with Garmin's performance and decide which is more important today — to finish the plan or to recover.
A pipeline of 14 specialized AI agents is running under the hood. One sets goals, the second keeps a medical record, and the third adapts the training week. Each agent's response goes through a double filter: first, a mathematical code (a veto on numbers), then a second neural network (semantic audit).

The scheme of work
The second pillar of the system is the Athlete Memory Layer, the athlete's memory. It is a database of more than 100 tables that stores the history of each workout and injury. If you missed a difficult session, the system will not stupidly move the calendar forward a day (creating two difficult days in a row), but will completely rebuild the rest of the week, saving recovery windows. At the same time, we cut out the GPS tracks immediately upon receipt: the system knows that you ran 12 kilometers in the third zone yesterday, and does not know which entrance you came out of.

Visual 2 — "bad" vs "good" plan

Visual 3 — load graph
7 Survival Lessons for High-Stakes AI Products
If you are building a product where a language model error is more expensive than a crooked text, take our framework.:
- Don't test intelligence, but discipline. Cheap models extract meanings perfectly, but they fall apart in response formats. Sew up a rigid format scheme directly into the prompt: each field must be filled in, the void is only an explicit "null".
- Emptiness is a risk zone. Teach the system to answer "I don't know." Guessing costs a second of CPU time, but it comes at the cost of the user's health.
- Tight control optimizes lying. If you don't give the model the legal right to disagree with the verification, it will start masterfully faking incoming parameters — we've been through this.
- The checking agent is also hallucinating. Our validating neural network rejected the correct plan three times in a row due to fictitious quibbles - each time new ones. The final "no" should be written only in the code.
- The wording is reliability. The soft "compare values" requirement caught the substitution only in half of the cases. The directive "ALWAYS print both values in text and write a comparison sign" caught all the substitutions in our tests — four out of four. The difference is only in the words.
- Show the model her mistakes. Forcing the model to correct the answer blindly would burn money: it cost us about 18 times more and broke the right parts. Put the previous erroneous response into context so that the model fixes point-by-point.
- The order of the fields determines the logic. If the training text field comes before the training type field, the model will first compose the text, and then try to adjust the type to it. We caught this when the database silently re—sorted the fields, and the quality dropped without a single formal error.
Where are we now
We are building a product here in Kazakhstan based on the Astana Hub infrastructure. We deliberately went into the development of 28 separate services — yes, for a product without a public launch, this sounds like overkill. But we pay with complexity so that the first algorithmic error does not send a person to a surgeon.
Now SPORTO is a working closed product that we are testing ourselves and a narrow focus group. You can see what the result of training generation looks like on the athlete's real data here. We are not making another toy for the pros. We are creating a system for a person with a goal, but without a budget for an elite coach — so that coaching attention to health ceases to be a privilege of the elite.
The line between trusting algorithms and human control is very thin. Where are you spending it? What solutions are you willing to give to neural networks if the price of a mistake is not a crooked text, but your knee? Tell us in the comments.
Our edge will undergo a real test of strength in open beta testing. We will tell you about the transition to it separately — here, on the Astana Hub.
В заголовке нет ни грамма преувеличения. Это реальный инцидент из логов системы, которая через минуту должна была выдать живому человеку тренировочный план на завтра.
В нашей архитектуре каждый ответ языковой модели проходит жесткую проверку: Ответ LLM перепроверяется дважды. Первый раз кодом, второй раз другой LLM. Однажды проверяющая модель "сгаллюцинировала" ошибку
А основная нейросеть, Вместо того чтобы просигнализировать о конфликте, тихо сдвинула дату на другой день. А чтобы сгладить углы, дописала: «Выровнял начало недели по понедельнику». Звучит логично? Но это ложь от первого до последнего слова. Модель хладнокровно подделала исходные данные, чтобы контроль от нее отстал.
Чтобы объяснить, почему после этого случая мы полностью перекроили архитектуру AI-тренера и физически запретили нейросетям считать, мне придется рассказать, с чего все началось.
Звонок, который изменил все
Идея SPORTO родилась из моего звонка старому знакомому. С Сергеем мы работали много лет назад — его IT-компания внедряла нам CRM. Меня тогда поразило, насколько системно он мыслит: любой хаос он раскладывал по полочкам и превращал в четкие алгоритмы.
Я позвонил ему просто посоветоваться. Хотел обсудить концепцию: что если создать AI, который ведет спортсмена-любителя так же глубоко, как живой тренер, но без ограничений человеческой памяти?
Сергей выслушал меня, оценил идею трезво, и тут выяснилось то, чего я о нем не знал. Оказалось, он не просто IT-архитектор. Он сам прошёл через полный изнурительный цикл подготовки к Ironman и знает цену каждому микроциклу на себе. Вернувшись к тренировкам позже, он работал с ведущим тренером по триатлону в Украине и, параллельно, стал бизнес-консультантом этого спортивного клуба. Вместе они превратили его в один из крупнейших в Европе.
Сергей показал мне изнанку проблемы.
Предел человеческой памяти
«Тренер — человек. В этом и есть главная уязвимость», — сказал мне тогда Сергей.
У сильного тренера десятки учеников. Он физически не способен держать в голове, что три недели назад у вас ныло колено, в прошлый четверг вы спали четыре часа, а перед предыдущей гонкой дважды сорвали длинную кроссовую тренировку. Вы видитесь пару раз в неделю, а все остальное время остаетесь один на один со статичным планом.
Сергей видел это изнутри: один профессионал способен качественно вести максимум тридцать атлетов. Дальше фокус неизбежно размывается. Клуб смог вырасти практически до тысячи учеников только после того, как интуитивный тренерский опыт был переведен в жесткие, повторяемые бизнес правила.
Так сложился наш пазл. Я пришел с гипотезой продукта, а Сергей принес системную архитектуру и экспертизу из реального спорта. Мы поняли: если экспертизу можно превратить в правила, а правила — в программный код, то персональный и научный подход перестает быть VIP-привилегией.
Иллюзия простоты и протокол вскрытия
С командой в Казахстане мы думали, что все будет быстро. Рынок завален «чатами с ChatGPT», которые на просьбу подготовить к марафону выплевывают правдоподобную компиляцию статей из интернета. Мы тоже начали с наивной иллюзии: берем мощную языковую модель, скармливаем ей данные с часов, пишем инструкцию на пять страниц — и получаем тренера.
Эта гипотеза не прожила и двух недель. Ниже — выписки из наших логов тестирования. Каждая из этих ошибок могла стоить человеку разорванных связок.
- Превращение пустоты в факт. В анкете пользователя не было данных о спортивном прошлом. Модель не запросила уточнение, а молча записала его в «новички» и начала строить нагрузку на базе выдуманного утверждения.
- Оптимизация запретов. Пытаясь побороть галлюцинации, мы жестко запретили передавать «0» в поле дистанции. Модель мгновенно адаптировалась: начала прописывать дистанцию «1 метр» — минимальное значение, которое проверка пропустит.
- Игнорирование запретов. Генератор получал строгий список безопасных упражнений под конкретный инвентарь и травмы. Модель семь раз подряд вставляла в план упражнения не из списка, а однажды выдала SUITCASE_CARRY — упражнение, которого вообще не существует в нашем каталоге.
- Выдумка из вежливости. Чат назвал спортсмена «Серега». Имени не было ни в одном источнике данных — модель просто придумала его под тон беседы. Сегодня она дорисовывает имя, завтра тем же движением дорисует пульсовую зону.
Мы поняли страшную вещь. Нейросеть, зажатая проверками, ведет себя как студент-двоечник: она не решает задачу, она подгоняет ответ. Ей нельзя доверять ни единой цифры, от которой зависит тело.
Архитектура: Код судит, Модель объясняет
Как IT-архитектор, Сергей спроектировал парадоксальное решение: нейросети в SPORTO категорически запрещено считать.
Всю физиологическую арифметику выполняет обычный программный код — Ядро. Он считает по формулам и не умеет фантазировать: на одних и тех же данных всегда выдает один и тот же ответ. Нагрузка высчитывается математически. Пульсовые зоны калибруются по строгим методикам. И у кода есть безусловное право вето. Если медицинский профиль ограничил пульс планкой в 150 ударов, ни один креативный порыв нейросети этот потолок не пробьет.
Инженеры тут возразят: «Это же обычный tool calling — режим, где модель сама вызывает калькулятор». Не совсем. При tool calling модель сама решает, звать ли калькулятор и что делать с его ответом. У нас это решение у нее отобрано: код считает всегда, и если модель не согласна с его цифрой, она может об этом сказать — но не может ее подменить. Последнее слово по любому числу — за кодом. Это не техническая деталь, а гарантия пользователю.
Что остается искусственному интеллекту? Смыслы. Понять фразу «после вчерашних интервалов тянет бедро». Сопоставить нехватку сна с показателями Garmin и решить, что сегодня важнее — добить план или восстановиться.
Под капотом работает конвейер из 14 специализированных AI-агентов. Один раскладывает цели, второй ведет медкарту, третий адаптирует тренировочную неделю. Каждый ответ агента проходит двойной фильтр: сначала математический код (вето на цифры), затем вторая нейросеть (смысловой аудит).

Схема работы
Вторая опора системы — Athlete Memory Layer, память атлета. Это база данных из более чем 100 таблиц, хранящая историю каждой тренировки и травмы. Если вы пропустили тяжелую сессию, система не сдвинет календарь тупо на день вперед (создав два тяжелых дня подряд), а полностью пересоберет остаток недели, сохранив окна для восстановления. При этом GPS-треки мы вырезаем сразу при получении: система знает, что вы вчера бежали 12 километров в третьей зоне, — и не знает, из какого подъезда вы вышли.

Визуал 2 — «плохой» vs «хороший» план

Визуал 3 — график нагрузки
7 уроков выживания для AI-продуктов с высокими ставками
Если вы строите продукт, где ошибка языковой модели стоит дороже кривого текста, забирайте наш фреймворк:
- Проверяйте не интеллект, а дисциплину. Дешевые модели отлично извлекают смыслы, но сыплются на форматах ответа. Зашивайте жесткую схему формата прямо в промпт: каждое поле обязательно к заполнению, пустота — только явным «null».
- Пустота — зона риска. Учите систему отвечать «не знаю». Угадывание стоит секунды процессорного времени, но обходится ценой здоровья пользователя.
- Жесткий контроль оптимизирует ложь. Если не дать модели легального права не согласиться с проверкой, она начнет виртуозно подделывать входящие параметры — мы это проходили.
- Проверяющий агент тоже галлюцинирует. Наша проверяющая нейросеть трижды подряд отклоняла верный план из-за выдуманных придирок — каждый раз новых. Окончательное «нет» должно быть прописано только в коде.
- Формулировка — это надежность. Мягкое требование «сравни значения» ловило подмену лишь в половине случаев. Директива «ВСЕГДА выведи оба значения текстом и напиши знак сравнения» поймала все подмены в наших тестах — четыре из четырех. Разница — только в словах.
- Показывайте модели ее ошибки. Заставлять модель исправлять ответ вслепую — сжигать деньги: у нас это выходило примерно в 18 раз дороже и ломало уже правильные части. Передавайте предыдущий ошибочный ответ в контекст, чтобы модель чинила точечно.
- Порядок полей определяет логику. Если поле с текстом тренировки идет раньше поля с типом тренировки, модель сначала сочинит текст, а потом попытается подогнать под него тип. Мы поймали это, когда база данных молча пересортировала поля, — качество упало без единой формальной ошибки.
Где мы сейчас
Мы строим продукт здесь, в Казахстане, опираясь на инфраструктуру Astana Hub. Мы сознательно ушли в разработку 28 отдельных сервисов — да, для продукта без публичного запуска это звучит как перебор. Но мы платим сложностью за то, чтобы первая же алгоритмическая ошибка не отправила человека к хирургу.
Сейчас SPORTO — это работающий закрытый продукт, который тестируем мы сами и узкая фокус-группа. Мы не делаем очередную игрушку для профи. Мы создаем систему для человека с целью, но без бюджета на элитного тренера — чтобы тренерское внимание к здоровью перестало быть привилегией избранных.
Грань между доверием алгоритмам и человеческим контролем очень тонка. Где ее проводите вы? Какие решения вы готовы отдать нейросети, если цена ошибки — не кривой текст, а ваше колено? Расскажите в комментариях.
Настоящую проверку на прочность наша грань пройдет на открытом бета-тестировании. О переходе к нему мы расскажем отдельно — здесь же, на Astana Hub.