In the open

Changelog

Ledge is the operating system for construction and landscape businesses — estimating, sales, design, field operations, billing, and accounting in one place. Currently in beta. Newest updates first. When one of the ten shops flags something and it ships, the entry carries that shop’s name — that’s the deal.

September 20269 updates (partial — through Sep 15)
Contacts, rebuilt as people and groups
Every contact is now a person or a group (a household or a company), and a person can belong to a group. The contacts directory, person and group records, grouped search, property associations, and the archive view all run on the new model, and adding someone to a group carries their saved work to the group with them. Existing contacts were migrated in place.
Edit the catalog from the assembly
The assembly page is a working catalog workspace. From any component, product, or variant row you can rename it, set its unit, its tax, its quantity formula, and the note customers see on the quote — without leaving the page. Choose which products and variants an assembly offers from one selection dialog, and duplicate, delete, or set the default at any level of the tree.
One category, everywhere
“Budget category” is gone as a separate setting. An item has one category, inherited down the tree, and that’s what the estimate, the breakdown, and QuickBooks all read.
Properties with a connections view
Every property has a page showing who’s tied to it — owners, residents, managers, and the work in flight — and you can edit its site address directly. Copying a mailing address to a site address is now an explicit choice, never automatic.
Notes with history and attachments
Notes have a title, safe formatting, and an edit history you can recover from. Attach files while you’re writing — a photo from the field, a signed document — and they stay with the note.
Construction on the sidebar
Construction is now a top-level section. The project-management board’s open-issue count is real (it says “unknown” rather than a false zero when it can’t be sure), and accepted change orders flow into the progress items on the job.
Leads: last contacted, one intake
Log a call or a meeting on a lead and it becomes the record’s “Last contacted.” Adding a lead is one flow whether you start from the board or from a contact.
A shared email composer
Every place you send email from now uses the same composer, with a recipient directory that searches your contacts and your team together.
Safer deletion
Deleting a record now runs through a shared plan: anything that would break is named as a blocker before you confirm, and every deletion leaves a receipt. Contacts are the first to adopt it.
August 20267 updates
A catalog you can actually browse
The catalog browse page was rebuilt around dense lenses — by assembly and by component — with a management hub for each item that shows its definition, pricing, measurements, and everywhere it’s used. Creating an item starts with its name; measurements and units are edited inline; tax and customer notes read the same on every surface; and each formula cell says plainly whether it’s set here, inherited from a named parent, or missing.
Households and property workspaces
Households are first-class in the CRM, with memberships that survive edits. Properties became writable — create, edit, archive — with owner, resident, and manager links. Lead intake captures a structured address and a confirmed party type instead of inventing a homeowner, and duplicate-address detection is now exact.
Who owns what
The old single-sales-rep field is retired. Deals, leads, and projects carry ownership through the engagement feed, and CRM permissions are enforced three ways down to the database.
Formulas that don’t lie about units
The formula engine now takes its unit vocabulary from one source and refuses to add a length to an area or divide by zero — verified against every formula in every live catalog with zero changes to existing results. Production rates and measurement lifecycles ship on the same foundation, and the legacy catalog tables are gone.
Quotes that add up
Payment schedule terms derive from the milestone, not their position in a list; design fees carry one priced source of truth into the quote, the PDF, e-signature, the invoice, and QuickBooks; and cents reconcile exactly across all of them.
Billing and payments, hardened for ACH
A single financial-time rule for the whole billing module, a correctness punch-list, a direct link to your Stripe dashboard, QuickBooks reconciliation shown from both sides, and a guard that blocks a payment from syncing when the invoice hasn’t. Returned-payment and dispute handling for ACH are built and waiting behind the ACH launch.
Google Drive retired
Files live in Ledge storage only. The Drive integration and its settings are gone.
July 20265 updates
Design Workspace
A dedicated workspace for design projects. Build design quotes right inside the module, set design-fee payment schedules that automatically generate an invoice when the contract is signed, manage design files alongside the rest of the project, request revisions against the current version, and hand a finished design straight into estimating. Design invoices sync to QuickBooks under their own project. Includes markup tools, an owners rail, and a board review loop.
A better estimating experience
The estimating wizard was reworked around how estimators actually work: an assembly-first mode, a worksheet-centered layout, and a proper notes workflow.
Consistent, cleaner catalog
Sell-price presets, inheritable tax presets, and customer-facing notes at every level of the catalog. Catalog items now present the same way on every surface — a quote line that used to read “Pet Safe” now reads “Artificial Turf – Standard Grade – Pet Safe” everywhere it appears.
Accounting, hardened
Per-company controls for QuickBooks sync, a held-outbox state for outbound records, and stronger identity tracking on synced invoices and payments. We completed our first full customer accounting cutover on this foundation, reconciled to the penny.
Payments groundwork
Stripe Connect is live for card payments, with ACH support in design.
June 20265 updates
Project Workbench
One workbench for everything on a project — replacing the separate per-module project pages.
My Work, activity, and notes
A unified activity stream and shared notes across the app, an engagement feed, and a new My Work page that brings everything assigned to you into one place.
Connect AI to Ledge
A Model Context Protocol (MCP) server that lets AI clients look up and search your Ledge data, with per-request authentication and strict company-level isolation.
Construction operations and scheduling
Progress items and events, a project-management home board, sell- and cost-weighted progress tracking, and construction scheduling.
One way to reach customers
E-signature moved to BoldSign, every outbound email now flows through a single branded send path, and the Branding admin was rebuilt with a live preview. Plus a common files library shared across the app.
May 20262 updates
Stability
A focused reliability program: status changes are now applied atomically inside the database, so pipelines, cascades, and downstream events can't drift out of sync.
Assembly catalog and price list
Three-way cost / sell / margin pricing with a live margin readout as you edit, catalog import from CSV, and pricing keyed to the choices on each assembly.
April 20268 updates
Ledge is born
The product took the name Ledge and opened up as a platform any construction or landscape business can run on — built on the foundation below: Postgres with row-level security, company provisioning, and validated tenant isolation.
Deeper pricebook
Assembly templates, variants, parameter options, category and budget modeling, and complexity tiers.
Formula builder
A visual expression builder for pricing formulas — token chains, presets, parentheses, and exponents — so pricing logic is something you author, not something hardcoded.
Billing
Unified invoices and payments, orchestrated invoice generation, invoice PDFs, and Send Invoice / Send Reminder with CC and branded email delivery. Stripe Connect introduced.
Change orders, end to end
Change orders and enhancements now run through the same pricing, signature, and invoicing paths as the original contract, managed from the estimating board.
Field operations
Assembly-level progress tracking, weekly timesheets with PDF export, and work order PDFs generated automatically when a deal closes.
CRM depth
A reworked contacts model that properly links people to projects and properties, address autocomplete, and a Files tab that gathers signed contracts, sent quotes, design files, and invoice PDFs with inline viewing.
Catalog admin
Clone assemblies, copy and paste components between them, and group by category.
The Beginning
Ledge started with the intent of solving one business’s operational problems and inefficiencies — and evolving from there. Its first rendition shipped a CRM and deals pipeline, the Pricer estimating wizard, a price book hand-modeled scope by scope, takeoff on PDF plans, QuickBooks sync, e-signature, and crew scheduling. The data foundation was laid early — Postgres with row-level security, company provisioning, and validated tenant isolation — so any construction or landscape business could eventually run on it. On that foundation the core took shape: an orchestration engine that makes workflows configuration instead of code, an estimating architecture with a real formula engine, a shared interface system, dashboards, and LedgeCam. What runs today is this build.

The detailed log starts in April 2026, when Ledge was born. Everything before that is the foundation, condensed above.