AI & LLM · meetings.opsCI passing

Intelligent Meeting Operations

Schedules across time zones without 2 a.m. calls, and turns meeting talk into owned, dated follow-ups.

Open the live demo View the code Evaluation report Demo tour Run it ›_ last push 2 days ago

-76%night and weekend meeting hours on held-out organisations (67.9 to 16.6 attendee-hours a week)

0.72owner-and-task F1 on phrasing written after the reader was frozen (hand-written rules: 0.00)

96.4%of action items either extracted or put in front of a person

This week's meetings shown in each attendee's local time, with early, late and night slots highlighted
This week's meetings shown in each attendee's local time, with early, late and night slots highlighted. Screenshot from the project's demo (synthetic data).

demo Demo tour

Screenshots from the running application, with its synthetic demo data. Select one to enlarge.

This week's meetings in each required attendee's local time: amber for early or late, red for night or weekend.
This week's meetings in each required attendee's local time: amber for early or late, red for night or weekend.
Who carries the week's late meetings under the first-free-slot habit and under the balanced scheduler.
Who carries the week's late meetings under the first-free-slot habit and under the balanced scheduler.
A meeting in unfamiliar phrasing: action items read in green, turns waiting for a person in amber.
A meeting in unfamiliar phrasing: action items read in green, turns waiting for a person in amber.
Follow-ups by status: overdue, due today, needs a date, open, done, with reminder dates.
Follow-ups by status: overdue, due today, needs a date, open, done, with reminder dates.
Scheduling on held-out organisations and other time zones, and action items on four phrasing banks.
Scheduling on held-out organisations and other time zones, and action items on four phrasing banks.

01 The problem

Distributed teams book the first free slot, which is often someone's night, and the same people take the late calls every week. After the meeting, commitments live in people's memories; requests that were declined or reassigned get lost.

02 How it works

  1. Request
  2. Score every free slot
  3. Book the cheapest
  4. Transcript
  5. Classify turns + follow the conversation
  6. Follow-ups and review queue

03 What I built

  • A scheduler that scores every free slot: out-of-hours cost per attendee (night and weekend four times an evening), past late-meeting load, focus time broken and optional attendees; most-constrained requests first.
  • An action-item reader that follows the conversation (a request counts once accepted; a declined task goes to whoever picks it up): hand-written rules, a learned turn classifier, and a review queue so nothing is silently dropped.
  • Claude extraction with every item checked against the transcript (participant owner, verbatim quote, due date matching the quote), and a follow-up tracker with reminders and overdue lists.

04 What I learned

Hand-written rules scored perfectly on their own phrasing and 0.00 on both new phrasings; a learned turn classifier with a few structural cues kept 0.72.

A draft of the unseen test phrasing was deleted unread once it was clear it had been written before the rules, and a review queue's cue words lifted from it were replaced with structural cues.

05 Known limitations

Every repository documents what it doesn't do yet. The main ones:

  • Generated organisations and transcripts; fixed time-zone offsets, no holidays.
  • Due dates on unfamiliar phrasing are often missed by the frozen date resolver.

06 Stack

Pythonscikit-learnNumPyClaude APIFastAPIDocker

The repository has the design document, operations runbook, full evaluation report and known limitations. All data is synthetic, generated by code in the repository.

run Run it yourself

Every project runs on a laptop: no cloud account and no paid API needed.

git clone https://github.com/codeROCK-IZZY/meeting-operations-ai.git
cd meeting-operations-ai
pip install -e ".[dev]" && pytest
meetops evaluate --gate                    # writes eval/reports/report.html

↑↓ to move · Enter to open · Esc to close