AI Mediator Mechanics

AI mediator behavior, state management, message patterns, and operating rules.

Updated

The AI replaces both the Facilitator and the whiteboard-covered room. It is the connective tissue of the async sprint.


Core Functions

1. State Machine

The AI manages the sprint as a state machine. It knows what phase is active, what activities are open, what’s been submitted, and what’s blocking progress.

STATES:
  setup → phase1 → phase2 → phase3 → phase4 → phase5 → complete

WITHIN EACH PHASE:
  Each activity has states: pending → open → collecting → closed

TRANSITIONS:
  An activity opens when its prerequisites are met.
  An activity closes at its deadline or when all inputs are received.
  A phase closes when all its activities are closed and the gate passes.

2. Blind Collection & Simultaneous Reveal

This is the AI’s most important unique capability. It replaces the original sprint’s silent-voting-in-a-room with something that’s actually MORE robust against bias.

Pattern:

  1. AI opens a blind submission window (via DM)
  2. Team members submit privately throughout the window
  3. AI acknowledges receipt but reveals nothing
  4. At the deadline, AI reveals ALL submissions simultaneously in the public channel
  5. No early peeking, no anchoring, no bias from submission order

Used for:

  • Goal and question drafts (Phase 1)
  • HMW notes (Phase 1)
  • Target nominations (Phase 1)
  • Solution sketches (Phase 2)
  • Straw poll votes (Phase 3)
  • Pattern identification (Phase 5)

3. Progress Tracking

The AI maintains a public dashboard that anyone can check anytime:

📊 SPRINT PROGRESS

Phase: 3 — Decide (hour 14 of 48)
━━━━━━━━━━━━━━━━ 29% ━━━━━━━━━━━━━━

Current activity: Heat Map Voting
  ✅ @Alex — voted
  ✅ @Jordan — voted
  ⏳ @Sam — in progress
  ❌ @Casey — not started
  ✅ @Morgan — voted

Next: Critique threads open when voting closes

📅 Phase 3 deadline: [date/time UTC]
🔜 Phase 4 starts after Phase 3 gate clears

4. Deadline Enforcement

ESCALATION LADDER:

T-24h:  "Reminder: [X] is due in 24 hours."
         → Posted in #sprint

T-6h:   "[Name] and [Name], you haven't submitted yet.
         The deadline is in 6 hours."
         → Private DM to individuals

T-1h:   "Final hour. Anything not submitted will be excluded."
         → Private DM + public post

T-0:    Phase activity closes. AI processes what it has.
         → If critical submission missing (e.g., Decider vote),
           AI sends URGENT escalation to Decider with 4-hour grace period.
         → Non-critical missing submissions: proceed without them.

5. Synthesis and Narration

The AI performs cognitive labor that the human Facilitator did in the original:

Original Facilitator ActionAI Equivalent
Drawing the map on the whiteboardDrafting the map from team inputs
Narrating sketches during speed critiqueWriting narration for each anonymous sketch
Organizing sticky notes by themeClustering HMW notes algorithmically
Counting dots on the wallTallying votes precisely
Summarizing expert interviewsExtracting key insights from Q&A threads
Saying “let’s move on”Closing activities at deadlines
Noticing someone is disengagedTracking participation and nudging privately

Sprint State Schema

{
  "sprint_id": "string",
  "status": "setup | phase1 | phase2 | phase3 | phase4 | phase5 | complete",
  "created_at": "ISO datetime",
  "deadline": "ISO datetime (hard cap, 14 days from start)",

  "challenge": {
    "brief": "string (the full Challenge Brief)",
    "title": "string (short title)"
  },

  "team": {
    "decider": { "id": "string", "name": "string" },
    "members": [{ "id": "string", "name": "string", "timezone": "string" }],
    "experts": [{ "id": "string", "name": "string", "area": "string" }]
  },

  "phase1": {
    "status": "pending | active | complete",
    "deadline": "ISO datetime",
    "goal": {
      "final": "string",
      "submissions": [{ "member_id": "string", "text": "string" }]
    },
    "sprint_questions": ["string"],
    "map": {
      "actors": ["string"],
      "steps": [{ "label": "string", "position": "number" }],
      "ending": "string",
      "version": "number"
    },
    "expert_qas": [
      {
        "expert_id": "string",
        "questions": ["string"],
        "answers": ["string"],
        "follow_ups": [
          { "from": "string", "text": "string", "response": "string" }
        ]
      }
    ],
    "hmw_notes": [
      {
        "id": "string",
        "text": "string",
        "author_id": "string",
        "theme": "string",
        "votes": "number"
      }
    ],
    "target": {
      "customer": "string",
      "moment": "string",
      "decided_by": "decider",
      "rationale": "string"
    }
  },

  "phase2": {
    "status": "pending | active | complete",
    "deadline": "ISO datetime",
    "lightning_demos": [
      {
        "member_id": "string",
        "title": "string",
        "url": "string",
        "big_idea": "string"
      }
    ],
    "divide_or_swarm": "divide | swarm",
    "assignments": [{ "member_id": "string", "area": "string" }],
    "sketches": [
      {
        "id": "string",
        "title": "string",
        "author_id": "string (hidden until Phase 3 reveal)",
        "image_urls": ["string"],
        "heat_map_score": "number",
        "critique_summary": "string",
        "straw_poll_votes": "number",
        "supervotes": "number"
      }
    ]
  },

  "phase3": {
    "status": "pending | active | complete",
    "deadline": "ISO datetime",
    "winners": ["sketch_id"],
    "maybe_laters": ["sketch_id"],
    "format": "rumble | all_in_one",
    "fake_brands": ["string"],
    "storyboard": {
      "frames": [
        {
          "number": "number",
          "description": "string",
          "source_sketch_id": "string | null"
        }
      ],
      "approved_by_decider": "boolean"
    }
  },

  "phase4": {
    "status": "pending | active | complete",
    "deadline": "ISO datetime",
    "roles": {
      "makers": [{ "member_id": "string", "frames": ["number"] }],
      "stitcher": "member_id",
      "writer": "member_id",
      "asset_collector": "member_id",
      "interviewer": "member_id"
    },
    "prototype_url": "string",
    "interview_script": "string",
    "trial_run_complete": "boolean",
    "customers_confirmed": [
      {
        "name": "string",
        "time": "ISO datetime",
        "status": "confirmed | tentative | backup"
      }
    ]
  },

  "phase5": {
    "status": "pending | active | complete",
    "deadline": "ISO datetime",
    "interviews": [
      {
        "number": "number",
        "customer_name": "string",
        "recording_url": "string",
        "observations": [
          {
            "member_id": "string",
            "text": "string",
            "valence": "positive | negative | neutral",
            "timestamp": "string"
          }
        ]
      }
    ],
    "patterns": [
      {
        "text": "string",
        "valence": "positive | negative | neutral",
        "customer_count": "number",
        "reporter_count": "number"
      }
    ],
    "question_answers": [
      { "question": "string", "answer": "string", "evidence": "string" }
    ],
    "next_steps": ["string"],
    "decided_by": "decider"
  }
}

Message Templates

Phase Opening

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📍 PHASE [N]: [NAME]
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

⏱ Window: [start] → [end] ([X] hours)
🎯 Goal: [What this phase produces]

Here's what happened in Phase [N-1]:
[2-3 sentence summary]

Here's what you need to do now:
[First activity instructions]

Activity Prompt

📋 [ACTIVITY NAME]

What: [1 sentence]
How: [Numbered steps]
Submit: [Where/how to submit]
⏱ Deadline: [date/time UTC] ([local times for each timezone])

Blind Reveal

🎭 REVEAL: [Activity Name]

[X] submissions received from [X] team members.
Here they are, all at once:

[All submissions posted in rapid sequence]

Next step: [What to do with the revealed material]

Decision Escalation

👑 DECIDER: Decision needed

[Context of what needs deciding]

Team input:
[Summary of votes/discussion]

Your options:
A) [Option]
B) [Option]
C) [Something else]

Please respond within 12 hours.
⏱ Deadline: [time]

Nudge (Private DM)

Hey [Name] — quick heads up:

[Activity] is due in [time remaining].
Here's what's needed from you: [specific deliverable].

Need help? Let me know and I can [offer specific assistance].

AI Behavioral Rules

Never

  • Make decisions for the team (always escalate to Decider)
  • Generate solution ideas (solutions come from humans)
  • Skip a phase or activity
  • Extend a deadline without Decider approval
  • Reveal blind submissions before the deadline
  • Share one person’s private submission with another
  • Take sides in a disagreement

Always

  • State deadlines in UTC and convert to each person’s timezone
  • Summarize before transitioning (ensure no one is lost)
  • Track who has and hasn’t contributed
  • Nudge privately before calling out publicly
  • Preserve anonymity of sketches until the reveal
  • Pin key decisions in #sprint-decisions
  • Maintain the Sprint State and make it queryable

When In Doubt

  • Move forward (momentum matters more than perfection)
  • Ask the Decider (that’s what they’re there for)
  • Default to the methodology (it’s been tested 100+ times)