pineapples.dev
pineapples.dev
Back to Blog

AI Strategy

AI Workflow Automation Governance: An Emoji Broke It

Published Nov 11, 2026

AI workflow automation governance: emoji hid a $3M minimum. Of 25 leads in six days, 19 were under it, and 12 were answers the parser could not read.

AI Workflow Automation Governance: An Emoji Broke It
A gold coin in the first slot, and a gauge at rest. The answer was there. The rule never fired.

AI Workflow Automation Governance: An Emoji Broke It

On 11/4, one advisor firm on a multi-firm wealth advisory platform set a $3M asset minimum for a lead pool. The firm still received leads far under it.

How do you govern AI workflow automation that feeds business rules? AI workflow automation governance starts by parsing what the model actually emits, then checking the rule against the field it names, on production assignments. Agentic workflows that feed routing, pricing, credit, or eligibility need that test. On this file, 19 of 25 leads missed a $3M minimum.

AI workflow automation governance is the control that tests a model's real output before a deterministic rule treats that output as an answer.

The hub for AI agents and AI governance is what AI governance consulting covers before an agent acts. The two pages beside it are an AI governance checklist before a connector ships and what an AI agent is.

The problem

The intake chatbot prefixes its multiple-choice answers with emoji. Two of them were "🚫 None" and "🪙 Under $50K". The parser only matched plain "None". Its "under" check missed the emoji version. Those answers read as unanswered, or as "$50K and up".

A band with no ceiling never falls below a minimum, so the rule was skipped.

What we found

Of 25 leads routed to an advisor with a $3M minimum in six days, 19 were under it. 12 of those came from emoji-prefixed chatbot answers the parser could not read. The bug was silent for six days. It surfaced as an unhappy customer, not an error.

A second gap sat beside the parser. The router checked the minimum against the sum of three savings answers. The firm's minimum is on one of them.

The fix

The fix is merged. Strip leading emoji and symbols before parsing. Keep the raw answer stored. Check the minimum against the right answer. When that answer is missing, keep every firm eligible, as before.

What changed

The 25, the 19, and the 12 are the six days the bug was live. The picture and the comparison are the code that merged. This post has no new production count after the fix.

Before and after a lead routing rule. Chatbot answer, parser, band, then routing check. Before, a chatbot answer of [no-entry emoji] None or [coin emoji] Under $50K hits a parser that matches plain None only and misses the emoji form of under, so the answer reads as unanswered or as $50K and up. A band with no ceiling never falls below a minimum, so the rule is skipped. The routing check compares the minimum with the sum of three savings answers. After, the raw answer stays stored, leading emoji and symbols are stripped before parsing, the minimum is checked against the one answer the firm set it on, and a missing answer keeps every firm eligible.
Chatbot answer, parser, band, and routing check, before and after. Before: emoji stayed on the answer, the parser missed it, a band with no ceiling skipped the rule, and the minimum was checked against the sum of three savings answers. After: the raw answer stays stored, leading emoji and symbols are stripped, and the minimum is checked against the one named answer. A missing answer keeps every firm eligible. Of 25 leads, 19 were under a $3M minimum. 12 came from emoji the parser could not read. Source: lead routing on a multi-firm wealth advisory platform.

Before

  • Chatbot answer. The emoji prefix stayed on the string the parser read. Two answers were "🚫 None" and "🪙 Under $50K".
  • Parser. It matched plain "None" only. The "under" check missed the emoji version. The answer read as unanswered, or as "$50K and up".
  • Band. A band read as "$50K and up" has no ceiling. It never falls below a minimum, so the rule was skipped.
  • Routing check. The minimum was checked against the sum of three savings answers.

After

  • Chatbot answer. The raw answer stays stored. Parsing uses a copy with leading emoji and symbols stripped.
  • Parser. The stripped string is what the match sees, so "None" and "Under $50K" can be read.
  • Band. "Under $50K" is under a $3M minimum, so the minimum can apply.
  • Routing check. The minimum is checked against the one answer the firm set it on. A missing answer keeps every firm eligible, as before.

What to test in your own stack

  1. Level 0, trust the spec. The parser was built to match plain "None", and to catch the word "under". The chatbot emitted "🚫 None" and "🪙 Under $50K". The text the rule expected and the text on the wire were different.
  2. Level 1, normalize model output before rules. Strip leading emoji and symbols before the match. Keep the raw answer stored, so the record still shows what the chatbot emitted.
  3. Level 2, check rules against the right field. The firm's minimum is on one savings answer. The router checked the sum of three. The check and the rule were on different numbers.
  4. Level 3, test rules with real production outputs and alert on silent skips. Of 25 leads routed to an advisor with a $3M minimum in six days, 19 were under it. 12 of those came from emoji-prefixed answers the parser could not read. The bug was silent for six days. It surfaced as an unhappy customer, not an error.

Parse what the model actually emits, measured on production assignments, not what the spec said it would emit.

When you do not need this

You do not need this when the rule never reads model text, and a skipped rule already shows up as an error the same day. This rule read chatbot text, and it stayed silent for six days.

Why a buyer tests the output

Every AI front end that feeds a deterministic rule (pricing, routing, credit, eligibility) is a control a diligence team or operating partner should test with real outputs.

Small models are now pitched at repetitive agent work like tool calls, routing, and extraction. Routing is exactly where a model's formatting habits leak into rules.

If that is the test you want on a live assignment path, the production version is agentic workflows. Talk to us.

Related reading

Frequently asked questions

How do you govern AI workflow automation that feeds business rules?

Parse what the model actually emits, check the rule against the field it names, and measure both on production assignments. On this file, 19 of 25 leads routed to an advisor with a $3M minimum were under it. The rule skipped in silence for six days.

What is AI workflow automation governance?

AI workflow automation governance is the control that tests a model's real output before a deterministic rule treats that output as an answer. The test belongs on routing, pricing, credit, and eligibility, measured on production assignments.

Why did leads under a $3M minimum still get routed?

The intake chatbot prefixed answers with emoji, including "🚫 None" and "🪙 Under $50K". The parser only matched plain "None", and its under check missed the emoji version, so those answers read as unanswered or as "$50K and up". A band with no ceiling never falls below a minimum, so the rule was skipped.

What else was wrong with the minimum check?

The router checked the minimum against the sum of three savings answers. The firm's minimum is on one of them. The merged fix checks the minimum against that answer, and a missing answer still keeps every firm eligible.

How do you catch a rule that skips without an error?

Test the rule with real production outputs, not with the text the spec said the model would emit. Of 25 leads in six days, 19 were under a $3M minimum, and 12 of those came from emoji-prefixed answers the parser could not read. The bug surfaced as an unhappy customer, not an error.

Written by Anthony Wentzel

Keep reading