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'.
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.
| 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 |
| 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 |
| 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 |
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:
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:
Objective: Format the classified threads into a structured digest document and save it.
{save_path}/YYYY-MM-DD-{event-slug}-inbox-digest.md
Example: summit-2026/digests/2026-03-23-summit-2026-inbox-digest.mdObjective: 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:
GMAIL_FETCH_MESSAGE_BY_THREAD_ID: thread_id={id}
## 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
# 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
| 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 |
| 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 |
| 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 |
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.
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 | 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 |
| 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'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