scheduling-agent

scheduling-agent turns plain-English requests — “set up a recurring standup on weekday mornings, but skip Fridays” — into validated calendar events on a live WebCalendar instance. Its defining feature is a durable human-in-the-loop approval step: the agent proposes an event, shows you the fully expanded, timezone-aware recurrence, and writes nothing until you approve.

View on GitHub →

Key Features

  • Natural-language scheduling constrained to a strict, validated ScheduleProposal schema — the model’s only job is language-to-schema
  • Durable human-in-the-loop approval — a real LangGraph interrupt, checkpointed to SQLite and resumable after a restart
  • RFC 5545 recurrence validated against a Python twin of WebCalendar’s own server-side validator, so invalid rules never reach the backend
  • Timezone- and DST-aware occurrence expansion — you approve the actual dates
  • Talks to WebCalendar over MCP (add_event, search_events, check_conflicts, and more)
  • Provider-agnostic: the Anthropic API, OpenRouter, an Anthropic Pro/Max subscription, or a fully local model via ollama or LM Studio — no cloud key required
  • Structured JSON logging, optional tracing, and an eval harness with deterministic scorers in CI

Tech: Python, LangGraph, and the MCP server that ships inside WebCalendar. 186 tests at 100% coverage.

For a full walkthrough — including a live demo running entirely against a local model — read my post From a Sentence to a Calendar Event: Building a Human-in-the-Loop Scheduling Agent.