Intervention Type Predictor: ML-Optimized Step Ordering

The 8-Step Negotiation Engine isn't always in the same order. Whistl's Intervention Type Predictor uses machine learning to reorder steps in real-time based on your current state, history, and what's most likely to work RIGHT NOW. This is dynamic intervention optimisation.

Why Step Ordering Matters

The sequence of intervention steps affects their effectiveness:

Research on Intervention Sequencing

  • Early success builds momentum: Completing early steps increases likelihood of completing later ones (Lally et al., 2010)
  • Mismatched sequencing reduces engagement: Steps that don't match user state are skipped (Prochaska & DiClemente, 1983)
  • Escalation works better than de-escalation: Starting gentle, escalating if needed (Miller & Rollnick, 2012)
  • State-dependent effectiveness: What works when calm may not work when agitated (Loewenstein, 1996)

The Problem with Fixed Order

  • Wrong step at wrong time: Breathing won't help if user needs accountability
  • Missed opportunities: Best step might be #8, but user bypasses at #3
  • Frustration: Being forced through unhelpful steps reduces trust
  • One-size-fits-all: Same order for everyone ignores individual differences

How the Intervention Type Predictor Works

The predictor uses machine learning to determine optimal step order for each intervention:

Input Features

# Intervention Type Predictor input features
predictor_inputs = {
    # User state
    "current_risk_score": 0.72,
    "urgency_level": "high",  # low, medium, high, critical
    "emotional_state": "frustrated",  # from mood check-in
    "time_pressure": "low",  # user has time for full sequence
    
    # Historical effectiveness
    "step_effectiveness": {
        "acknowledge": 0.89,
        "breathe": 0.54,
        "visualize": 0.65,
        "partner": 0.83,
        # ... etc
    },
    
    # Context
    "time_of_day": "21:30",
    "day_of_week": "Friday",
    "location": "home",
    "recent_bypass_attempts": 1,
    
    # Current intervention
    "trigger_type": "dns_block",  # what triggered intervention
    "blocked_category": "gambling",
}

# Output: Ordered list of steps
optimal_order = predictor.predict(predictor_inputs)
# Result: ["acknowledge", "partner", "visualize", "breathe", ...]

Model Architecture

# Intervention Type Predictor model
model = Sequential([
    Input(shape=(47,)),  # 47 input features
    
    # Learn feature interactions
    Dense(128, activation='relu'),
    Dropout(0.3),
    Dense(64, activation='relu'),
    Dropout(0.2),
    
    # Output: Score for each step (higher = should come earlier)
    Dense(8, activation='softmax')  # 8 steps
])

# Training: Learn from successful intervention sequences
# Input: State + context at intervention start
# Target: Order of steps in successful interventions

Ordering Rules and Constraints

The predictor follows certain rules while optimising:

Hard Constraints (Never Violated)

  • Acknowledge is always first: Validation must come before anything else
  • Partner is always last: Social escalation is final resort
  • Breathe cannot be skipped: If shown, must be completable

Soft Constraints (Usually Followed)

  • Escalation pattern: Gentler steps before more intense ones
  • Cognitive before behavioral: Thinking steps before action steps
  • Individual before social: Self-focused steps before partner steps

Flexible Ordering (Steps 2-7)

Steps 2-7 can be reordered based on predicted effectiveness:

  • Reflect, Breathe, Visualize, Alternative, Commit, Delay
  • Order determined by ML prediction + personal effectiveness data

Real-Time Prediction Examples

Example 1: Marcus's Friday Night Crisis

Context: Friday 9:30pm, near Crown, high risk, frustrated

Predictor Analysis:

  • High urgency → Need impactful steps early
  • Frustrated → Skip cognitive steps, go to action
  • Partner historically effective (83%) → Promote
  • Breathe less effective when agitated (41%) → Demote

Predicted Order:

  1. Acknowledge (required first)
  2. Partner (promoted - high effectiveness)
  3. Visualize (promoted - emotional connection)
  4. Delay (promoted - buys time)
  5. Reflect (demoted - cognitive, user is agitated)
  6. Breathe (demoted - less effective when frustrated)
  7. Alternative
  8. Commit (required last before partner)

Example 2: Sarah's Afternoon Shopping Urge

Context: Wednesday 2pm, at home, moderate risk, bored

Predictor Analysis:

  • Moderate urgency → Can use full sequence
  • Bored (not agitated) → Cognitive steps will work
  • Visualization highly effective (71%) → Promote
  • Alternative actions work well (62%) → Promote

Predicted Order:

  1. Acknowledge (required first)
  2. Visualize (promoted - highly effective for Sarah)
  3. Reflect (promoted - cognitive state is good)
  4. Alternative (promoted - good success rate)
  5. Breathe
  6. Delay
  7. Commit
  8. Partner (required last)

Example 3: Jake's Late Night Impulse

Context: Sunday 2am, woke up with urge, tired, vulnerable

Predictor Analysis:

  • Low energy (2am, just woke up) → Keep steps simple
  • Vulnerable state → Gentle approach needed
  • Breathe effective when tired (67%) → Promote
  • Partner might be asleep → Demote (can't respond)

Predicted Order:

  1. Acknowledge (required first, gentle tone)
  2. Breathe (promoted - works when tired)
  3. Visualize (promoted - simple, emotional)
  4. Delay (promoted - urge will pass)
  5. Reflect (demoted - cognitive load too high at 2am)
  6. Alternative (demoted - limited options at 2am)
  7. Commit
  8. Partner (demoted - partner likely asleep)

Learning from Outcomes

The predictor continuously improves based on intervention outcomes:

Outcome Tracking

# Track outcome of each intervention
intervention_outcome = {
    "timestamp": "2026-03-05T21:34:00",
    "predicted_order": ["acknowledge", "partner", "visualize", ...],
    "actual_order_completed": ["acknowledge", "partner", "visualize", "breathe"],
    "steps_skipped": ["reflect", "alternative", "commit", "delay"],
    "bypassed": False,
    "urge_passed": True,
    "time_to_urge_pass": "14 minutes",
    "user_rating": 5,
}

# Update model based on outcome
if intervention_outcome["urge_passed"]:
    # This order worked - reinforce
    reinforce_order(intervention_outcome["predicted_order"])
else:
    # This order didn't work - adjust
    adjust_order_weights(intervention_outcome)

Model Updates

  • Daily batch updates: Model retrained on previous day's interventions
  • Weekly evaluation: Overall model performance reviewed
  • Monthly recalibration: Full model retraining with all data

Effectiveness Data

ML-optimised ordering vs. fixed ordering:

Comparative Results

MetricFixed OrderML-Optimised OrderImprovement
Intervention Completion Rate67%81%+14%
Steps Completed (Average)4.25.8+38%
Urge Pass Rate58%71%+13%
Bypass Rate24%15%-38%
User Satisfaction4.1/54.6/5+12%

User Testimonials

"Sometimes Whistl knows exactly what I need. Like it reads my mind. Other times it's different. Turns out it's actually learning what works for me." — Marcus, 28

"I noticed the steps changed order based on what was happening. When I'm angry it's different than when I'm sad. Smart." — Sarah, 34

"The AI figured out that at 2am I need simple stuff. Breathing and goals. Not complex thinking. That's when it started working." — Jake, 31

Conclusion

Whistl's Intervention Type Predictor transforms the 8-Step Negotiation from a static sequence into a dynamic, adaptive intervention. By predicting the optimal step order for each moment, Whistl maximises the chance that you'll complete the sequence and resist the impulse.

This is machine learning in service of behaviour change—using AI not to replace human willpower, but to support it at exactly the right moment, in exactly the right way.

Experience ML-Optimised Intervention

Whistl's AI predicts the best intervention order for each moment. Download free and experience adaptive behaviour change.

Download Whistl Free

Related: 8-Step Negotiation Engine | Step Effectiveness Tracking | Machine Learning Money Management