DocMake
The PDF DocMake makes from the Supplier Evaluation Report template

The first page of the document DocMake makes from the sample values on this page.

Operations

Supplier Evaluation Report

A supplier evaluation report is the periodic write up of how one external provider actually performed, measured against criteria agreed in advance rather than argued about afterwards. It is the document that sits behind an approved supplier list and makes that list mean something more than a spreadsheet of names.

ISO 9001 asks for less than most people assume and more than most people do. Clause 8.4 wants criteria for evaluating, selecting, monitoring the performance of and re-evaluating external providers, and documented information of those activities and of any actions arising from them. It does not name the criteria, prescribe a scorecard format, or require an approved supplier list at all. The gap auditors tend to find runs the other way: the list exists and the criteria behind it do not.

Scoring is a weighted loop rather than a fixed table, because the weights are an organization's own decision. Quality figures such as defective parts per million and nonconformance reports raised, delivery figures such as on time in full and lead time adherence, commercial accuracy, responsiveness and certification status each sit as a row with a weight, a measured value, a score and a comment, and the total picks the band. Suppliers working under IATF 16949 have a defined minimum to monitor, including delivered product conformity, delivery schedule performance, disruptions at the receiving plant and premium freight occurrences, which makes a reasonable starting list even for organizations outside that sector.

A rating is only worth writing down if something follows from it. The report closes with the band, the decision it triggers and the actions the supplier owes, each with someone accountable and a closing date, so a provider moved to conditional status knows exactly what closes the gap and by when. Band names and thresholds are convention rather than anything a standard sets, so print your own definitions next to the score. Producing one of these per supplier per period across a base of two hundred is a data problem, not a writing problem, which is where pulling the figures straight from the ERP beats pasting a spreadsheet into a document every quarter.

Blanks to fill

report_reference Report reference
period_covered Period covered
supplier_name Supplier
supplier_code Supplier code
supplier_address Supplier address
commodity Commodity or service supplied
evaluation_date Evaluation date
evaluator Evaluated by
evaluator_role Role
buyer Responsible buyer
contract_reference Contract or quality agreement
spend_in_period Spend in period
orders_in_period Orders in period
lines_received Order lines received
previous_rating Previous rating
previous_evaluation_date Previous evaluation
band_definitions Band definitions used
total_score Total score
rating_band Rating band
decision Decision
approved_scope Approved scope
next_evaluation_date Next evaluation
supplier_feedback Feedback shared with the supplier
approved_by Approved by
approval_date Approved
company_name Company
criteria[] One per item, so a row is added for every item in the list
certifications[] One per item, so a row is added for every item in the list
open_issues[] One per item, so a row is added for every item in the list
actions[] 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.

  1. 01 Sign up free and duplicate this template into your workspace.
  2. 02 Adjust the wording and branding in the visual editor.
  3. 03 Fill it in the app, share it as a form link, or call the API.
sample-data.json
{
  "company_name": "Northwind Instruments SRL",
  "report_reference": "SE-2026-H1-0044",
  "supplier_name": "Helvetia Labortechnik AG",
  "supplier_code": "SUP-0044",
  "supplier_address": "Industriestrasse 22, 8280 Kreuzlingen, Switzerland",
  "commodity": "Machined PEEK and PTFE components for sensor housings",
  "period_covered": "January 1 to June 30, 2026",
  "evaluation_date": "July 24, 2026",
  "evaluator": "Dana Kovacs",
  "evaluator_role": "Supplier Quality Engineer",
  "buyer": "Ioana Preda, Purchasing",
  "contract_reference": "Supply agreement SA-2024-017, quality agreement annex B",
  "spend_in_period": "184,200 EUR",
  "orders_in_period": "38 purchase orders",
  "lines_received": "214 order lines",
  "previous_rating": "Approved, 81 of 100",
  "previous_evaluation_date": "January 18, 2026",
  "criteria": [
    {
      "criterion": "Quality, defective parts per million",
      "weight": "35",
      "measure": "Rejects per million pieces received",
      "result": "3,140 ppm against a target of 1,000 ppm",
      "score": "14",
      "comment": "Driven by the bore diameter escape on lot HL-26-0771. Without that lot the rate is 410 ppm."
    },
    {
      "criterion": "Quality, nonconformance reports raised",
      "weight": "12",
      "measure": "Reports raised in the period",
      "result": "3 raised, one classified major",
      "score": "7",
      "comment": "One major, NCR-2026-0184. Two minor packaging and labelling issues, both closed inside a week."
    },
    {
      "criterion": "Delivery, on time in full",
      "weight": "28",
      "measure": "Lines delivered complete and on time",
      "result": "91.4 percent against a target of 97",
      "score": "21",
      "comment": "Eighteen late lines, fourteen of them during the March machine relocation."
    },
    {
      "criterion": "Delivery, lead time adherence",
      "weight": "15",
      "measure": "Median lead time against the quote",
      "result": "Quoted 21 days, median of 26 days",
      "score": "10",
      "comment": "Quoted lead time unchanged since 2024 and no longer reflects the supplier's loading."
    },
    {
      "criterion": "Certification and compliance",
      "weight": "10",
      "measure": "Certificates the agreement requires",
      "result": "ISO 9001 valid, ISO 14001 lapsed",
      "score": "6",
      "comment": "Renewal audit is booked. Insurance and the code of conduct are current."
    }
  ],
  "certifications": [
    {
      "certificate": "ISO 9001:2015 quality system",
      "number": "CH-QMS-114892",
      "issuer": "SQS",
      "expires": "March 14, 2028",
      "status": "Valid, copy on file"
    },
    {
      "certificate": "ISO 14001:2015 environmental system",
      "number": "CH-EMS-114893",
      "issuer": "SQS",
      "expires": "May 2, 2026",
      "status": "Lapsed, renewal audit booked September 15"
    },
    {
      "certificate": "Product liability insurance",
      "number": "POL-2026-77140",
      "issuer": "Alpina Versicherung",
      "expires": "December 31, 2026",
      "status": "Valid, certificate on file"
    },
    {
      "certificate": "Supplier code of conduct",
      "number": "SCC-0044-2024",
      "issuer": "Northwind Instruments SRL",
      "expires": "March 2, 2027",
      "status": "Signed March 2, 2026"
    }
  ],
  "open_issues": [
    {
      "reference": "NCR-2026-0184",
      "description": "Bore diameter above the upper limit on lot HL-26-0771, 500 pieces sorted, 11 returned",
      "raised": "May 11, 2026",
      "status": "Closed, cost recovered under debit note DN-2026-0059"
    },
    {
      "reference": "CA-2026-019",
      "description": "Process capability on drawing feature 3, plus a missing final inspection record for lot HL-26-0771",
      "raised": "May 12, 2026",
      "status": "Open, supplier 8D at D6, effectiveness review due October 2026"
    },
    {
      "reference": "DEL-2026-0031",
      "description": "Fourteen late lines during the March machine relocation, notified after the fact rather than in advance",
      "raised": "April 2, 2026",
      "status": "Closed, advance notification clause added to the supply agreement"
    }
  ],
  "actions": [
    {
      "action": "Close CA-2026-019 with capability evidence, minimum Cpk 1.33 on drawing feature 3 across three consecutive lots",
      "owner": "Helvetia Labortechnik AG, quality manager",
      "due": "October 31, 2026"
    },
    {
      "action": "Provide the reinstated ISO 14001 certificate or a written statement of the audit outcome",
      "owner": "Helvetia Labortechnik AG, management",
      "due": "September 30, 2026"
    },
    {
      "action": "Requote lead time on all active part numbers to reflect current loading",
      "owner": "Ioana Preda with the supplier account manager",
      "due": "September 12, 2026"
    },
    {
      "action": "Second party audit of the machining cell and the final inspection process",
      "owner": "Dana Kovacs",
      "due": "November 20, 2026"
    },
    {
      "action": "Qualify a second source for the four highest volume housings",
      "owner": "Ioana Preda",
      "due": "December 18, 2026"
    }
  ],
  "total_score": "58 of 100",
  "rating_band": "Conditional approval",
  "band_definitions": "Bands defined in PR-PUR-002: 85 and above approved, 70 to 84 approved with monitoring, 55 to 69 conditional approval, 40 to 54 suspended for new business, below 40 removal from the approved list. These bands are this organization's own definition, not a requirement of any standard.",
  "decision": "Existing business continues. No new part numbers are placed with this supplier until the actions above are closed and a re-evaluation is run. Incoming inspection stays at tightened sampling on all machined features.",
  "approved_scope": "Machined PEEK and PTFE components only. Not approved for assembly work or for anodised metal parts.",
  "next_evaluation_date": "January 22, 2027, or earlier once the open actions are closed",
  "approved_by": "Anca Marin, Quality Manager, with Ioana Preda, Purchasing",
  "approval_date": "July 28, 2026",
  "supplier_feedback": "Report shared with the supplier on July 29, 2026 and reviewed on a call on August 4. The supplier accepted the actions and the lead time requote, and asked that the March relocation context be recorded against the delivery score, which it has been."
}

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.

make-supplier-evaluation-report.sh
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 supplier-evaluation-report.pdf \
  --data-binary @- <<'JSON'
{
  "template_id": "tmpl_your_template_id",
  "format": "pdf",
  "data": {
    "company_name": "Northwind Instruments SRL",
    "report_reference": "SE-2026-H1-0044",
    "supplier_name": "Helvetia Labortechnik AG",
    "supplier_code": "SUP-0044",
    "supplier_address": "Industriestrasse 22, 8280 Kreuzlingen, Switzerland",
    "commodity": "Machined PEEK and PTFE components for sensor housings",
    "period_covered": "January 1 to June 30, 2026",
    "evaluation_date": "July 24, 2026",
    "evaluator": "Dana Kovacs",
    "evaluator_role": "Supplier Quality Engineer",
    "buyer": "Ioana Preda, Purchasing",
    "contract_reference": "Supply agreement SA-2024-017, quality agreement annex B",
    "spend_in_period": "184,200 EUR",
    "orders_in_period": "38 purchase orders",
    "lines_received": "214 order lines",
    "previous_rating": "Approved, 81 of 100",
    "previous_evaluation_date": "January 18, 2026",
    "criteria": [
      {
        "criterion": "Quality, defective parts per million",
        "weight": "35",
        "measure": "Rejects per million pieces received",
        "result": "3,140 ppm against a target of 1,000 ppm",
        "score": "14",
        "comment": "Driven by the bore diameter escape on lot HL-26-0771. Without that lot the rate is 410 ppm."
      },
      {
        "criterion": "Quality, nonconformance reports raised",
        "weight": "12",
        "measure": "Reports raised in the period",
        "result": "3 raised, one classified major",
        "score": "7",
        "comment": "One major, NCR-2026-0184. Two minor packaging and labelling issues, both closed inside a week."
      },
      {
        "criterion": "Delivery, on time in full",
        "weight": "28",
        "measure": "Lines delivered complete and on time",
        "result": "91.4 percent against a target of 97",
        "score": "21",
        "comment": "Eighteen late lines, fourteen of them during the March machine relocation."
      },
      {
        "criterion": "Delivery, lead time adherence",
        "weight": "15",
        "measure": "Median lead time against the quote",
        "result": "Quoted 21 days, median of 26 days",
        "score": "10",
        "comment": "Quoted lead time unchanged since 2024 and no longer reflects the supplier's loading."
      },
      {
        "criterion": "Certification and compliance",
        "weight": "10",
        "measure": "Certificates the agreement requires",
        "result": "ISO 9001 valid, ISO 14001 lapsed",
        "score": "6",
        "comment": "Renewal audit is booked. Insurance and the code of conduct are current."
      }
    ],
    "certifications": [
      {
        "certificate": "ISO 9001:2015 quality system",
        "number": "CH-QMS-114892",
        "issuer": "SQS",
        "expires": "March 14, 2028",
        "status": "Valid, copy on file"
      },
      {
        "certificate": "ISO 14001:2015 environmental system",
        "number": "CH-EMS-114893",
        "issuer": "SQS",
        "expires": "May 2, 2026",
        "status": "Lapsed, renewal audit booked September 15"
      },
      {
        "certificate": "Product liability insurance",
        "number": "POL-2026-77140",
        "issuer": "Alpina Versicherung",
        "expires": "December 31, 2026",
        "status": "Valid, certificate on file"
      },
      {
        "certificate": "Supplier code of conduct",
        "number": "SCC-0044-2024",
        "issuer": "Northwind Instruments SRL",
        "expires": "March 2, 2027",
        "status": "Signed March 2, 2026"
      }
    ],
    "open_issues": [
      {
        "reference": "NCR-2026-0184",
        "description": "Bore diameter above the upper limit on lot HL-26-0771, 500 pieces sorted, 11 returned",
        "raised": "May 11, 2026",
        "status": "Closed, cost recovered under debit note DN-2026-0059"
      },
      {
        "reference": "CA-2026-019",
        "description": "Process capability on drawing feature 3, plus a missing final inspection record for lot HL-26-0771",
        "raised": "May 12, 2026",
        "status": "Open, supplier 8D at D6, effectiveness review due October 2026"
      },
      {
        "reference": "DEL-2026-0031",
        "description": "Fourteen late lines during the March machine relocation, notified after the fact rather than in advance",
        "raised": "April 2, 2026",
        "status": "Closed, advance notification clause added to the supply agreement"
      }
    ],
    "actions": [
      {
        "action": "Close CA-2026-019 with capability evidence, minimum Cpk 1.33 on drawing feature 3 across three consecutive lots",
        "owner": "Helvetia Labortechnik AG, quality manager",
        "due": "October 31, 2026"
      },
      {
        "action": "Provide the reinstated ISO 14001 certificate or a written statement of the audit outcome",
        "owner": "Helvetia Labortechnik AG, management",
        "due": "September 30, 2026"
      },
      {
        "action": "Requote lead time on all active part numbers to reflect current loading",
        "owner": "Ioana Preda with the supplier account manager",
        "due": "September 12, 2026"
      },
      {
        "action": "Second party audit of the machining cell and the final inspection process",
        "owner": "Dana Kovacs",
        "due": "November 20, 2026"
      },
      {
        "action": "Qualify a second source for the four highest volume housings",
        "owner": "Ioana Preda",
        "due": "December 18, 2026"
      }
    ],
    "total_score": "58 of 100",
    "rating_band": "Conditional approval",
    "band_definitions": "Bands defined in PR-PUR-002: 85 and above approved, 70 to 84 approved with monitoring, 55 to 69 conditional approval, 40 to 54 suspended for new business, below 40 removal from the approved list. These bands are this organization's own definition, not a requirement of any standard.",
    "decision": "Existing business continues. No new part numbers are placed with this supplier until the actions above are closed and a re-evaluation is run. Incoming inspection stays at tightened sampling on all machined features.",
    "approved_scope": "Machined PEEK and PTFE components only. Not approved for assembly work or for anodised metal parts.",
    "next_evaluation_date": "January 22, 2027, or earlier once the open actions are closed",
    "approved_by": "Anca Marin, Quality Manager, with Ioana Preda, Purchasing",
    "approval_date": "July 28, 2026",
    "supplier_feedback": "Report shared with the supplier on July 29, 2026 and reviewed on a call on August 4. The supplier accepted the actions and the lead time requote, and asked that the March relocation context be recorded against the delivery score, which it has been."
  }
}
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 Supplier Evaluation Report template with report reference "SE-2026-H1-0044" and period covered "January 1 to June 30, 2026".

How the MCP server works →

More operations templates