Recipe

Calendar scheduling agent

Natural language to ICS — an agent that parses scheduling intent from user messages and emits standards-compliant calendar files ready for any client.

NL → ICSRFC 5545Agent

Overview

This recipe wires a lightweight scheduling agent that accepts unstructured natural-language input — a Slack message, an email snippet, a voice transcript — and produces a valid .ics file conforming to RFC 5545. The agent extracts dates, times, recurrence rules, attendees, and location, then assembles a VCALENDAR payload with proper VTIMEZONE blocks and VEVENT entries. No external calendar API required; the output is a portable file that works with Google Calendar, Outlook, and Apple Calendar.

How it works

1

Parse intent

The agent extracts temporal expressions, participant names, and location cues from free-form text using structured prompt engineering.

2

Resolve & validate

Relative dates like "next Tuesday" are resolved against a reference timestamp. Conflicts and missing fields are flagged.

3

Emit ICS

A standards-compliant VCALENDAR is generated with proper line folding, UID, DTSTAMP, and VTIMEZONE components.

Example

Input (natural language)

Schedule a 30-minute standup with
alice@corp.com and bob@corp.com
every weekday at 9:15 AM Pacific
starting next Monday.

Output (ICS excerpt)

BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//Meridian//Calendar Agent//EN
BEGIN:VEVENT
DTSTART;TZID=America/Los_Angeles:20260112T091500
DTEND;TZID=America/Los_Angeles:20260112T094500
RRULE:FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR
SUMMARY:Daily Standup
ATTENDEE:mailto:alice@corp.com
ATTENDEE:mailto:bob@corp.com
END:VEVENT
END:VCALENDAR

Integration

Deploy the agent behind a Meridian endpoint. POST a JSON body with the message field and receive a base64-encoded ICS payload in the response. Pipe the output directly into an email attachment, a Slack file upload, or a download link. The agent is stateless — every request is self-contained.

POST /api/recipes/calendar-agent
Content-Type: application/json

{
  "message": "Lunch with Sarah Friday noon",
  "reference_time": "2026-01-14T00:00:00Z"
}