849879772 / schedule-management
Inspect recruitment schedules, detect conflicts, and manage local interview or test events.
Schedule Management
- Query the requested date or range and identify timezone, application, source, and conflicts.
- Prefer evidence from associated recruitment mail or explicit user input.
Create or update events idempotently. Do not duplicate the same test or interview.
For an explicit local todo or calendar mutation, useschedule_manage: create requires a
stablerequest_key, and reusing that key with a different normalized payload is a conflict.
Update usesevent_id; passexpected_updated_atwhen available to avoid overwriting a
concurrent edit. This local write does not change application progress or require the
application approval flow.Do not call
schedule_manage(action=create)to recreate items produced byrecruitment_mail_process. If a user explicitly asks to edit an existing returned item,schedule_manage(action=update)is allowed and must preserve its source identity.
Mail-derivedassessment,written_test,interview, andaction_requiredrecords already
return their source-boundschedule_item; company-only items may intentionally have noapplication_id.
A company-wide assessment/written-test mail can have multiple human-confirmedapplication_ids/associated_jobson that single schedule item. Do not copy the
event per job. Time/status/note edits must preserve all these relations; changing
them belongs to the source mail's human-approved binding, not a single-job editor.Keep schedule identity explicit.
company_nameis required;job_titlemay be empty for a
company-wide task. Whenapplication_idis supplied, the company must match that application
and a non-empty job must match it too; an empty job is completed from the selected application.
Resolve the application first rather than guessing a binding.
For an existing item whose application binding is unchanged, update only the requested fields
(for examplestatusandexpected_updated_at); do not resend company/job display labels.
Omitted labels are refreshed from the bound application, so historical spelling or name changes
do not block a status, time, or note update. Explicit identity edits and a new binding are still
validated against the selected application.Keep time semantics factual: an item without
event_datehastime_kind=unspecified; adding
a date canonicalizes it toappointmentunless it is explicitly a deadline. A date without a
clock remains date-only, and no duration or appointment end time may be invented.- Ask only when time, target application, or requested mutation is ambiguous.
- Report conflicts and persisted changes explicitly.
For a recurring request to "update/check" a company or job that already exists in the
application database, resolve the application first and map the request to the localapplication_progresstask. This is an application status review, not a crawler refresh.Use only the four local task identifiers documented in
AGENTS.md. Never mention cloud
scheduling, GitHub Actions, or legacy task aliases as current capabilities.A direct recurring-task request is already authorization for the reversible local schedule
write. Callautomation_scheduleand verifyactive=true; do not stop atautomation_plan.
Bind an application progress schedule to the resolvedapplication_id. Use list/disable tools
for status or cancellation requests.