Skip to content
Recued
Menu
← Back to recipes

Propose calendar holds for meeting-request replies

by recued-core v1

Detection half of the meeting-request conversion edge for the outbound follow-up loop. It scans data.shared watch rows written by outbound-follow-up-response-watcher, picks one response_needs_owner row classified as meeting_requested that is not already converted or already proposed, fetches the reply body from the recorded mail slug and record id, extracts explicit schedule fields, and writes a durable proposal (extracted meeting details + linkage, status awaiting_owner_approval) plus a notification for the owner. It never creates a calendar event or sends an invite itself: the actual approval-gated create is owner-invoked via outbound-follow-up-schedule-approved-meeting. Runs unattended (auto_run) but takes no outward-facing action, because under auto_run an internal calendar write would otherwise execute silently at the admin trust ceiling. It never invents a start time and skips rows that lack enough linkage to fetch the reply.

How it works 52 steps

Inspect the data fetches, transforms, gates, and output this recipe runs.

Data fetch
shared_followups ?
existing_proposals ?
Process (50 steps)
existing_proposals_family filter
Filter by condition
response_needed_rows filter
Filter by condition
meeting_requested_rows filter
Filter by condition
already_converted_rows filter
Filter by condition
already_converted_keys map
Extract from each item
unconverted_rows filter
Filter by condition
proposed_thread_ids map
Extract from each item
rows_without_proposal filter
Filter by condition
candidate_rows slice
Take a subset of
pending_count count
Count items in rows without proposal
has_candidate compare
Check if candidate rows has data
candidate_key default
Apply default
thread_id default
Apply default
thread_key default
Apply default
proposal_key default
Apply default
response_record_id default
Apply default
response_mail_slug default
Apply default
response_subject default
Apply default
attendee_email default
Apply default
prior_mail_record_id default
Apply default
has_response_record compare
Check if response record id has data
has_response_mail_slug compare
Check if response mail slug has data
has_attendee compare
Check if attendee email has data
skip_body_read any
Check if any of the conditions are true
body_read ?
skip: step.skip_body_read equal true
response_body default
Apply default
body_present compare
Check if response body has data
now_iso date_add
Add 0 minutes to
skip_extract any
Check if any of the conditions are true
protect pii-protect
Apply pii-protect
extract_schedule ?
skip: step.skip_extract equal true
restore_schedule pii-restore
Apply pii-restore
meeting_title default
Apply default
time_zone default
Apply default
location default
Apply default
extraction_confidence default
Apply default
start_at_ms date_parse
Parse restore schedule restored start at iso as a date
end_at_ms_from_reply date_parse
Parse restore schedule restored end at iso as a date
has_start_at compare
Check if start at ms has data
has_end_at_from_reply compare
Check if end at ms from reply has data
fallback_end_at_iso date_add
Add setting default duration minutes minutes to
skip: step.has_start_at not_equal true
fallback_end_at_ms date_parse
Parse fallback end at iso as a date
end_at_ms ternary
Apply ternary
has_end_at compare
Check if end at ms has data
below_confidence compare
Check if extraction confidence is less than setting confidence threshold
skip_propose any
Check if any of the conditions are true
write_proposal ?
skip: step.skip_propose equal true
skip_notify any
Check if any of the conditions are true
notify ?
skip: step.skip_notify equal true
card to_summary
Format results as a summary card
Settings 6 configurable

Configurable at install. Defaults shown — change them anytime in Recued.

channels setting = in_app
calendar id setting = primary
calendar slug setting = primary
default time zone setting = UTC
confidence threshold setting = 0.65
default duration minutes setting = 30

Trust & control

What installing this recipe would let it do. Recued grants these permissions at install — review them there before approving.

Where it runs

Device + server Runs on your device (browser) or your server.

Permissions it requires

Send notifications
Declared by the recipe — Recued grants these at install, where you review them before approving.

Data it touches

Warehousedata.shared

About

Tags

emailmailcalendarmeetingfollowupconversionproposeclosed-loopwork-queueone-person-companystate:outbound-follow-up-response-watcherpack:outbound-follow-up-responseai_surface

Details

52 steps 6 configurable settings recipe_id: outbound-follow-up-meeting-request-calendar