Chronologue’s event generation pipeline converts structured memory traces (.json) into calendar events (.ics) following the iCalendar standard. This allows natural language input to produce concrete, time-aligned actions in external scheduling systems.

The core script powering this transformation is modules/export_ics.py.


Calendar Event Format

Chronologue conforms to a minimal but valid iCalendar VEVENT structure:

BEGIN:VEVENT
UID:lab_ops-20240407@memorysystem.ai
DTSTAMP:20250401T080000Z
DTSTART:20240407T090000Z
DTEND:20240407T091500Z
SUMMARY:Temperature in incubator #3 drifted 1.5°C above target during morning run.
DESCRIPTION:Temperature in incubator #3 drifted 1.5°C above target during morning run.
LOCATION:wetlab_sync
STATUS:CONFIRMED
END:VEVENT

All fields are derived from the memory trace or inferred via defaults. A working .ics is generated using:

ics_string = generate_ics_string(memory_trace)

Steps

  1. Load JSON memory trace files

  2. Validate trace entries

  3. Generate VEVENTs

  4. Write a consolidated .ics calendar event

Key Functions and Parameters for Customization

resolve_duration_minutes(trace)

  • Parses flexible user duration formats: 2h, 30m, 1:00-2:30, or “one hour”

  • Customize: Default duration (currently 30), upper bound, parsing logic

generate_uid(title, date)

  • Constructs a globally unique UID from task ID and date

  • Customize: Change UID domain, format, or link to external systems

generate_summary_title(content)

  • Uses OpenAI to create a concise SUMMARY field

  • Fallbacks to truncating raw content if LLM fails

Customize: Model, max length, prompt template

generate_ics_string(trace)

  • Assembles a VEVENT from a single memory trace

  • Includes SUMMARY, DESCRIPTION, LOCATION, DTSTART, DTEND, UID, STATUS

write_consolidated_ics(events, output_path)

  • Writes header, VEVENT blocks, and footer into a single .ics file
  • Customize: PRODID, versioning metadata, newline style (Windows/iCal)

Opportunities for Personalization

  • Chronologue encourages local customization for different user or organization memory systems:

  • Duration interpretation for different workflows (e.g. lab vs. meetings)

  • LLM-based title summarization vs. rules-based

  • Structured description fields for reflection, chat links, metadata

  • Custom UID namespaces for cross-platform syncing

  • Flexible timestamp parsing and formatting

Testing Output Format

Use test_ics_format() to generate a sample .ics file and validate against the expected template:

python modules/export_ics.py

This writes a file test_output.ics to inspect the generated format against the gold standard.

Related Concepts