In commercial furniture, millwork, and fixtures, silence after a bid isn’t a warning sign — it’s the default state of the work. A proposal enters a process you don’t control: the GC’s buyout sequence, the designer’s revision rounds, the client’s financing, the dealer’s other projects. Weeks of quiet are structural.
Which creates a trap. Because silence is normal, shops learn to treat it as acceptable — and stop distinguishing between a project that’s quiet and a project that’s gone. Those are different states with different correct responses, and a shop that can’t tell them apart is forecasting fiction and following up by horoscope.
This article lays out a follow-up approach built for the long cycle: not more touches, but touches keyed to what should be happening on the project — and a way to score which proposals still have a pulse.
Why generic follow-up fails in project work
The follow-up advice that works for transactional quoting — check in at day 3, day 7, day 14 — collapses on a 2–6 month bid cycle, for an obvious reason: a weekly “any update?” across four months is sixteen contentless messages to a GC who has nothing to tell you. Reps know this, which is why they stop. The conclusion they draw — follow-up annoys construction people — is wrong, though. What annoys construction people is follow-up that asks them to do your tracking. A different kind of message gets answered: one that shows you know where the project should be.
“Bid day was the 14th and we were told award decisions follow in three weeks — that window closed Friday. Did millwork get awarded, or did the package shift?”
That message took ten seconds longer to write and demonstrates three things: you tracked the milestone, you understand their process, and answering takes one line. In a multi-stakeholder deal, the shop that writes messages like this becomes the one keeping the thread alive — which, when the spec changes or the budget gets value-engineered, is the shop that hears about it first.
The stakeholder map: follow up with whoever controls the next step
Project deals fail to a specific routing error: following up with the contact you have instead of the party that controls your next milestone. The fix is writing down, per proposal, two facts: who controls the next decision, and who told you the timeline.
A typical millwork bid touches four parties, and control moves between them by stage:
| Stage | Who controls it | What a useful touch asks about |
|---|---|---|
| Bid review / leveling | GC or dealer | Award timing; whether scope is being re-packaged |
| Design revisions / VE round | Designer / architect | Spec changes coming; alternates worth proposing |
| Budget approval | End client (via dealer/GC) | Whether the project phase is funded and scheduled |
| Award / buyout | GC purchasing | Contract timing, schedule, submittal dates |
A proposal “in revision rounds” followed up through the GC produces nothing — the GC is waiting on the designer too. The same proposal touched through the designer (“rev C is coming, want alternates priced for the casework?”) produces information and positions you as useful. One column in your pipeline — current controlling party — fixes most of this.
Milestone triggers: the touch schedule that writes itself
Replace calendar-based cadence with event-based triggers. At bid submission, log two dates: expected award window (ask — GCs answer this question at bid time far more readily than later) and expected install window. Then the touch schedule derives mechanically:
- Award window opens → confirm timing with the controlling party.
- Award window closes with no news → the example message above. This is the highest-value touch in the entire cycle and the one untracked shops always miss, because no calendar reminds them.
- Known VE/revision round → offer alternates proactively. Bids die in VE when the millwork number gets cut without the millworker in the room.
- Long silence past every known window → the status question, with an explicit out: “If the project’s dead or went elsewhere, that’s genuinely useful to know — helps us plan capacity.” Outs get answers.
- Install window approaching on an unawarded bid → one final touch; after that, mark it dead and reclaim the forecast.
Note what’s absent: “just checking in,” scheduled weekly. Every trigger is tied to something that should have happened. If nothing should have happened, the correct touch count is zero.
Pulse scoring: separating quiet from dead
With milestones logged, each proposal can carry a simple pulse score. Three signals, scored bluntly:
- Window position. Inside the expected award window: healthy. Past it by weeks with no response: failing.
- Response behavior. Replies to milestone-keyed touches — even “still leveling, ask me in March” — count as a live pulse. Two consecutive unanswered touches from the controlling party: failing.
- Project-side activity. The project exists outside your inbox: permits, the GC’s schedule, the designer’s other consultants. Any external evidence the project is moving keeps it alive even when your thread is quiet.
Live / parked / probably dead — that’s enough resolution. The forecast counts only live proposals at full weight, parked at a discount, dead at zero. The first honest pass usually shrinks a shop’s “pipeline” — and replaces a comfortable fiction with a number the owner can actually plan capacity against. The pile of confirmed-dead bids has its own value: each carries a reason, and a quarter’s worth of reasons is a bid-strategy review nobody had data for before.
Running it: spreadsheet first, system when it creaks
Everything above runs in a spreadsheet with columns for value, bid date, controlling party, award window, last touch, pulse. The constraint isn’t the tooling — it’s that someone must maintain it across dozens of proposals and three reps’ inboxes, every week, including the weeks before install deadlines when nobody has time. That maintenance burden is what a proposal-recovery system automates: the inventory assembled from the CRM and sent folders, milestone dates tracked against the calendar, touches drafted with the project’s actual context for the rep to approve, and the pulse board kept current without anyone’s Friday afternoon. The thinking stays the same; the remembering moves to software — which is the point, because in long-cycle work, remembering is precisely what breaks.
Start smaller than that, though. This week: list every proposal currently outstanding, add one column — when did we expect to hear, from whom — and send the overdue-window message on each bid past its date. The replies will sort your pipeline into quiet and dead by Friday, and at least one parked project will turn out to be more alive than anyone assumed.