Purpose
Turn an incident report arriving from any channel — a web/paper form, an email, or a voice-note transcript — into structured contract inputs: the incident identity, area/asset, what happened, the injury detail (body part, nature, treatment given, outcome, days away), witnesses, and the immediate actions taken. This is the entry payload every later skill builds on.
When to use
- "Log this incident" / "intake this near miss" / "process this safety report".
- A report arrives by form, email or voice note (transcript).
- Start of any Safety Incident Agent run.
Inputs
- Incident report in any channel: form (TXT/JSON), email (TXT), or voice-note transcript (TXT/VTT).
- Witness statements, first-aid / first-responder notes.
- Asset/area register (XLSX/CSV): area, asset tag, shift, supervisor.
- Emits inputs for contract
mfg.safety-incident-assist.v1.
Steps
- Identify the report channel and set
report_channel(form | email | voice). - Extract the factual account into
description; captureoccurred_at,reported_at,reported_by,asset_or_area,location. - Structure the injury into
injury{}:body_part,nature,treatment_given(none | first_aid | medical_treatment | hospitalization),outcome(none | days_away | restricted_duty | job_transfer | in_patient_hospitalization | amputation | loss_of_eye | fatality), anddays_away. Map free text to these controlled values — never invent a treatment or outcome not stated in the report. - Capture
witnesses[]andimmediate_actions; setincident_type(injury | illness | near_miss | property | environmental). - Produce
incident-intake.jsonwithcontract_version,incident_id,asset_or_area, the fields above, and an emptyhistory{}.
Output
incident-intake.json conforming to the contract inputs — the entry payload of the flow.
Grounding requirements
Every extracted fact cites its source line (form field, email line, or transcript). The controlled
treatment/outcome values map to references/osha-recordability-rules.md #2-#3; the area/supervisor
cite the register row.
Constraints
- Do not classify severity or recordability here — that is the recordability engine's job (engine/LLM split).
- Map free text to the controlled treatment/outcome vocabulary; do not guess a value the report does not support. An ambiguous treatment/outcome is an escalation, not a guess.
- Never downgrade or soften a reported injury ("just a scratch") — record what the report states.
Escalation / uncertainty
- Treatment or outcome unclear, the injured person's status unknown, or the area untraceable: record
it in the contract
escalations[]and flag for confirmation; do not fabricate a value.