The first page of the document DocMake makes from the sample values on this page.
Compliance
Risk Assessment
A risk assessment records what could go wrong in a given activity, who would be harmed, what already prevents it, and what else will be done about it. Every row ends with a named owner and a due date, which is the difference between an assessment and a list of worries.
Likelihood and severity scales are an organization's own choice: three by three on a small site, five by five where a regulator or an insurer expects it. Keeping the scale in the data instead of the wording lets one template serve both without a rewrite.
Residual risk, the rating that remains once the additional controls are in place, is the number a manager actually signs. Showing it beside the initial rating is what makes the signature mean something.
Assessments expire. A review date on the face of the document, and the ability to reproduce the exact version that was in force on any past day, is what an auditor or an investigator asks for after something has gone wrong.
Blanks to fill
| reference | Reference |
| assessment_date | Assessment date |
| assessor_name | Assessed by |
| assessor_role | Role of the assessor |
| site_location | Site or location |
| review_due_date | Review due |
| activity_assessed | What was assessed |
| rating_scale | How the risk is rated |
| overall_conclusion | Conclusion |
| approved_by | Approved by |
| approver_title | Title of the approver |
| approval_date | Approval date |
| organization | Organization |
| assessment_title | Assessment title |
| risks[] | One per item, so a row is added for every item in the list |
The data behind the preview
This is the exact JSON that produced the document above. Change the values, POST them to the API, and you get your version back as DOCX or PDF. Lists grow and shrink with your data; the layout adapts.
- 01 Sign up free and duplicate this template into your workspace.
- 02 Adjust the wording and branding in the visual editor.
- 03 Fill it in the app, share it as a form link, or call the API.
{
"assessment_title": "Warehouse order picking and loading",
"organization": "Northwind Distribution BV",
"site_location": "Rotterdam distribution centre, aisles 1 to 14 and loading bays A to D",
"activity_assessed": "Manual and powered order picking, pallet wrapping, and loading of curtain side trailers during single and double shift operation.",
"reference": "RA-2026-018",
"assessor_name": "Ilse van Dijk",
"assessor_role": "Health and Safety Coordinator",
"assessment_date": "September 4, 2026",
"review_due_date": "September 4, 2027, or sooner if the layout, the equipment or the shift pattern changes",
"rating_scale": "A five by five matrix: likelihood 1 to 5 multiplied by severity 1 to 5. A rating of 15 or above needs action before the activity continues.",
"risks": [
{
"hazard": "Pedestrian struck by a forklift at an aisle intersection",
"who_is_affected": "Pickers, visiting drivers, contractors",
"existing_controls": "Marked pedestrian walkways, mirrors at four intersections, forklift speed limiter set to 8 km/h, high visibility vests mandatory",
"likelihood": "3",
"severity": "5",
"risk_rating": "15",
"additional_controls": "Install proximity warning sensors on all six forklifts and add a physical barrier at the aisle 7 and 8 crossing",
"owner": "T. Bakker, Warehouse Manager",
"due_date": "November 28, 2026",
"residual_rating": "5"
},
{
"hazard": "Falling stock from racking above 2 metres",
"who_is_affected": "Pickers, anyone passing the aisle",
"existing_controls": "Racking inspected annually by a competent person, load notices displayed, damaged beams reported through the maintenance log",
"likelihood": "2",
"severity": "4",
"risk_rating": "8",
"additional_controls": "Fit mesh decking to the top two levels of aisles 9 to 14",
"owner": "T. Bakker, Warehouse Manager",
"due_date": "January 30, 2027",
"residual_rating": "4"
},
{
"hazard": "Manual handling injury when picking heavy or awkward items",
"who_is_affected": "Pickers, especially agency staff on short assignments",
"existing_controls": "Weights over 16 kg flagged in the picking system, lift assist equipment available, manual handling training at induction",
"likelihood": "3",
"severity": "3",
"risk_rating": "9",
"additional_controls": "Refresher training every twelve months including agency staff, and relocate the twelve heaviest lines to waist height",
"owner": "I. van Dijk",
"due_date": "December 12, 2026",
"residual_rating": "4"
},
{
"hazard": "Trailer moves away from the bay while loading",
"who_is_affected": "Loaders, forklift operators, drivers",
"existing_controls": "Wheel chocks, key retention procedure at the gatehouse, bay traffic lights",
"likelihood": "2",
"severity": "5",
"risk_rating": "10",
"additional_controls": "Install automatic trailer restraints on bays A and B, which handle the highest turnover",
"owner": "M. de Groot, Site Engineer",
"due_date": "March 31, 2027",
"residual_rating": "5"
},
{
"hazard": "Slips on wet floor near the bay doors in winter",
"who_is_affected": "All warehouse staff and drivers",
"existing_controls": "Absorbent matting at each door, spill kits, cleaning schedule twice per shift",
"likelihood": "3",
"severity": "2",
"risk_rating": "6",
"additional_controls": "Extend matting by two metres and add air curtains to bays C and D",
"owner": "M. de Groot, Site Engineer",
"due_date": "November 14, 2026",
"residual_rating": "2"
}
],
"overall_conclusion": "The activity can continue while the actions above are in progress. The forklift and pedestrian interface is the only item rated 15 or above and is under a dated action with an owner. All other residual ratings sit at 5 or below once the listed controls are in place.",
"approved_by": "Sanne Kuipers",
"approver_title": "Operations Director",
"approval_date": "September 8, 2026"
} Generate this document via the API
One template plus changing data is the whole point. The list of blanks above is the contract, and every new set of values comes back in the same layout: fill it in the app, hand someone a form link, or POST the JSON and get the file straight back.
The request below carries this page's own values, so it runs as soon as the template exists in your workspace. Swap the values for yours and the response is your document.
curl -X POST https://app.docmake.io/api/v1/render \
-H "Authorization: Bearer $DOCMAKE_API_KEY" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
--output risk-assessment.pdf \
--data-binary @- <<'JSON'
{
"template_id": "tmpl_your_template_id",
"format": "pdf",
"data": {
"assessment_title": "Warehouse order picking and loading",
"organization": "Northwind Distribution BV",
"site_location": "Rotterdam distribution centre, aisles 1 to 14 and loading bays A to D",
"activity_assessed": "Manual and powered order picking, pallet wrapping, and loading of curtain side trailers during single and double shift operation.",
"reference": "RA-2026-018",
"assessor_name": "Ilse van Dijk",
"assessor_role": "Health and Safety Coordinator",
"assessment_date": "September 4, 2026",
"review_due_date": "September 4, 2027, or sooner if the layout, the equipment or the shift pattern changes",
"rating_scale": "A five by five matrix: likelihood 1 to 5 multiplied by severity 1 to 5. A rating of 15 or above needs action before the activity continues.",
"risks": [
{
"hazard": "Pedestrian struck by a forklift at an aisle intersection",
"who_is_affected": "Pickers, visiting drivers, contractors",
"existing_controls": "Marked pedestrian walkways, mirrors at four intersections, forklift speed limiter set to 8 km/h, high visibility vests mandatory",
"likelihood": "3",
"severity": "5",
"risk_rating": "15",
"additional_controls": "Install proximity warning sensors on all six forklifts and add a physical barrier at the aisle 7 and 8 crossing",
"owner": "T. Bakker, Warehouse Manager",
"due_date": "November 28, 2026",
"residual_rating": "5"
},
{
"hazard": "Falling stock from racking above 2 metres",
"who_is_affected": "Pickers, anyone passing the aisle",
"existing_controls": "Racking inspected annually by a competent person, load notices displayed, damaged beams reported through the maintenance log",
"likelihood": "2",
"severity": "4",
"risk_rating": "8",
"additional_controls": "Fit mesh decking to the top two levels of aisles 9 to 14",
"owner": "T. Bakker, Warehouse Manager",
"due_date": "January 30, 2027",
"residual_rating": "4"
},
{
"hazard": "Manual handling injury when picking heavy or awkward items",
"who_is_affected": "Pickers, especially agency staff on short assignments",
"existing_controls": "Weights over 16 kg flagged in the picking system, lift assist equipment available, manual handling training at induction",
"likelihood": "3",
"severity": "3",
"risk_rating": "9",
"additional_controls": "Refresher training every twelve months including agency staff, and relocate the twelve heaviest lines to waist height",
"owner": "I. van Dijk",
"due_date": "December 12, 2026",
"residual_rating": "4"
},
{
"hazard": "Trailer moves away from the bay while loading",
"who_is_affected": "Loaders, forklift operators, drivers",
"existing_controls": "Wheel chocks, key retention procedure at the gatehouse, bay traffic lights",
"likelihood": "2",
"severity": "5",
"risk_rating": "10",
"additional_controls": "Install automatic trailer restraints on bays A and B, which handle the highest turnover",
"owner": "M. de Groot, Site Engineer",
"due_date": "March 31, 2027",
"residual_rating": "5"
},
{
"hazard": "Slips on wet floor near the bay doors in winter",
"who_is_affected": "All warehouse staff and drivers",
"existing_controls": "Absorbent matting at each door, spill kits, cleaning schedule twice per shift",
"likelihood": "3",
"severity": "2",
"risk_rating": "6",
"additional_controls": "Extend matting by two metres and add air curtains to bays C and D",
"owner": "M. de Groot, Site Engineer",
"due_date": "November 14, 2026",
"residual_rating": "2"
}
],
"overall_conclusion": "The activity can continue while the actions above are in progress. The forklift and pedestrian interface is the only item rated 15 or above and is under a dated action with an owner. All other residual ratings sit at 5 or below once the listed controls are in place.",
"approved_by": "Sanne Kuipers",
"approver_title": "Operations Director",
"approval_date": "September 8, 2026"
}
}
JSON tmpl_your_template_id is
a stand-in: build this template in the visual editor and copy the id it shows, or create one with POST /api/v1/templates. Keys, formats, strict mode and batches are in the API reference.
Or let an AI assistant do it
The DocMake MCP server lets Claude and other assistants make this document the same way. Install it once:
claude mcp add docmake \
--env DOCMAKE_API_KEY=dm_your_api_key \
-- npx -y @docmake/mcp@latest Then ask for the document in plain words:
Make a PDF from my Risk Assessment template with reference "RA-2026-018" and assessment date "September 4, 2026".
More compliance templates
8D Report
The eight steps a customer expects: the team, what the problem is and is not, how it was held, why it happened and what stops a repeat.
View template →Calibration Certificate
As found and as left readings with the uncertainty at every point, the standards they are traceable to, and the rule used to pass them.
View template →Corrective Action Report
What went wrong, why it happened, the actions with an owner and a date, and the check that proves it worked.
View template →