{"slug": "why-the-ai-character-would-not-calm-down-and-how-i-fixed-it", "title": "Why the AI character would not calm down, and how I fixed it", "summary": "An early version of Say It Ahead had a problem where AI characters would not calm down even when users handled conversations well. The developer fixed it by giving each scenario a model of how a difficult conversation can progress, including what would make the character more open. The system now uses a progress display and a browser tool to track user responses, helping the character respond more constructively.", "body_md": "An early version of Say It Ahead had a basic problem. A user could listen carefully, ask good questions, and offer a reasonable plan, but the AI character might still sound just as upset as it did at the start.\n\nThat made the practice feel arbitrary. The user could not tell whether anything they said had changed the conversation. The character had a strong opening mood, but no clear reason to move away from it.\n\nThe fix was not a list of magic calming phrases. It was a simple model of how a difficult conversation can move forward. This note explains that model, how the live progress display works, and where the system can still get it wrong.\n\nThe first parent scenario was easy to start. The prompt described an angry parent, gave the parent a complaint, and told the voice to push back. The result sounded convincing for the first few turns. The problem appeared when the user handled the conversation well.\n\nThe model had been told why the parent was upset, but not what would make the parent become more open. It often treated anger as the character's permanent personality. A good question might produce an answer, but the next reply could jump back to the original complaint as if no trust had been built.\n\nAdding more instructions such as 'calm down when appropriate' did not solve the problem. Appropriate is too vague. The model needed to know what evidence to watch for and how its behavior should change after seeing it.\n\nEach ready-made scenario now gives the character more than a mood. It describes what happened, what the character believes, what facts they know, why they do not trust an easy answer, and what a credible resolution would look like.\n\nFor example, a parent may reject a general promise because two earlier meetings led nowhere. A manager may care less about one missed deadline than about whether the same communication problem will happen again. An interviewer may accept transferable experience, but only after hearing a specific example.\n\nThis hidden context gives the character something to protect. It also gives the conversation somewhere to go. The character can reveal useful facts gradually and become more constructive when the user addresses the real concern. It does not have to switch instantly from angry to friendly.\n\nThe current guided scenarios use four broad jobs: acknowledge the concern, ask a useful question, reflect what you heard, and agree on a specific next step. These are not lines the user has to recite. The character is instructed to judge the meaning of the response rather than look for exact words.\n\nThe order matters, but it is not meant to be rigid. Offering a solution before understanding the problem often sounds dismissive, so the character normally expects acknowledgment and clarification first. One thoughtful response can also handle more than one job. The system can move directly to the highest consecutive job it heard.\n\nProgress is cumulative. Once the user has clearly acknowledged the concern, a clumsy later sentence should not erase that work and reset the character to its opening intensity. The character can challenge a new issue while preserving the trust already built.\n\nDuring the call, the character can use a browser tool called update_practice_progress. It sends the highest job completed and a short piece of evidence from what the user actually said. The tool updates the progress panel, but the character never talks about a score or leaves the role-play.\n\nThis was important for two reasons. First, it connects the character's behavior to the visible interface. If the character becomes more open after a useful question, the user can also see that the practice has moved from acknowledgment to clarification. Second, the evidence creates a diagnostic trail when the behavior looks wrong.\n\nThe live signal is still a model judgment. The character may miss a good response, report progress too early, or fail to call the tool. The interface therefore treats it as guidance during practice, not as a final or objective grade.\n\nAfter the call, ElevenLabs runs a separate review over the completed conversation. It checks the same four jobs and returns a result and reason for each one. Say It Ahead maps those results to the review screen and shows how many jobs were found.\n\nThe live character and the post-call reviewer do not share one guaranteed answer. The live character is deciding how to respond in the moment. The reviewer has the advantage of seeing the full exchange, but it is also another model judgment. They can disagree.\n\nA diagnostic view records both counts so I can inspect those disagreements. If the live character says the user completed three jobs but the final review finds two, that is a useful bug report. It may point to a vague criterion, a missed tool call, or a response that sounded better in context than it reads in a transcript.\n\nKeeping the two judgments separate is less tidy than showing one authoritative score. It is also more honest. A generated role-play is not a validated assessment, and a percentage should not hide uncertainty in how the conversation was interpreted.\n\nThe goal is not to make the other person happy or prove that the user is right. Some concerns should remain serious. A principal should not become cheerful about a safety problem, and an HR partner should not agree with a claim before understanding the facts.\n\nA useful finish is smaller. The other person feels accurately heard, enough facts are on the table, both people understand the main issue, and there is a realistic next action. The action might be a follow-up meeting, a document review, a question someone will verify, or a decision with a clear owner and time.\n\nThat definition also leaves room for boundaries. The user should not have to promise an outcome they cannot control just to make the progress bar move. A specific commitment to check, document, escalate, or report back can be more credible than a promise to fix everything.\n\nThe four-job model made the practice possible to finish, but it did not remove variation. The same sentence can be interpreted differently across runs. Tone and interruption can change what the speech system captures. A user can also do the right things in a different order than the prompt expects.\n\nThe next tests are practical: repeat the same conversation with different wording, compare live progress with the final review, and look for points where the character softens too early or stays guarded too long. Those tests matter more than adding more score categories.\n\nThe aim is a conversation that reacts for understandable reasons. Say It Ahead can provide a place to rehearse, hear pushback, and try again. It cannot decide whether someone is a good counselor, manager, employee, or parent, and it should not pretend that it can.\n\nTry the live project at [sayitahead.com](https://sayitahead.com), or inspect the [MIT-licensed source](https://github.com/imfinn/say-it-ahead).\n\nThis article was drafted with AI assistance, then checked against the working code and production behavior. Ian Finn reviewed and approved the final text.", "url": "https://wpnews.pro/news/why-the-ai-character-would-not-calm-down-and-how-i-fixed-it", "canonical_source": "https://dev.to/ian_finn_ff87b6478b95e896/why-the-ai-character-would-not-calm-down-and-how-i-fixed-it-2k1o", "published_at": "2026-08-30 03:05:40+00:00", "updated_at": "2026-08-30 03:22:24.398672+00:00", "lang": "en", "topics": ["artificial-intelligence", "ai-products", "ai-tools", "developer-tools"], "entities": ["Say It Ahead"], "alternates": {"html": "https://wpnews.pro/news/why-the-ai-character-would-not-calm-down-and-how-i-fixed-it", "markdown": "https://wpnews.pro/news/why-the-ai-character-would-not-calm-down-and-how-i-fixed-it.md", "text": "https://wpnews.pro/news/why-the-ai-character-would-not-calm-down-and-how-i-fixed-it.txt", "jsonld": "https://wpnews.pro/news/why-the-ai-character-would-not-calm-down-and-how-i-fixed-it.jsonld"}}