AI agents and developer evaluation

    AI Scheduling Agent Evaluation: Build a Hard-Meeting Test Suite

    By Tevye Krynski16 min read

    The happy-path demo lies by omission. One organizer, one provider, three free calendars, and one successful create-event call prove almost nothing about a scheduling agent. Add an external Microsoft participant, an unconnected candidate, a stale reply, an optional observer, a worker restart, and an uncertain calendar write. Now the product has to finish the meeting instead of finishing the demo.

    Build the hard-meeting evaluation in eight steps

    Use one base fixture: a sixty-minute customer kickoff inside a five-business-day window. Four people are required, one is optional, two companies use Google and Microsoft, and one required person will not connect a calendar. Every test mutates this fixture while preserving one meeting request ID.

    1. 1

      Define terminal success before writing prompts

      Write a machine-checkable completion contract: one canonical event, approved start and end, meeting time zone, correct organizer, every required participant, the final optional-attendee decision, and verified invitation dispatch. Also define terminal non-booking outcomes such as required decline, deadline expiry, revoked authority, and no overlap after permitted changes.
      • An HTTP 200, tool success, or model success sentence does not pass the evaluation.
      • A bounded exception names current evidence, one owner, and one allowed next action.
      • Cancellation and rescheduling use separate authority and completion contracts.
    2. 2

      Freeze a typed meeting-intent fixture

      Store meeting_request_id, revision, organizer, purpose, duration, date window, deadline, IANA time zone, location, required people, optional people, approved substitutes, working-hour rules, buffers, outreach policy, approval mode, and allowed calendar writes. Keep the source instruction, but grade the system against typed state rather than its interpretation of old prose.
      • Reject a fixture with no organizer, duration, bounded window, deadline, or required participant.
      • Every proposal, approval, message, and booking attempt points to the current revision.
      • Mutating required people, duration, or date bounds invalidates stale proposals.
    3. 3

      Build the participant and availability matrix

      Vary required versus optional status, Google versus Microsoft, connected versus unconnected calendars, known versus ambiguous time zones, and approved versus denied outreach. Normalize provider free/busy and participant-provided windows into intervals with source, freshness, zone, consent state, and error state. Missing evidence is never treated as open time.
      • A required participant with no connection receives a consent-safe availability path.
      • An optional decline changes scoring without changing required quorum.
      • Private event titles and message bodies stay outside routine evaluation output.
    4. 4

      Test conversation and time-zone ambiguity

      Feed replies such as ‘Tuesday after lunch,’ ‘Friday morning,’ a date without a year, and a daylight-saving transition. Grade whether the agent asks the minimum clarification, preserves the original response, and creates normalized windows only after date and zone are authoritative. Run reminder timing in each participant’s local zone.
      • The agent never guesses a time zone from an email domain or phone number.
      • A correction supersedes old evidence while preserving the audit trail.
      • Silence from a required person remains a wait or exception, not consent.
    5. 5

      Inject stale state, duplicate delivery, and worker restarts

      Change a required calendar after proposals are generated. Deliver the same participant reply twice. Restart the worker after outreach, after approval, and during booking. Repeat REST commands and MCP tool calls with the same command identity. The system should resume from durable meeting state, rebuild stale proposals, and suppress duplicate side effects.
      • Outreach, approval, and booking use separate idempotency keys.
      • A duplicate webhook or reply does not create another state transition.
      • A restarted worker does not need the original model transcript to recover.
    6. 6

      Test consent, approval, and human reclaim

      Deny calendar access, revoke it after a read, opt a participant out of reminders, expire organizer approval, and add a sensitive participant after approval. Grade whether calendar reads, participant contact, slot approval, event creation, update, cancellation, and rescheduling are treated as distinct permissions. The agent must stop when authority ends.
      • Possessing an address does not grant permission to contact it.
      • Approval binds to the current people, proposal, organizer calendar, and revision.
      • A human can pause, revise, reclaim, or end the workflow without hidden work continuing.
    7. 7

      Break the booking commit on purpose

      Return a timeout after the provider creates the event, omit one required attendee, reject one invitation, and move a calendar between final check and write. The agent must reconcile the organizer calendar before retrying, repair an allowed partial failure, and return one canonical provider event identifier. Blind retry is a failing grade.
      • An uncertain write enters reconciliation rather than immediate replay.
      • The final read-back verifies time, zone, organizer, attendees, and invitation state.
      • Repeated booking commands return the original result rather than a second event.
    8. 8

      Score completion, recovery, and operating evidence

      Score each fixture on intent fidelity, required attendance, cross-company reach, optional-sync fallback, time-zone correctness, consent, duplicate suppression, recovery, observability, and terminal proof. Record active processing separately from participant wait. Compare engineering and support work needed to pass the suite, not only first-call latency.
      • Every failure has a stable reason code and the meeting timeline needed to reproduce it.
      • Expected participant wait is not reported as infrastructure failure.
      • A product passes only the fixtures that finish or stop inside declared policy.

    Use one fixture schema across every agent and protocol

    Keep the fixture above REST, MCP, model vendor, and calendar provider. The same meeting brief should run through a custom agent, a model-callable MCP client, or direct application code. Transport adapters may differ. Required attendance, consent, evidence freshness, approval, and completion cannot.

    Store expected state transitions beside expected output. A fixture should say when the system waits, when it retries, when it asks for clarification, when it invalidates a proposal, and when it hands a decision back. That catches agents that reach the right final time through unsafe or irreproducible behavior.

    Separate deterministic checks from model grading

    Use exact assertions for participant roles, intervals, time zones, revisions, idempotency keys, provider event IDs, and attendee lists. Use bounded semantic grading for whether an outreach message explains purpose, asks only for necessary availability, or clearly states a decision. Do not let a language-model judge overrule a missing required invitation.

    Run adversarial language through the parser, but keep policy in code. A persuasive response cannot change a required participant into an optional one. A confident model cannot convert an expired calendar permission into current evidence.

    A provider test is not a scheduling evaluation

    A calendar API test can prove that free/busy and event writes work. A poll test can prove that votes were stored. A booking-link test can prove that a slot was selected. An AI assistant test can prove that outreach was drafted. Those are component checks.

    Scheduling execution evaluation starts with the instruction and follows required and optional people, connected and conversational availability, time zones, consent, overlap, approval, retries, recovery, the canonical event, and invitations. The terminal proof is the category boundary.

    Run the suite against build and buy options

    Give an internal build and an external scheduling service the same fixtures. Count failed cases, application code required outside the service, operator interventions, and unresolved provider differences. Include the no-calendar path and uncertain-write path; otherwise the comparison rewards the easiest demo.

    WonderCal’s release should earn adoption by passing hard meetings with less undifferentiated calendar and coordination code. Until the live MCP/API path is available, this suite is a demand on the roadmap rather than proof of completion.

    Compare evaluation depth by the work it proves

    A useful test does more than confirm an endpoint. It proves whether the product owns the hard meeting across people, providers, elapsed time, and failure.

    Execution completion

    Happy-path agent demo

    Often stops at a proposed slot, drafted message, or successful tool call.

    Provider and API integration tests

    Proves provider reads and writes but not the required group outcome.

    WonderCal execution direction

    Target suite closes only on verified invitations or a bounded exception.

    Cross-company reach

    Happy-path agent demo

    Usually uses one provider and identities the test owner controls.

    Provider and API integration tests

    Can cover Google and Microsoft while external participant coordination remains application work.

    WonderCal execution direction

    Designed to test required and optional people across companies, providers, and unconnected calendars.

    Optional-sync fallback

    Happy-path agent demo

    May replace missing access with a link or omit the case.

    Provider and API integration tests

    Provider suites cannot grade outreach, reply parsing, reminders, or consent.

    WonderCal execution direction

    Target fixtures join conversational windows and connected free/busy in one meeting state.

    Recovery and observability

    Happy-path agent demo

    Failures are rerun from the beginning with little durable evidence.

    Provider and API integration tests

    Provider errors are visible; participant waits and meeting-level recovery live elsewhere.

    WonderCal execution direction

    Target evaluation covers replay, reconciliation, reason codes, timelines, and safe operator action.

    Consent and control

    Happy-path agent demo

    A demo account can hide real permission and outreach boundaries.

    Provider and API integration tests

    OAuth is testable; contact, approval, reschedule, and cancellation authority need application fixtures.

    WonderCal execution direction

    Target suite separates every sensitive operation and proves human pause or reclaim.

    Time to ship

    Happy-path agent demo

    Fast to present and weak at predicting production support work.

    Provider and API integration tests

    Necessary integration coverage with coordination tests still left to build.

    WonderCal execution direction

    Worth adopting when the live service passes the corpus with less application and repair code.

    Frequently asked questions

    What should an AI scheduling agent evaluation measure?

    Measure intent fidelity, required and optional attendance, Google and Microsoft availability, no-calendar fallback, time zones, consent, approvals, stale evidence, idempotency, retries, uncertain writes, observability, and final invitation proof. A proposed time alone is not enough.

    What is the hardest scheduling-agent fixture?

    Use a cross-company group with mixed Google and Microsoft calendars, one required person without a connection, one optional person, ambiguous local-time language, a revised brief, a duplicate delivery, and a timeout after event creation. Require one verified event or one bounded exception.

    Should model output be graded by another model?

    Semantic grading can help with message clarity and narrow clarification. Use deterministic assertions for quorum, time zones, permissions, revisions, idempotency, event identifiers, attendee lists, and invitation state. A model judge should never excuse a missing required participant.

    How do you test an agent that waits for participant replies?

    Use a controllable clock and scripted participant identities. Assert the wait state, deadline, reminder cap, local-time send window, next wake condition, opt-out behavior, and resumption after restart. Healthy waiting and stuck processing are different outcomes.

    Where can developers evaluate WonderCal’s agent direction?

    Start with WonderCal for AI agents. Treat this corpus as a release checklist until current MCP or API access, provider support, participant fallback, recovery, observability, and verified booking are documented and live.

    Primary sources

    Related WonderCal reading

    Make the hard meeting your release test

    Evaluate WonderCal and your own integration against the same corpus: mixed providers, optional connection, consent, time zones, safe replay, recovery, and one verified group booking.

    Review WonderCal for AI agents