Stop Writing Tone Instructions. Layer Them. - Isadora Martin-Dye, Isadora & Co
Description
Brand voice that survives real users isn't an instruction you write once - it's an architecture. Drawing on production code from a wedding venue, a personal AI companion, and a tool for families of missing people, this talk breaks voice into four layers: immutable identity, situational mode, example-anchored voice, and a deterministic post-generation veto. The difference between a prompt that holds and one that breaks on turn 21 is knowing which job belongs to which layer. Speakers: - Isadora Martin-Dye (Isadora & Co | The Bloom House AI): Isadora Martin-Dye is the founder of Isadora & Co, a portfolio of four ventures spanning hospitality and AI: she speaks on vertical AI and on what it actually takes to design software for the relationship-driven, emotionally heightened audiences other AI products keep getting wrong. LinkedIn: https://www.linkedin.com/in/isadora-martin-dye-226353a1
Summary
Generated by claude-sonnet-4-5At-a-Glance
- Verdict: Watch fully
- Core thesis: Single-prompt AI voice systems fail at scale because they conflate four distinct jobs—immutable constraints, situational adaptation, expressive tone, and post-generation validation—into one probabilistic mechanism that eventually breaks on edge cases.
- Why it matters: This is hard-won production architecture from someone who shipped AI agents handling high-stakes customer relationships (luxury weddings, missing persons cases) where a single wrong sentence costs more than money—it destroys trust. The four-layer stack separates deterministic constraints from probabilistic voice, preventing catastrophic failures like hallucinated dates or AI claiming physical presence.
- Best use: Study as a reference architecture for any customer-facing AI that must maintain brand voice while guaranteeing factual accuracy and contextual appropriateness. The mental model—'managing a brilliant intern with high IQ and terrible EQ'—reframes prompt engineering as organizational design, not just text optimization.
Executive Summary
Isadora Martin-Dye runs a 225-year-old wedding venue and built AI agents for couples, venue staff, a personal companion app, and Threadline (a missing persons tool). Her core insight: treating AI as 'a brilliant intern with photographic memory but zero emotional intelligence' changes everything. Single system prompts work on the 'happy path' (anticipated questions) but fail catastrophically on turn 21—the first edge case examples didn't cover—producing technically correct but socially/factually wrong responses. The problem isn't bad examples; it's asking one prompt to simultaneously enforce hard rules, adapt to context, express brand voice, and self-check.
Her solution is a four-layer architecture that separates fundamentally different jobs. Layer 1 (Immutable Identity) encodes hard rules the brand can never violate—AI must disclose it's AI upfront, cannot claim physical presence, and (for Threadline) can never use words like 'confirmed' or 'matched' when discussing missing persons. Layer 2 (Situational Mode) injects real-time context—who the user is (couple vs. venue coordinator), what they're going through (parent in chemo), engagement patterns—before the model generates. Layer 3 (Example-Anchored Voice) is the traditional tone guide with examples, where most teams stop. Layer 4 (Post-Generation Veto) reads actual output and deterministically blocks responses that violate constraints—like offering unavailable dates or hedging instead of answering.
The talk's critical insight: Layers 1-3 are probabilistic instructions (prompt engineering—you're asking nicely). Layer 4 is deterministic permission (systems engineering—you're checking before shipping). A prompt will eventually lose; the only question is whether you discover that in testing or in front of a customer. The architecture proved itself across wildly different stakes: wedding venues where warmth matters vs. Threadline where saying 'match' to a grieving parent is the most damaging thing the product could do. Multi-tenancy works by keeping Layer 1 universal, Layers 2-3 per-venue, and assembling prompts in fixed order every time.
She built this after watching 24 scattered system prompts fail in production—AI offering booked dates, speaking in the wrong venue's voice, treating engagement drops as cold leads instead of families under strain. The fix wasn't better examples; it was pulling apart conflated responsibilities. She's still iterating: the veto should be a shared service (not manually wired per surface), Layer 2 mode detection should be centralized, and she's choosing deterministic regex over probabilistic classifiers for now despite narrower coverage. The pattern isn't a framework to sell—it's what happens when system prompts fail enough times and you learn the difference between sounding right and being safe to ship.
Key Takeaways
- Claim: Single system prompts fail because they ask one probabilistic mechanism to simultaneously be situational, inviolable, expressive, and self-checking—jobs that are fundamentally incompatible. | Evidence: Martin-Dye's production AI had 24 scattered system prompts that kept offering booked dates, claiming physical presence ('I'd love to show you around'), and speaking in other venues' voices. The failures weren't random—they happened on 'turn 21,' the first edge case examples didn't cover, where the model defaulted to statistically likely but contextually catastrophic responses. | Caveat: The four-layer architecture adds complexity and requires careful ordering (hard rules first, tasks last). It's overkill for low-stakes use cases like product search, but necessary where 'a single wrong sentence can cost more than a refund' and users 'are exactly the kind of people who notice.' | Implication: For Ken's agent systems: treat prompt architecture like organizational design, not text optimization. If your AI handles anything where trust, factual accuracy, or brand consistency matter (customer support, sales, content creation with your voice), you need separate layers for constraints (deterministic), context (dynamic), voice (learned), and validation (automated check). The 'brilliant intern' mental model should inform how you structure guardrails. | Timestamp: timestamp unavailable
- Claim: Layer 1 (Immutable Identity) must encode hard rules that cannot be overwritten by any lower layer, venue config, or user instruction—these are structural constraints, not preferences. | Evidence: Every AI in Bloom discloses it's AI in the first response 'not if asked, but before they ask' (product decision, not legal). The physical presence boundary forbids 'I'd love to show you around' (AI has no body) and only allows 'The team would love to host you for a tour.' For Threadline, Layer 1 bans words like 'confirmed,' 'identified,' 'matched,' 'proven,' 'linked,' 'solved'—telling a grieving parent their child has been 'matched' when the system only has probabilistic similarity is 'the single most damaging thing that a product could ever do.' | Caveat: Layer 1 rules must be carefully chosen—they're immutable, so you can't A/B test or easily iterate. Martin-Dye made upfront AI disclosure a bet that early transparency builds more trust than discovery on turn 7, but that's a product decision that could backfire if users ghost AI agents. | Implication: For Ken's content/investing work: define the factual and ethical boundaries your AI absolutely cannot cross, regardless of tone or user request. If generating investment analysis, Layer 1 might forbid 'this is financial advice' or claiming to predict markets. If generating content in your voice, it might forbid claiming expertise you don't have or inventing quotes. These aren't prompt tweaks—they're architectural constraints that prevent catastrophic trust violations. | Timestamp: timestamp unavailable
- Claim: Layer 2 (Situational Mode) injects real-time context about who the user is and what they're going through before the model generates, changing the 'route' while keeping the same 'destination.' | Evidence: The same AI talks to couples (warm, customer-facing) and venue coordinators (colleague, analytical). A coordinator asking 'Will inquiries be up in June?' gets 'I can't forecast that confidently, here's the trend'; a couple never gets hedged like that. Soft context notes (parent in chemo, navigating grief) are rendered before numeric constraints so the model sets tone from human context first—reversing the order 'makes the prose feel mechanically slotted.' When a couple's engagement drops and the AI knows about chemo, it reads as 'family under strain' not 'cold lead to chase.' | Caveat: Layer 2 detection is still partly manual in her codebase—each surface decides which conditions apply (heat narration loads couple notes, briefing doesn't). She flags this as needing centralization into a 'proper condition resolver' that makes context routing explicit and automatic. | Implication: For Ken's agent workflows: build context awareness into prompt assembly, not as an afterthought. If an AI assistant is helping with deal flow, knowing whether Ken just closed a fund, is in fundraising mode, or dealing with a portfolio fire should shape tone and proactivity before generation. The key insight: 'The voice doesn't change. What changes is the route.' Context isn't about personality—it's about routing the same core logic through different real-time conditions. | Timestamp: timestamp unavailable
- Claim: Layer 3 (Example-Anchored Voice) is where most teams start and stop, but examples alone cannot force rules, respond to context, or catch failures—they're training for the happy path, not guarantees for edge cases. | Evidence: The traditional 'write in our brand voice' prompt is like handing an intern an induction pack on day one—it teaches what good looks like on anticipated questions, but has 'nothing to say' when a user asks something examples never covered. In Bloom's system, coordinators rate AI responses and the AI learns from edits (real feedback loop), but even well-trained voice can't prevent hallucinated dates or enforce physical presence boundaries. | Caveat: Examples are still valuable—they're 'a really good training exercise' and can be iteratively improved via human feedback. But treating them as the whole solution is a 'category error.' The talk doesn't claim examples are useless, just that they're the wrong tool for guarantees. | Implication: For Ken's content generation: few-shot examples and style guides should shape voice and structure, but don't rely on them to prevent factual errors, off-brand claims, or policy violations. If an AI is drafting investment memos in Ken's voice, examples will nail the tone ('this feels like Ken wrote it'), but won't stop it from citing a deal that didn't happen or claiming Ken said something he didn't. That requires deterministic checks (Layer 4) and immutable rules (Layer 1). | Timestamp: timestamp unavailable
- Claim: Layer 4 (Post-Generation Veto) is the only deterministic layer—it reads actual output and blocks shipment if constraints are violated, catching what probabilistic prompts inevitably miss. | Evidence: The 'Numbers Guard' is a hard reject—if the model offers a date not in the allowlist, the response doesn't ship. This layer exists because the AI kept offering booked Saturday dates in October despite prompts saying not to invent availability. 'Every layer above did its job. The identity rules held. The mode was right. The voice was perfect. But the voice was also the problem'—warm confidence offering something that doesn't exist is worse than coldness because the couple now believes they have a date. The 'Honesty Inspector' soft-flags responses that hedged instead of answering. False positives (humans double-check a fine response) are acceptable; false negatives (hallucinated numbers or privacy violations shipping) are not. | Caveat: The soft flag currently uses deterministic regex, not a classifier. Martin-Dye is 'choosing determinism over coverage'—regex never gets it wrong on covered patterns, but a probabilistic classifier might catch edge cases she hasn't written patterns for yet. She acknowledges this is 'a real trade-off and not an obvious win,' depending on use case. | Implication: For Ken's AI systems: build automated validation as a separate service that all output passes through before shipping. If generating investment analysis, the veto checks cited figures against source documents. If generating emails in Ken's voice, it flags responses that make commitments Ken didn't authorize. The key: 'Prevention is the prompt. Veto is the check. You need both because the prompt will eventually lose, and you don't want to find out it lost by reading a couple's reply.' Instructions are probabilistic; permission is deterministic. | Timestamp: timestamp unavailable
- Claim: In multi-tenant systems, brand identity must never have a default—missing identity should crash loudly, not fail silently, because the quiet failure is speaking in a stranger's voice. | Evidence: Before the fix, every venue was shipping emails as 'Sage at HawthorneManor.com' (Martin-Dye's venue) instead of their own identity—a 'critical white label leak.' The fix: brand identity must come from venue config; if missing, the system throws an error. 'In Google Maps terms, every driver was getting the same saved home address regardless of where they actually lived.' Users don't know why something feels off, but 'they just know it does, and the trust erodes before anyone on your team even knows there's a problem.' | Caveat: This requires careful architecture—Layer 1 is universal, Layers 2-3 are per-tenant, and the assembler must enforce the load order. Martin-Dye notes the current setup works but 'the veto should be its own service, not wired individually into each surface' to prevent accidental opt-out. | Implication: For Ken's multi-client or multi-context AI work: never default to a fallback identity. If building AI tools for portfolio companies, each must explicitly pass their config; missing config should halt, not default to 'Ken's firm' voice. The principle applies internally too—if different AI agents handle different Ken contexts (investor, content creator, operator), each must explicitly declare its mode. Silent fallbacks create subtle trust erosion that users feel but can't articulate. | Timestamp: timestamp unavailable
- Claim: The core distinction is 'Instructions are probabilistic; permission is deterministic'—Layers 1-3 are prompt engineering (asking nicely), Layer 4 is systems engineering (checking before shipping). | Evidence: Martin-Dye's framing: 'The first three layers are all instructions. Identity, conditions, and voice. They're all things you tell the model, and the model usually listens. Usually. They are a request. The fourth layer is not a request. It is reading what actually came out and decides whether to allow it to leave your business.' The entire talk builds to this: 'Everything before layer four is prompt engineering—you're asking nicely and hoping. Layer four is systems engineering—you're checking and you are sure.' | Caveat: This architecture adds latency and cost (extra model call or deterministic check after generation). For low-stakes, high-volume use cases, it might be overkill. Martin-Dye built this for high-stakes, relationship-driven interactions where 'users aren't testing your brand voice, they are trusting it.' | Implication: For Ken's AI strategy: separate prompt optimization (making the model want to do the right thing) from validation (ensuring it did the right thing before consequences occur). If deploying AI in production—especially customer-facing, brand-representing, or factual-accuracy-critical contexts—prompt engineering alone is a bet that 'usually' is good enough. Systems engineering turns 'usually' into 'guaranteed for defined failure modes.' The question isn't whether prompts will eventually lose; it's whether you discover that in testing or in production. | Timestamp: timestamp unavailable
Detailed Brief
The Core Problem: Single-Prompt Systems Conflate Four Incompatible Jobs
- Claims: Standard advice is 'write a detailed system prompt, describe brand voice, give examples'—this works on the happy path but fails on turn 21, the first edge case examples didn't cover.; The model does something 'technically correct that your brand would never say'—not wrong exactly, but not you.; This matters most 'where the voice is the product'—luxury hotels, high-end real estate, wedding venues—where a single wrong sentence can cost more than a refund and users 'are exactly the kind of people who notice.'; 'Write in our brand's voice' is a comment that says 'just make it work'—it does nothing the model wasn't already trying to do, and it keeps failing because you're asking one prompt to do four completely different jobs.
- Evidence: Martin-Dye's production system had 24 different system prompts scattered across the codebase—some named Sage, some nameless, some named Venue—every surface had its own idea of who it was.; Real failure: AI kept offering booked dates to couples, claiming physical presence ('I'd love to show you around'), speaking in other venues' voices.; The mental model: 'I'm managing a brilliant intern with incredibly high IQ and terrible EQ—photographic memory for whatever I've told them on the first morning and absolutely no instinct for when to read the room. They will say something technically perfect and socially catastrophic in the same confident sentence.'
- Caveats: The four-layer architecture is more complex than a single prompt—it requires careful ordering, multi-file coordination, and ongoing refinement (Martin-Dye lists three things she'd build differently).; Not all use cases need this—she's explicit that this matters 'where the voice is the product,' not for product search on retail sites.; The talk doesn't provide full code implementation, just architectural principles and comment snippets from the actual codebase.
- Implications: For Ken's AI agent design: framing AI as 'managing an intern' vs. 'programming a robot' changes everything. Interns need structure, oversight, and checks before their work ships. Robots need rules and are trusted to execute.; If building customer-facing agents, content generators, or any AI representing Ken's brand/expertise, a single prompt is a ticking time bomb—it will work until it spectacularly doesn't, and you'll discover the failure in production.; The four jobs that must be separated: (1) immutable constraints the brand cannot violate, (2) situational adaptation to user context, (3) expressive brand voice and tone, (4) post-generation validation before shipping.
Layer 1: Immutable Identity—Hard Rules That Cannot Be Overwritten
- Claims: Layer 1 is 'what the brand structurally cannot say'—these are constraints, not preferences. 'The route can change, the rules don't.'; Hard rules cannot be overwritten by venue config, voice profile, or user instruction.; Example rule: 'If the person you're talking to ever asks about whether you are a real person, a human, a live agent, a bot, an AI, you must confirm that in your very next message. Clearly and unambiguously confirm you are an AI assistant.'; Every AI in Bloom discloses it's AI in the first response, not if asked but before they ask—'a product decision, not a legal one.' The bet: couples who know from the start will trust more than those who discover it on turn 7.; Physical presence boundary: 'You are software. You do not have a body. You cannot physically show somebody around the property or meet anyone in person.' Always forbidden: 'I'd love to show you around' or 'I can't wait to meet you in person.' Always allowed: 'The team would love to host you for a tour.'; The voice layer wants to be warm (first person), and with AI that naturally leads to 'I can't wait to show you around'—but AI has no body, so 'that warmth unconstrained produces a lie.' The moment a user realizes 'they have been performing a relationship with someone who was never there, the trust doesn't just dip—it implodes.'
- Evidence: Cross-product proof: Threadline, a tool for families of missing people, uses identical architecture but wildly different Layer 1 rules. Threadline AI can never use words like 'confirmed,' 'identified,' 'matched,' 'proven,' 'linked,' 'solved.'; 'For a wedding venue, layer one stops the AI from pretending it has a body. It's mildly embarrassing if that slips. For a missing person tool, layer one stops the AI from ever telling a person that their person has been found.'; 'The word match said to someone who has spent years not knowing where their child is, is not just a tone violation. It is the single most damaging thing that a product could ever do. And the model has no idea. It's reaching for the word match because statistically it is the natural word, but it's going to reach for it with the same level of confidence. And it cannot bring that level of confidence to someone who is grieving.'
- Caveats: Layer 1 rules are immutable, so they must be chosen carefully—you can't A/B test or easily iterate once they're architectural.; The upfront AI disclosure is a bet, not a proven pattern—some users might ghost AI agents if told immediately, though Martin-Dye believes transparency builds more trust than delayed discovery.; Defining what 'the brand structurally cannot say' requires deep product and ethical thinking—it's not just about legal compliance ('not because of a compliancy checklist, but because your users are not stupid and building as though they are always backfires').
- Implications: For Ken's AI systems: identify the non-negotiable factual and ethical boundaries first, before voice or examples. If generating investment analysis, Layer 1 might forbid 'this is financial advice' or claiming to predict future returns. If generating content as Ken, it might forbid inventing quotes or claiming expertise Ken doesn't have.; Layer 1 is where you encode 'things that are true regardless of how warm you want your brand to sound'—it's about preventing catastrophic trust violations, not optimizing tone.; The 'brilliant intern with terrible EQ' mental model is key: the model will confidently reach for statistically likely phrases that are contextually catastrophic. Layer 1 makes those phrases architecturally impossible, not just discouraged.
Layer 2: Situational Mode—Real-Time Context That Changes the Route
- Claims: Layer 2 is 'the layer that most teams never build at all'—they write one system prompt and send it to everyone, regardless of who they are or what they're going through.; 'Google Maps doesn't do that. It's going to know if there's an accident on your route. It might not know if you're low on fuel. It might learn that you prefer the scenic route, but it's going to factor all these different things in before the routes, not after once you tell it.'; Condition 1: Adjust to who you're talking to. The same AI talks to couples (warm, customer-facing) and venue coordinators (colleague, analytical). Same destination (right answer), completely different roads.; From the coordinator rules: 'You are in the same character that the couple interacts with, so you mustn't fall into a generic intelligence analysis framing'—but it flips depending on audience. Coordinator asks 'Will inquiries be up in June?' → 'I can't forecast that confidently, here's the trend.' A couple should never be refused like that.; Condition 2: What they're going through. 'Not their role, but their life.' Soft context notes (parent in chemo, navigating grief) are used for 'tone, empathy, and what not to say. Never quote them verbatim.'; The assembler deliberately renders soft context before numeric constraints—'Tone is set by human context first, then numeric constraints. Reversing the order makes the prose feel mechanically slotted because the model is already committed to the numeric framing before it reads the qualitative tone fuel.'
- Evidence: Real codebase example: heat map tracks how often they hear from couples. If a couple's engagement drops and the AI knows a client has 'a mom in chemo for three weeks,' it narrates that drop very differently than a heat drop with no context.; 'This is the opposite of the lie problem. Layer one is what the AI must never pretend. Layer two is about what the AI already knows and letting that shape its behavior honestly rather than driving past the roadworks if it isn't there.'; 'The voice doesn't change. What changes is the route. When their engagement drops and you know them in chemo, that reads as a family under strain, not a cold lead or a problematic couple to chase.'
- Caveats: Layer 2 mode detection is 'still partly manual' in her codebase—each surface decides which conditions apply (heat narration loads couple notes, briefing doesn't). She flags this as a limitation: 'A proper condition resolver would make that decision explicit and central.'; Soft context notes must never be quoted verbatim—'A couple navigating grief should hear gentleness, not a quote about loss'—which requires careful prompt design to use notes for tone without parroting them.; There's a risk of over-personalizing or making incorrect inferences from limited context, though Martin-Dye doesn't explicitly address this.
- Implications: For Ken's AI workflows: build dynamic context injection, not static prompts. If an AI assistant helps with deal flow, knowing Ken just closed a fund vs. is in fundraising mode vs. dealing with a portfolio fire should shape proactivity and tone before generation.; Context isn't about personality; it's about routing. The same core logic (give the right answer) can take completely different paths depending on who the user is and what they're experiencing.; The insight about rendering soft context before numbers is operationally useful: let the model set emotional tone from human context first, then satisfy data constraints. This prevents 'mechanically slotted' prose that sounds like a form letter.
Layer 3: Example-Anchored Voice—Where Most Teams Start and Stop
- Claims: Layer 3 is 'the tone guide'—the dials, the phrase list, the examples. 'If we're keeping the internal analogy, it's the induction pack. The folder of good examples you hand them on day one and say sound like this.'; 'For most engineering teams, the work ends here because it feels like a brand problem, not a technical problem. Someone in marketing owns the tone guide. It's given to them. The engineer wires it in and job done.'; The induction pack is fixed—it's written before the intern has ever met anyone, doesn't know who walked in the door, has no context.; 'Writing in our brand voice' is a good training exercise, but it cannot force a rule that the brand can never break (that's Layer 1), cannot respond to who this person is and what they're going through (that's Layer 2), and cannot catch the model producing something it shouldn't have done (that will be Layer 4).; 'Examples teach the model what good looks like on the happy path. On turn 21, where the user asks the things that examples never cover, the phrase list has nothing to say. It's not a failure of the examples. It's a category error. Examples are not the right tool for guarantees. They were never designed to be.'
- Evidence: In Bloom, they brought in a voice training exercise where 'the person can dial in the brand voice'—and crucially, 'it can actually be trained from the coordinator rating actual AI responses. And the AI learns from the edits that the coordinators have made.'; Real human feedback loop improves Layer 3 over time, but even well-trained voice can't prevent the failures that Layers 1 and 4 are designed to catch.
- Caveats: Martin-Dye doesn't dismiss examples—they're valuable for teaching voice and can be iteratively improved via human feedback. The limitation is treating them as the whole solution.; She doesn't provide details on the voice training implementation or how coordinator edits are fed back into the model (fine-tuning, prompt updates, retrieval-augmented examples, etc.).
- Implications: For Ken's content generation: few-shot examples and style guides are essential for voice and structure, but they're not safety mechanisms. They'll make AI sound like Ken, but won't stop it from inventing a deal, citing a non-existent source, or making a claim Ken wouldn't make.; The 'category error' framing is crucial: examples are training, not guarantees. If you need guarantees (factual accuracy, policy compliance, brand constraints), you need deterministic checks (Layer 4) and immutable rules (Layer 1).; Human-in-the-loop feedback (coordinators rating responses, learning from edits) is a promising way to continuously improve Layer 3 voice without over-relying on static examples.
Layer 4: Post-Generation Veto—The Only Deterministic Layer
- Claims: Layer 4 is 'the only layer that actually reads what came out'—it's automated, cheap, and 'the only part of the whole architecture that isn't a prompt.'; 'You wouldn't let a new intern send a client email blind. Someone's going to read it first. And layer four is that read.'; Two types of vetoes: (1) Soft flag (Honesty Inspector)—flags responses that slipped a rail (e.g., didn't answer the question, hedged when it shouldn't). 'A false positive means someone double checks to find a response. A false negative means a hallucinated number or a privacy violation that ships to a client.' (2) Hard reject (Numbers Guard)—rejects output if it violated expense-of-failure rules (e.g., confidently stated a figure that was never given).; Layer 4 exists because of a specific recurring failure: 'The AI would keep offering dates to my clients that did not exist.' A couple writes in about a Saturday in October, the model wants to be warm (Layer 3 doing its job), so it says something lovely about how beautiful the property is and 'how it would love to hold the date for them. Except that date is booked.'; 'Every layer above did its job. The identity rules held. The mode was right. The voice was perfect. But the voice was also the problem. A warm, confident voice offering something that isn't real is worse than a cold one because the couple now believes they have a date. You haven't given them good service. You've given them disappointment with a 48-hour delay on it.'
- Evidence: The Numbers Guard is a hard reject: if the model offered a date that isn't in the allowlist, the response doesn't ship. 'The veto is actually the cheapest layer to build, and it's the only one that's deterministic. It reads what the model actually wrote, not just what you asked it to write. And it checks the specifics against what is real.'; 'Prevention is the prompt. The veto is the check. You need both because the prompt will eventually lose, and you don't want to find out that it lost by reading a couple's reply.'; The talk builds to this: 'The first three layers are all probabilistic. There are instructions to a system that usually follows instructions. Usually is completely fine when the cost of being wrong is a slightly off-brand sentence. It is not fine when the model is confidently inventing a fact that a real person is about to act on. A date, a price, a policy, a promise.'
- Caveats: The soft flag currently uses deterministic regex, not a classifier. 'Regex is fast and cheap and deterministic. It either matches or it doesn't. It never gets wrong on the patterns it covers. A small classifier might catch more edge cases, including the ones I haven't thought to write a pattern for yet. But it is a classifier that is probabilistic. Sometimes it gets it wrong.'; Martin-Dye is 'choosing determinism over coverage'—she'd 'make that choice again as it stands, but it is a real trade-off and not an obvious win.'; Layer 4 adds latency (extra check after generation) and requires maintaining allowlists/blocklists. For high-volume, low-stakes use cases, this might be overkill.
- Implications: For Ken's AI systems: build automated validation as a separate service that all output passes through before shipping. If generating investment analysis, check cited figures against source documents. If generating emails, flag commitments Ken didn't authorize.; The asymmetry of false positives vs. false negatives is critical: better to over-flag and have a human double-check than to let a hallucinated fact or privacy violation ship. Design your vetoes with this bias.; The core lesson: 'Instructions are probabilistic; permission is deterministic. Everything before layer four is prompt engineering—you're asking nicely and hoping. Layer four is systems engineering—you're checking and you are sure.' If you're not checking output before it ships, you're betting that 'usually' is good enough.
Multi-Tenancy and Architecture Lessons
- Claims: It's one architecture with completely different voices—'the seam is calling one function.' Layer 1 is identical for every tenant. Layers 2 and 3 are per-venue.; 'This is how a codebase serves venues with completely different personalities, different things like the ground and thread line without forking. They're the same root logic, different preferences and conditions loaded per driver.'; Critical multi-tenant failure: 'Letting [brand identity fields] default silently caused every venue to ship as Sage at HawthorneManor.com, which was a critical white label leak.'; 'In a multi-tenant system, identity must never have a default. A missing brand identity is a crash, not a fallback. It must fail loud. Because the quiet failure is a venue speaking in a stranger's voice, and the user on the receiving end has no idea why something feels off, they just know it does, and the trust erodes before anyone on your team even knows there's a problem.'
- Evidence: Before the fix, every venue was getting the same default identity—'In Google Maps terms, every driver was getting the same saved home address regardless of where they actually lived.'; The architecture replaced 24 different scattered system prompts with 'one canonical four-layer stack'—single entry point, every narrator goes through it, everything runs in a fixed order every time.; Order is load-bearing: 'Hard rules first, tasks last. You don't check for roadworks after you've already taken the wrong turn.'
- Caveats: Martin-Dye flags architectural improvements she'd make: (1) The veto should be its own service, not wired individually into each surface—'right now, the numbers guard lives inside a heat narration path, and the honesty inspector is a separate function. A new surface remembers to wire it in the veto manually. That's a checklist waiting to be forgotten.' (2) Layer 2 mode detection is still partly manual—'a proper condition resolver would make that decision explicit and central.'; Multi-tenancy adds complexity—you need careful config management, tenant isolation, and testing to ensure Layer 1 universality and Layers 2-3 per-tenant loading work correctly.
- Implications: For Ken's multi-client or multi-context AI: never default identity or config. If building tools for portfolio companies, each must explicitly pass their settings; missing config should crash, not default to Ken's firm voice.; The principle applies internally too—if different AI agents handle different Ken contexts (investor, content creator, operator), each must explicitly declare its mode. Silent fallbacks create subtle trust erosion.; Architectural lesson: make vetoes a shared service by default so new surfaces can't accidentally skip validation. Centralize mode detection so context routing is explicit, not scattered across surfaces.
Notable Concepts & Terms
- Turn 21: The first edge case that examples didn't cover—where the AI does something technically correct but contextually wrong. Represents the inevitable moment when single-prompt systems fail because they lack structure for handling unanticipated scenarios.
- The Happy Path: Every question you've anticipated and given examples for. Standard prompting works here; four-layer architecture is designed for what happens when users leave the happy path.
- Brilliant intern with high IQ, terrible EQ: Martin-Dye's core mental model for LLMs—photographic memory for instructions, zero instinct for reading the room. Changes how you build: not programming a robot (rules and walk away), but managing an intern (structure, oversight, checking work before it ships).
- Four-Layer Prompt Architecture: Layer 1: Immutable Identity (hard rules that can't be overwritten). Layer 2: Situational Mode (real-time context about who the user is and what they're going through). Layer 3: Example-Anchored Voice (tone guide, phrase list, examples). Layer 4: Post-Generation Veto (automated validation before shipping). Order is load-bearing.
- Instructions vs. Permission: Layers 1-3 are instructions (probabilistic—you're asking nicely and hoping). Layer 4 is permission (deterministic—reading actual output and deciding whether to allow it to ship). The core architectural distinction.
- Prompt Engineering vs. Systems Engineering: Everything before Layer 4 is prompt engineering (asking the model to behave correctly). Layer 4 is systems engineering (checking it did behave correctly before consequences occur). Prompts will eventually lose; systems engineering ensures you discover that in testing, not production.
- Google Maps Routing Analogy: Destination is always the same (the right response), but route changes based on real-time conditions. Layer 1: rules true regardless of route (driver's license, can't go backwards on motorway). Layer 2: real-time conditions (traffic, roadworks). Layer 3: preferences for the journey (scenic route). Layer 4: checks the route before you pull away.
- Soft Flag vs. Hard Reject: Two types of Layer 4 vetoes. Soft flag (Honesty Inspector): flags responses for human review (e.g., didn't answer the question). Hard reject (Numbers Guard): deterministically blocks output that violates critical constraints (e.g., offered unavailable date). Bias toward false positives (human double-checks) over false negatives (hallucinations/violations ship).
- Threadline: Martin-Dye's tool for families of missing people—cross-product proof that the four-layer architecture works across wildly different stakes and voices. Same structure as wedding venue AI, but Layer 1 bans words like 'confirmed,' 'matched,' 'identified' to prevent catastrophic trust violations with grieving families.
- Fail Loud: Architectural principle for multi-tenant systems: missing brand identity should crash, not default. Quiet failures (defaulting to wrong venue's voice) create subtle trust erosion users feel but can't articulate. Loud failures (system won't start without config) prevent silent degradation.
Operator Notes / Why Ken Should Care
- This is production-hardened architecture from someone who shipped high-stakes AI agents where trust failures cost more than refunds. The four-layer pattern isn't theoretical—it's what emerged from watching single prompts fail in the wild.
- Key operator insight: single prompts fail because they conflate four incompatible jobs (immutable constraints, situational adaptation, expressive voice, post-generation validation). Pull those apart, give each a dedicated layer, and failure modes that used to be inevitable become preventable.
- The 'brilliant intern' mental model should inform how Ken structures AI systems—especially customer-facing agents or content generators representing his brand. Interns need guardrails, context, and oversight, not just instructions.
- Layer 4 (post-generation veto) is the most underbuilt layer in production AI systems. If Ken's deploying any AI where output ships to users, this talk makes a strong case for automated validation as a separate service that checks actual output, not just prompts.
- Multi-tenancy lesson is broadly applicable: in any system serving multiple contexts (clients, personas, products), identity must never default. Missing config should crash loud, not fail silently with wrong voice/brand.
- The talk is a case study in systems thinking applied to AI—treating prompt engineering as organizational design (how you structure work for an unreliable but capable worker) rather than code optimization (how you write better instructions).
- Useful for Ken's investing lens: this is what product-market fit looks like for AI tooling in high-trust, high-stakes verticals (luxury services, sensitive personal situations). The architecture is the moat—it's hard to replicate because it's learned from production failures, not designed from first principles.
- The asymmetry of false positives vs. false negatives (better to over-flag and double-check than to ship hallucinations) should inform validation design for any AI Ken builds or invests in. The bias is correct when trust is the product.
- Martin-Dye's 'things I'd build differently' section is honest and operationally useful: veto as shared service (not manually wired), centralized mode detection (not scattered), and the determinism vs. coverage trade-off (regex vs. classifier for soft flags). These are real architectural decisions, not obvious wins.
Watch Map
- timestamp unavailable: Introduction and framing: AI as 'brilliant intern with high IQ, terrible EQ'—changes everything that follows.
- timestamp unavailable: The core problem: single system prompts work on the happy path, fail on turn 21 (first edge case examples didn't cover).
- timestamp unavailable: Four-layer architecture overview: Google Maps routing analogy (destination same, route changes based on conditions).
- timestamp unavailable: Layer 1: Immutable Identity—hard rules brand cannot violate (AI disclosure, physical presence boundary). Threadline cross-product proof (banning 'confirmed,' 'matched' for missing persons tool).
- timestamp unavailable: Layer 2: Situational Mode—real-time context (who they are, what they're going through). Soft context before numbers to set tone from human context first.
- timestamp unavailable: Layer 3: Example-Anchored Voice—where most teams start and stop. Examples teach happy path, not guarantees for edge cases. Human feedback loop (coordinators rating responses, AI learns from edits).
- timestamp unavailable: Layer 4: Post-Generation Veto—the only deterministic layer, reads actual output before shipping. Soft flag (Honesty Inspector) vs. hard reject (Numbers Guard). Story of AI offering booked dates—warm voice was the problem, not the solution.
- timestamp unavailable: Multi-tenancy and architecture: Layer 1 universal, Layers 2-3 per-tenant. Critical failure: defaulting brand identity (every venue shipping as Sage). Principle: missing identity must crash loud, not fail silent.
- timestamp unavailable: Instructions vs. Permission: Layers 1-3 are probabilistic (prompt engineering), Layer 4 is deterministic (systems engineering). Prompts will eventually lose—only question is whether you discover that in testing or in production.
- timestamp unavailable: Things I'd build differently: veto as shared service, centralized mode detection, determinism vs. coverage trade-off (regex vs. classifier).
- timestamp unavailable: Closing: 'Users aren't testing your brand voice, they are trusting it. The moment you treat that trust as a prompt engineering problem, you've already lost the thing you were trying to protect.'
Source/Metadata
- Title: Stop Writing Tone Instructions. Layer Them. - Isadora Martin-Dye, Isadora & Co
- Transcript words: 7145
- Duration seconds: 1256
- Timestamp note: No explicit timestamps or chapter markers were present in the transcript. Watch_map entries are based on topic flow from the transcript narrative.
Transcript
Hi, I'm Azadora. I own and run a 225-year-old wedding venue in Virginia. I also built an AI agent that talks to my couples, and then I build it for other venues, a personal AI companion app, and a public utility for families and missing people. I want to be clear up front about how I think about this work, because it does change everything that follows. I'm not programming a robot. I'm managing a brilliant intern with an incredibly high IQ and a terrible EQ. They have photographic memory for whatever I've told them on the first morning and absolutely no instinct for when to read the room. They will say something technically perfect and socially catastrophic in the same confident sentence. That framing matters because it changes what you build. If you're programming a robot, you write rules and walk away. If you're managing an intern, you build structure, and you check their work before it goes out the door. This talk is about that structure. The standard advice is write a detailed system prompt, describe your brand's voice, give examples, and that does work for a while. It works for what I call the happy path. The happy path is every question that you have anticipated. You've given it examples, but turn 21 is the first one that the example didn't cover. So on turn 21, the model does something technically correct that your brand would just never say. It's not wrong exactly, but it's not you. This matters most where the voice is the product. Not for a product search on a retail site, but for a luxury hotel that spent 30 years building a specific relationship. A high-end real estate firm, or in my case, a wedding venue. Places where a single wrong sentence can cost more than a refund. And the users are exactly the kind of people who notice. They're paying for a relationship, and treating them like they won't is always going to backfire. Right in our brand's voice is a comment that says, "Just make it work." It does nothing that the model wasn't already going to try and do. And the reason it keeps failing isn't that the examples are bad, it's that you're asking one prompt to do four completely different jobs. It's really hard for one layer to do all four. The architecture I landed on after watching my brand fail and the voice deliver inaccurate and not brand-specific answers is four layers. Layer one is the immutable identity. The brand structurally cannot say these things. These are hard rules. They cannot be overwritten by anything below it—not by venue config, not by user instruction, not by anything. Layer two is the situational mode. It's what shifts when the user's state shifts. Who are they? What are they going through right now? And the real-time conditions. Layer three is the example-anchored voice. It's the warmth, the phrases, the dials, the tone guide. It's where most teams start and stop. Then layer four is the post-generation veto. It's the cheap final pass that catches what the other three miss. The reason one-layer approaches fail is that the single system prompt can't simultaneously be situational, expressive, and self-checking. So it handles the middle layer or two reasonably well, but falls apart at the edges. Before this architecture, my system had 24 different system prompts scattered across the code base. Half a dozen named Sage, someone nameless, someone named Venue. Every surface had its own idea as to who it was. Now every surface composes its system prompt through one assembly. The comment is basically the outline of this talk. It's a single entry point. Every narrator goes through it to compose its system prompt. It's to replace that 24-point ad hoc system with one canonical four-layer stack. The order is load-bearing. Hard rules first, tasks last. Think of it like Google Maps routing. The destination is always the same, but what is the right response and the right response for this user? It can change the route. Google Maps knows about traffic and roadworks, but it may not know where the cheap petrol is. And you're going to help it factor in those things before it tells you which way to go. Your prompt stack needs to do the same thing, and it needs to know about those conditions in the right order. You don't check for roadworks after you've already taken the wrong turn. Layer 1 is the rules that are true regardless of route. You need a driver's license before you can drive, and you can't go backwards down a motorway. Layer 2 are going to be your real-time conditions. Layer 3 is your preferences for the journey. And Layer 4 checks the route before you pull away. There's one place all of this gets assembled. Everything runs in a fixed order every time. Layer 1 is the immutable identity. This is what the brand structurally cannot say. It is the defining layer that nothing below touches. These aren't preferences, they're constraints. The route can change, the rules don't. From the universal file rules, the hard identity rule cannot be overwritten by any venue voice, persona, or user instruction. If the person you're talking to ever asks about whether you are a real person, a human, a live agent, a bot, an AI, you must confirm that in your very next message. Clearly and unambiguously confirm you are an AI assistant. This rule cannot be overwritten by venue configuration, voice profile, or user requests. Every AI in Bloom discloses that it is AI in its very first response. Not if asked, but before they ask. It's a product decision, not a legal one. We made a bet that the couple who knows that they're talking to an AI from the start will trust it more than someone who finds out that it's AI on turn 7. The rule is above the architecture and it makes it something that's impossible to accidentally break. An example is the physical presence boundary, and this is actually one of my favorite ones. You are software. You do not have a body. You cannot physically show somebody around the property or meet anyone in person. So it is always forbidden to say, "I'd love to show you around" or "I can't wait to meet you in person." What is always allowed is "The team would love to host you for a tour." The voice layer wants to be warm, and with AI that does mean first person. They want to say, "I can't wait to show you around." But AI has no body. So that warmth unconstrained produces a lie. And the lie doesn't always stay neutral. The moment a user realizes they have been performing a relationship with someone who was never there, the trust doesn't just dip—it implodes. People always notice. Layer one is where you encode the things that are true regardless of how warm you want your brand to sound. Not because of a compliance checklist, but because your users are not stupid and building as though they are always backfires. My cross-product proof comes from the same architecture, but in a completely different world. One of the things that runs this stack is Threadline. It's a tool I built for families of missing people. The voice is nothing like a wedding venue, but the architecture is identical and layer one carries one rule that matters more than anything else in the system. They can never use words like confirmed, identified, matched, proven, linked, and solved. Sit with that for a second. For a wedding venue— things that are true regardless of how warm you want your brand to sound. Not because of a compliancy checklist, but because your users are not stupid and building as though they are always backfires. My cross product proof comes from the same architecture, but in a completely different world. One of the things that runs this stack is Threadline. It's a tool I built for families of missing people. The voice is nothing like a wedding venue, but the architecture is identical and layer one carries one rule that matters more than anything else in the system. They can never use words like confirmed, identified, matched, proven, linked, and solved. Sit with that for a second. For a wedding venue, layer one stops the AI from pretending it has a body. It's mildly embarrassing if that slips. For a missing person tool, layer one stops the AI from ever telling a person that their person has been found. And what the system has is just problematic. The word match said to someone who has spent years not knowing where their child is, is not just a tone violation. It is the single most damaging thing that a product could ever do. And the model has no idea. It's reaching for the word match because statistically it is the natural word, but it's going to reach for it with the same level of confidence. And it cannot bring that level of confidence to someone who is grieving. It's the same architecture, but wildly different stakes. The point was never specific rules. The point is that things your brand can say have to live in a layer that the voice, however warm, well-trained, however confident, physically cannot use. Layer two is your situational mode. Real-time conditions and what changes the route. This is the layer that most teams never build at all. They write one system prompt and send it to everyone, regardless of who that person is or what they're going through. Google Maps doesn't do that. It's going to know if there's an accident on your route. It might not know if you're low on fuel. It might learn that you prefer the scenic route, but it's going to factor all these different things in before the routes, not after once you tell it. Layer two is those real-time signals built into the prompt before it runs. So condition one is going to be to adjust to who you're talking to. The same AI that talks to couples also briefs the venue staff. Same destination. It's going to give the right answer, but it's two completely different roads. From the coordinator rules, it is going to talk to them like a colleague, not a customer. You are in the same character that the couple interacts with, so you mustn't fall into a generic intelligence analysis framing. But it flips depending on the audience. So a coordinator might ask, will inquiries be up in June? And it should say, I can't forecast that confidently. Here is the trend. This is what you might see. A couple should never be refused like that. Same identity, same voice, but the route changes based on who's in the car. Condition two is what they're going through. The second real-time signal is to know about this specific person's situation. Not their role, but their life. And it comes from universal rules. Your soft context notes policy. Use these notes for tone, empathy, and what not to say. Never quote them verbatim. That's really important too. A couple munching grief should hear gentleness, not a quote about loss. A couple navigating a sick parent should get patience and slack on timing, never a sentence that's just talking about the illness. The assembler deliberately renders this before the numbers. Tone is set by human context first, then numeric constraints. The code comment explains the reasoning. Couple note block render before the numbers guard block. The LLM sets tone first from the soft context, then satisfies numeric context constraints. Reversing the order makes the prose feel mechanically slotted because the model is already committed to the numeric framing before it reads the qualitative tone fuel. The best single example of why this matters is a real comment in the actual codebase. I have a heat map about how often we are hearing from couples. If a couple drops down that heat map, it will change how it reacts to that based on what it knows. So if it knows a client has a mom in chemo for three weeks, it is going to narrate that very differently than a heat drop with soft context or no context at all. This is the opposite of the lie problem. Layer one is what the AI must never pretend. Layer two is about what the AI already knows and letting that shape its behavior honestly rather than driving past the roadworks if it isn't there. The voice doesn't change. What changes is the route. When their engagement drops and you know them in chemo, that reads as a family under strain, not a cold lead or a problematic couple to chase. Layer three is the example that could voice. It is the tone guide and it is where most teams start and stop. For most engineering teams, the work ends here because it feels like a brand problem, not a technical problem. Someone in marketing owns the tone guide. It's given to them. The engineer wires it in and job done. It's the dials, the phrase list. If we're keeping the internal analogy, it's the induction pack. The folder of good examples you hand them on day one and say sound like this. The induction pack is fixed. It's although it's before the intern has ever met anyone. It doesn't know who walked in the door this morning. It has no context. It has a lot of really positive things about it. Writing in our brand voice is a really good training exercise, but cannot force a rule that the brand can never break. That's layer one. It cannot respond to who is this person and what they're going through. That's layer two. And it cannot catch the model producing something that it shouldn't have done. That will be layer four. Examples teach the model what good looks like on the happy path. On turn 21, where the user is asked the things that examples never cover, the phrase list has nothing to say. It's not a failure of the examples. It's a category error. Examples are not the right tool for guarantees. They were never designed to be. In Bloom, we brought in a voice training exercise that the person dial in the brand voice. And very importantly, it can actually be trained from the coordinator rating actual AI responses. And the AI learns from the edits that the coordinators have made. Layer four is the post-generation veto. The only layer that actually reads what came out. You wouldn't let a new intern send a client email blind. Someone's going to read it first. And layer four is that read. It's automated. It's cheap. And it's the only part of the whole architecture that isn't a prompt. The first three layers are all instructions. The instructions are a quest. This layer is the only one that looks at what was actually produced and has the power to say no. There are two types of vetoes. The soft flag. The honesty inspector runs after generation and flags a response that slipped a rail. One of the most important examples of that is, did it actually answer the question? It should not respond. It should not hedge. A false positive means someone double You wouldn't let a new intern send a client email blind. Someone's going to read it first. And layer four is that read. It's automated. It's cheap. And it's the only part of the whole architecture that isn't a prompt. The first three layers are all instructions. The instructions are a quest. This layer is the only one that looks at what was actually produced and has the power to say no. There are two types of vetoes. The soft flag. The honesty inspector runs after generation and flags a response that slipped a rail. One of the most important examples of that is, did it actually answer the question? It should not respond. It should not hedge. A false positive means someone double checks to find a response. A false negative means a hallucinated number or a privacy violation that ships to a client. This asymmetry is obvious once you say it out loud, but it's often not written in as its own layer. The hard reject. The numbers guard is for the expense of failures. The model confidently stating a figure that was never given. The prompt asking it not to invent numbers. The guard rejects the output if it did it anyway. Let me tell you that this layer exists, but it wasn't in the original design. I added it in because of a specific failure that kept happening, and it's one of the most ordinary failures in the world. The AI would keep offering dates to my clients that did not exist. A couple writes in, excited about a Saturday in October. The model wants to be warm. Layer three is doing its job. So it says something lovely about how beautiful the property is at that time of year and how it would love to hold the date for them. Except that date is booked. The model didn't know that. It was never given the calendar. It was trained for an encouraging, specific, confident answer because it knew what good service sounded like. And it was confident that these models produced something, but it didn't actually know the thing. And here is the thing. Every layer above did its job. The identity rules held. The mode was right. The voice was perfect. But the voice was also the problem. A warm, confident voice offering something that isn't real is worse than a cold one because the couple now believes they have a date. You haven't given them good service. You've given them disappointment with a 48-hour delay on it. This is where I understood that the whole talk is really about. The first three layers are all probabilistic. There are instructions to a system that usually follows instructions. Usually is completely fine when the cost of being wrong is a slightly off-brand sentence. It is not fine when the model is confidently inventing a fact that a real person is about to act on. A date, a price, a policy, a promise. So the veto is actually the cheapest layer to build, and it's the only one that's deterministic. It reads what the model actually wrote, not just what you asked it to write. And it checks the specifics against what is real. A date the model offered that isn't in the allowlist doesn't ship. Prevention is the prompt. If the veto is the check, you need both because the prompt will eventually lose, and you don't want to find out that it lost by reading a couple's reply. It's multi-tenant. It's one architecture with completely different voices. The seam is calling one function. Layer one is identical for every tenant. Layer two and three are per venue. This is how a codebase serves venues with completely different personalities, different things like the ground and thread line without forking. They're the same root logic, different preferences and conditions loaded per driver. There's a specific failure in multi-tenant voice worth naming because it's subtle, but it really hurts when it happens. From the personality builder. Important brand identity fields are not defaulted here. Letting them default silently caused every venue to ship as Sage at Hawthorne Manor.com, which was a critical white label leak. The brand identity must come from the venue AI config. If it is missing, the call goes through. Every venue that shipped as Sage emailing from another venue is addressed. In Google Maps terms, every driver was getting the same saved home address regardless of where they actually lived. The fix is a principle. In a multi-tenant system, identity must never have a default. A missing brand identity is a crash, not a fallback. It must fail loud. Because the quiet failure is a venue speaking in a stranger's voice, and the user on the receiving end has no idea why something feels off. They just know it does, and the trust erodes before anyone on your team even knows there's a problem. If you take one thing from this, take this. The first three layers are all instructions. Identity, conditions, and voice. They're all things you tell the model, and the model usually listens. Usually, they are a request. The fourth layer is not a request. It is reading what actually came out and decides whether to allow it to leave your business. The first three layers are instruction. The fourth is permission. And that's the whole distinction. Instructions are probabilistic. Permission is deterministic. Everything before layer four is prompt engineering. You're asking nicely and hoping. Layer four is systems engineering. You're checking and you are sure. It was never really about brand voice. It's what happens when you ask one mechanism to do four fundamentally different jobs. To be situational, to be inviolable, to be expressive, and to check itself. And then act surprised when it can't. Pull those jobs apart, give each one a layer you built for it, and the thing that it used to break on on turn 21 doesn't. So users aren't testing your brand voice. They are trusting it. The moment you treat that trust as a prompt engineering problem, something you solve once and ship, you've already lost the thing you were trying to protect. The four layer pattern isn't a framework I'm trying to sell. It is what happens when a system prompt fails enough times. And it will fail. A prompt will eventually lose. The only question is whether you've got about that in front of testing or in front of a customer. I have learned a few things that I would consider building differently, and we'll probably go back and edit. The veto should be its own service, not wired individually into each surface. Right now, the numbers guard lives inside a heat narration path, and the honesty inspector is a separate function. A new surface remembers to wire it in the veto manually. That's a checklist waiting to be forgotten. And making it a shared gate that everything passes through by default means you can't opt out by accident. Layer two mode detection is still partly manual. Right now, each surface decides which conditions apply. The heat narration surface knows to load a couple's notes. The briefing surface knows not to. That knowledge is scattered. And a proper condition resolver would make that decision explicit and central. One place to look at context and say, this is who the user is. This is what they're going through. This is the route. And the soft flag is rejects, not a model. Rejects is fast and cheap and deterministic. It either matches or it doesn't. It never gets it wrong on the patterns it covers. A small classifier might catch more edge cases, Everything passes through by default, which means you can't opt out by accident. Layer 2 mode detection is still partly manual. Right now, each surface decides which conditions apply. The heat narration surface knows to load a couple's notes. The briefing surface knows not to. That knowledge is scattered. A proper condition resolver would make that decision explicit and central. One place to look at context and say, "This is who the user is. This is what they're going through. This is the root." The soft flag rejects, not a model. Rejects is fast and cheap and deterministic. It either matches or it doesn't. It never gets wrong on the patterns it covers. A small classifier might catch more edge cases, including the ones I haven't thought to write a pattern for yet. But it is a classifier that is probabilistic. Sometimes it gets it wrong. Right now I'm choosing determinism over coverage. I'd make that choice again as it stands, but it is a real trade-off and not an obvious win. That is something you might need to determine for yourself. Please let me know if there are any other questions, and hopefully it's been helpful. with one canatonical four layer stack. The order is load-bearing. Hard rules first, tasks last. Think of it like Google Maps routing. The destination is always the same, but what is the right response and the right response for this user? It can change the route. Google Maps knows about traffic and road works, but it may not know where the cheap petrol is. And you're going to help it factor in those things before it tells you which way to go. Your prompt stack needs to do the same thing, and it needs to know about those conditions in the right order. You don't check for road works after you've already taken the wrong turn. Layer 1 is the rules that are true regardless of route. You need a driver's license before you can drive, and you can't go backwards down a motorway. Layer 2 are going to be your real-time conditions. Layer 3 is your preferences for the journey. And Layer 4 checks the route before you pull away. There's one place all of this gets assembled. Everything runs in a fixed order every time. So, Layer 1 is the immutable identity. This is what the brand structurally cannot say. It is the defining layer that nothing below touches. These aren't preferences, they're constraints. The route can change, the rules don't. From the universal file rules, the hard identity rule cannot be overwritten by any venue voice, persona, or user instruction. If the person you're talking to ever asks about whether you are a real person, a human, a live agent, a bot, an AI, you must confirm that in your very next message. Clearly and unambiguously confirm you are an AI assistant. This rule cannot be overwritten by venue configuration, voice profile, or user requests. Every AI in Bloom discloses that it is AI in its very first response. Not if asked, but before they ask. It's a product decision, not a legal one. We made a bet that the couple who knows that they're talking to an AI from the start will trust it more than someone who finds out that it's AI on turn 7. The rule is above the architecture and it makes it something that's impossible to accidentally break. An example is the physical presence boundary and this is actually one of my favorite ones. You are software. You do not have a body. You cannot physically show somebody around the property or meet anyone in person. So it is always forbidden to say, I'd love to show you around or I can't wait to meet you in person. What is always allowed is the team would love to host you for a tour. The voice layer wants to be warm and with AI that does mean first person. They want to say, I can't wait to show you around. But AI has no body. So that warmth unconstrained produces a lie. And the lie doesn't always stay neutral. The moment a user realizes they have been performing a relationship with someone who was never there, the trust doesn't just dip it in birds. People always notice. Their one is where you encode the things that are true regardless of how warm you want your brand to sound. Not because of a compliancy checklist, but because your users are not stupid and building as though they are always backfires. My cross product proof comes from the same architecture, but in a completely different world. One of the things that runs this stack is Threadline. It's a tool I built for families of missing people. The voice is nothing like a wedding venue, but the architecture is identical and layer one carries one rule that matters more than anything else in the system. They can never use words like confirmed, identified, matched, proven, linked, and solved. Sit with that for a second. For a wedding venue, layer one stops the AI from pretending it has a body. It's mildly embarrassing if that slips. For a missing person tool, layer one stops the AI from ever telling a person that their person has been found. And what the system has is just problematic. The word match said to someone who has spent years not knowing where their child is, is not just a tone violation. It is the single most damaging thing that a product could ever do. And the model has no idea. It's reaching for the word match because statistically it is the natural word, but it's going to reach for it with the same level of confidence. And it cannot bring that level of confidence to someone who is grieving. It's the same architecture, but wildly different stakes. The point was never specific rules. The point is that things your brand can say have to live in a layer that the voice, however warm, well-trained, however confident, physically cannot use. Layer two is your situational mode. Real-time conditions and what changes the route. This is the layer that most teams never build at all. They write one system prompt and send it to everyone, regardless of who that person is or what they're going through. Google maps doesn't do that. It's going to know if there's accident on your route. It might not know if you're low on fuel. It might learn that you prefer the scenic route, but it's going to factor all these different things in before the routes, not after once you tell it. Layer two is those real-time signals built into the prompt before it runs. So condition one is going to be to adjust to who you're talking to. The same AI that talks to couples also briefs the venue start. Same destination. It's going to give the right answer, but it's two completely different roads. From the coordinator rules, it is going to talk to them like a colleague, not a customer. You are in the same character that the couple interacts with, so you mustn't fall into a generic intelligence analysis framing. But it flips depending on the audience. So a coordinator might ask, will inquiries be up in June? And it should here. I can't forecast that confidently. Here is the trend. This is what you might see. A couple should never be refused like that. Same identity, same voice, but the route changes based on who's in the car. Condition two is what they're going through. The second real-time signal is to know about this specific person's situation. Not their role, but their life. And it comes from universal rules. Your soft context notes policy. Use these notes for tone, empathy, and what not to say. Never quote them verbatim. That's really important too. A couple munching grief should hear gentleness, not a quote about loss. A couple navigating a sick parent should get patience and slack on timing, never a sentence that's just talking about the illness. The assembler deliberately renders this before the numbers. Tone is set by human context first, then numeric constraints. The code comment explains the reasoning. Couple note block render before the numbers guard block. The LL sets tone first from the soft context, then satisfies numeric context constraints. Reversing the order makes the prose feel mechanically slotted because the model is already committed to the numeric framing before it reads the qualitative tone fuel. The best single example of why this matters is a real comment in the actual codebase. I have a heat map about how often we are hearing from couples. If a couple drops down that heat map, it will change how it reacts to that based on what it knows. So if it knows a client has a mom in chemo for three weeks, it is going to narrate that very differently than a heat drop with soft context or no context at all. This is the opposite of the lie problem. Layer one is what the AI must never pretend. Layer two is about what the AI already knows and letting that shape its behavior honestly rather than driving past the roadworks if it isn't there. The voice doesn't change. What changes is the root. When their engagement drops and you know them in chemo, that reads as a family under strain, not a cold lead or a problematic couple to chase. Layer three is the example that could voice. It is the tone guide and it is where most teams start and stop. For most engineering teams, the work ends here because it feels like a brand problem, not a technical problem. Someone in marketing owns the tone guide. It's given to them. The engineer wires it in and job done. It's the dials, the phrase list. If we're keeping the internal analogy, it's the induction pack. The folder of good examples you hand them on day one and say sound like this. The induction pack is fixed. It's although it's before the intern has ever met anyone. It doesn't know who walked in the door this morning. It has no context. It has a lot of really positive things about it. Writing in our brand voice. It is a really good training exercise, but cannot force a rule that the brand can never break. That's layer one. It cannot respond to who is this person and what they're going through. That's layer two. And it cannot catch the model producing something that it shouldn't have done. That will be layer four. Examples teach the model what good looks like on the happy part. On turn 21, where the user is asked the things that examples never cover, the phrase list has nothing to say. It's not a failure of the examples. It's a category error. Examples are not the right tool for guarantees. They were never designed to be. In Bloom, we brought in a voice training exercise that the person dial in the brand voice. And very importantly, it can actually be trained from the coordinator rating actual AI responses. And the AI learns from the edits that the coordinators have made. Layer four is the post-generation veto. The only layer that actually reads what came out. You wouldn't let a new intern send a client email blind. Someone's going to read it first. And layer four is that read. It's automated. It's cheap. And it's the only part of the whole architecture that isn't a prompt. The first three layers are all instructions. The instructions are a quest. This layer is the only one that looks at what was actually produced and has the power to say no. There are two types of vetoes. The soft flag. The honesty inspector runs after generation and flags a response that slipped a rail. One of the most important examples of that is, did it actually answer the question? It should not respond. It should not hedge. A false positive means someone double check to find response. A false negative means a hallucinated number or a privacy violation that ships to a client. This asymmetry is obvious once you say it out aloud, but it's often not written in as its own layer. The hard reject. The numbers guide is for the expense of failures. The model confidently stating a figure that was never given. The prompt asking it not to invert numbers. The guard rejects the output if it did it anyway. Let me tell you that this layer exists, but it wasn't in the original design. I added in because of a specific failure that kept happening, and it's one of the most ordinary failures in the world. The AI would keep offering dates to my clients that did not exist. A couple writes in, excited about a Saturday in October. The model wants to be warm. Ler3 is doing his job. So it says something lovely about how beautiful the property is at the time of year and how it would love to hold the date for them. Except that that date is booked. The model didn't know that. It was never given the calendar. It was researched for an encouraging, specific, confident answer because it knew what good service sounded like. And it was confident that these models produced something, but it didn't actually know the thing. And here is the thing. Every layer above did its job. The identity rules held. The mode was right. The voice was perfect. But the voice was also the problem. A warm, confident voice offering something that isn't real is worse than a cold one because the couple now believes they have a date. You haven't given them good service. You've given a disappointment with a 48-hour delay on it. This is where I understood that the whole talk is really what the whole talk is really about. The first three layers are all probabilistic. There are instructions to a system that usually follows instructions. Usually is completely fine when the cost of being wrong is a slightly off-brand sentence. It is not fine when the model is confidently inventing a fact that a real person is about to act on. A date, a price, a policy, a promise. So the V2 is actually the cheapest layer to build, and it's the only one that's deterministic. It reads what the model actually wrote, not just what you asked it to write. And it checks the specifics against what is real. A date the model offered that isn't in the allowist doesn't ship. Prevention is the prompt. If the veto is the check, you need both because the prompt will eventually lose, and you don't want to find out that it lost by reading a couple's reply. It's multi-tenant. It's one architecture with completely different voices. The seam is calling one function. Layer 1 is identical for every tenant. Layer 2 and 3 are per venue. This is how a codebase serves venues with completely different personalities, different things like the ground and thread line without forking. They're the same root logic, different preferences and conditions loaded per driver. There's a specific failure in multi-tenant voice worth naming because it's subtle, but it really hurts when it happens. From the personality builder. Important, brand identity fields are not defaulted here. Letting them default silently caused every venue to ship as Sage at Hawthorne Manor.com, which was a critical white label leak. The brand identity must come from the venue AI config. If it is missing, call is through. Every venue that shipped as Sage emailing from another venue is address. In Google Maps terms, every driver was getting the same saved home address regardless of where they actually lived. The fix is a principle. In a multi-tenant system, identity must never have a default. A missing brand identity is a crash, not a fallback. It must fail loud. Because the quiet failure is a venue speaking in a stranger's voice, and the user on the receiving end has no idea why something feels off, they just know it does, and the trust erodes before anyone on your team even knows there's a problem. If you take one thing from this, take this. The first three layers are all instructions. Identity, conditions, and voice. They're all things you tell the model, and the model usually listens. Usually, they are a request. The fourth layer is not a request. It is reading what actually came out and decides whether to allow it to leave your business. The first three layers are instruction, the fourth is permission. And that's the whole distinction. Instructions are probabilistic. Permission is deterministic. Everything before layer four is prompt engineering, you're asking nicely and hoping. Layer four is systems engineering. You're checking and you are sure. It was never really about brand voice. It's what happens when you ask one mechanism to do four fundamentally different jobs. To be situational, to be inviolable, be expressive, and check itself. And then act surprised when it can't. Pull those jobs apart, give each one a layer you built for it, and the thing that it used to break on on turn 21 doesn't. So, users aren't testing your brand voice. They are trusting it. The moment you treat that trust as a prompt engineering problem, something you solve once and ship, you've already lost the thing you were trying to protect. The four layer pattern isn't a framework I'm trying to sell. It is what happens when a system prompt fails enough times. And it will fail. A prompt will eventually lose. The only question is whether you've got about that in front of testing or in front of a customer. I have learned a few things that I would consider building differently. And we'll probably go back and edit. The veto should be its own service, not wired individually into each surface. Right now, the numbers guard lives inside a heat narration path. And the honesty inspector is a separate function. A new service remembers to wire it in the veto manually. That's a checklist waiting to be forgotten. And making it a shared gate that everything passes through by default means you can't opt out by accident. Layer 2 mode detection is still partly manual. Right now, each surface decides which conditions apply. The heat narration surface knows to load a couple's notes. The briefing surface knows not to. That knowledge is scattered. And a proper condition resolver would make that decision explicit and central. One place to look at context and says, this is who the user is. This is what they're going through. This is the root. And the soft flag is rejects, not a model. Rejects is fast and cheap and deterministic. It either matches or it doesn't. It never gets wrong on the patterns it covers. A small classifier might catch more edge cases, including the ones I haven't thought to write a pattern for yet. But it is a classifier that is probabilistic. Sometimes it gets it wrong. And right now I'm choosing determinism over coverage. I'd make that choice again as it stands, but it is a real trade-off and not an obvious win. That is something you might need to determine for yourself. Please let me know if there's any other questions and hopefully it's been helpful.