Retainage Ready is an interactive closeout-operations prototype for commercial low-voltage, security, AV, and controls contractors. It turns a difficult business process into a clear customer experience: estimate closeout drag, understand a bounded service offer, and leave with a usable project-intake brief.
This repository is a portfolio release candidate. It contains no customer documents, credentials, private deployment metadata, analytics, or production database.
- A responsive, accessible React interface with server-rendered metadata.
- A transparent revenue-leakage calculator with independently tested logic.
- A browser-only intake workflow that creates copyable and downloadable text.
- Explicit claim boundaries, human-review gates, and minimum-data guidance.
- A Cloudflare Worker-compatible vinext build with reproducible CI checks.
The calculator deliberately separates cash held as retainage from estimated administrative and financing drag. Its displayed estimate is:
(delay weeks × PM hours/week × loaded hourly cost)
+ (retainage held × 12% annual carrying rate × delay weeks / 52)
The intake never uploads the values entered into the page. It formats them in the browser and lets the user copy or download a plain-text brief. The example readiness score is visibly labeled as illustrative rather than a customer result.
| Layer | Implementation |
|---|---|
| Interface | React 19, TypeScript, semantic HTML, responsive CSS |
| Rendering | vinext app router and React Server Components |
| Runtime | Vite and a Cloudflare Worker entry point |
| Styling | Tailwind CSS import plus project-specific CSS |
| Verification | Node test runner, TypeScript, ESLint, GitHub Actions |
The current product is intentionally client-only. It does not need a database, authentication, or file-upload service for the demonstrated workflow.
Requirements:
- Node.js 22.13 or newer
- pnpm 11
pnpm install --frozen-lockfile
pnpm devOpen http://localhost:3000.
pnpm typecheck
pnpm lint
pnpm testpnpm test creates a production build, runs unit tests for the calculator, and
checks the server-rendered page for its customer experience, launch claims,
privacy boundaries, and removal of preview-starter content.
app/ Product UI, metadata, styles, and calculator logic
public/ Static brand asset
tests/ Calculation and rendered-output checks
worker/ Cloudflare-compatible application entry point
.github/workflows/ci.yml Automated type-check, lint, build, and test gate
- This is a working product prototype, not evidence of a customer engagement.
- Pricing and turnaround language are bounded launch concepts, not guarantees.
- The calculator is planning information, not legal, accounting, collections, engineering, code-compliance, or payment advice.
- A production service would require contractual, operational, security, and data-handling controls beyond this public demonstration.
Copyright 2026 Lucas Tao. All rights reserved. The source is publicly viewable for portfolio review but is not licensed for reuse; see LICENSE.