Skip to main content
2026-W28

W28: Putting circuit breakers on the AI customer chat

A week focused on making AI answers to customers predictable — deterministic language safeguards in the Vanilla Travel chat, plus a new project story about an autonomous AI radio station on the biznesam.ai blog.

LV EN
Highlights
  • Deterministic LV-quality safeguards on the Vanilla Travel chat — mangled words and invented destinations no longer reach the customer
  • P0 stability: one shared frontmatter module unblocked 52 articles that previously couldn't be saved
  • New project story on the biznesam.ai blog — Radio Viens, an autonomous AI radio station as an MVP
Insights
  • You don't make a generative system safe with a better prompt alone — you need a deterministic layer that guarantees a given word never reaches the customer
  • Pay for model power by the task, not by habit — general answers to the fast model, fact-dense ones to the powerful model
  • One shared library fixes dozens of symptoms in a single place — 52 broken articles were one parser bug
Mistakes
  • AdminChatBot crashed after a regression because the hooks order was broken again — a fix that had already shipped once came back
  • The Radio Viens article took six iterations before the tone settled — the first version was too personal

Ecosystem overview

This was an engineering week. The core work circled one question — how to make a generative AI answer predictable when a paying customer is the one reading it. In parallel, we added a new project story to the biznesam.ai blog, but the heaviest load sat on the Vanilla Travel chat and content system.


Vanilla Travel

In the vt-blog chat we introduced a deterministic LV-quality layer directly on the reply path. The idea is simple but important: a prompt alone doesn’t guarantee a bad word won’t reach the customer, so we added a normalizer that guarantees it — the awkward “virsotne”, for example, no longer reaches customers. We also fixed the price answer, which used to invent mangled destination lists (Tier-2 ban + canary guard), and deal-timing answers that spoke B2B language (“darījumi”) where a B2C tone is needed.

The second big block was P0 stability in the content editor. The frontmatter parser was dropping object-array continuation lines, which left 52 destination articles unsavable — fixed with one shared js-yaml frontmatter module, a lint gate, and editor save durability. On top of that, D-011 content-type model routing: general answers to the fast model, fact-dense ones to the powerful model. The CharterSearch adapter was prepared but kept behind an off flag (T-016).

The vanilla-travel repo itself had a quiet week — a single hygiene action that untracked 51 log files and added *.log to gitignore (CQO audit, CEO-authorized).


biznesam.ai

A new project story went up on the blog — Radio Viens, an autonomous AI radio station as an MVP example. The article went through six iterations: from performer strategy and the private/client project nuance, to a rewrite with gpt-5.6-luna, a radio banner and a tightened ending, adding a news section, and finally reshaping it into a neutral, impersonal form. The SMM hooks were reworked without the manipulative “opposite” / “you think” tricks. The week closed with the daily AI briefing post.


Insights

  • You don’t build a safe generative system with a prompt alone. You need a deterministic layer that delivers a guarantee, not a probability — a specific word or invented destination never reaches the customer.
  • Choose model power by the task. A general answer is fine on the fast model; save the powerful one for fact-dense answers. That’s cost discipline in practice.
  • A shared library fixes symptoms at the root. 52 broken articles weren’t 52 problems but one — a parser bug in a single place.

Mistakes and lessons

A regression that came back. AdminChatBot crashed because the hooks order was broken again — the draft-buffer useEffect sat after an early return. This had already been fixed once (#65) and returned (#66). The lesson: write the regression test against the specific bug, not just the symptom.

Tone takes iterations. The Radio Viens article needed six versions before the tone settled. The first was too personal; the final result is neutral and impersonal. We should have seen that upfront, not after the fifth rewrite.