Give “now” a place in time.
A scheduling request is not complete until the anchor and timezone travel with it. Compile the missing context before an LLM gets a chance to guess.
Compile the request
The missing context is the bug.
Relative language is useful for people because we share a clock. A model needs that shared context passed in explicitly.
Relative words need an anchor
The phrase only becomes a date when it is evaluated against a specific local date and time.
Location changes the date
Two people can share the same instant while living on different calendar days. The timezone belongs in the contract.
Resolve first. Act second.
Review the concrete local date before any downstream calendar tool runs. This compiler stops at the handoff and never pretends an event was created.
A three-part handoff.
The receiving model gets the original intent, the exact temporal frame, and a rule that prevents reinterpretation.
Anchor
The local date and time that “now” means for this request, supplied by the user or captured from the browser.
Timezone
An IANA identifier, not a vague abbreviation, so daylight-saving rules and local calendar boundaries remain visible.
Resolution
The concrete date, preserved time, interpretation rule, and assumptions the model must confirm before calling a real calendar integration.
Human review
Read the resolved local date aloud. Confirm the intended timezone and whether “next Monday” means the immediately following Monday.
Model handoff
Use the generated contract as context. Do not let the model silently replace the anchor with its own runtime assumptions.
Tool execution
Only after confirmation should a separate, genuine calendar integration create or update an event.