| name | inbox-digest |
| version | 2.0.0 |
| description | Event inbox digest — classify emails by stakeholder type (vendor/client/sponsor/speaker/venue) and priority tier with temporal overrides. Use when triaging event email, starting your day on an event project, or before a production meeting. Triggers: 'triage inbox', 'email digest', 'inbox digest', 'event email', 'check my email'. |
| tools | ["composio:GMAIL_FETCH_EMAILS","composio:GMAIL_FETCH_MESSAGE_BY_THREAD_ID","composio:GOOGLECALENDAR_EVENTS_LIST","composio:GOOGLESHEETS_BATCH_GET"] |
| scripts | ["scripts/triage.py","scripts/action_extractor.py"] |
Inbox Digest
Purpose
Turn a chaotic event inbox into a prioritized, actionable digest classified by event stakeholder type.
Generic inbox triage tools treat all emails the same. Event production doesn't work that way. A venue contract revision three days before load-in outranks a sponsor asset submission with a two-week lead. A client asking "are we still on?" needs a same-hour response. A speaker requesting AV changes needs to reach your production team, not sit in your read pile.
This skill applies event production logic to your Gmail so you can walk into every production meeting, client call, or load-in day knowing exactly what needs to happen before anything else moves.
When to Use
- Starting your day on an active event project. Run this before opening anything else. Classify the overnight and early-morning messages before context-switching fragments your attention.
- Before a production meeting or client call. Pull a fresh digest for the specific event so you can speak to every open thread without scrambling through your inbox during the call.
- When you've been away and need to catch up. Extended time range (48h, 72h, or custom). Get a full picture of what moved while you were out and identify anything that stalled waiting on you.
- When multiple vendors, clients, and sponsors are emailing simultaneously. The final week before an event. Conflicting timelines, overlapping asks, everyone wants confirmation. Classification prevents you from mis-prioritizing based on email volume rather than production impact.
When NOT to Use
- Not for composing or drafting email replies. This skill triages and classifies — it does not write responses. Use it to decide what to respond to, then compose separately.
- Not for non-event email. Personal inbox, newsletters, or unrelated project threads should not be mixed in. Run this skill scoped to a specific event or project name.
- Not for real-time event monitoring. Use this for periodic triage (start of day, pre-meeting), not continuous inbox watching. It produces a point-in-time snapshot, not a live feed.
- Not for email migration or cleanup. This produces a prioritized digest, not inbox organization. It does not archive, label, move, or delete any messages.
Inputs
| Input | Required | Default | Notes |
|---|
| Event / project name | Yes | — | Used as Gmail search query; match your email subject conventions (e.g., "Summit 2026", "Gala Oct") |
| Event date | Yes | — | YYYY-MM-DD format; drives phase detection and urgency calculations |
| Time range | No | 24h | Accepts: 24h, 48h, 72h, 1w, or custom date range YYYY/MM/DD:YYYY/MM/DD |
| Sender domains | No | — | Comma-separated list to narrow scope (e.g., venuegroup.com,floraltrio.com) |
| Save path | No | {event-name}/digests/ | Override destination folder for the dated digest file |
Quick Reference
Stakeholder Types
| Type | Key Signals |
|---|
| Vendor | AV, catering, security, decor, transport, staffing, rentals |
| Client | Paying organization, corporate domain, C-suite/VP titles |
| Sponsor | Activation, booth, logo placement, sponsor deck |
| Speaker | Bureau domain, rider, session, keynote, bio and headshot |
| Venue | Hotel/convention center, dock, load-in, COI, floor plan |
| Internal | Own domain, team aliases, automated notifications |
Priority Tiers
| Tier | Response Window | Default |
|---|
| 1 — Immediate | 1-2 hours | Vendor D-14, any cancellation/delay/safety |
| 2 — Today | Business hours | Vendor (default), Client, Venue |
| 3 — Tracking | No action | Sponsor, Speaker, Internal |
Workflow by Task
Task 1: Event Inbox Triage
Objective: Pull all relevant email for the event and classify each thread by stakeholder type and priority tier.
Script mode (recommended for 20+ threads):
python skills/inbox-digest/scripts/triage.py \
--event "Summit 2026" \
--date 2026-05-15 \
--range 24h \
--output digests/2026-05-10-kgc-2026-inbox-digest.md
Interactive mode (Claude-guided with Composio tools):
-
Ask the user: "Which event or project should I triage?" Accept a name or project code.
-
Confirm event date, time range (default 24h), and any sender domain filters.
-
Fetch emails via Composio:
GMAIL_FETCH_EMAILS: query="{event_name}", max_results=50, label="INBOX"
If a time range other than 24h is specified, add after:YYYY/MM/DD before:YYYY/MM/DD to the query.
-
Cross-reference with calendar to confirm event proximity:
GOOGLECALENDAR_EVENTS_LIST: query="{event_name}", time_min=now, time_max=+30d
-
For each thread returned, parse:
- Sender name and domain
- Subject line — scan for keywords: advance, rider, COI, contract, invoice, PO, load-in, run-of-show, ROS, confirmation, revision, approval, hold, deposit, balance, dietary, accreditation, credential, badge, AV, logistics
- Thread age — time since last message
- Body excerpt — first 300 characters for deadline/commitment signals
MUST apply temporal override rules before finalizing tier assignments.
-
Classify each thread by Stakeholder Type:
| Type | Signals |
|---|
| Vendor | Catering, AV, production company, trucking, decor, florist, entertainment, security, staffing agency, rentals, print shop |
| Client | The contracting organization; often the event sponsor company paying the agency fee |
| Sponsor | Brand partners contributing activation budgets or in-kind; distinct from the client even when the client also sponsors |
| Speaker | Confirmed or prospective presenter; bureau reps count as Speaker-adjacent |
| Venue | Hotel, convention center, outdoor site, venue coordinator, catering manager (venue-employed) |
| Internal | Your own team, subcontractors on your roster, partner agencies on the same side of the table |
When classification is ambiguous, default to the stakeholder type with the higher production impact (Vendor > Speaker > Venue for operational threads).
-
Assign Priority Tier:
| Tier | Label | Criteria |
|---|
| 1 | Immediate | Requires response or action today. Blocked deliverable, time-sensitive approval, payment deadline within 48h, venue or vendor escalation, client waiting on confirmation, load-in logistics unresolved within 72h of event |
| 2 | Today | Needs attention this workday but not this hour. Advancing information requests, asset submissions for review, draft approvals, speaker logistics confirmations more than 72h out |
| 3 | Tracking | No action needed now. FYIs, confirmations of receipt, vendor acknowledgments, automated notifications, threads you're CC'd on |
Special rules:
- Any vendor email mentioning load-in, install, delivery window, or rider compliance is automatically Tier 1 if the event is within 14 days.
- Any client email with a question mark in the subject or body is Tier 1.
- Stale Tier 1 threads (no reply sent in 24h+) escalate to flagged status regardless of original priority.
Task 2: Generate Digest
Objective: Format the classified threads into a structured digest document and save it.
- Use the output format defined in the Output Format section.
- Check every thread for stale status: last message older than 24h with no outbound reply from your address. Flag these in the Stale Threads section.
- Add a digest header with:
- Event name
- Digest generated timestamp
- Event phase (Normal / Planning / Advance / Load-In / Show Day)
- Time range covered
- Total thread count by tier (e.g., "4 Immediate · 7 Today · 12 Tracking")
- Save to a dated file:
{save_path}/YYYY-MM-DD-{event-slug}-inbox-digest.md
Example: summit-2026/digests/2026-03-23-summit-2026-inbox-digest.md
- Confirm save path to user and offer to open the file.
Task 3: Action Item Extraction (Optional)
Objective: Surface concrete commitments and deadlines buried in Tier 1 and Tier 2 threads.
Script mode:
python skills/inbox-digest/scripts/triage.py \
--event "Summit 2026" --date 2026-05-15 --json --output digest.json
python skills/inbox-digest/scripts/action_extractor.py \
--digest digest.json --event "Summit 2026" --date 2026-05-15
Interactive mode:
Ask the user: "Would you like me to extract action items from Tier 1 and Tier 2 threads?"
If yes:
- Re-read the body of each Tier 1 and Tier 2 thread:
GMAIL_FETCH_MESSAGE_BY_THREAD_ID: thread_id={id}
- Scan for:
- Commitments you made ("I'll send", "we'll confirm", "will follow up")
- Commitments others made ("will deliver", "sending over", "confirming by")
- Hard deadlines (date + time mentions, "by EOD", "before load-in", "by Friday")
- Approval gates (contracts awaiting signature, invoices awaiting PO, assets awaiting sign-off)
- Format as a numbered action list appended to the digest:
## Action Items
1. [YOUR ACTION] Send COI to Venue by 2026-03-24 — thread: RE: Insurance Requirements
2. [AWAITING] AV vendor to deliver run-of-show by 2026-03-25 — thread: ROS Final Draft
3. [APPROVAL NEEDED] Client sign-off on revised stage plot — thread: Stage Layout v3
Output Format
Digest Header
# Inbox Digest — {Event Name}
Generated: {timestamp}
Period: Last {time_range}
Phase: {phase_label} ({days} days to event)
Threads: {n} Immediate · {n} Today · {n} Tracking · {n} Stale Flagged
Tier 1 — Immediate Action Required
| Sender | Type | Subject | Action Needed | Deadline |
|---|
| Sound Co. / soundco.com | Vendor | RE: Load-in window Tuesday | Confirm 6am access or request alternative | Today EOD |
| Sarah Chen (Client) | Client | Are we confirmed for AV walkthrough? | Reply with confirmation + logistics | ASAP |
| Grand Ballroom Venue | Venue | Certificate of Insurance — URGENT | Forward COI from broker | 2026-03-24 |
Tier 2 — Action Today
| Sender | Type | Subject | Status |
|---|
| Bloom Florals | Vendor | Centerpiece final count | Awaiting your headcount confirmation |
| Marcus Webb (Speaker) | Speaker | AV rider — updated version | Review and forward to AV vendor |
| TechCorp Sponsorship | Sponsor | Logo file submission | Assets received, needs review |
Tier 3 — Tracking
- Sound Co. — RE: Contract countersigned (receipt confirmation, no action)
- Venue Catering — Menu confirmation (acknowledged previous selection)
- Badge Printer — Order #4821 processing (automated update)
Stale Threads — No Reply 24h+
| Thread | Type | Age | Last Outbound | Recommended Action |
|---|
| RE: Vendor rider compliance | Vendor | 36h | None | Send acknowledgment + ETA |
| Dressing room logistics | Venue | 48h | None | Follow up; confirm details locked |
Principles
-
Vendor emails are never low-priority. A late response to a vendor in the final days before an event doesn't cause a delay — it causes a crisis. A florist who doesn't hear back may not show up. An AV company whose rider questions go unanswered may arrive under-staffed. Vendor threads default to Tier 2 at minimum, and Tier 1 any time the event is within 14 days or the subject touches load-in, delivery, compliance, or payment.
-
Classify by what the email NEEDS, not who sent it. A venue coordinator sending a friendly check-in that contains a contract revision question is a Tier 1 thread, not a Tier 3 one. Read the ask. The stakeholder type determines your response channel and urgency framing; the content determines the tier.
-
Flag stale threads proactively. NEVER generate a digest without checking stale threads. The stale thread section is the highest-value output. In event production, silence is interpreted as confirmation or abandonment. A thread you haven't replied to in 24h is actively creating risk: the vendor assumes you approved their timeline, the client assumes you're handling it, the speaker assumes they don't need to prepare. Surface stale threads every time, without exception.
-
One digest, one event. Do not mix threads from multiple events in a single digest. If you're running parallel events, run separate digests. Cross-event context collapse is how production details fall through the cracks.
What to Avoid
-
Listing without classification. A raw email list sorted by time is not a digest — it's your inbox. Every thread in the output must have a stakeholder type and a tier. If you can't classify a thread, flag it as "Unclassified — review manually" rather than leaving it untagged.
-
Treating all vendor emails as urgent. Tier 1 is for threads that require action today. A vendor submitting their W-9 three weeks before the event is Tier 2 or Tier 3 depending on your payment timeline. Crying wolf on vendor urgency trains you to ignore the tier system the week it actually matters.
-
Missing timeline and deadline mentions in the body. Subject lines lie. ALWAYS scan the first 300 characters of every Tier 1 and Tier 2 thread body. "Quick question" subject lines often contain hard deadlines. "FYI" threads sometimes contain delivery windows that need verbal confirmation. If the body contains a date, a time, or the words "by", "before", "deadline", "due", or "confirm by" — that thread's tier may need to be upgraded.
-
Generating a digest without checking stale threads. The stale thread section is not optional. It is the highest-value output in the digest for active events. Skip it and you are producing a document that actively obscures risk.
-
Generic classification ignoring event context. A "catering" email from the hotel means something different when you're 72 hours from a 500-person gala than when you're 6 weeks out. Apply the event timeline. Apply the production phase (site visit, advance, production week, load-in, day-of, strike). A thread that would be Tier 3 in month one may be Tier 1 in week one.
Tool Integration
Composio Tools (Primary)
| Tool | Action | Purpose | Safety Tier |
|---|
| Gmail — fetch | GMAIL_FETCH_EMAILS | Pull event threads by search query | T1 Read |
| Gmail — read thread | GMAIL_FETCH_MESSAGE_BY_THREAD_ID | Read full thread body for action items | T1 Read |
| Gmail — read message | GMAIL_FETCH_MESSAGE_BY_MESSAGE_ID | Read individual message details | T1 Read |
| Calendar — events | GOOGLECALENDAR_EVENTS_LIST | Cross-reference event dates for phase calculation | T1 Read |
| Sheets — read | GOOGLESHEETS_BATCH_GET | Load vendor/client/sponsor contact list for classification | T1 Read |
| Drive — upload | GOOGLEDRIVE_UPLOAD_FILE | Save completed digest to project Drive folder | T2 Write |
Scripts
| Script | Command | Purpose |
|---|
| triage.py | python skills/inbox-digest/scripts/triage.py --event "..." --date YYYY-MM-DD | Automated batch triage with stakeholder classification and phase-aware urgency |
| action_extractor.py | python skills/inbox-digest/scripts/action_extractor.py --digest digest.json --event "..." --date YYYY-MM-DD | Extract action items, commitments, and deadlines from classified threads |
Workflow note: Run Calendar cross-reference before finalizing tier assignments. An email that looks like Tier 2 may escalate to Tier 1 when you confirm the event is 5 days away, not 3 weeks.
Composio Notes
Gmail Search Syntax
Composio's GMAIL_FETCH_EMAILS uses standard Gmail search syntax in the query parameter:
"Summit 2026" label:inbox # Broad event match
"Summit 2026" after:2026/03/01 # With date filter
from:vendor@soundco.com "Summit" # Specific sender
Thread Reading for Stale Detection
GMAIL_FETCH_EMAILS returns summaries. For accurate stale detection, read the full thread with GMAIL_FETCH_MESSAGE_BY_THREAD_ID and check the last message timestamp against phase-based thresholds.
Contact List for Classification
If a vendor/client spreadsheet is available, load it via GOOGLESHEETS_BATCH_GET before classification. Map sender domains to stakeholder types for higher accuracy than keyword matching alone.
Resources