← Vault Index
Source: business/products/consulting-practice-sop-manual/runners/meeting-optimization-audit-runner-SKILL.md

name: meeting-optimization-audit-runner description: > Runs the monthly meeting optimization audit — inventories all recurring meetings, flags drift and scope creep, builds structured agendas for any session that lacks one, and commits to at least one concrete calendar change. End of first week each month. metadata: author: "Kathryn Brown, Practice Builders" version: "1.0.0" date: "2026-04-28" sop: "Meeting Optimization Audit" category: "Operations & Admin" frequency: "Monthly" estimated-time: "30 min" trigger: "End of first week each month"


Meeting Optimization Audit — Runner

You are executing the Meeting Optimization Audit SOP for an independent consultant. Meetings are the largest single consumer of billable capacity in a solo practice, and the least audited. Without a monthly review, recurring calls that outlived their purpose stay on the calendar indefinitely, sessions drift longer than they should, and you lose hours per week to conversations that produce no documented decisions.

Do not skip steps. Do not ask questions across multiple turns — collect everything upfront.


What you'll have when this is done: A current meeting inventory with total weekly hours calculated, structured agendas ready for any upcoming meetings that lacked them, and at least one concrete change to your recurring meeting schedule — a cancellation, a shortening, or a restructure to async.


Step 1: Collect All Inputs

Ask the user for the following in a single prompt. Accept whatever detail level they provide — flag gaps but keep moving.

Recurring Meeting Inventory — for each recurring meeting currently on the calendar:

Prior Month Session Notes:

Meeting Hours Summary:

Upcoming Meetings Needing Agendas:

If the user doesn't have exact numbers for meeting hours, accept estimates and note where precision would improve the analysis.


Step 2: Build the Meeting Inventory

Using the recurring meeting data from Step 1, produce a complete inventory table.

2A. Recurring Meeting Table

Meeting / ClientDurationCadenceWeekly HoursHas Agenda?
[Name][X min][Weekly/Biweekly/Monthly][X hrs][Yes/No]
Total[X hrs]

Weekly Hours calculation: Convert each meeting to its weekly equivalent. A 60-minute biweekly call = 0.5 hrs/week. A 30-minute weekly call = 0.5 hrs/week. A 60-minute monthly call = 0.25 hrs/week. Show exact math, don't round.

2B. The Necessity Test

For each recurring meeting, apply the core test: If this meeting didn't exist, would the engagement suffer?

Meeting / ClientVerdictRationale
[Name]Keep / Restructure / Cancel[1 sentence — why]

Rules for the test:


Step 3: Flag Scope Creep Signals

Review the session notes from the prior month. Flag any meeting that ran more than 15 minutes over its scheduled slot.

3A. Overrun Table

Meeting / ClientScheduledActualOverrunFrequency (times in past month)
[Name][X min][X min][+X min][X of Y sessions]

For each overrun, provide a brief diagnosis:

3B. No-Decision Meetings

List any meeting from the prior month where no decisions were documented afterward. These are the most expensive meetings in a solo practice — they consumed time, produced no forward motion, and will likely repeat next month.

Meeting / ClientDateTopics CoveredDecisions Made
[Name][Date][Topics]None documented

Rule: A meeting with no decisions is a status update. Status updates don't need meetings — they need a shared document or a 3-sentence email.


Step 4: Build Agendas for Unstructured Meetings (Meeting Agenda Builder — Condensed)

For each upcoming meeting identified in Step 1 as lacking a standing agenda, build a structured agenda using the following framework.

4A. Item Categorization

Review the user's topic list for each meeting and categorize:

ItemCategoryOwnerProposed Time
[Topic]Decision / Update / Discussion / Parking Lot[Name][X min]

4B. Agenda Structure

Build in this order:

  1. Opening (1-2 min) — State purpose, confirm agenda.
  2. Decision items (first half) — highest priority first. Each gets: question, context (1-2 sentences), time allocation, owner, decider.
  3. Update items (middle) — strict time boxes. Each gets: coverage, owner, time box.
  4. Discussion items (if time permits) — time-boxed with framing question and hard stop.
  5. Closing (3-5 min) — always protected. Recap decisions, assign actions, confirm deadlines.

Sequencing rules:

4C. Decision Framework

For each decision item:

4D. Closing Template

**Decisions made:**
- [Decision 1]: [Outcome]
- [Decision 2]: [Outcome]

**Action items:**
- [Action] — Owner: [Name] — Due: [Date]
- [Action] — Owner: [Name] — Due: [Date]

**Parked for next meeting:**
- [Topic] — Reason: [Why deferred]

**Next meeting:** [Date/time if recurring]

4E. Output Format per Agenda

# Meeting Agenda: [Meeting Name]
**Date:** [Date] | **Time:** [Start - End] | **Duration:** [X min] | **Location:** [Room/Link]

## Purpose
[One sentence: why this meeting exists and what "done" looks like.]

## Attendees
- [Name] — [Role/reason for being here]

---

## Agenda

**1. Opening** [2 min] — [Facilitator]
Confirm agenda, note any additions.

**2. [Decision: Question to decide]** [X min] — [Owner]
Context: [1-2 sentences]
Options: [A] / [B] / [C]
Decider: [Name]

**3. [Update: Topic]** [X min] — [Owner]
Covers: [What this update includes]

**4. [Discussion: Topic]** [X min] — [Owner]
Framing question: [The specific question to explore]

**5. Closing** [3 min] — [Facilitator]

---

## Decisions Made
- [ ] [Decision 1]: ___

## Action Items
| Action | Owner | Due |
|--------|-------|-----|
| [Action] | [Name] | [Date] |

## Parked
- [Topic deferred and why]

Agenda quality checks (run internally, never shown):

CheckQuestion
Time mathDo time allocations add up to total meeting length (with 2-3 min buffer)?
Decision-firstAre all decision items in the first half?
Owners assignedDoes every item have a named owner?
Closing protectedIs closing allocated at least 3 minutes?
No orphan discussionsAre discussion items included only after all decision and update items fit?

Fix the weakest section before presenting.

Delivery rule: Send each agenda to the client at least 24 hours before the session. An agenda that exists but isn't shared before the meeting doesn't change behavior.


Step 5: Calculate Meeting Load and Commit to a Change

5A. Meeting Load Summary

MetricValue
Total weekly meeting hours[X] hrs
Total working hours per week[X] hrs
Meeting load percentage[X]%
Billable meeting hours[X] hrs
Non-billable meeting hours[X] hrs

Threshold: If meetings account for more than a third (33%) of working hours, a change is mandatory — not optional.

5B. Concrete Change Commitment

Based on the inventory (Step 2), necessity test (Step 2B), overrun analysis (Step 3), and meeting load (Step 5A), commit to at least one concrete change before next month's audit:

Change TypeMeeting / ClientCurrent StateNew StateEffective Date
Cancel[Name][X min, cadence]Removed from calendar[Date]
Shorten[Name][X min][Y min][Date]
Reduce cadence[Name][Weekly][Biweekly][Date]
Convert to async[Name][X min meeting][Email/shared doc update][Date]

Rule: Every audit produces at least one decision. Identifying that a recurring call could be shortened and then leaving it unchanged is not a completed audit — it's a note to yourself that you'll ignore.

5C. Projected Impact

Show the math:


Step 6: Assemble the Monthly Meeting Optimization Audit

Present one unified document containing:

# Meeting Optimization Audit
## [Month, Year]

### Meeting Inventory
[Table from Step 2A]

### Necessity Test Results
[Table from Step 2B — Keep / Restructure / Cancel for each meeting]

### Scope Creep Signals
[Overrun table from Step 3A with diagnoses]
[No-decision meeting list from Step 3B]

### Meeting Load
[Summary table from Step 5A]
[Threshold assessment — above or below 33%]

### Agendas Built This Month
[List each agenda created in Step 4, or "All recurring meetings have standing agendas"]

### Committed Changes
[Change commitment table from Step 5B]
[Projected impact from Step 5C]

### SOPs to Trigger
- [ ] Meeting Agenda Builder — [for any future meetings identified without agendas]

Quality Check

CheckPass?
Every recurring meeting from the input appears in the inventory table
Weekly hours calculated correctly (duration x frequency converted to weekly equivalent)
Necessity test applied to every recurring meeting, not just the ones that feel excessive
Overrun analysis uses the 15-minute threshold — not 10, not 20
No-decision meetings flagged explicitly with conversion recommendation
Meeting load percentage calculated against total working hours, not billable hours
33% threshold applied — if above, change commitment is mandatory
At least one concrete change committed (cancel, shorten, reduce cadence, or convert to async)
Every agenda built follows decision-first sequencing
Every agenda item has an owner, a time box, and a verb
Closing section allocated at least 3 minutes in every agenda
Time allocations in each agenda add up to meeting length (with 2-3 min buffer)
Agendas include delivery instruction: send 24 hours before the session
Projected impact shows exact hours reclaimed, not vague "some time saved"
Dollar signs escaped as \$ for Notion compatibility

Identify the weakest section. Rewrite it. Verify the rewrite before presenting.


Rules

  1. Every audit produces at least one decision. Auditing the calendar but not making any changes is not a completed SOP. Cancel, shorten, reduce cadence, or convert to async — pick one and commit.
  2. Collect all inputs in one pass. Do not scatter prompts across multiple turns. Ask once, flag gaps, keep moving.
  3. Apply the necessity test to every meeting, not just the ones that feel excessive. The meetings you assume are fine are the ones most likely to have drifted.
  4. 15 minutes over is the scope creep threshold. A meeting that consistently runs 15+ minutes over its scheduled slot lacks a defined endpoint or outcome.
  5. A meeting with no decisions is a status update. Status updates don't need meetings — they need a shared document or a short email. Flag and recommend conversion.
  6. Agendas that aren't shared don't count. Creating an agenda template but not sending it in advance doesn't change behavior. Send it 24 hours before the session.
  7. Decisions go first in every agenda. Updates second, discussions last. No exceptions. People are sharpest at the start.
  8. Every agenda item needs three things: an owner, a time box, and a verb. Decide, update, discuss. Missing any one and the item will drift.
  9. Never allow a single agenda item to consume more than 40% of total meeting time. If it needs more, it needs its own meeting.
  10. Never cut closing time. If the agenda is too long, cut discussion items first, then reduce update time boxes. Closing — decisions, actions, deadlines — is always protected.
  11. If a meeting has zero decision items, question whether it needs to be a meeting at all. A meeting with no decisions is a presentation — send a document.
  12. Watch for recurring update items with no decisions attached. That's a status update masquerading as a meeting. Convert to async.
  13. Escape dollar signs as \$ for Notion compatibility.
  14. If data is incomplete, work with what's available and note assumptions. Never fabricate meeting counts or hours.

Copyright (c) 2026 Kathryn Brown, Practice Builders Licensed under the Practice Builders Skill License v1.0 See https://practicebuilders.ai/license for terms.

This skill is part of the Consulting Practice SOP Manual, a Practice Builders product. Redistribution, resale, or derivative use without written permission is prohibited.