Blog / Lookaheads & pull planning
How to Build a Three-Week Lookahead from the CPM Schedule
A three-week lookahead is the bridge between the master schedule the owner sees and the work crews actually do on Tuesday. This post covers how to pull one out of the CPM schedule, how far to break activities down, what columns it needs, and how to keep it from drifting into a separate fiction that nobody reconciles.
What a lookahead is for
The master schedule is built to answer "when will this building be done, and what drives that date?" It usually carries activities that are one to four weeks long, organized by area and phase. That is the right level for a monthly update. It is the wrong level for telling the drywall foreman which rooms to hang this week.
The lookahead does three jobs:
- It translates master schedule activities into tasks the field can assign to a crew and finish in a few days.
- It exposes constraints early enough to clear them: submittals, RFIs, material deliveries, inspections, equipment, access.
- It gives the weekly coordination meeting a shared list to argue over, instead of everyone arguing from memory.
Three weeks is the common window because it is long enough to order most materials, schedule most inspections, and resolve most open questions, and short enough that people believe the dates. Some teams run four or six weeks for long-lead coordination. The method is the same.
Step 1: Filter the master schedule
Start from the current update, not the baseline. Set your filter to activities that are in progress, or that have an early start inside the window from the data date to the data date plus three weeks. If you use a 15-workday window, use workdays, not calendar days, so holidays don't shrink the window silently.
Add two things the simple date filter misses:
- Activities that start just after the window but have long make-ready lead times (a crane pick, a utility shutdown, a special inspection that needs two weeks' notice).
- Critical and near-critical activities a week or two beyond the window, so the team sees what is coming on the path that drives the finish. See near-critical paths for why the second-tier paths matter.
Sort by area or WBS first, then by early start. Superintendents think in places, not activity IDs.
Step 2: Break activities down to crew-level tasks
A master schedule activity like "Level 3 Interior Framing and Board, 20d" is one line. The lookahead needs the pieces a crew can actually commit to:
| Master activity | Lookahead tasks | Crew | Days |
|---|---|---|---|
| L3 Interior Framing and Board (20d) | Layout and top track, east wing | Framing A | 2 |
| Stud framing, east wing corridors and rooms 301-312 | Framing A | 4 | |
| In-wall MEP rough-in inspection, east wing | GC / AHJ | 1 | |
| Hang board, east wing (after inspection) | Board crew | 4 | |
| Layout and top track, west wing | Framing B | 2 | |
| Stud framing, west wing rooms 313-324 | Framing B | 4 |
Rules of thumb for the breakdown:
- Each task should take one crew roughly one to five days. Longer than a week and nobody can tell if it's on track until it's late.
- Every task should map to exactly one master schedule activity. Write the parent activity ID in a column. This is the single most useful habit for keeping the two in sync.
- Include the non-production tasks that gate production: inspections, owner walkthroughs, deliveries, testing, shutdowns. These are where lookaheads usually fail.
- Don't break down activities outside the window. Detail beyond three weeks is mostly guessing.
Step 3: Add the columns that make it useful
A lookahead is a working document. The minimum columns:
| Column | Why it's there |
|---|---|
| Parent activity ID | Ties the task back to the CPM schedule |
| Task description | Specific location and scope |
| Responsible company and foreman | A name, not "MEP" |
| Planned start / finish (or a day-by-day bar) | What the crew committed to |
| Constraints | What has to be true before it can start |
| Constraint owner and due date | Who clears it, by when |
| Status | Ready, constrained, in progress, done |
| Total float of parent | So nobody spends a week arguing over a task with 40 days of float while a critical task waits |
The float column is the one people skip. Put it in. A lookahead without float information treats every task as equally urgent, which means the critical ones get the same attention as the slack ones.
The constraint columns connect to a constraint log, which is its own discipline. Make-ready planning and constraint logs covers that in detail.
Step 4: Review it with the people doing the work
Send the draft to foremen two days before the coordination meeting. In the meeting, go area by area. For each task, ask the foreman three things: is the duration right, is it constrained, and what do you need from someone else in the room. Change the lookahead on the spot.
A lookahead the GC writes alone and hands out is a forecast. A lookahead the foremen helped write is closer to a plan. If you want to go further and have the trades build the sequence themselves, that is pull planning, covered in how to run a pull planning session.
Step 5: Reconcile back to the master schedule
This is where most teams lose the thread. The lookahead changes every week. The master schedule changes once a month. After three or four weeks, the lookahead says one thing and the CPM says another, and nobody knows which is true.
Two habits prevent this:
- Roll up progress by parent ID. At each update, look at the lookahead tasks under each master activity. If four of six tasks are done and the remaining two will take five more days, the remaining duration on the parent is about five days. Use that, not a percent guessed from the lookahead bars.
- Flag logic changes. If the field resequenced work in the lookahead (west wing before east wing, say), check whether that changes any logic in the master schedule. If it does, update the logic. If you only update dates, you'll end up with out-of-sequence progress at the next update.
A worked example of the roll-up:
Parent: L3 Interior Framing and Board, original duration 20d
Data date: end of day 8
Lookahead tasks under it:
East layout 2d done
East framing 4d done
East inspection 1d done
East board 4d in progress, 3 days left
West layout 2d done
West framing 4d in progress, 2 days left
West inspection 1d not started
West board 4d not started (board crew moves over after east board)
Remaining work on parent: the longer of the two open chains
East: board 3 days = 3 days
West: framing 2 + inspection 1 + board 4 = 7 days
Remaining duration on parent = 7 days
At day 8 of a 20-day activity, a CPM schedule that was simply statused by the calendar would show 12 days remaining. The lookahead says 7. That five-day gain may or may not matter, depending on the parent's float, but you only know it exists because the tasks roll up. The same roll-up catches slips: if the lookahead had said 15, you'd have found a three-day problem before the monthly update buried it.
Common ways lookaheads go wrong
- Copied bars. The lookahead is the master schedule pasted into a spreadsheet with the same durations. That's not a lookahead, it's a printout.
- No constraints column. Tasks show as planned until the morning they can't start.
- No parent IDs. Nothing rolls up. The monthly update becomes a rewrite.
- Too wide a window in detail. Breaking down six weeks of work in detail produces a lot of tasks nobody updates.
- One author. If the scheduler writes it alone, the field treats it as the office's opinion.
Tools
A spreadsheet works fine for a small job, and plenty of good superintendents run lookaheads on a whiteboard and a phone camera. The pain shows up in the reconciliation step, because the spreadsheet doesn't know which CPM activity each row belongs to. If your scheduling tool can generate the lookahead directly from the live schedule with parent links intact, use that. schedule.construction builds lookaheads from the CPM schedule and lets superintendents update them from the field, which takes care of the copy-paste step. The method above works whether you use a tool or not.
Key takeaways
- Filter the current update by early start inside a workday window, then add near-critical work just beyond it and anything with long make-ready lead time.
- Break each master activity into crew-level tasks of one to five days, and record the parent activity ID on every task.
- Carry constraints, owners, and parent total float as columns. They're what make the lookahead a planning tool.
- Build it with the foremen, not for them.
- At each update, roll remaining duration up by parent ID and push sequence changes back into the CPM logic.