1 / 15
MLP CMS

MLP CMS

Construction Management System

MLP Solutions Group

v3.1.6

cms@mlpsolutionsgroup.com

MLP CMS — Executive Summary

What is MLP CMS?

MLP CMS is a full-stack construction management platform that unifies project financials, document control, quality assurance, and safety into a single offline-capable web application.

💰

Financial Control

Budget proposals → cost codes → change orders → pay applications with AIA G702/G703 PDF generation. Every dollar tracked with snapshot immutability.

📋

Project Management

RFIs, Submittals, Punch Lists, Meeting Minutes, Gantt chart, and Milestones — full lifecycle from bid to closeout.

🔍

Quality & Safety

QMS inspections, NCRs, Daily QC logs, Daily Safety reports, and Job Hazard Analysis (JHA) forms with digital sign-off.

📡

Offline-First

Service Worker + IndexedDB queue enables full field operation with no internet. Changes sync automatically when connectivity returns.

MLP CMS — Module Map

All Modules

Auth & Passkeys
Projects
Dashboards
Activity Log
Budget Proposals
Cost Codes
Price List
Project Budget
Change Orders
Pay Applications
RFIs
Submittals
Punch List
Meeting Minutes
Gantt Chart
Milestones
QMS Inspections
NCR
Daily QC
Daily Safety
JHA

16 modules · single-origin web app · offline-capable

MLP CMS — Getting Started

Getting Started — Your First Day

  • 1. Log in & register a passkey
  • 2. Set up Cost Codes & Price List
  • 3. Create your Project
  • 4. Create & approve a Budget Proposal, then link it to the project
  • 5. Raise Change Orders as scope changes
  • 6. Bill with Pay Applications (G702/G703)
  • 7. Run QMS & Safety inspections in the field
  • 8. Watch the Dashboard

Tip: Do Cost Codes & Price List FIRST — every downstream record reuses them.

MLP CMS — Foundation

Steps 1–2: Set Up Your Foundation

Cost Codes

  • Shared across ALL projects
  • Power budget grouping & reporting
  • Set them up once, reuse everywhere

Price List

  • Unit rates grouped by Equipment / Labor / Material
  • Picking an item auto-fills rate & unit
  • Feeds Change Orders and Budget Proposals

Tip: Organize the Price List by Type so Quick Add is fast.

MLP CMS — Project & Budget

Steps 3–4: Project & Budget

Create a Project

  • Name & number
  • Start / end dates
  • Contract value

Budget Proposal

  • Build line items from the Price List
  • Approve the proposal
  • Link it to the project to set its budget

Tip: A Budget Proposal must be Approved before it can be linked.

MLP CMS — Change Orders & Pay Apps

Steps 5–6: Change Orders & Pay Applications

Change Orders

  • Quick Add line items from the Price List
  • Submit → Approve adjusts the contract sum
  • Lock to freeze

Pay Applications

  • Two tabs: G702 Application + G703 Schedule of Values
  • Enter values on G703 — G702 totals auto-calculate
  • Retainage split work% / stored%
  • "Less Previous Certificates" auto-carries from the prior Pay App
  • Submit & Generate PDF

Tip: On a phone the G703 shows as stacked cards — one line item per card.

MLP CMS — Field & Visibility

Steps 7–8: Field Quality & Visibility

QMS & Daily Safety

  • Project-scoped inspections & safety reports
  • Save Draft, then Submit
  • Complete a JHA before high-risk work

Dashboard & Reports

  • KPIs update as Pay Apps are approved
  • Export to PDF / CSV

Tip: Overdue RFIs, COs, and punch items surface automatically on the Dashboard.

MLP CMS — Tips for New Users

Tips for New Users

  • Passkeys are faster & phishing-resistant
  • The app works offline and syncs when you reconnect
  • Wide financial tables become stacked cards on mobile
  • After a session timeout you're returned to the exact page you were on
  • Use the User Guide's search box to jump to any topic
MLP CMS — Financial Workflow

Financial Workflow

Budget Proposal
Cost Codes
Change Orders
Pay Application
G702 / G703 PDF

Snapshot Model

  • Each Pay Application captures a frozen snapshot of all CO line items at the time of creation
  • Approved PAs are immutable — no retroactive edits
  • Retainage tracked independently per line item
  • Split retainage rates supported (work vs. materials)

PA Chain Math

  • Previous Certificates carry forward automatically
  • Scheduled Value = Contract Sum adjusted by approved COs
  • Work Completed = Prior + This Period
  • Net Payment = Current Due minus Retainage
  • Supports negative COs (deductive change orders)

Verified: Full PA chain math confirmed — negative COs, retainage, 100% completion scenarios all produce correct G702/G703 output.

MLP CMS — Change Orders

Change Orders — Deep Dive

Lifecycle States

Draft Pending Approval Approved Locked (in PA)

Once a CO is included in a Pay Application, it is locked against modification to preserve financial integrity.

Line Items

  • Multiple line items per CO
  • Unit price × quantity calculation
  • Cost code assignment per line
  • Positive or negative amounts (deductive)
  • Description and scope notes

PDF Export

  • Professional CO summary PDF
  • Project header, owner/contractor info
  • Full line item table with subtotals
  • Approval signature block
  • MLP Solutions Group branding

Impact on Contract

  • Approved COs automatically adjust the Scheduled Value in the active PA
  • Running total of contract adjustments visible on project dashboard
  • Negative COs reduce contract sum and affect retainage proportionally
MLP CMS — Pay Applications

Pay Applications — G702 / G703 AIA Format

G702 — Application & Certificate

  • Original contract sum, approved CO total
  • Contract sum to date
  • Total completed & stored to date
  • Retainage on work + stored materials
  • Balance to finish
  • Current payment due

G703 — Schedule of Values

  • One row per CO / line item
  • Scheduled value, work completed, % complete
  • Materials presently stored
  • Retainage split: work vs. materials rate
  • Balance to finish per line

Retainage Split Rate

Supports distinct retainage percentages for completed work and stored materials — critical for AIA compliance on large GC contracts.

PA Chain

  • Each PA references its predecessor
  • Prior certificates carried forward automatically
  • Re-opening a closed PA blocked to prevent chain corruption
  • Draft → Submitted → Certified → Paid states

PDF Generation

Server-side PDF with AIA-compliant layout. Downloadable from the PA detail page. Printable directly from browser.

MLP CMS — QMS & Safety

Quality Management & Safety

📝

QMS Inspections

Create inspection records against project activities. Pass/Fail/Partial outcomes. Linked to cost codes and work areas.

⚠️

NCR — Non-Conformance

Non-conformance reports with root cause, corrective action, resolution tracking, and closure sign-off.

Daily QC Log

Per-day quality control entries: weather, crew, work completed, observations, and photo references.

🦺

Daily Safety Report

Site safety documentation: incidents, near-misses, tool-box talks, head count, hazard conditions.

🔒

JHA — Job Hazard Analysis

Job Hazard Analysis forms with step-by-step task breakdown, hazard identification, and control measures. Digital worker sign-off.

🏆

Status

All QMS and Safety modules confirmed passing in beta testing. Forms verified with real data — no placeholder leakage.

Confirmed

MLP CMS — Project Management

Project Management Modules

RFIs — Requests for Information

Track open questions to Architect/Engineer. Status: Open → Submitted → Answered → Closed. Priority levels. Response due date tracking.

📦

Submittals

Shop drawings, product data, samples. Submittal log with revision tracking, A/E review status, and return actions.

📌

Punch List

End-of-project deficiency tracking. Location, trade assignment, due date, and completion sign-off. Filterable by status and responsible party.

🗒️

Meeting Minutes

Structured meeting records: attendees, agenda items, action items with owners and due dates. PDF export.

📅

Gantt Chart

Interactive timeline view of project schedule. Task bars with dependencies, drag-to-reschedule, critical path highlight.

🏁

Milestones

Key project dates tracked separately from the Gantt. NTP, Substantial Completion, Final Completion, Owner handoff dates.

MLP CMS — Dashboards

Dashboards & Visibility

💹

Financial Dashboard

  • Contract sum vs. billed to date
  • Retainage held / released
  • CO impact summary
  • Remaining budget by cost code
  • PA status tracker (open / certified / paid)
🏗️

Project Dashboard

  • Open RFIs & Submittals count
  • Punch list items by status
  • Upcoming milestones
  • Recent QMS/Safety activity
  • Schedule % complete
📋

Activity Log

  • Chronological audit trail of all changes
  • User, timestamp, action, affected record
  • Filterable by module and user
  • Clear Log action (admin)
  • Exportable for compliance

All dashboard metrics are computed server-side on request — no stale cache. Financial figures update the moment a CO is approved or a PA is certified.

MLP CMS — Offline-First Architecture

Offline-First Architecture

Service Worker
Cache-First for assets Network-First for API Background Sync sw.js Cache-Control: no-store
IndexedDB Queue
Mutations stored locally Auto-replay on reconnect Durable across browser restarts
Conflict Merge
3-way field-level merge Server wins on structural fields User wins on content edits Manual resolution UI for true conflicts
Session Restore
Auth token persisted in IndexedDB Seamless resume after connectivity loss No re-login required on reconnect

Field-proven design: Works in areas with no cellular signal. Data is never lost. Sync completes automatically the moment network is available.

MLP CMS — Test Coverage

Test Coverage — 171 Tests, All Passing

65
Platform / API
54
QMS Forms
32
Financial Path
20
E2E (Playwright)

Unit & Format Tests

  • G702/G703 number formatting
  • Retainage split-rate calculation
  • PA chain math (carry-forward, deductive COs)
  • Date, currency, and percentage helpers

E2E — Playwright

  • Auth, Projects, Budget Proposals, Cost Codes
  • Price List, Change Orders, Pay Applications
  • RFIs, Submittals, Punch List, Meeting Minutes
  • Gantt, Milestones, Safety, Dashboards

0 failures · 0 skips — All 171 tests pass as of v3.1.6. Zero data-loss bugs in production.

MLP CMS — Azure-Ready Deployment

Azure-Ready

🔐

HTTPS Automatic

Azure App Service provisions TLS automatically. Service Worker requires HTTPS — no additional configuration needed. Same-origin SW scope enforced.

🚀

Scale-Out Ready

Stateless Express API. Session stored server-side with session affinity or Redis adapter. Horizontal scaling via Azure App Service plan scale-out rules.

⚙️

SW Cache Header

Cache-Control: no-store on sw.js ensures browsers always fetch the latest Service Worker on deploy — no stale worker risk.

🗄️

Database

Currently SQLite (single-tenant). Migration path to Azure SQL Database documented. Schema migrations managed with Knex.js.

📦

Static Assets

Vite builds to client/dist/. Served via Express static middleware. CDN layer optional via Azure Front Door.

🔄

CI / Deploy

GitHub Actions pipeline: lint → test → build → deploy to Azure Web App. Zero-downtime deployment with health-check probe.

MLP CMS — Security

Security

🔑

Passkey / WebAuthn Authentication

Phishing-resistant passwordless login using device biometrics or hardware keys. FIDO2 compliant. Passkey registration gated behind System admin screen.

🛡️

Helmet.js

Full Helmet middleware suite: CSP, HSTS, X-Frame-Options, X-Content-Type-Options, Referrer-Policy — all hardened by default.

⏱️

Rate Limiting

express-rate-limit on all API routes. Aggressive limits on auth endpoints. IP-level throttling with configurable windows and max attempts.

🔒

Optimistic Locking

Version field on critical records. Concurrent update attempts are rejected with a 409 Conflict — prevents silent overwrites in multi-user scenarios.

🔁

Session Restore

Secure session cookie with httpOnly + sameSite=strict. Session restore after offline period without re-authentication. Token refresh handled transparently.

📋

Audit Trail

All creates, updates, and deletes recorded in the Activity Log with user identity and timestamp. Immutable once written.

MLP CMS — Ship Criteria

Ship Criteria — v3.1.6

  • PA chain math verified end-to-end (carry-forward, prior certs)
  • Negative / deductive Change Orders produce correct G702 totals
  • Retainage split-rate (work vs. materials) correctly prorated
  • 100% completion scenario: balance to finish = $0.00, retainage releases correctly
  • G703 Schedule of Values rows sum to G702 totals
  • Zero data-loss bugs in production
  • Offline queue replay produces identical server state
  • Conflict merge does not silently drop user edits
  • All 15 modules functional and beta-tested
  • PDF export working: CO, PA G702/G703, Meeting Minutes
  • QMS and Safety forms confirmed with real project data
  • Passkey gate on System page operational
  • Activity log tracks all changes across all modules
  • Navigation Performance label on module nav
  • Orphaned PAs hidden from active project view
  • All E2E tests pass in < 90s

✓ All criteria met — MLP CMS v3.1.6 is production-ready

MLP CMS — Contact & Roadmap

Contact & Roadmap

Support & Sales

cms@mlpsolutionsgroup.com

MLP Solutions Group

Current Version

v3.1.6

  • Unit Test Expansion
    Grow unit/format suite from 47 → 100+ tests covering edge cases in CO math and retainage scenarios
  • PM Agent
    Autonomous project manager agent using Claude API: rules engine + AI reasoning, node-cron scheduling, nodemailer alerts
  • Azure SQL Migration
    Migrate from SQLite to Azure SQL Database for multi-tenant, enterprise-scale deployments
  • Mobile PWA
    Enhanced PWA install flow, native-feel navigation, push notifications for RFI/Submittal status changes
  • Document Storage
    Azure Blob Storage integration for file attachments on RFIs, Submittals, and Punch List items
MLP CMS — Project Budget

Project Budget

📊 Budget Overview

  • 10-column live budget table (Procore-aligned)
  • Original Budget · Approved Changes · Approved PCCOs
  • Current Est Budget · Pending Changes · Committed
  • Cost Incurred · Incurred + Unapproved rollup
  • Color-coded progress bar (green → amber → red at 75/90%)
  • Grand Totals row with project-level PCCO rollup
  • Lock Budget & Export CSV actions

📸 Snapshots

  • One-click point-in-time budget captures
  • Name + notes per snapshot
  • Side-by-side variance comparison (older vs. newer)
  • Immutable after creation — full audit history

🔄 Budget Changes

  • Full workflow: Draft → Submitted → Approved / Rejected
  • Void option for cancelled changes
  • Change types: Owner Change, Value Engineering, Allowance Adjustment, Contingency Draw, Scope Revision, Design Change
  • Approved changes feed directly into the 10-column calculation engine
  • +/− color-coded amounts with status badges

📈 Forecast to Complete

  • Per-line % Complete input with progress bar
  • EAC (Estimate at Completion) calculated automatically
  • ETC (Estimate to Complete) = EAC − Cost Incurred
  • Variance column: over/under budget at a glance
  • Project-level totals row summarizes forecast health
MLP CMS — QuickBooks Online Integration

QuickBooks Online Integration

🔗 Setup (Admin Only)

  • Create Intuit Developer app at developer.intuit.com
  • Register redirect URI: http://localhost:3000/api/qbo/callback
  • Add Client ID + Secret to server .env
  • Restart PM2: pm2 restart mlp-cms
  • Click Connect to QuickBooks Online in Settings
  • Authorize via Intuit OAuth — one time only

🔒 Security

  • OAuth 2.0 — no passwords stored
  • Access tokens auto-refresh every hour
  • Refresh token valid 100 days
  • QBO panel requires admin passkey gate
  • Disconnect any time — QBO data unaffected

🔄 What Syncs

  • Companies → Vendors in QBO
  • Cost Codes → Service Items in QBO
  • Pay Applications → Customer Invoices in QBO
  • Vendor Invoices → Bills in QBO
  • Sync individually or all at once — Sync Everything Now
  • Duplicate-safe: find-or-create logic, no double entries

📋 Best Practices

  • Sync Vendors + Cost Codes before financial records
  • One-way: MLP CMS → QBO only
  • Last sync timestamp shown per category
  • Auth errors = Disconnect + Reconnect
  • Sandbox mode available via QBO_ENVIRONMENT=sandbox