Skip to content

How it works

From email to booked meeting in under ten minutes.

Here’s exactly what happens between forwarding a scheduling email and Nicole sending the calendar invite. Every step is recorded in your audit log, exactly as shown.

  1. 01

    Inbound email arrives

    A scheduling request lands at your handle's address. Resend ingest verifies the signature and posts to our webhook.

    Jane Doe <jane@acmecap.com>

    Tuesday · 9:14 AM ET

    Re: Investor intro with Morgan

    Morgan — would love to grab 30 minutes next week to discuss our seed fund. Anything mid-week works on my side. Best, Jane
    09:14:01.117 inbound_received thread_id="t_abc123" message_id="<...@acmecap.com>"
  2. 02

    Nicole resolves the tenant

    The recipient address ("morgan@schedule.nicoleassist.com") is parsed; the handle "morgan" maps to a tenant id. From here every operation runs inside that tenant’s isolation context.

    jane@acmecap.com  →  morgan@schedule.nicoleassist.com
                                  ↓
                           handle="morgan"
                                  ↓
                           tenant_id="t_d4cf..."
                                  ↓
                      withTenantContext(t_d4cf...)
    09:14:01.122 tenant_resolved handle="morgan" tenant_id="t_d4cf..."
  3. 03

    Classifier reads the message

    A small Haiku model classifies the inbound — new request, reply to proposal, reschedule, cancel, OOO, etc. — and emits a calibrated confidence. Anything below 0.8 escalates to you.

    Classification

    new_meeting_request

    Confidence0.94

    “Jane is requesting a 30-min meeting with Morgan next week. Mid-week preference stated. No prior thread context.”

    09:14:01.834 classified category="new_meeting_request" confidence=0.94
  4. 04

    Availability is computed across your calendars

    getFreeBusy reads each calendar marked for availability, applies the date range, and returns busy windows. The agent's per-tenant Graph budget is 100 calls; this step uses a handful.

    8a10a12a2p4p6p
    Personal
    Executive
    Client

    Free across every calendarBusy

    09:14:02.246 availability_checked calendars=3 busy_windows=11 elapsed=412ms09:14:02.260 candidate_slots_generated count=5 duration=30
  5. 05

    Rules are applied

    Working hours, buffers, blackouts, focus blocks — the rules engine filters and ranks the candidate slots. One slot eliminated by the Tue/Thu 9–11 focus block; four ranked by buffer fit and time-of-day preferences.

    5 candidates from availability
      ↓
      Tue 09:00–09:30  ✗  focus_block "Tue/Thu 9–11"
      Tue 13:00–13:30  ✓
      Wed 14:00–14:30  ✓  +30m buffer after external
      Thu 09:30–10:00  ✓
      Fri 10:00–10:30  ✓
      ↓
    4 candidates ranked
      ↓
    top: Tue 13:00–13:30  (score=0.86)
    09:14:02.295 rules_applied eliminated=1 ranked=4 top_score=0.86
  6. 06

    Nicole drafts the reply

    An Opus call generates the reply email, signed in your assistant’s name. The draft persists with kind="email" and approved=false; in dry-run, it stops here.

    Nicole <morgan@schedule.nicoleassist.com>

    Awaiting your approval

    Nicole

    Re: Investor intro with Morgan

    Hi Jane — Morgan has these openings next week. Pick whichever works and I’ll send the invite from her calendar.
    • · Tue, Apr 28 · 1:00 PM ET
    • · Wed, Apr 29 · 2:00 PM ET
    • · Thu, Apr 30 · 9:30 AM ET
    09:14:06.012 draft_created kind=email slots=3 awaiting_approval=true
  7. 07

    You approve, she sends, the invite books

    One click in the dashboard. Resend delivers the reply with proper threading; once Jane picks a slot, Microsoft Graph creates the event with attendees and a Teams link if you’ve set Teams as your default conferencing.

    Booked

    Tue, Apr 28 · 1:00 PM ET (30 min)

    Morgan Reed, Jane Doe · Microsoft Teams

    09:30:11.205 draft_approved by=user:morgan09:30:11.640 email_sent provider_id=re_...09:46:02.880 event_created graph_event_id=AAMk... start=2026-04-28T17:00Z

Human in the loop

You stay in control by default.

Dry-run by default

Every new tenant ships in dry-run. Nicole drafts everything but sends nothing until you approve. Flip the switch on the Settings page when you’re ready.

Escalations

Anything ambiguous, low-confidence, or rule-violating gets routed to you with a clean explanation of why Nicole stopped. You decide.

Take over a thread

One click and Nicole hands the thread back. She watches but doesn’t act — useful when a delicate human exchange is in motion.

Want to see this in your own inbox?