DocMake
The PDF DocMake makes from the Request for Information template

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

Operations

Request for Information

A request for information is how a contractor asks the design team a question that the drawings do not answer, in a form that can be tracked and later relied on. It is deliberately narrow. One question, the documents it arises from, the date it was asked, the date an answer is needed, and the answer with a name against it. An RFI that asks three questions at once gets one answer and two arguments six months later.

The reason RFIs get logged rather than emailed is that they carry commercial consequence. A late answer can stall a work face, and a changed answer can turn into a variation, so the request records the date the response is required by, what is on hold while it is open, and whether the responder thinks a change instruction follows. Keeping cost and programme exposure on the face of the request means nobody has to reconstruct months later why a work package sat idle for eleven days.

Good RFIs propose. A question that just says the drawings clash puts the whole burden on the designer, whereas a question that sets out two workable options with their cost and buildability lets a designer answer in a day. The proposed solution block is also where the contractor's own competence gets recorded, which matters when the same clash turns up at three other levels of the same building.

The response half of the document belongs to the design team: the answer, any revised drawing references, whether the answer changes the contract requirement, and the signature. Rendering the whole record from JSON means the project system can emit each RFI as a numbered PDF for the contract file, push the same data into the drawing register, and pull the open ones into a weekly log without anyone maintaining a parallel spreadsheet.

Blanks to fill

rfi_number RFI number
revision Revision
project_name Project
project_number Project number
site_address Site address
location_on_site Location
discipline Discipline
work_package Work package
priority Priority
response_required_by Response required by
raised_by_company Raised by
directed_to_company Directed to
raised_by_person Contact
directed_to_person For the attention of
raised_date Date raised
copied_to Copied to
subject Subject
question Question
background Background
work_on_hold Work on hold pending the answer
cost_exposure Cost exposure if unresolved
programme_exposure Programme exposure if unresolved
attachments Attachments
response Response
status Status
closed_date Closed
days_open Days open
change_instruction_follows Change instruction follows
change_reference Change reference
response_by Answered by
response_role Role
response_date Date answered
company_name Company
references[] One per item, so a row is added for every item in the list
options[] One per item, so a row is added for every item in the list
revised_documents[] 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": "Kestrel M&E Ltd",
  "rfi_number": "RFI-2026-0142",
  "revision": "0",
  "project_name": "Cascade Street mixed use development",
  "project_number": "PRJ-2026-114",
  "site_address": "Cascade Street, Bristol BS1 6TR, United Kingdom",
  "raised_by_company": "Kestrel M&E Ltd, mechanical and electrical subcontractor",
  "raised_by_person": "Priya Raman, Project Engineer",
  "raised_date": "September 14, 2026",
  "directed_to_company": "Prentice Ward Architects, contract administrator",
  "directed_to_person": "Julia Prentice, Project Architect",
  "copied_to": "Harbor Build Group (Owen Marsh, Site Manager), Loxley Consulting Engineers (structural), Marchmont QS",
  "discipline": "Mechanical services and structure",
  "work_package": "M&E package, riser 2 distribution, levels 3 to 6",
  "location_on_site": "Riser 2, grid line D4, levels 4 and 5",
  "priority": "High, work face affected",
  "response_required_by": "September 18, 2026",
  "subject": "Clash between the riser 2 chilled water flow and return and the level 4 transfer beam downstand",
  "question": "The chilled water flow and return in riser 2 are shown on M-2204 revision C passing horizontally through grid D4 at 2,750 mm above finished floor level on level 4. Drawing S-1140 revision F shows a 600 mm transfer beam downstand at the same grid, which leaves 2,150 mm of clear zone. The two 150 mm insulated pipes plus supports need 520 mm and cannot pass at the level shown. Please confirm which of the options below is to be adopted, or issue a coordinated detail.",
  "background": "The clash was found during the level 4 coordination review on September 11 after the structural revision F was issued on September 4. Revision E of S-1140 showed the transfer beam one bay north at grid D5, where riser 2 has clear passage. The mechanical layout has not changed since revision C.",
  "references": [
    {
      "document": "M-2204, Level 4 mechanical services layout",
      "revision": "C",
      "detail": "Riser 2 horizontal distribution, grid D3 to D6"
    },
    {
      "document": "S-1140, Level 4 framing plan",
      "revision": "F",
      "detail": "Transfer beam TB-04 at grid D4, 600 mm downstand"
    },
    {
      "document": "A-3012, Level 4 reflected ceiling plan",
      "revision": "D",
      "detail": "Ceiling zone 2,700 mm to finished floor level, no bulkhead shown at D4"
    },
    {
      "document": "Specification section 23 21 13",
      "revision": "Issue 2",
      "detail": "Clause 3.4, minimum clearance and access to valves and flanged joints"
    }
  ],
  "options": [
    {
      "label": "Option A",
      "description": "Drop both pipes to 2,050 mm above finished floor level under the beam and form a bulkhead in the ceiling across grid D3 to D5",
      "cost_effect": "Additional bulkhead framing and plasterboard, additional supports and two sets of offsets. Estimated at $18,600.",
      "programme_effect": "Six working days on the level 4 ceiling grid",
      "contractor_preference": "Yes"
    },
    {
      "label": "Option B",
      "description": "Route both pipes around the beam through the adjacent bay at grid D5 and back into riser 2 above the beam",
      "cost_effect": "Longer pipe run, four additional changes of direction, higher pressure drop and a pump duty review. Estimated at $31,400 plus the design fee for the duty check.",
      "programme_effect": "Nine working days plus the duty review",
      "contractor_preference": "No"
    },
    {
      "label": "Option C",
      "description": "Penetrate the transfer beam web with two 200 mm sleeves at the position shown on the sketch attached",
      "cost_effect": "Sleeve fabrication only, estimated at $4,200, subject to the structural engineer accepting the penetrations",
      "programme_effect": "Two working days if accepted before September 21",
      "contractor_preference": "No"
    }
  ],
  "work_on_hold": "Level 4 riser 2 pipework installation, and with it the level 4 ceiling grid behind it. Four operatives were redeployed to level 5 on September 14 rather than stood down.",
  "cost_exposure": "Standing time is avoided by redeployment, but the level 4 ceiling follows the pipework, so each week of delay pushes the ceiling and the level 4 commissioning behind the sectional handover date.",
  "programme_exposure": "Level 4 riser 2 has four days of float remaining against the sectional handover date of October 2, 2026. An answer after September 18 uses that float.",
  "attachments": "Coordination sketch SK-ME-114 showing the three options in section at grid D4, and a screenshot of the federated model at the clash location dated September 11, 2026.",
  "response": "Option A is to be adopted. The transfer beam at D4 cannot be penetrated, so option C is rejected on structural grounds, and option B is rejected as the pump duty review would not be completed within the programme. Drop the flow and return to 2,050 mm as proposed and form a bulkhead from grid D3 to D5 with the head height maintained at 2,400 mm minimum below the bulkhead. The ceiling drawing is revised accordingly. The valve access required by specification clause 3.4 must be maintained with an access panel at grid D4, position to be agreed on site with the architect before the ceiling is boarded.",
  "response_by": "Julia Prentice",
  "response_role": "Project Architect, Prentice Ward Architects, with structural confirmation from Loxley Consulting Engineers dated September 17, 2026",
  "response_date": "September 17, 2026",
  "revised_documents": [
    {
      "document": "A-3012, Level 4 reflected ceiling plan",
      "revision": "E",
      "issued": "September 17, 2026"
    },
    {
      "document": "M-2204, Level 4 mechanical services layout",
      "revision": "D",
      "issued": "September 18, 2026"
    }
  ],
  "change_instruction_follows": "Yes",
  "change_reference": "CO-018, issued by Harbor Build Group to Kestrel M&E Ltd on September 21, 2026",
  "status": "Closed, answered within the required date and superseded by change order CO-018",
  "closed_date": "September 21, 2026",
  "days_open": "3 working days from raised to answered, 5 to formal closure"
}

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-request-for-information.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 request-for-information.pdf \
  --data-binary @- <<'JSON'
{
  "template_id": "tmpl_your_template_id",
  "format": "pdf",
  "data": {
    "company_name": "Kestrel M&E Ltd",
    "rfi_number": "RFI-2026-0142",
    "revision": "0",
    "project_name": "Cascade Street mixed use development",
    "project_number": "PRJ-2026-114",
    "site_address": "Cascade Street, Bristol BS1 6TR, United Kingdom",
    "raised_by_company": "Kestrel M&E Ltd, mechanical and electrical subcontractor",
    "raised_by_person": "Priya Raman, Project Engineer",
    "raised_date": "September 14, 2026",
    "directed_to_company": "Prentice Ward Architects, contract administrator",
    "directed_to_person": "Julia Prentice, Project Architect",
    "copied_to": "Harbor Build Group (Owen Marsh, Site Manager), Loxley Consulting Engineers (structural), Marchmont QS",
    "discipline": "Mechanical services and structure",
    "work_package": "M&E package, riser 2 distribution, levels 3 to 6",
    "location_on_site": "Riser 2, grid line D4, levels 4 and 5",
    "priority": "High, work face affected",
    "response_required_by": "September 18, 2026",
    "subject": "Clash between the riser 2 chilled water flow and return and the level 4 transfer beam downstand",
    "question": "The chilled water flow and return in riser 2 are shown on M-2204 revision C passing horizontally through grid D4 at 2,750 mm above finished floor level on level 4. Drawing S-1140 revision F shows a 600 mm transfer beam downstand at the same grid, which leaves 2,150 mm of clear zone. The two 150 mm insulated pipes plus supports need 520 mm and cannot pass at the level shown. Please confirm which of the options below is to be adopted, or issue a coordinated detail.",
    "background": "The clash was found during the level 4 coordination review on September 11 after the structural revision F was issued on September 4. Revision E of S-1140 showed the transfer beam one bay north at grid D5, where riser 2 has clear passage. The mechanical layout has not changed since revision C.",
    "references": [
      {
        "document": "M-2204, Level 4 mechanical services layout",
        "revision": "C",
        "detail": "Riser 2 horizontal distribution, grid D3 to D6"
      },
      {
        "document": "S-1140, Level 4 framing plan",
        "revision": "F",
        "detail": "Transfer beam TB-04 at grid D4, 600 mm downstand"
      },
      {
        "document": "A-3012, Level 4 reflected ceiling plan",
        "revision": "D",
        "detail": "Ceiling zone 2,700 mm to finished floor level, no bulkhead shown at D4"
      },
      {
        "document": "Specification section 23 21 13",
        "revision": "Issue 2",
        "detail": "Clause 3.4, minimum clearance and access to valves and flanged joints"
      }
    ],
    "options": [
      {
        "label": "Option A",
        "description": "Drop both pipes to 2,050 mm above finished floor level under the beam and form a bulkhead in the ceiling across grid D3 to D5",
        "cost_effect": "Additional bulkhead framing and plasterboard, additional supports and two sets of offsets. Estimated at $18,600.",
        "programme_effect": "Six working days on the level 4 ceiling grid",
        "contractor_preference": "Yes"
      },
      {
        "label": "Option B",
        "description": "Route both pipes around the beam through the adjacent bay at grid D5 and back into riser 2 above the beam",
        "cost_effect": "Longer pipe run, four additional changes of direction, higher pressure drop and a pump duty review. Estimated at $31,400 plus the design fee for the duty check.",
        "programme_effect": "Nine working days plus the duty review",
        "contractor_preference": "No"
      },
      {
        "label": "Option C",
        "description": "Penetrate the transfer beam web with two 200 mm sleeves at the position shown on the sketch attached",
        "cost_effect": "Sleeve fabrication only, estimated at $4,200, subject to the structural engineer accepting the penetrations",
        "programme_effect": "Two working days if accepted before September 21",
        "contractor_preference": "No"
      }
    ],
    "work_on_hold": "Level 4 riser 2 pipework installation, and with it the level 4 ceiling grid behind it. Four operatives were redeployed to level 5 on September 14 rather than stood down.",
    "cost_exposure": "Standing time is avoided by redeployment, but the level 4 ceiling follows the pipework, so each week of delay pushes the ceiling and the level 4 commissioning behind the sectional handover date.",
    "programme_exposure": "Level 4 riser 2 has four days of float remaining against the sectional handover date of October 2, 2026. An answer after September 18 uses that float.",
    "attachments": "Coordination sketch SK-ME-114 showing the three options in section at grid D4, and a screenshot of the federated model at the clash location dated September 11, 2026.",
    "response": "Option A is to be adopted. The transfer beam at D4 cannot be penetrated, so option C is rejected on structural grounds, and option B is rejected as the pump duty review would not be completed within the programme. Drop the flow and return to 2,050 mm as proposed and form a bulkhead from grid D3 to D5 with the head height maintained at 2,400 mm minimum below the bulkhead. The ceiling drawing is revised accordingly. The valve access required by specification clause 3.4 must be maintained with an access panel at grid D4, position to be agreed on site with the architect before the ceiling is boarded.",
    "response_by": "Julia Prentice",
    "response_role": "Project Architect, Prentice Ward Architects, with structural confirmation from Loxley Consulting Engineers dated September 17, 2026",
    "response_date": "September 17, 2026",
    "revised_documents": [
      {
        "document": "A-3012, Level 4 reflected ceiling plan",
        "revision": "E",
        "issued": "September 17, 2026"
      },
      {
        "document": "M-2204, Level 4 mechanical services layout",
        "revision": "D",
        "issued": "September 18, 2026"
      }
    ],
    "change_instruction_follows": "Yes",
    "change_reference": "CO-018, issued by Harbor Build Group to Kestrel M&E Ltd on September 21, 2026",
    "status": "Closed, answered within the required date and superseded by change order CO-018",
    "closed_date": "September 21, 2026",
    "days_open": "3 working days from raised to answered, 5 to formal closure"
  }
}
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 Request for Information template with RFI number "RFI-2026-0142" and revision "0".

How the MCP server works →

More operations templates