Skip to content

Build: Change order generator tool #2

@masonearl

Description

@masonearl

The problem

Change orders are one of the most time-consuming parts of construction PM work. Every CO requires:

  • Scope description
  • Quantity breakdown (materials, labor, equipment)
  • Unit costs → extended costs
  • Markup
  • Total CO value
  • Formatted document ready to send to the owner or GC

Right now contractors are doing this in Excel or Word from scratch every time.

What to build

A generate_change_order() function in tools/ (and optionally a UI card in index.html) that takes:

generate_change_order(
    project_name="Main St Waterline",
    co_number=3,
    description="Additional rock excavation — 200 LF unforeseen",
    items=[
        {"description": "Rock excavation", "quantity": 200, "unit": "LF", "unit_cost": 85},
        {"description": "Additional compaction testing", "quantity": 4, "unit": "EA", "unit_cost": 250},
    ],
    markup=0.15,
    prepared_by="Mason Earl"
)

And returns a formatted CO document (HTML → PDF, similar to how proposal_tools.py works).

Prior art in this repo

Look at tools/proposal/proposal_tools.py and api/proposal.js — the CO generator should follow the same pattern: Python generates HTML, Vercel API route serves it, frontend exports to PDF.

Good first issue?

If you've never contributed here before, this is a great one — the proposal tool is already a working template to follow.

Metadata

Metadata

Assignees

No one assigned

    Labels

    help wantedExtra attention is needednew-toolNew construction tool to add

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions