70 lines
4.7 KiB
Python
70 lines
4.7 KiB
Python
"""TEMPLATE — Statement of Work (SOW). Copy this folder to <PROJECT>/source/ and fill it in.
|
||||
|
|
|
|||
|
|
The contractual scope after award: what MPM delivers, how, and the payment milestones. Follows the
|
|||
|
|
layout of SOW_Nashville_Replacement_Sign_S01012 (Aug 2026). 2–6 pages.
|
|||
|
|
See MPM_Document_Standard.md §9.10.
|
|||
|
|
|
|||
|
|
Order: masthead (Customer · Quotation) → opening paragraph (parties, MSA, end customer, quotation)
|
|||
|
|
→ 1.0 Scope overview → 2.0 Project deliverables (2.1 hardware + 2.1.1 priced BOM, 2.2 documentation)
|
|||
|
|
→ 3.0 Scope of work (3.1 initiation … 3.n warranty) → 4.0 Project milestones → 5.0 Assumptions and
|
|||
|
|
exclusions → [6.0 Acceptance: signatures, when the customer signs the SOW itself] → Revision history
|
|||
|
|
Rules: prices come from the quotation; milestones(expect=doc.price_total) fails the build if the milestones
|
|||
|
|
don't add up. Draft 0.x while negotiating; 1.0 = executed.
|
|||
|
|
"""
|
|||
|
|
import sys, pathlib
|
|||
|
|
HERE = pathlib.Path(__file__).resolve().parent
|
|||
|
|
sys.path.insert(0, str(next(p / "_STANDARDS" for p in HERE.parents if (p / "_STANDARDS").is_dir())))
|
|||
|
|
|
|||
|
|
from mpmdoc import Doc
|
|||
|
|
|
|||
|
|
doc = Doc(
|
|||
|
|
number="SOW-MPM-SUBJ-01", rev="0.1", date="2026-11-06", customer="Partner", subject="Project",
|
|||
|
|
title="Project Name",
|
|||
|
|
lede="Statement of work for the scope, at the site, for the end customer.",
|
|||
|
|
meta=[("Customer", "Partner, for End Customer"), ("Quotation", "S00000")],
|
|||
|
|
slug="Customer_Project_SOW",
|
|||
|
|
history=[("0.1", "2026-11-06", "Initial draft.")],
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
doc.add(
|
|||
|
|
doc.p("This Statement of Work (SOW) is made by and between <b>Partner</b> (Customer) and <b>Message Point Media of "
|
|||
|
|
"Alabama, Inc</b> (MPM), and is subject to the Master Services Agreement between Customer and MPM, whose "
|
|||
|
|
"provisions are incorporated except as amended here. The work is for the benefit of <b>End Customer</b>. "
|
|||
|
|
"Pricing is per MPM Quotation S00000, dated Nov 6, 2026 (expires Feb 4, 2027)."),
|
|||
|
|
doc.section("1.0 Scope overview"),
|
|||
|
|
doc.p("What MPM will provide, in one paragraph. Say what is <i>not</i> included when a reader might assume it is."),
|
|||
|
|
doc.section("2.0 Project deliverables"),
|
|||
|
|
doc.sub("2.1 Hardware deliverables"),
|
|||
|
|
doc.p("MPM will procure, provision and deliver all hardware needed for the work, including:"),
|
|||
|
|
doc.bullets(["Item, with the specification that matters (pitch, size, rating)."]),
|
|||
|
|
doc.sub("2.1.1 Bill of materials (per Quotation S00000)"),
|
|||
|
|
doc.priced([
|
|||
|
|
("Hardware subtotal", [("SKU-0000", "Hardware item", 1, 10000.00), ("MNT-0000", "Mounting and bracket budget", 1, 500.00)]),
|
|||
|
|
("Installation subtotal", [("SVC-INST", "Installation", 1, 2500.00)]),
|
|||
|
|
]),
|
|||
|
|
doc.sub("2.2 Documentation deliverables"),
|
|||
|
|
doc.table([("Document", "", "32%"), ("Purpose", "")],
|
|||
|
|
[["Installation Completion Report", "Confirms installation, configuration and operational verification"],
|
|||
|
|
["As-built update", "Records serial numbers and redline changes"]]),
|
|||
|
|
doc.section("3.0 Scope of work"),
|
|||
|
|
doc.sub("3.1 Project initiation and scheduling"),
|
|||
|
|
doc.p("Within ten (10) business days of award, MPM confirms points of contact, site access and the installation window."),
|
|||
|
|
doc.sub("3.2 Site confirmation"), doc.p("How site conditions are confirmed, and what happens if they differ."),
|
|||
|
|
doc.sub("3.3 Hardware procurement and provisioning"), doc.p("Procurement, provisioning and QA testing before delivery."),
|
|||
|
|
doc.sub("3.4 Hardware delivery"), doc.p("Shipment as directed by Customer."),
|
|||
|
|
doc.sub("3.5 Installation"), doc.p("Installation, configuration, content assignment. Responsibilities for power and network."),
|
|||
|
|
doc.sub("3.6 Operational verification"), doc.p("Online, reporting to MP.TV, displaying assigned content."),
|
|||
|
|
doc.sub("3.7 Warranty"), doc.p("MPM standard Equipment Warranty Policy (name the policy), starting at End Customer approval."),
|
|||
|
|
doc.section("4.0 Project milestones"),
|
|||
|
|
doc.milestones([("Production deposit", "Due on contract execution", "25% of hardware", 2625.00),
|
|||
|
|
("Equipment delivery", "All hardware delivered to site", "75% of hardware", 7875.00),
|
|||
|
|
("Installation completion", "Installed, verified operational, accepted", "100% of installation", 2500.00)],
|
|||
|
|
expect=doc.price_total),
|
|||
|
|
doc.section("5.0 Assumptions and exclusions"),
|
|||
|
|
doc.bullets(["Existing power and network remain in place; changes to them are the End Customer's responsibility.",
|
|||
|
|
"Excludes permits, civil work and licensing unless listed in §2."]),
|
|||
|
|
doc.section("6.0 Acceptance"),
|
|||
|
|
doc.signatures([("Customer", "Name, title · date"), ("Message Point Media", "Jason Stedwell, Director of Technical Services · date")]),
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
doc.build()
|