Files
mpm-documentation-kit/_STANDARDS/MPM_Document_Standard.md
T
Jason StedwellandClaude Opus 5.5 5b52636003 MPM Documentation Kit v1.3 (CW-034)
MPM Document Standard 1.3, mpmdoc build engine, templates for TN, INS, SOP,
BOM, SVY, TAP, DWG, TSB, PRO, SOW and WO (Chinese editions for TN and DWG),
glossary, MPM fonts and logos, and the mpm-technical-documents plugin 1.3.0.
Worked examples ship in the kit zip on Drive only.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NWatTMmqmGatgHjDZvWs5b
2026-11-09 11:51:56 -06:00

36 KiB
Raw Blame History

MPM Document Standard

Version 1.3 · Released · Nov 9, 2026 · Owner: Jason Stedwell

This is the rule set for every technical document produced in the DOCUMENTATION PROJECT. It covers what each document type is for, how it is numbered, named and filed, how it looks, and how it reads. The engine in mpmdoc/ enforces the mechanical parts (numbering, masthead, header/footer, palette, revision history); this document covers the judgement parts.

MPM Documentation Kit edition. Everything in the kit is Message Point Media. Replace your kit when MPM Technical Services releases a new version; the version line above tells you which one you have.


1. Document types

Code Type Use it when Audience Default marking Length Template
INS Installation Guide Someone has to physically install hardware, step by step Customer facilities, installers, MPM field Customer 4–10 pp Ready · templates/INS/
SOP Standard Operating Procedure A repeatable internal task (setup, onboarding, process) MPM staff Internal 2–6 pp Ready · templates/SOP/
TN Technical Note One engineering question needs a worked, checkable answer Customer + MPM engineering Customer 1–3 pp Ready · templates/TN/
BOM Bill of Materials Pull, check and pack a set of parts MPM shop / field Internal 1–2 pp Ready · templates/BOM/
SVY Site Survey Recording what was found on site and what it means for design Part 1 customer, Part 2 MPM-internal Customer 4–12 pp Ready · templates/SVY/
TAP Technical Action Plan A planned engagement: scope, staffing, logistics, success criteria Customer / OEM partner Confidential 5–12 pp Ready · templates/TAP/
DWG Drawing sheet (11×17) Mechanical, cable, mounting or fit-out drawings with title block Fabrication, customer approval Customer 1–4 sheets Ready · templates/DWG/
TSB Technical Service Bulletin A known product issue and its fix for every affected unit Customer edition: agencies, partners · Internal edition: MPM field and support Customer (internal edition: Internal) 2–5 pp Ready · templates/TSB/
PRO Proposal Before award: need, proposed solution, why MPM, investment Agency / partner decision makers Confidential 3–8 pp Ready · templates/PRO/
SOW Statement of Work After award: contractual scope, deliverables, milestones Customer / partner, under the MSA Customer 2–6 pp Ready · templates/SOW/
WO Field Work Order Dispatching one job at one site to an MPM tech or a subcontract installer Technician / installer, site contact Internal 1–3 pp Ready · templates/WO/

Also standard but not a PDF: 00_INDEX.md, a project index (see §4.3).

New types are assessed when they come up; don't improvise a code. Add it to brand.TYPES and this table first.

Picking the type:

  • Steps someone performs → INS (outside MPM) or SOP (inside MPM).
  • A number, a fit or a yes/no with working → TN.
  • A list of parts → BOM.
  • A record of what exists on site → SVY.
  • A plan for a visit or engagement → TAP.
  • Geometry someone will fabricate from → DWG.
  • A product defect and its fix across units → TSB. (One site's one-off problem is a TN or a TAP.)
  • Winning the work → PRO. Defining the awarded work → SOW. A PRO never turns into the SOW; the SOW gets its own number.
  • Sending someone to do one job → WO. How to do the job is the INS it references.

2. Brand selection

  • MPM (gold/ink, Montserrat + Open Sans + JetBrains Mono) is used for every document.

3. Numbering

3.1 Format: TYPE-CUST-SUBJ-NN

Field Rule Examples
TYPE Code from §1 INS, TN, BOM
CUST 2–4 letters: customer code, or MPM department for internal docs (IT, ENG, OPS, QA), or MPM for company-wide/product docs LT, NSH, CMT, OMT, SOR, GIL
SUBJ 2–8 letters/digits naming the subject: site, product, bay, kit, job 15R, B17, P25, HW, UNIFI, MON
NN Two-digit sequence within TYPE-CUST-SUBJ, starting 01 01, 02
  • Uppercase, hyphens only, no spaces.
  • A number is issued once and never reused, even if the document is abandoned.
  • A new subject on the same project gets a new SUBJ. A second document of the same type on the same subject gets the next NN.
  • Register the customer code and the number in registry.md before the first build. The engine refuses unknown customer codes.
  • TSB: MPM + product family for a product-wide bulletin (TSB-MPM-LX270-01); a customer code only when the issue belongs to one deployment.
  • PRO / SOW: the customer the document is addressed to (the partner when MPM works through one, e.g. Vontas), SUBJ = project. A SOW that follows a PRO keeps the same SUBJ.
  • WO: the customer code of the job, SUBJ = site or job; one WO per dispatch.

3.2 Existing documents

Current Standard number Action
INS-LT-15R-01 same Done: Rev 0.6 on engine
SOP-IT-UNIFI-01 same Done: Rev 1.2 on engine; file renamed to its number
TN-NSH-B17-01, TN-CMT-P25-01 same Done: Rev 0.3 on engine
BOM-OMT-HW-01 same Done: Rev 0.2 on engine
MPM-TAP-2606-001 Rev A / B TAP-GIL-M37-01 Done: Rev A → 1.0, Rev B → 1.1, rebuilt as 1.2; old number listed under Supersedes
MPM-TB-2604-001 (technical bulletin) TBD TB type not yet defined; assess when next needed
SORTA Monument Square survey Rev 0.1 (.docx) SVY-SOR-MON-01 Done: rebuilt as PDF, Rev 0.2
Power Whip Cable drawing (engineering, MWT) TBD Engineering-owned part drawings keep their part-number scheme; DWG numbers are for drawings produced in this project

4. Revisions, files and folders

4.1 Revisions and status

  • Revisions are numeric MAJOR.MINOR for every type, drawings included. Letter revisions (Rev A/B) belong to legacy and engineering part drawings only; when a lettered document is renumbered, issued letters map to 1.0, 1.1, … (Rev A → 1.0).
  • 0.1, 0.2, … are drafts. Status shows as Draft (red in the info strip).
  • 1.0 is the first release. Anything given to a customer as final must be ≥ 1.0. Drafts may be shared but stay marked Draft.
  • After release: 1.1, 1.2 for corrections and clarifications, 2.0 when the substance (scope, values, procedure) changes.
  • Once a revision has been shared outside your machine, any change to the PDF bumps the revision, formatting-only changes included. An unshared draft may be rebuilt in place.
  • Revision history is mandatory. One line per revision: what changed, not "updates". The engine prints it as its own block at the end of the document (§6).
  • A document that replaces a different document number lists it under Supersedes (TAP, SVY).

4.2 File names

{NUMBER}_{Customer}_{Short-Title}_Rev{X.Y}.pdf

  • Underscores separate fields; hyphens join words within a field. No spaces.
  • Example: TN-NSH-B17-01_Nashville_Bay17_Sign-Height-Change_Rev0.3.pdf
  • The engine builds this name from slug="Nashville_Bay17_Sign-Height-Change".
  • A Chinese edition adds _ZH before the revision: DWG-NSH-STAR-01_WeGo-Star_LED-Banner_Mounting-Options_ZH_Rev0.2.pdf (§12).

4.3 Folder layout

DOCUMENTATION PROJECT/
  _ASSETS/                        ← shared fonts and logos (mpm/): the only copies
  _STANDARDS/                     ← the standard, engine, templates, glossary, registry
  _INPUTS/                        ← reference material not tied to one project (outside drawings, examples)
  <CUSTOMER> <PROJECT>/           ← one folder per project, e.g. "NASHVILLE BAY 17"
    00_INDEX.md                   ← optional: status, contents, key numbers, owed items, sources
    <current PDFs>                ← latest revision of each document only
    _superseded/                  ← older revisions (moved here when a new rev is built)
    _INPUTS/                      ← what came in: site photos, screenshots, received drawings, quotes, field notes
    source/                       ← build.py, figs.py, img/ (prepared crops used in the PDF), _build/ (disposable)
  • The root holds folders only. No PDFs, photos or loose files.
  • _INPUTS/ holds originals and is never edited. Crops and annotated versions used in a document go in source/img/.
  • Nothing is deleted from _superseded/. It is the issued history.
  • "Claude outputs" is where the Claude app drops copies of files sent in chat. Treat it as transient. The project folder holds the record.

00_INDEX.md sections, as in Nashville Bay 17:

  • Status in one paragraph
  • What's in this folder
  • Key numbers
  • What's still owed
  • Could not open
  • Source threads

5. Units, numbers, dates

  • Heights and clearances above grade: feet-inches, 12'-10", to the nearest 1/16 (units.ftin).
  • Component and hardware dimensions: use the units of the source drawing or part. Metric parts stay metric (M8 × 1.25, 107 × 465 mm).
  • Customer-facing documents: the first mention of a metric dimension gets the inch conversion: 312 mm (about 12-5/16 in.).
  • Characters: use the true minus −, times ×, diameter Ø, degree ° and arrow →. Not -, x or ->.
  • Numbers and units: in the mono font in tables and calcs. Put a space between value and unit (51.0 W, 0.53 A), except feet/inches and %.
  • Precision: match the measurement; don't print 63.75 if you measured to ±0.1. One decimal for watts, two for amps.
  • Dates: ISO in source (2026-11-05); displayed Nov 5, 2026 everywhere in the document.
  • Unknowns: use TBC (red) in a cell, never a guess. List each TBC as an open item.

6. Page anatomy

Every MPM document, top to bottom. The engine generates the items marked ⚙.

  1. ⚙ Running header (every page): MPM logo left; document type (uppercase) and NUMBER · REV X.Y right; gold rule.
  2. ⚙ Kicker: Type · Customer · Subject in gold small caps.
  3. Title (H1):
    • TN: name the thing being checked ("Bay 17 Sign: Mounting Height Change").
    • INS/SOP: name the outcome ("15" Reflective Sign: Shelter Post Mount").
  4. Lede: 2–3 sentences; the situation and what the document does.
  5. ⚙ Info strip: five cells: Document · Revision · Date (Effective for SOP) plus two type-specific cells (§9).
  6. Opening:
    • TN: KPI tiles, then the dark Result box
    • INS/SOP: dark Before you start box
    • SVY: control table, dark About this document box, Status of this revision note
    • TAP: document-control table and the confidentiality notice (no dark box)
    • BOM: straight into the item tables
    • TSB: compliance pill, applicability table, dark Result box
    • PRO: parties, then KPI tiles (one key tile: the investment)
    • SOW: the opening paragraph naming the parties, the MSA, the end customer and the quotation
    • WO: status pill, parties (site · site contact · MPM dispatch), job table, Safety note
  7. Body: sections with gold-ruled uppercase headings (doc.section). Figures and tables are numbered in order.
  8. Close:
    • TN: Assumptions and open items
    • SVY: To verify list at the end of Part 2, then the appendices
    • INS: Final check
    • SOP: Setup checklist, Troubleshooting, Need help?
    • BOM: items to confirm note and sign-off lines
    • TAP: contacts, then the Prepared and approved by block
    • TSB: Compliance record, then Part 2 in the internal edition
    • PRO: Next steps, then a Submitted by block
    • SOW: milestones, assumptions and exclusions, optional Acceptance signatures
    • WO: Completion record and technician + site-contact signatures
  9. ⚙ Revision history block: the last thing in every document, in its own cream block with a gold top rule. On the last page it sits at the bottom when it shares the page with content, or at the top when it lands on a page of its own.
  10. ⚙ Running footer (every page): MESSAGE POINT MEDIA · Born to Innovate. Built to Last. left (tagline in Dark Gold, exactly as written); CUSTOMER · SUBJECT [· INTERNAL USE | CONFIDENTIAL] · NUMBER · Page x of y right. Override the context with footer= when it runs long; keep it under about 45 characters.

Page setup: US Letter portrait, margins 1.0 in. top, 0.7 in. bottom, 0.62 in. sides. DWG uses its own 11×17 landscape sheet (§9.7) instead of this anatomy.

Page breaks: start a new page (new_page=True) for a full-width figure page or a major part. Never leave a heading at the foot of a page. Headings are styled to stay with what follows, but check the PDF.

Classification:

  • Public / Customer: no marking.
  • Internal: footer says INTERNAL USE.
  • Confidential: footer says CONFIDENTIAL, and page 1 carries a confidentiality notice naming the recipient and the governing NDA (TAP).

7. Visual system

7.1 Colour: each colour has one job

Token Hex Job
Ink #232022 Text, dark boxes, primary linework
Gold #DCBB4F Brand accent: rules, step numbers, header underline
Dark Gold #998643 Kickers, labels, FIG/TABLE tags, centrelines
Light Accent #849698 Ledes, captions, secondary text, running footer
Cream #F5F1EC Info strip, notes, calc blocks
Line #E6E0D8 Table rules, figure frames
Key #FBF6E6 The one highlighted row or tile
Red #A42D20 Warnings, failing values, limits, minimums, Draft status
Green #3F6B3A PASS, passing values
Blue / Grey #2F5A8A / #B8B1A8 Data series only, never UI

Colours are the official MPM colour system (_ASSETS/README.md). Green PASS and the blue data series are functional additions, not brand colours, so keep them to status marks and data.

7.2 Type

  • Montserrat: headings, kickers, labels, captions, table headers.
  • Open Sans 9.6 pt: body. The brand's 11 pt applies to Word documents; dense technical PDFs stay at 9.6 pt (decided Nov 6, 2026).
  • JetBrains Mono: numbers, dimensions, part numbers, calculations.
  • All fonts come from _ASSETS/mpm/fonts/ and are embedded in every PDF. Never substitute Arial, Calibri or a system font.
  • Running header: Logo-Gold-Black.png (gold icon, dark text) on white.
  • Dark title blocks: Logo-Gold-White.png.
  • Drawings: the SVG equivalent.
  • The full selection guide is in _ASSETS/README.md.

7.3 Components: use these, don't invent new ones

Component Engine call Rules
Headline numbers doc.kpis() TN (and SVY summary): 3–4 tiles. Exactly one key tile (the answer); verdict tiles ok/bad.
Dark box doc.result(), doc.before_you_start(), doc.dark() Once per document, right after the info strip / KPIs. 2–6 bullets, key fact in bold.
Section doc.section() Short noun phrase. Uppercase is automatic.
Table doc.table() Header row is uppercase Montserrat with a gold underline, not the brand guide's dark header bar (decided Nov 6, 2026; reads better in dense numeric tables). Caption required if referenced. At most one KeyRow. Right-align numbers (r), mono for values (m, d).
Calculation doc.calc() Comment line, then name = symbolic = numeric = result. PASS/FAIL pill on the line that decides.
Figure doc.figure() Every drawn figure numbered and captioned; refer to it in text with [[fig:key]].
Screenshot / photo doc.shot(), doc.shots() Files in source/img/. Captioned, not numbered, because each belongs to its step. Crop to the relevant part and mark the control to tap with a gold box.
On-screen control ui('Label') Any button, tile or link the reader taps, named exactly as it appears on screen.
Process at a glance doc.glance() INS/SOP. 4–8 tiles, two-word label + detail. A step done by someone else is a greyed ✓ tile.
Step doc.step() INS/SOP. A side figure keeps the step whole. wide=True puts the figure below; the text stays whole and only the figure may move to the next page.
Special case doc.special() SOP/INS. A gold-framed panel for a situation only some readers hit (e.g. outside the U.S.). At most one or two per document.
BOM table doc.bom() Line numbers continue across sections; subtotal row per section; Pulled/Packed checkboxes.
Note doc.note(kicker, body, tone) See §7.4.
Checklist doc.checklist(), doc.bullets(check=True) Final check (INS, two columns), Setup checklist (SOP, one column), open items.
Assumptions / open items doc.assumptions() TN and SVY close with this. Open items start with a verb.
Sign-off doc.signoff(), doc.approval() Sign lines (BOM); Prepared and approved by block (TAP).
Control table doc.kv() Front matter of SVY and TAP: label / value rows (prepared for, supersedes, distribution …).
Part divider doc.part() SVY Part 1 / Part 2 / Appendices. internal=True marks an MPM-internal part.
Site photo doc.photo(), doc.photos() Numbered FIG, two side by side, max 2.7 in. tall. Every photo also appears in the photo log.
To-verify tag verify() Inline red tag on a point of record to confirm with the customer; each one also listed in the To verify note.
Field notes doc.transcript() Verbatim notebook transcription: spelling preserved, editorial text in [brackets].
Drawing sheet Drawing(...), dwg.view(), dwg.sheet() DWG only (§9.7).
Priced BOM doc.priced() PRO / SOW. SKU · description · qty · extended price, subtotal per group, grand total. Prices are numbers from the quotation; totals are computed (doc.price_total), never typed.
Milestones doc.milestones(rows, expect=doc.price_total) SOW (and PRO payment terms). The build fails if the milestones don't add up to the priced total.
Parties doc.parties() PRO / WO (SOW names them in the opening paragraph). MPM's block is brand.PROVIDER.
Status / compliance pill doc.pill(text, colour) TSB compliance: Mandatory red · Recommended gold · Informational grey. WO status: Dispatched gold · On site ink · Complete green · On hold red. One per document.
Fill-in record doc.fields(), doc.table(..., cls="fill") WO completion record; TSB compliance record (blank ruled rows).
Signatures doc.signatures([(role, who)]) WO (technician + site contact); SOW Acceptance when the customer signs the SOW itself.

7.4 Note kickers (fixed vocabulary)

Tone Kickers
info (cream/gold) GOOD TO KNOW · CHECK · CHECK YOUR MARKS · TWO WAYS TO … · ON ANDROID · NEED HELP? · STATUS OF THIS REVISION · WHAT CHANGED IN THIS REVISION · topic-specific short label
warn (red) WARNING · LINE VOLTAGE · CHECK POLARITY · WATCH FOR … · DON'T … · DRAFT · ITEMS TO CONFIRM BEFORE RELEASE · PROPRIETARY & CONFIDENTIAL
ok (green) CONFIRMED · RESOLVED · CLOSED
verify (dashed) TO VERIFY WITH {CUSTOMER} BEFORE RELEASE: points of record still to confirm (SVY)

Action required (TAP) uses doc.special(), not a note.

  • Use a warn note only when getting it wrong can hurt someone or damage equipment.
  • At most one warn note per step.

8. Writing

Voice:

  • Plain, direct, specific.
  • Short sentences.
  • Active voice.
  • No marketing language in technical documents.

Answer first:

  • A TN's Result box must stand on its own.
  • A reader who stops after the Result should have the right answer and its conditions.

Procedures (INS/SOP):

  • Each step starts with a verb: Mark the hole locations. One step is one outcome.
  • Numbered sub-steps: 3–6, one action each.
  • Bold the object or value the reader must get right: plumb, 1/2 in. cobalt, breaker off.
  • The step kicker names the tool, part or place for that step: Ø1/2 IN. COBALT BIT, UNIFI ENDPOINT.
  • Every step that changes something physical gets a figure.
  • Say what success looks like: a CHECK note, or a closing Final check list.

Numbers:

  • Every number traces to a measurement, a document or a calculation shown in the document.
  • Keep source numbers in one place (figs.py) and derive the rest in code. Never retype a derived value.

Names: use the customer's name for itself on first use in the kicker or lede (Nashville MCC (WeGo), SORTA / Metro); short form after that.

Unknowns:

  • TBC in tables.
  • Open items in TN/SVY.
  • Draft · items to confirm warn note on BOM.
  • Never paper over an unknown.

Attribution: when a requirement came from a person or email, the source is recorded in 00_INDEX.md, not in the customer document.

8.1 MPM brand voice in technical documents

Technical documents sit at the high formality · low energy · very high technical depth end of the MPM tone matrix (hardware/maintenance documentation). The MPM voice still applies:

  • Expert partner, not vendor. Explain the why behind a step or a limit. Don't lecture and don't sell.
  • Precise and purposeful. Exact names and numbers. No superlatives ("cutting-edge", "best-in-class", "revolutionary").
  • Riders and passengers, not users, when the end audience is the public. Use transit agencies / agencies for customers in transit contexts.
  • Accessibility is a design principle, not a checkbox. State ADA requirements as what makes the sign work for riders (reach range, audio), never as a compliance burden.
  • Own the complexity. When something is hard, say so, then show the way through it. Proactive wording ("preventative check") rather than firefighting.
  • Terminology:
    • native API integration (never wrapper or middleware)
    • MP.TV CMS in customer-facing documents
    • RDMC
    • GTFS-RT
    • publishing rules
    • hardware product names exactly as in the brand settings (e.g. MR Series, MR27)
  • No conference-theme language (MPower motorsports metaphors) in documents.

Brand source: the mpm-brand-voice plugin (settings/brand-voice.local.md).


9. Per-type specifications

The two type-specific info-strip cells and the required section order for each type. Every type has an engine template in templates/<TYPE>/ with a preview PDF.

9.1 INS: Installation Guide (ready: templates/INS/)

  • Info cells: Audience · Mount/Install type
  • Sections:
    1. Before you start (dark box)
    2. Process at a glance (4–8 tiles)
    3. Hardware table + Tools table, side by side, kept together as one block
    4. Reference figure (template / drill schedule) if needed
    5. Walkthrough (numbered steps with figures)
    6. Final check (two-column checklist; last item "Photo of the finished install sent to MPM")

9.2 SOP: Standard Operating Procedure (ready: templates/SOP/)

  • Info cells: Audience · Time needed
  • Sections:
    1. Before you start
    2. Process at a glance (tiles labelled with who does it: IT / YOU)
    3. Walkthrough (numbered steps, screenshots as side figures)
    4. Special cases (e.g. Outside the U.S.), placed after the step they relate to
    5. Setup checklist (one column)
    6. Troubleshooting table (Problem · What to do)
    7. Need help? note
  • Marked INTERNAL USE.

9.3 TN: Technical Note (ready: templates/TN/)

  • Info cells: context (Site / Measured / Module) · criterion (Requirement / Deployment)
  • Sections:
    1. KPI tiles (3–4)
    2. Result
    3. Evidence: comparison table → calculation → figures
    4. Assumptions and open items
  • 1–3 pages. If it needs more, it is probably two notes or a report.

9.4 BOM: Bill of Materials (ready: templates/BOM/)

  • Info cells: Customer · Prepared by
  • Columns: # · Item · Specification · Qty · UOM · Part no. · Pulled · Packed
  • Grouping: by category (Fasteners, Sealing & consumables, …), each with a subtotal row.
  • Close: Draft · items to confirm before release warn note while < 1.0, then sign-off (Pulled by · Checked by · Date).

9.5 SVY: Site Survey (ready: templates/SVY/)

  • Info cells: Survey date · Surveyor
  • Front matter:
    • Prepared for / by
    • Basis (notes, photos, drawings received)
    • About this document
  • Part 1, Summary of Findings (customer):
    • Purpose
    • Scope
    • What we found (table by stop or family)
    • What it means
  • Part 2, Engineering Detail (MPM-internal):
    • Survey record
    • Inventory
    • One section per mount family (observations → design constraints)
    • Power & data
    • TO VERIFY list
  • Appendices: A, photo log (# · time · cluster · file ID · subject, citing the figure numbers); B, verbatim field-notes transcription with the notebook pages.
  • Release to the customer: the PDF is marked INTERNAL USE while it carries Part 2. Release Part 1 + appendices as a customer edition (to be added to the engine when the first survey is released).

9.6 TAP: Technical Action Plan (ready: templates/TAP/)

  • Info cells: Customer · Engagement dates
  • Front matter:
    • Document-control table: Supersedes / References · Distribution · Affected products · Personnel · Site
    • Confidentiality notice
  • Sections (numbered in the heading text):
    1. Purpose and scope (with What changed in this revision from 1.1 on)
    2. Background: known-issue register and failure groups
    3. Information required from the customer (Action required panel)
    4. Personnel: field technician, coordination, oversight
    5. Parts and equipment kit
    6. Timeline and daily schedule
    7. Procedures by failure group, then disposition
    8. Open items and decisions
    9. Acceptance criteria (per unit, engagement)
    10. Daily reporting
    11. Escalation and contacts
  • Close: Prepared and approved by block.

9.7 DWG: Drawing sheet (ready: templates/DWG/)

  • Sheet: 11×17 landscape, zone grid (8–1 across, D–A down), header bar with logo, discipline and DWG NO · SHEET · REV.
  • View area: a 6 × 4 grid. Each view has a numbered bubble, a title and a scale.
  • Right column, top to bottom:
    • Schedule: tag · designation · description · qty, with tags as gold bubbles that match the callouts on the views
    • General notes, numbered
    • Title block: project, title, client, location, scale, drawn / checked / approved, dwg no., sheet n of N, rev, date
    • Revision history
    • Confidentiality strip with the tagline
  • Drafting conventions:
    • Ink linework; centrelines Dark Gold, long-dash-dot; hidden lines dashed
    • Dimensions in mm (JetBrains Mono) with extension lines
    • "Do not scale from drawing" in the general notes
  • Revisions: numeric like every other type (§4.1). Multi-sheet sets share one number and revision.

9.8 TSB: Technical Service Bulletin (ready: templates/TSB/)

  • Info cells: Compliance · Effective
  • Two editions from one build.py:
    • Customer edition: classification customer; slug ends _TSB.
    • Internal edition: classification internal; slug ends _TSB-Internal; adds Part 2 Diagnostic detail (root cause, field data, support notes).
    • Same number, same revision, issued together. The customer edition never contains Part 2.
  • Front: compliance pill; applicability table (Applies to · Affected units · Not affected · Labor estimate · Supersedes · Distribution); dark Result box (what happens, what to do, by when).
  • Sections: 1 Symptom · 2 Cause · 3 Corrective action (steps; reference an INS for anything long) · 4 Verification · 5 Parts.
  • Close: Compliance record, a blank table (unit serial, site, date, technician, done) the field fills in.
  • Compliance levels: Mandatory (failure or safety; fix by a stated date) · Recommended (fix at the next visit) · Informational (no action).

9.9 PRO: Proposal (ready: templates/PRO/)

  • Info cells: Prepared for · Valid until
  • Front: parties (Prepared for · Prepared by = brand.PROVIDER); KPI tiles with the investment as the one key tile.
  • Sections (numbered in the heading text): 1 Your situation · 2 Proposed solution · 3 Why Message Point Media · 4 Scope summary (phase · MPM provides · agency provides) · 5 Investment (doc.priced, with a Pricing note naming the quotation and validity) · 6 Timeline · 7 Assumptions and exclusions · 8 Next steps.
  • Close: Submitted by block (doc.approval(..., label="Submitted by")).
  • Rules: every price comes from a quotation; §3 holds facts you can back up (deployments, agencies, years, uptime), never superlatives. Marked CONFIDENTIAL. After award, write the SOW; don't revise the PRO into one.

9.10 SOW: Statement of Work (ready: templates/SOW/)

  • Info cells: Customer · Quotation
  • Opening paragraph: made by and between Customer and Message Point Media of Alabama, Inc (MPM); subject to the Master Services Agreement; for the benefit of the End Customer; pricing per Quotation S#####, its date and expiry.
  • Sections (numbered 1.0, 2.1, 2.1.1 in the heading text):
    1. 1.0 Scope overview (say what is not included when a reader might assume it is)
    2. 2.0 Project deliverables: 2.1 Hardware (list, then 2.1.1 priced BOM per the quotation) · 2.2 Documentation (document · purpose)
    3. 3.0 Scope of work: 3.1 Initiation and scheduling · 3.2 Site confirmation · 3.3 Procurement and provisioning · 3.4 Delivery · 3.5 Installation · 3.6 Operational verification · 3.7 Warranty (name the warranty policy)
    4. 4.0 Project milestones (doc.milestones(..., expect=doc.price_total))
    5. 5.0 Assumptions and exclusions
    6. 6.0 Acceptance: signatures, only when the customer signs the SOW itself
  • Revisions: 0.x while negotiating; 1.0 = executed. Reference: SOW_Nashville_Replacement_Sign_S01012 (Aug 2026), in NASHVILLE BAY 17/_INPUTS/04_Commercial/.

9.11 WO: Field Work Order (ready: templates/WO/)

  • Info cells: Scheduled · Assigned to
  • Front: status pill; parties (Site with coordinates · Site contact · MPM dispatch); job table (Customer / project · Installer · Access · Reference documents); Safety note.
  • Sections: Work to be performed (checkboxes, each an action) · Parts and materials (doc.bom, Staged / Used checks) · Return with this work order (photos, serials, measured deviations).
  • Close: Completion record (doc.fields: arrival, departure, serials installed and removed, online on MP.TV, issues) and technician + site-contact signatures.
  • Rules: marked INTERNAL USE (contacts, access). Issued at 1.0; a re-dispatch with a changed scope or date is 1.1. The signed paper copy is scanned into the project's _INPUTS/ and never edited; the PDF stays as issued. The how-to lives in the referenced INS, not in the WO.

10. Before you issue (checklist)

  • Number registered in registry.md; file name matches §4.2
  • Revision bumped; history line says what changed
  • Result / Before-you-start box stands on its own
  • Every figure and table numbered, captioned and referred to in the text
  • Every number traceable; no retyped derived values; TBCs listed as open items
  • Units and characters per §5 (− × Ø °)
  • Classification correct; confidential documents carry the NDA notice
  • PRO / SOW: prices match the quotation line for line; milestones add up (the build checks); validity date set
  • TSB: customer edition opened and checked to contain no Part 2
  • Opened the PDF and looked at every page: no orphan headings, no clipped figures, no stray near-empty last page
  • Previous revision moved to _superseded/
  • Chinese edition (if any) rebuilt at the same revision, its previous revision also moved to _superseded/

11. Asking Claude for a document

Say the type and the subject; Claude reads this standard and the template:

"TN for CommTran: per-sign power roll-up for the 4×2 Pingo layout" "Rev the Nashville TN — hanging hardware is 2 in. taller than the old" "INS for LakeTran: 15-inch sign on a round pole"

Claude asks for the number you claimed in the shared registry, builds in <PROJECT>/source/ with mpmdoc, and puts the PDF in the project folder. Anything it can't source becomes a TBC or an open item, never a guess.

How builds run:

  • Claude needs your kit folder: open it in the Claude desktop app (or link the computer that holds it), and install the mpm-technical-documents plugin from _PLUGIN/.
  • Builds need Python 3.10+ with Playwright/Chromium and poppler. Run setup.sh once (see START_HERE.md); then python3 build.py in a project's source/ folder builds the PDF. When Claude can't run Python on your computer, it builds in its cloud workspace and writes the PDF back to your folder.

Numbers are claimed in the shared registry. The registry.md in your kit is a snapshot. The master registry is kept in one shared place set by MPM Technical Services: claim a number there before your first build, then copy the row into your own registry.md. A number is never reused, even for an abandoned draft.

Keeping documents. Issued PDFs go to the shared project location for the job, together with their source/ folder, so the next revision starts from the same source.

The mpm-technical-documents plugin carries this workflow, so any Claude session follows it.


12. Chinese editions (简体中文) for manufacturers

For drawings and technical notes going to a Chinese manufacturer, MPM issues a Chinese edition alongside the English one.

Scope. TN and DWG only (mpmdoc.i18n.TYPES). Other types are assessed when needed.

What it is.

  • A second PDF of the same document: same number, slug, revision, figures and geometry.
    • Body text is in Simplified Chinese.
    • Frame labels are bilingual (图号 Dwg no., 部件表 · Schedule), so MPM staff can find their way around it.
  • File name: {NUMBER}_{slug}_ZH_Rev{X.Y}.pdf, kept in the project folder next to the English edition.
  • The English edition governs. Every Chinese edition says so:
    • TN: a line under the masthead.
    • DWG: a general note on every sheet.
    • The engine adds the statement automatically unless a note already carries it.
  • Revisions move together: a new English revision means a new Chinese edition at the same revision. The history lines are translated; the revision numbers and dates are identical.

How it's built.

  • source/build_zh.py sits next to the English build.py; start from templates/TN/build_zh.py or templates/DWG/build_zh.py. It shares figs.py with the English build and passes lang="zh" to Doc / Drawing.
  • Build the English edition first. The engine refuses to build a Chinese edition unless the English PDF at the same revision is already in the project folder.
  • Write the Chinese strings in the same order as build.py, so the two files can be compared side by side.
  • Figure text: goes through i18n.Translator.
    • Lookup order: the document's own TERMS table, then the master glossary _STANDARDS/glossary_zh.md.
    • tr.check() fails the build on any English left in a figure.
    • Numbers with units, tags (S-1, M3), part numbers and standards pass through unchanged.
  • Terms: one English term, one Chinese term.
    • A term that will recur goes in glossary_zh.md; a sentence specific to one document goes in its TERMS.
    • When a manufacturer corrects a term, change the glossary and rebuild the Chinese editions that use it.
  • Units: mm first, imperial in [ ]; mass in kg, with lb in [ ] where the source is lb. If figs.py formats dimensions through a function F, build_zh.py replaces it before drawing the figures.
  • Keep in Latin script: part and model numbers, tags, units, standards (ADA 307, IP66, UL 48), place and station names, brand names, the tagline.
  • Dates: shown as 2026年11月9日.

Font.

  • Chinese text is set in MPM SC: Noto Sans CJK SC (SIL OFL), cut to GB2312 and converted to TrueType in _ASSETS/mpm/fonts/cjk/ by make_cjk.py.
  • The engine embeds only the characters each document uses, and adds MPM SC as the fallback to every font stack. Latin text and numbers stay in Montserrat / Open Sans / JetBrains Mono.
  • No system font is used, so a build looks the same on any machine.

Standard revision history

Version Date Change
1.3 Nov 9, 2026 Chinese editions for TN and DWG (§12): lang="zh" in the engine, MPM SC font, master glossary glossary_zh.md, build_zh.py templates; _ZH file names (§4.2); checklist line (§10).
1.2 Nov 6, 2026 Added TSB, PRO, SOW and WO (§1, §3.1, §6, §7.3, §9.8–9.11, §10) with templates; new components priced, milestones, fields; MPM styling for parties, pills and signatures.
1.1 Nov 6, 2026 Brand references updated.
1.0 Nov 6, 2026 Released. MPM document types TN, INS, SOP, BOM, SVY, TAP and DWG with engine templates; shared _ASSETS; folder layout with _superseded/ and _INPUTS/.