Conversational AI Health Coach hero
Conversational AI

Designing Adaptive Conversational
Flows for an AI Health Coach

Designing context-aware conversation patterns that adapt persuasion techniques to schedule stress

Role

Product and Conversational designer
AI Engineer

Tools

Conversation design, behavioral science, PydanticAI

Outcome

Pilot-ready system for enterprise wellness programs (~200 users)

Problem

The gap in workplace physical health

1.7 billion people worldwide suffer from musculoskeletal disorders caused by prolonged sitting (WHO). The solution—regular movement breaks—requires sustained behavior change, which existing workplace tools fail to support:

  • Movement apps (Stretchy, Desk Yogi): Evidence-based exercises but no calendar awareness, requiring users to remember and interrupt work
  • Calendar assistants (x.ai, Reclaim): Schedule breaks but provide no movement guidance or adaptation to physical needs
  • Wellness chatbots (Headspace Bot, Calm): Generic reminders with static prompts regardless of schedule stress or context

The opportunity: Preventing musculoskeletal disorders through movement requires conversational AI that adapts both persuasion strategy and movement guidance to real-time schedule intensity - but no existing system does this.

The design challenge

Starting from zero, how do you design conversational flows for a multi-agent health coaching system that:

  1. Adapt persuasion strategy based on schedule stress (meeting-heavy days need different approaches than light schedules)
  2. Guide users toward active movement breaks without feeling pushy or interruptive
  3. Handle multiple conversation paths (queries, scheduling, conflicts, rescheduling)
  4. Maintain natural conversation across multiple turns while managing complex state
  5. Apply behavioral science systematically to movement behavior change, not just "friendly tone"
  6. Create reusable conversation patterns for other health coaching agents (reminders, lifestyle coaching)

Success criteria for pilot

  • Agent feels "helpful, not pushy" in qualitative testing
  • Multi-turn conversations complete in ≤3 turns
  • Conversation flows handle edge cases gracefully (missing info, conflicts, API failures)
  • 95% scheduling accuracy (no double-bookings, correct buffers)
  • System ready for deployment with ~200 users at a pilot government company

Approach

Research foundation

The founding team conducted initial user research (15 interviews + surveys with 50+ desk workers) revealing key insights for conversational flow design:

  • Pattern references dominate: "Like yesterday", "my usual breaks", "same as last week" appeared in 40% of conversations—users think in patterns, not discrete time slots
  • Incomplete initial requests: 60% lacked time, duration, or date ("Schedule a break")—flows need progressive clarification
  • Multi-turn refinement expected: Users modify suggestions conversationally ("Move the 1 PM to 2 PM") rather than starting over
  • Schedule queries as entry point: Users would use the AI health coach for general schedule queries—creating an opportunity to suggest break scheduling when none exist
  • Efficiency target: Scheduling should complete in ≤3 turns
  • Conflict handling must be conversational: Alternatives with reasoning, not just "unavailable"

Design rationale

Mapping complete conversation paths before implementation served three purposes. First, understanding conversation patterns shaped technical architecture: what data must persist between turns (pending suggestions, conflict alternatives, conversation context), how agents communicate decisions to the coordinator (structured outputs), and which calendar operations were needed. Second, each decision node in the flows revealed edge cases that became test scenarios directly. Third, could demonstrate conversation paths to the founding team using mockups before implementation.

Query → suggestion integration is critical to the behavioral science layer. Users who ask "What's my schedule today?" often discover they have no breaks planned—the ideal moment to offer value while they're already engaged in scheduling.

Flow design methodology

Node types in conversation flow design

Node types used in conversational flow design

Core intent mapping

From user research and prototype testing, I mapped all user needs to 5 primary intents that would structure the conversational system.

Primary Intents: ├── SCHEDULE_SINGLE_BREAK │ ├── "Schedule a break at [TIME]" │ ├── "I need a 5-minute break at 2 PM" │ ├── "Block 10 minutes at 3:30" │ └── "Same break as yesterday at 2 PM" ├── SCHEDULE_DAILY_BREAKS │ ├── "Schedule breaks for today" │ ├── "Set up tomorrow's breaks" │ ├── "I need my usual breaks" │ └── "Schedule breaks like last Friday" ├── SCHEDULE_MULTI_DAY_BREAKS │ ├── "Schedule breaks for this week" │ ├── "Set up breaks for the next 3 days" │ ├── "Plan my break schedule" │ └── "Use my usual weekly pattern" ├── RESCHEDULE_REQUEST │ ├── "Move my 2 PM break to 3 PM" │ ├── "Reschedule today's breaks" │ ├── "Change my next break" │ ├── "Cancel my 1 PM break" │ ├── "I can't take that break now" │ └── "Reschedule like we did last week" └── QUERY_SCHEDULE ├── "What's my schedule today?" ├── "When is my next meeting?" ├── "Show me tomorrow's calendar" └── "Compare today with yesterday's schedule"

Intent hierarchy: Organized by time scope (single → daily → multi-day) as complexity increases with coordination across more time units. Reschedule is distinct (identify existing → modify vs. create new). Query serves a dual purpose as both information retrieval and a primary entry point for behavior change.

Flow 1: Single break scheduling

Single break scheduling flow

Key design decisions:

  • Default duration: 5 minutes if unspecified
  • Conflict alternatives in same response: Generate 2-3 nearby times with reasoning
  • Pattern support: "Same break as yesterday" requires historical lookup → apply to today

Example:

User: "Schedule a break at 2 PM" Agent: "Your Design Review runs until 2:30 PM. How about 2:45 PM? That gives you a buffer after the meeting wraps up."

Flow 2: Daily break scheduling

Daily break scheduling conversation pattern

Key design decisions:

  • Batch conflict checking: Present entire adapted plan in single response
  • Partial conflict handling: Show available breaks + alternatives for conflicts

Examples:

User: "Schedule breaks like last Monday" Agent: "Last Monday: 10 AM, 1 PM, 4 PM. ✅ 10:00 AM - available ⚠️ 1:00 PM - conflicts with client lunch, how about 2:30 PM? ✅ 4:00 PM - available Should I schedule these?"
User: "Set up my usual breaks" Agent: "Based on your pattern: 9:30 AM, 1:15 PM, 3:45 PM. All slots are free today - should I schedule your usual rhythm?"

Flow 3: Multi-day break scheduling

Key design decisions:

  • Schedule coordination: Analyze meeting density across multiple days to optimize break placement
  • Pattern consistency: Apply learned user preferences (typical break times, duration) across all days
  • Batch presentation: Show entire week's plan with per-day conflict status
  • Adaptive frequency: Increase break frequency on meeting-heavy days, maintain minimum on lighter days

Examples:

User: "Schedule breaks for this week" Agent: "Based on your typical pattern + meeting load: Mon (heavy): 10:30 AM, 1:15 PM, 3:45 PM Tue (light): 11:00 AM, 2:30 PM Wed (heavy): 10:00 AM, 12:30 PM, 3:00 PM, 4:30 PM Thu (medium): 10:30 AM, 1:30 PM, 3:30 PM Fri (light): 11:00 AM, 2:00 PM All slots available - schedule these?"
User: "Set up breaks for next 3 days" Agent: "Planning Thu-Fri and Mon: ⚠️ Thu 2 PM conflicts with client demo, suggesting 3:15 PM instead ✅ Fri & Mon: usual pattern fits perfectly Should I proceed?"

Flow 4: Reschedule request

Key design decisions:

  • Identify target: Resolve ambiguous references ("my next break", "today's breaks") using calendar + time context
  • Modification types: Move (change time), cancel (remove), bulk reschedule (pattern shift)
  • Preserve intent: Maintain break frequency and spacing when rescheduling multiple breaks
  • Pattern learning: Remember and suggest previous reschedule patterns ("like we did last week")

Examples:

User: "Move my 2 PM break to 3 PM" Agent: "Moving your 2:00 PM break to 3:00 PM. Done! Your updated schedule: 10:30 AM ✓ 3:00 PM ✓ 4:30 PM ✓"
User: "Cancel my next break" Agent: "Cancelling your 1:15 PM break. You still have breaks at 3:30 PM and 4:45 PM today - want to keep those?"
User: "Reschedule today's breaks" Agent: "Current: 10 AM, 1 PM, 4 PM Meeting just added at 1 PM - suggest: Keep: 10:00 AM ✓ Move: 1:00 PM → 2:15 PM Keep: 4:00 PM ✓ Should I update?"

Flow 5: Query schedule (with proactive suggestions)

Key design decisions:

  • Dual purpose: Information retrieval + behavior change opportunity
  • Proactive detection: If query reveals no breaks scheduled, offer suggestions immediately
  • Adaptive persuasion: Light schedule → gentle nudge; heavy schedule → stronger recommendation with stress framing
  • Comparison intelligence: Support temporal comparisons ("today vs yesterday") to surface break gaps

Examples:

User: "What's my schedule today?" Agent: "Today: 5 meetings, 9 AM - 4:30 PM I notice you have no breaks scheduled. With back-to-back meetings, I recommend: 10:30 AM, 1:00 PM, 3:15 PM (5 min each) Want me to add these?"
User: "Show me tomorrow's calendar" Agent: "Tomorrow (Thu): 3 meetings, mostly morning Your usual 2:00 PM break still fits perfectly between your lunch and design review. Schedule it now?"
User: "Compare today with yesterday's schedule" Agent: "Yesterday: 3 meetings, 3 breaks taken ✓ Today: 6 meetings, 0 breaks so far ⚠️ Today's heavier - I suggest adding: 12:45 PM and 3:00 PM to maintain energy. Sound good?"

Advanced patterns

Complex reference resolution and error recovery patterns ensure robust, intelligent conversations.

Complex reference resolution

Reference types: Specific date ("Like last Friday"), historical pattern ("My usual"), comparative optimization ("Better than yesterday")

User: "Schedule better breaks than yesterday" Agent: "Yesterday's breaks came late and felt rushed. Improved plan: Yesterday: 2:15 PM, 4:45 PM (reactive) Today: 10:30 AM, 1:00 PM, 3:30 PM (proactive, well-spaced) Should I schedule these?"

Error recovery

Error types: Missing information, invalid reference, calendar access failure

User: "Schedule a break" Agent: "What time works best? Or I can find you a perfect spot based on your calendar."
User: "Schedule breaks like last Sunday" Agent: "I don't see work breaks from last Sunday. Should I check last Friday instead, or suggest times based on today's schedule?"
User: "What's my schedule today?" [Calendar API fails] Agent: "I'm having trouble accessing your calendar. Tell me about your meetings and I'll suggest break times manually."

Flow coverage

7

Flows designed

5 core intents + 2 supporting (complex reference resolution, error recovery)

≤3

Turn completion target

Complete conversations in 3 turns or less through batched suggestions with reasoning

10+

Edge cases covered

Conflicts, missing info, invalid references, technical failures, ambiguous requests

Principles embedded:

Complete in ≤3 turns Batch suggestions with reasoning Explain alternatives when blocked Maintain context Progressive clarification Graceful degradation