# Followup Escalation Coordination

> Tracks pending actions, approvals, review requests, and open tasks across Teams chats, meetings, email, and Planner, then drafts reminders, escalation notices, and status roll-ups using age and priority rules. Use when user asks to "what am I waiting on", "who owes me a response", "chase my open approvals", "follow up on my pending items", "what's overdue", "escalate stalled items", or "send a status update on open actions". Also use when the user asks what they still owe or have not done across meetings, with no request to create tasks. Do NOT use for a general day overview (use daily-briefing), summarizing one meeting (use meeting-intel), or creating tasks from a single meeting recap (use meeting-action-items-to-planner).

- Skill: `dgusoff/followup-escalation-coordination` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add dgusoff/followup-escalation-coordination`
- Raw SKILL.md: https://api.skillmd.com/api/skills/dgusoff/followup-escalation-coordination/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Productivity
- Author: dgusoff (https://skillmd.com/u/dgusoff)
- Updated: 2026-09-22
- Page: https://skillmd.com/skills/dgusoff/followup-escalation-coordination

---


## Overview

Builds a single register of everything the user is waiting on or owes someone —
across Outlook mail, Teams chats and channels, meeting transcripts, calendar
commitments, and Microsoft Planner — then classifies each item by age and
priority and recommends the next action: wait, remind, escalate, or close.
Drafts the reminder and escalation messages; the user approves before anything
is sent.

## When to Use

- "What am I waiting on?" / "Who hasn't responded to me?"
- "Chase my open approvals" / "Which approvals are stuck?"
- "What's overdue across my tasks and follow-ups?"
- "Escalate anything that's been sitting too long"
- "Send a status update on my open action items"

## When NOT to Use

- General overview of today's schedule and inbox — use `daily-briefing` instead
- Recap or action items from one specific meeting — use `meeting-intel`, or
  `meeting-action-items-to-planner` to create the tasks
- Scheduling, declining, or rescheduling meetings — use `schedule-meeting` or
  `calendar-management`
- Writing a standalone leadership update unrelated to open items — use
  `stakeholder-comms`

## Quick Start

```
User: "What am I waiting on and what should I escalate?"
1. Resolve the user, timezone, manager, and the lookback window (default 21 days)
2. Gather open items from mail, Teams, meetings, and Planner (parallel)
3. Normalize into a register: item, owner, requester, asked-on, age, due, source
4. Classify with the business rules below → Wait / Remind / Escalate / Close
5. Present the register + recommendations; draft messages only for approved items
```

## Core Instructions

### Step 1: Gather Context

- `me_profile-GetMyDetails` for identity and timezone; `me_profile-GetManagerDetails`
  for the escalation path. Resolve every other person with `me_profile-SearchPeople`
  — never construct email addresses.
- Resolve relative dates ("last week", "overdue") to explicit dates in the user's
  local timezone before filtering.
- Default lookback: 21 days. Honor an explicit window if the user gives one.

### Step 2: Gather Open Items (run these in parallel)

- **Email** — `outlook-ListMessages` over the window, plus `m365_search-SearchM365`
  with commitment keywords: approve, approval, sign-off, review, feedback, waiting
  on, please confirm, by EOD, action required. Include sent mail: a request the
  user made with no reply is a pending item. Use `outlook-GetMessage` to read the
  ask, and check whether a later message in the thread already answers it.
- **Teams** — `m365_search-SearchM365` (sources: chat/message) and
  `m365_teams-ListChatMessages` / `ListChannelMessages` for the same keywords plus
  direct @-mentions of the user. A question addressed to the user with no
  subsequent reply from them is an item they owe.
- **Meetings** — `outlook_calendar-ListCalendarView` for the window, then
  `graph-ListMeetingTranscripts` + `graph-GetMeetingTranscript` on matching events;
  extract commitments ("I'll send…", "can you own…", "we'll decide by…") with the
  owner and stated date.
- **Planner** — `graph-CallGraph` against the Planner endpoints (`/me/planner/tasks`,
  then `/planner/plans/{id}` and `/planner/buckets/{id}` for names) to pull assigned
  tasks with `dueDateTime`, `percentComplete`, and `assignments`.

Deduplicate across sources: the same commitment often appears in a transcript, a
follow-up email, and a Planner task. Keep one entry with all source links.

### Step 3: Classify with the Business Rules

Compute **age** = business days since the ask. Priority is High when the item is
from a VIP (the user's manager, skip-level, or an external customer), blocks a
dated deliverable, is labeled urgent/blocker, or is a compliance/approval gate.

| Priority | Remind at | Escalate at | Notes |
|---|---|---|---|
| High | 1 business day | 3 business days | Escalate to the owner's manager |
| Medium | 3 business days | 7 business days | Escalate to the user's manager first |
| Low | 5 business days | 10 business days | Or batch into the weekly roll-up |

- **Wait** — under the remind threshold, or a due date is still in the future.
- **Remind** — at or past remind, below escalate: friendly nudge to the owner.
- **Escalate** — at or past escalate, or a hard deadline is within 2 business days
  and the item is unresolved.
- **Close** — a reply, an approval, or a completed Planner task resolves it. Say so
  and drop it from the open register.
- Never escalate an item without a prior reminder in the thread unless the user
  explicitly asks or a deadline is already breached — state that reasoning.
- Anything already reminded twice with no response is Escalate regardless of age.

### Step 4: Present and Act

Show the register and the recommendations first. Then, only for items the user
approves:

- Reminders → `outlook-ReplyToMessage` on the original thread, or
  `m365_teams-PostMessage` in the original chat. Keep them short, warm, and
  specific: what was asked, when, what is needed, by when.
- Escalations → `outlook-SendEmailWithAttachments` to the escalation contact with
  the user's manager on cc, stating the item, the ask date, the reminders already
  sent, the business impact, and the decision needed.
- Status roll-ups → present inline, or route to `stakeholder-comms` when the user
  wants an audience-tailored update.

If the user says "draft only", "don't send", or "let me review first", use
`outlook-CreateDraftMessage` / `outlook-CreateReplyDraft` and present Teams text in
chat instead of posting. That instruction stays in force for the rest of the task.

## Output

Lead with a one-line headline (e.g. "14 open items — 3 need escalation today"),
then:

**Escalate now** — item, owner, age, why, proposed escalation contact
**Send a reminder** — item, owner, age, one-line nudge preview
**Waiting (no action yet)** — item, owner, next check date
**Closed since last check** — item and what resolved it

Keep it under ~25 rows; if there are more, show the top items by priority and say
how many were omitted. Cite each item's source by exact name (subject line, chat,
meeting title, or Planner task) and use bracketed context aliases where available.
Use `core-render_ui` for a table only when there are 4+ items with 3+ attributes.

## Guardrails

- Nothing is sent, posted, or escalated without showing the user the item list and
  the message text first. An explicit do-not-send instruction is authoritative.
- Escalate through the org chain resolved from people tools — never guess a manager
  or an email address.
- Report only what the tools returned. If a source is unavailable or empty, say so
  plainly; never invent an owner, a date, an ask, or a commitment.
- Do not characterize a person as unresponsive, slow, or at fault — report the
  factual age of the item only. No performance evaluation of individuals.
- Respect calendar and message privacy: for items sourced from private or personal
  events, surface the time block, not the subject line.
- Escalation drafts stay factual and neutral in tone — impact and decision needed,
  not blame.
- For a recurring check ("every Monday morning"), use `host-SetupScheduledPrompt`
  with a self-contained description; otherwise run once now.

