Case study — Lean Construction planning tool

Last Planner
System

A weekly promise-and-tracking layer for the bigger internal jobs — a new distribution post, a line rebuild — that a ticket queue was never built for: milestones, a filtered look-ahead, a constraint log, and weekly promises scored once the week actually closes, built on Lean Construction's Last Planner method rather than a Gantt chart nobody keeps up to date.

MethodLCI Last Planner
CadenceWeekly promises
MetricPPC, lagging
TimelineSelf-generating
Why not just a Gantt chart

A schedule is a guess. A promise is a commitment.

A distribution-post build or a line rebuild runs for weeks, touches multiple crews, and depends on materials, permits, and other trades finishing first. The instinct is to draw one master schedule up front and push dates down to whoever's doing the work. In practice that schedule is built by someone who isn't on site next Tuesday, gets stale within days, and nobody re-plans it until it's already wrong.
Last Planner inverts who gets to promise: work only enters next week's plan once it's genuinely ready to start — no missing material, no missing permit, no unfinished predecessor — and the person actually doing it is the one who commits to it. The schedule stops being a document someone hands down and becomes something the crew builds a week at a time, together.
How it works

Five conversations, not one big plan

Lean Construction Institute frames Last Planner as five connected conversations, run on a repeating cycle rather than once at kickoff. Each one maps to a specific piece of this build:
01 — Should

Milestone planning

What the finished phases actually are, and by when — the handful of dates the whole job is organized around.

In this build: a milestone list per project, each with an owner and a due date, marked done as they land.

02 — Can

Look-ahead & make-ready

Working backward from each milestone: what handoffs does it actually depend on, and of the work coming up in the next six weeks, what's genuinely unblocked?

In this build: a pull-planning handoff log (who hands what to whom, and the condition that makes it "done") feeding a six-week look-ahead, plus a constraint register — each blocker gets an owner, a category, and a removal action, not just a note.

03 — Will

Weekly work plan

Only work marked ready in the look-ahead can be promised for the coming week — and the promise has an owner, a day, and a condition of satisfaction, not just a task name.

In this build: promoting a look-ahead item to "ready" surfaces a one-click "promise this week" action; the weekly board itself still takes freeform promises too, for anything not routed through look-ahead.

04 — Did

PPC & huddle

Once the week closes, every promise is scored Done or Missed — Percent Plan Complete — and the team huddles briefly on what actually happened.

In this build: PPC computes off the most recently closed week specifically (see below), plus a short huddle log — date, facilitator, blockers.

05 — Learn

Variance analysis

A missed promise on its own is just a log entry. The point is spotting which reason keeps recurring, so it gets fixed instead of rediscovered every huddle.

In this build: every missed promise gets tagged with a reason from a fixed list, tallied project-wide into a ranked breakdown — see the board below.

Can — the make-ready gate

Nothing gets promised until it's actually workable

The look-ahead and the constraint log are the same conversation from two sides. Anything not yet ready in the look-ahead has a reason why — and that reason lives as its own row in the constraint register, with an owner and a concrete action to clear it, not just a status. An item only flips to ready — and only then becomes promisable — once every constraint tied to it is gone.
Look-ahead — next 6 weeks
Panel T1 installReady
Crew B · 22.09 → 26.09 · PT 12
Sub 12 wiringBlocked
Crew A · 29.09 → 03.10 · PT 12
Trench backfill, north runBlocked
Crew C · 06.10 → 08.10 · Str. Nordului
Constraint register
Access permit not confirmedOpen
Permit / design · owner: office · due 24.09
Cable drum still in transitOpen
Materials · owner: depot · due 27.09
Trench inspection pendingCleared
Predecessor · owner: Crew C · resolved 20.09
Will & Did — try it

PPC only counts the week that's actually over

Toggle the promises below for this week — the one still in progress. Notice what doesn't move: the PPC tile stays pinned to last week, the one that's actually closed. Mark something Missed and pick a reason — it rolls straight into the variance breakdown underneath, the same histogram that drives the huddle.
Weekly plan Interactive
PPC — week of 08.09–14.09 (closed)
67%
4 of 6 promises complete
This week — 15.09–21.09 (in progress)
not scored until the week closes

Variance reasons — since project start

The timeline draws itself

One chart, built from the same five conversations

There's no separate project schedule to keep in sync. The timeline below is generated directly from the milestones, look-ahead items, open constraints, and weekly promises already entered — milestones plot as diamonds on their due date, look-ahead work as bars colored by ready/blocked, open constraints as markers, and weekly promises as dots colored by outcome. Add a row anywhere in the five conversations and the chart already has it; there's nothing else to update.
Milestones
Panels energized
Today
Look-ahead
Panel T1 install
Sub 12 wiring
Open constraints
Access permit
Weekly promises
Panel T1 wiring
Trench handoff, north run
Engineering notes

What made this harder than it sounds

Metric design

PPC is a lagging measure

Computing PPC off the week still in progress made it look artificially bad every Monday and Tuesday, since most of that week's promises were legitimately still "Promised" and hadn't been evaluated yet. The headline PPC number now always reads the most recently closed week; the running week gets its own live, explicitly-unlabeled-as-PPC progress note instead.

Architecture

A schedule with no file of its own

The timeline isn't a separate document someone maintains — it's a view computed from the same milestone, look-ahead, constraint, and weekly records the five conversations already produce. One source of truth means it's structurally impossible for the chart and the plan to drift apart.

Analysis

Tallied since day one, not a rolling window

Variance reasons are counted across a project's whole history rather than the last N weeks — a new project simply won't have enough missed promises yet for a rolling window to mean anything, and a young project with three misses shouldn't have its one real pattern diluted by an arbitrary empty window.

Scope

A personal layer, kept separate on purpose

This workspace is scoped to one project lead's login and stored client-side, deliberately apart from the shared, database-backed ticket records in the ops console. It's still finding its shape week to week — keeping it out of the shared schema means it can keep changing without migrating data other roles depend on.