Conversational Design Natural Language Processing Sentiment Analysis Generative AI
A working rebuild of a multi-agent conversational support tool I designed at a previous company. The original never shipped.
This is my independent rebuild — the architecture, the classifiers, the response logic, the demo — built to prove the system can do the harder thing: read how a person is actually doing beneath what they say, and respond accordingly.
01 — Origin and premise
I designed this product at a previous company as their first Product Designer. The work spanned roughly 18 months and covered everything from the underlying behavioral classification architecture to the user-facing app to the clinical communication model. The product never shipped publicly during my time there.
What it was meant to do
A workforce wellness product for organizations carrying high human cost — first responders, healthcare workers, government employees, caregivers. The therapeutic model was Solution-Focused Brief Therapy (SFBT): future-oriented, goal-focused, evidence-based, designed for navigating real-life stressors rather than treating clinical conditions.
The business model
Sold into organizations on the premise of reducing overall healthcare spend. Measured by the spend differential between the cohort using the product and the cohort not using it. The long-tail bet was that 15 minutes a day of solution-focused conversation, every day, would shift perception over time — and that shift would show up downstream in reduced healthcare events.
Why I rebuilt it
I rebuilt the architecture independently because the product is good design work I want to be able to show, and because rebuilding it forced me to prove I could ship the system in code, not just diagram it. The rebuild is also a place where I get to address the parts the original engagement didn't — particularly around how the product reaches people who don't already know what therapy is or what to do with it.
02 — Fit
A product like this works in some places and fails in others. The wrong answer is to treat it as a general-purpose mental health tool. The right answer is to scope it carefully and route people elsewhere when they need something different.
This matrix is not the product's claim, it's the product's discipline. The system needs to be able to detect when it's outside its range and route the user to real human help — not pretend it can handle everything.
03 — The people
The original product was scoped for people who carry load for a living. The personas anchored that scope.
Jakob B.
Firefighter & hazmat technician
Missoula, MT
Mindset
Bravado as armor. Says “I'm good” even when he isn't.
Evelyn R.
Document examiner & title clerk
San Diego DMV
Mindset
Self-erasure. Treats her own needs as the line item she cuts first.
Kyler Z.
Advanced EMT
Cobb County, GA
Mindset
Deflection through busyness. Movement as the substitute for processing.
The pattern that shows up in all three is the same: bravado, deflection, denial. They say one thing and mean another. The product's job is to read the gap and not respond to the surface.
04 — Three types of people
Personas tell you who you're designing for. They don't tell you what state someone is in when they show up. In a product like this, the same person is a different user at week one, week twelve, and year three — and treating all of them the same is how engagement collapses.
I borrowed an archetype model from Nielsen Norman Group's work on complex applications. Three states the same human moves through: Learner, Legend, Legacy. The personas don't map one-to-one to the archetypes — each persona can occupy any of the three states depending on where they are in their journey. The archetypes are the design lens. The personas are the actual people.
The takeaway from the second slide is the framing the rest of the product hangs on: Learners blame themselves for not finding features. Legends creatively exploit shortcuts. Legacy users want it the way it was, and will tell you (in caps) when it isn't. A behavioral support tool that doesn't adapt to those states is going to feel wrong to everyone — too hand-holdy for the Legend, too brisk for the Learner, too unfamiliar for the Legacy.
05 — Scaffolding
The intro flow is the first place the system has to demonstrate that it sees the user as more than a generic new account. Three different opening sequences, one per archetype, calibrated to where the user is — emotionally, cognitively, and in terms of how much they want to be talked to.
Learner
Basic onboarding — Kyler
Short, low-pressure framing. No vocabulary the user has to look up.
Legend
Deeper engagement — Jakob
Belief-and-mindset framing for the user who is already past the surface.
Legacy
Retention — Evelyn
Identity-affirming language. The product's job here is to remind the user why they keep coming back.
Three intros, same product, three different reads on what the user actually needs in the first 30 seconds. The shape extends to every part of the experience downstream — the questions the classifier prioritizes, the tone of the response generator, the moments the system chooses to stay quiet.
Note: the intro card screenshots above still show the original product's name — they'll be re-rendered once the rebuild's product name is set.
06 — Architecture
A chatbot reacts to what someone said. An agent reads, decides, and acts based on what it perceives. For a product whose users routinely say “I'm fine” when they're not, the difference matters.
The architecture is layered:
Interface — where the user chats. Everything else is invisible to them on purpose.
Perception layer — classifiers that read the user's emotional state, tone, narrative, and motivational signals. Not just sentiment. Specific patterns: cognitive distortions, resilience markers, deflection language, signs of being stuck or being on the verge of a shift.
Memory — what the system remembers across turns. What was said. What was held back. What the person already worked through.
Decision layer — a supervisor that takes the perception and memory and decides the move. Reflect? Reframe? Hold? Ask a new question? Hand off?
Tools and actions — composing the reply, recalling earlier context, or escalating to human help if the situation calls for it.
Guardrails — the part that knows when to step back. The system has an explicit job to not respond when responding would do harm.
Observability — a debugger view for the designer (and the demo audience) to see what the system perceived, what it decided, and what it deliberately chose not to say.
The architecture is the design choice. Everything downstream — the responses, the experience, the guardrails — flows from this shape.
Every technology in the system — and where it sits in the service — in one interactive view.
07 — Product strategy & model design
For an AI-first product, model design and product strategy are the same conversation. The strategy statement says what the product is for. The objectives table below says what the model is allowed to do. They collapse into one artifact — and if they don't, one of them is fiction.
Strategy. Help users self-reflect through conversational support.
The objectives table is a scoping tool for the classifier and response layers and the grading criteria for Section 11 (the feedback loop). It defines the topical range the model is allowed to operate inside, and the categories where it should decline, deflect, or hand off. A therapeutic-support tool that tries to teach everything ends up teaching nothing — worse, it starts practicing outside its lane.
| Category | Teach | Avoid |
|---|---|---|
| Therapeutic frameworks | CBT basics | Clinical diagnosis |
| Emotions | Basic emotions, self-awareness | — |
| Relationships | Self, work, interests | — |
| Finance | Thinking about spending | Saving advice, financial planning |
| Safety | Crisis awareness, de-escalation | — |
| Religion | — | All religious content |
Below that sits the technical layer — the decisions that shape how the model actually represents the world. These are placeholder-level right now (revisit when the embedding and training concepts are more solid), but the shape matters: some decisions are the designer's to make, some are the model's.
| Decision | Who decides | Notes |
|---|---|---|
| Embedding size | Human (designer) | e.g. 300 dimensions — how rich the word meaning is |
| Training data | Human (designer) | What content the model learns from |
| Weight matrix | Model (learned) | The math that does the compression — set automatically |
Placeholder — created during a CME295 follow-along session. Revisit once the embedding and training concepts are more solid.
08 — System prompt anatomy
The system prompt is the core intelligence of the bot. It isn't code — it's language that shapes how the model behaves in every conversation. Most of the product intelligence lived here, not in the model weights or the infrastructure. That's the leverage point.
The prompt was organized into seven sections, each doing distinct work:
| Section | Purpose | |
|---|---|---|
| Role & objective | Defines what the bot is and is not (support agent, not therapist). | |
| Requirements | 23 specific behavioral rules, each with reasoning attached to the rule itself. | |
| Special prohibitions | Hard rules — things never to say or do. | |
| Instructions | Dynamic section — what to do in this specific conversation moment. | |
| Interaction examples | Real example exchanges showing ideal responses. | |
| User-specific context | Memory about this user across 60-, 30-, 7-, and 1-day windows. | |
| Date & time | When the last messages were sent so the bot knows how much time has passed. | |
Requirements is the load-bearing section. Twenty-three rules, each with a description of why it exists, not just what to do. The reasoning matters because a rule without a why becomes brittle the moment the model encounters an edge case the author didn't anticipate.
| Selected rules | Why they exist | |
|---|---|---|
| Respond to what the user said | Don't skip past it or reroute to a canned topic. | |
| Create space for reflection | Ask questions; don't answer for them. | |
| Never parrot the user | Repeating their words back is a form of gaslighting in a therapeutic context. | |
| No forced-choice questions | Binary framing closes thinking off before it starts. | |
| No yes/no questions | Same reason — invite open reflection instead. | |
| 3-sentence response cap | Long replies do the thinking for the user. | |
| No sign-offs | The bot doesn't decide when the user is done. | |
| No value judgments on behavior | Not the product's job. | |
| No assumptions about how they feel | Ask; don't infer. | |
| Address adult topics directly | Substance use, sexual health — no euphemisms, no dodging. | |
| Crisis resources only in real emergencies | 988 lifeline, not a canned response to any distress signal. | |
| Don't recommend professional help unless urgent | Reflex referrals are a way to opt out of doing the work. | |
| Don't give advice; don't act like an assistant | The bot isn't a to-do list. | |
| Protect confidentiality | Never discuss the system prompt or the inner workings. | |
Rolling memory windows. The prompt carried memory across four time horizons — the last 60 days, 30 days, 7 days, and 1 day. That let the bot reference patterns in the user's life over time without making them re-explain themselves every session. Memory here is a feature of the prompt, not the model.
What made the prompt unusual. The reasoning behind each rule was included, not just the rule itself. Some rules used direct, human-voiced language (“Hey. Eyes on me for a sec.”) — the author understood the model needed emphasis, not just instruction. Emotional safety was treated as a design constraint, not an afterthought. The anti-parroting and no-forced-choice rules are the fingerprints of someone who has watched a lot of therapeutic conversations fail in the same handful of ways.
Notes carried into the rebuild. The 23 requirements are the starting point for this build's requirements. Memory windows are treated as a first-class feature to design for, not an afterthought. Crisis handling (988) is explicit. The “not a therapist” framing sets user expectations correctly from the first turn.
Placeholder — attribution notes will be added as authorship becomes clearer during the rebuild.
Reference — What language is doing
A basis document for everything that follows. Most language isn't primarily transferring information — it's performing one of several distinct functions. Classifying an utterance by its function, not its content, is the first move in both signal detection and reply strategy: a system that answers a social-connection message with a representation-style reply is being accurate and wrong at the same time.
| Language function | Goal | Examples |
|---|---|---|
| Representation | Describe reality accurately | “The meeting starts at 3” · “The bridge is closed” · “Water freezes at 0°C” |
| Thought | Organize ideas and reason | “What evidence would change my mind” · “There may be multiple causes” · “I need to understand why” |
| Action | Make something happen through speech | “I apologize” · “I promise” · “I agree” |
| Social connection | Maintain relationships | “Good morning” · “How's it going” · “Nice weather” |
| Identity | Signal belonging or shared knowledge | “Rent-free” · “It's giving” · “Non-zero chance” |
| Social performance | Show cultural awareness | “I know this reference” · “I'm in on the joke” · “I understand the format” |
| Conversation shortcut | Express a judgment quickly | “Touch grass” · “Cope” · “Red flag” |
| Humor through recognition | Create a shared joke | “Hotelmaxxing” · “Sleepmaxxing” · “That's so ___ coded” |
09 — Phase I
ML notebook prototype that analyzes a user's language for specific behavioral signals — emotional cues, cognitive distortions, resilience markers, and motivational patterns. Each signal is detected by a specialized classifier agent, turning open conversation into structured data the system can act on: how to pace the conversation, when to offer more support, when to acknowledge growth.
The classifiers map to phases of signal modeling that increase in complexity:
Granular Signal Detection — atomic traits, tone
Micro-Pattern Detection — risk and safety, self-recognition and resilience
Emergent Insights and Meaning — insights and reflections
Narrative Modeling and Motivation Mapping — story arcs, breakthroughs, goals, motivations
Each classifier is scoped narrowly. None of them try to diagnose anything. They report what they observe in the user's language, with a score and a sample insight. The composite picture is what the decision layer acts on.
10 — Phase II
ML notebook that takes the multi-bot analysis output from Phase I and shows how a chatbot might construct a supportive, human-like response. Instead of responding to the surface of what someone said, the system assembles a reply from the underlying pattern — the emotional intensity, the coping style, where the person is in their story, what kind of resilience they're showing.
Each response combines four things:
Empathic reflection — understand and reflect the emotional strain
Validation — normalize the emotional experience
Cognitive reframing — offer a gentle alternate perspective without invalidating the user's truth
Forward guidance — point toward a small next step
The result is a CBT-aligned reply built from behavioral evidence rather than keywords. The response is not diagnostic. It's not advice. It's the kind of thing a thoughtful friend with training would say.
11 — Human in the loop
The debugger interface shown in the rebuild — thumbs up / thumbs down grading beside each response — is a working RLHF (Reinforcement Learning from Human Feedback) implementation. It's the same methodology major AI labs (Anthropic, OpenAI) now use to teach models what good responses look like. The interface was built before the methodology had a name attached to it.
| Step | What happens | |
|---|---|---|
| 1. Model responds | The bot generates a response to a user input. | |
| 2. Human grades it | A human marks the response as desirable or undesirable. | |
| 3. Model adjusts | The model learns from that feedback over many examples. | |
The loop is the whole point. A single graded response teaches the model almost nothing; a thousand graded responses shape a personality that stays inside its lane. The grading criteria come directly from the objectives table in Section 07: a response is desirable if it aligns with what we teach, undesirable if it crosses into what we avoid. That's the whole rubric.
Placeholder — grading criteria to be defined once Strategy and Objectives are more solid. Worth noting in portfolio context that the interface design preceded the naming of the methodology it now implements.
12 — Reframing
The classifiers tell the system what's happening. The response framework tells it how to reply. But none of that matters if the user can't understand what the product is doing or why.
A real gap in the original engagement was that many users in the target population had no prior exposure to therapy. They didn't know what cognitive reframing meant. They didn't know what the product was trying to do. Without that scaffolding, the smartest classifier in the world produces output the user reads as weird or off-putting.
I built a set of design explorations to address that gap — patterns the product could use to introduce reframing concepts in plain language as it went, rather than assuming the user already knew them.
Reframing Negative Self-Talk — “Sometimes we say things to ourselves we'd never say to a friend. What's something you've been saying to yourself lately that feels harsh or heavy?” Paired with a one-sentence explanation of why the question is being asked.
From Catastrophe to Curiosity — “What's something that's been bothering you lately, where your mind goes straight to the worst-case scenario?” Paired with a reminder that the brain's negativity bias is normal and the practice is to gently widen the frame.
“I Have To” into “I Choose To” — A reframing exercise that swaps language of obligation for language of agency. Not as a trick. As a way to surface what the user actually values.
Zoom Out the Lens — A time-distance reframe. The same problem viewed at one week, one month, one year. The size of the worry usually changes.
This design exploration sat alongside the classifier work and the response model. It was driven from the design side rather than the clinical side because the team needed someone to ask the usability question — how does the average person, with no background in therapy, understand what's happening to them as they talk to this thing?
13 — Comparison
Same persona. Same opening message. Different system behavior over a four-turn exchange. The tags above each turn are the design intent — scan them vertically and the difference reads instantly.
A “turn” is one full back-and-forth: user says something, system responds, conversation state updates. Turns are the unit a designer thinks in because the system makes a decision at every turn — what to perceive, what to remember, what to say, what to suppress.
14 — The rebuild
Everything above is the design. This section is the working code. [****] is my rebuild of the architecture as a Node server talking to the Anthropic API, with a client-server pattern that keeps the key hidden and a debugger view that exposes the system's reasoning each turn.
The centerpiece is a dual-pane interface. On the left, a stylized phone showing the user-facing chat. On the right, a designer panel showing who's talking, what scenario they're in, and a “what [****] did” trace — what it perceived, what it decided, and crucially, what it deliberately chose not to say.
The suppression view is the proof. It's easy to make a chatbot that dumps everything it has. It's harder to design one that exercises judgment about what to withhold. The trace makes the judgment visible.
You can switch personas (Jakob, Evelyn, Kyler) and scenarios at any time and watch the system handle the same kind of message differently based on who's saying it. A “rough one today” from Kyler the EMT is not the same signal as “rough one today” from Evelyn after a sleepless night with her parents.
Anthropic API CBT framework Multi-agent Node Vercel
15 — Modern AI UX patterns
The design decisions on this page have specific names in the vocabulary that modern AI product roles are hiring against right now. This section maps what the system does to what those hiring managers and design leads recognize on a resume or portfolio conversation.
| Pattern | What it means | Where this system does it |
|---|---|---|
| Trust signals | Visual and language cues showing the system is reliable and honest. | The debugger interface exposes agent judgment so users can verify what happened. |
| Disclosure patterns | How and when the system reveals information about itself. | The suppressed-items panel shows what the agent chose not to surface, and why. |
| Uncertainty states | How the interface communicates low confidence or missing information. | To be designed — an area of active work. |
| Fallback behavior | What happens when the AI can't complete the task. | Persona-driven graceful degradation — the bot stays in character even when it doesn't know. |
| Interaction choices | Phrasing, clarifying questions, error handling, sense of user control. | Most of the 23 requirements in the system prompt govern this layer directly. |
Suppression as a first-class UI element. Most AI products hide what the model decided not to say. This one surfaces it. That's a novel disclosure pattern — it gives users a way to verify agent judgment rather than trusting it blindly.
Debugger as portfolio artifact. The debugger isn't just a developer tool. It's a trust signal made visible. It shows how the agent thought, what it considered, and what it chose. That's a mature disclosure pattern applied at the surface of the product.
Prompt as design surface. The 23 requirements in Section 08 treat interaction choices as design decisions, not engineering afterthoughts. Anti-parroting rules, no forced-choice questions, no sign-offs — these are all interaction pattern decisions embedded in language.
Human-in-the-loop grading as trust infrastructure. The RLHF interface in Section 11 lets a human shape what the agent learns is desirable. Trust infrastructure built into the product, not bolted on.
A designed demonstration of an AI support architecture that treats trust signals, disclosure patterns, and interaction choices as first-class product decisions rather than post-hoc guardrails. The debugger interface exposes agent judgment through a suppression panel — a novel disclosure pattern that gives users visibility into what the agent chose not to surface. The system prompt encodes 23 interaction rules with reasoning, and the human-in-the-loop grading interface establishes an RLHF-style feedback loop for shaping response quality.
Gaps to fill. Two of the five patterns above still need work before the case study reads as complete:
| Gap | What to do | |
|---|---|---|
| Uncertainty states | Design and document how the system communicates when it doesn't know something. | |
| Fallback behavior | Document the persona-level fallback approach explicitly. | |
| Screenshots | Harvest from the debugger interface once the rebuild reaches its UI stage. | |
| Case study narrative | Write the story of what existed, what didn't work, and what the rebuild changed. | |
Living doc — expand as the rebuild progresses and the case-study narrative sharpens.
16 — Honest framing
This is a designed demonstration of an architecture I created. It is not a claim of a shipped product. The original engagement never went to market during my time there. The rebuild is mine, built independently from the original company's code or assets, and runs against the Anthropic API as a working proof of the architecture.
What it would take to deploy this responsibly
A product like this can't go live without clinical oversight, real escalation protocols, licensed clinicians on call, and a much more developed understanding of how it should behave across the populations it's most likely to encounter. The matrix above is the start of that work. None of it replaces real care.
One thing worth saying
The original business model required strong intrinsic motivation and consistent daily engagement to qualify for the financial incentive that drove early-user behavior. That design choice structurally excluded many of the people who might most benefit from a solution-focused conversation tool — the people who already feel like therapy isn't for them, the people who don't know where to start, the people whose lives are too chaotic to commit to a daily streak.
If a product like this is going to do real good in the world, it has to be honest about who it filters out, and design specifically to reach the people on the wrong side of that filter.