River
Y CombinatorBacked by Y Combinator
FREE TEMPLATE

RFP Pipeline and Capacity Tracker

Where a tracker sorted by deadline says what is due soonest, this one says which person's week runs out first and which bid did it.

Free download  ·  No account needed

Capacity Against Deadlines · weeks 1–10

RoleHavew2w3w4w5w6w9
Writer36h27.050.457.868.161.250.2
SME pool16h18.822.325.017.715.63.7
Pricer10h3.27.68.613.413.018.6
Reviewer8h0.04.03.05.08.010.0

Hours demanded if all nine live bids are answered. Fifteen of the forty role-weeks go short, by 159 hours.

SME pool, week 36.3h short
Largest single causeB7, rail operator
B7 is dueweek 9, six weeks later

A tracker sorted by deadline has B7 ninth from the top and nothing about it is red.

Every bid tracker is the same object: buyer, value, due date, owner, and a red-amber-green dot somebody sets by feel. It answers what is due soonest, which is a question nobody actually has. The one people do have is what will not get done. A deadline cannot answer that, because a deadline is a date and the thing that runs out is a particular person's particular week.

So this pack estimates hours by role instead of in total, then spreads them across the weeks before each deadline on a profile that differs by role. Writing rises toward the deadline. Technical input falls away from the start, because the writer cannot draft what the engineers have not yet explained. Pricing lands in the final fortnight and review in the last week. Sum that across every live bid and you have hours demanded per person per week against the hours they actually have.

What that says first is that the bid breaking a week is often not the bid due that week. In the worked example the engineering pool runs 6.3 hours short in week 3 because of a bid not due for another six, and four of the fifteen shortfalls have that shape. Bid or no-bid then becomes a selection rather than a score, because sets compete: the same bid is nearly free in a quiet week and ruinous in a full one. The biggest opportunity on the board loses to three smaller ones by $526,494.

Sets compete, not bids

Three sheets from the pack, on the worked example. The selection is enumerated against the matrix, the ceiling is priced before anybody chooses one, and the milestone flags are derived rather than assigned.

Sixty-four possible answers, each checked against the matrix. Ceiling: 12 hours across ten weeks, 6 in any one role-week.

Set answeredExpected valueOvertimeWorst weekFits
B4 + B5 + B6 + B7 + B8 + B9$4,498,182159.0h32.1hNo
B4 + B7 + B8 + B9$3,952,46859.6h16.4hNo
B4 + B8 + B9$3,302,4687.0h5.6hChosen
B4 + B6 + B9$3,264,5456.7h5.1hYes
B7 only$2,775,97415.0h5.0hNo
B4 only$2,525,9740.0hYes

B7 is the largest bid on the board and the highest expected value of any single candidate. Three smaller ones beat it by $526,494 at 8.1 fewer hours of overtime.

The best feasible set recomputed at each ceiling, so the number gets chosen rather than picked.

CeilingBest setExpected valueUsedPer extra hour
0hB4$2,525,9740.0h
4hB4 + B9$3,018,8311.4h$352,041
12hB4 + B8 + B9$3,302,4687.0h$50,779
16hB4 + B8 + B9$3,302,4687.0hnothing
20hB4 + B8 + B9$3,302,4687.0hnothing
30hB4 + B6 + B8 + B9$3,548,18218.8h$20,823
45hB4 + B7 + B9$3,668,83137.4h$6,478

Authorizing 20 hours instead of 12 buys nothing at all. The next thing worth having costs 30.

Milestones derived from the matrix, so the at-risk flag is a claim about a named person's week rather than a colour.

BidMilestoneWhoseWeekFlag
B1Subject matter input completeEngineering pool2Cleared by the no-bids
B2SubmissionR. Callas6At risk, 5.6h over
B3Subject matter input completeEngineering pool7Clear
B3Principal reviewH. Petrossian9Cleared by the no-bids
B9Price ready for reviewJ. Mbeki9Clear

Subject matter input finishes early because the profile is front-loaded. It is the milestone teams miss most often and notice last.

What is in the pack

01

Capacity Against Deadlines

Forty role-weeks with hours demanded against hours available, in three versions: committed work only, every bid answered, and the set actually chosen. Every shortfall names its largest contributor and that bid's own deadline.

02

Bid Register

Every live bid and open solicitation with hours split by role, stage, start week, deadline, and the hours that land in role-weeks already full. Total hours is a derived column nobody decides from.

03

Bid or No-Bid Selection

All sixty-four possible answers ranked by expected value, each with the overtime it needs, its worst single role-week, and whether it fits the agreed ceiling.

04

Deadline and Milestone Tracker

Four milestones a bid, each derived from the matrix: subject matter input complete, price ready, principal review, submission. The at-risk flag is computed, and rows cleared by a no-bid stay visible with their before figure.

05

Win Rate by Bid Type

Three years of submissions by type, with raw and smoothed rates, and a caveat on every type thin enough that the smoothing is doing the work. This is where the register's win column is read from.

06

How the Matrix Gets Built

The worked example end to end with the arithmetic shown, including the ceiling sweep and a section on what the model cannot tell you.

07

Effort Profile Standard

The eight fields a register row carries, the four spreading profiles, and five ways rows get written badly. The first one makes the matrix impossible and is the most common.

08

Process Definition and Escalation Note

Who owns which decision, what escalates and when, and the one-page note for whoever authorizes the overtime: what is declined, what it was worth, and what a higher ceiling would buy.

How to use it

  1. 1

    Open it in River, or download it

    Edit with AI installs the pack as a private Space with the agent ready to read your live solicitations. Download gives you the five sheets and four documents as Word files and CSV, with no account.

  2. 2

    Send the bids and the capacity

    Live bids and open solicitations together, since the committed work is what makes a candidate cheap or ruinous. Then hours a week per person for bid work, after their day job. That second number is the one no tracker holds and the one this depends on.

  3. 3

    Read the shortfalls, largest gap first

    Sorted by the weeks between each shortfall and its largest contributor's deadline, so the cases a deadline-ordered list cannot surface come first. Anything already short on committed work alone escalates separately.

  4. 4

    Price the ceiling, then choose the set

    The sweep takes one pass and shows where the return per hour collapses and which ceilings are plateaus that buy nothing. Then the selection runs against the number you chose, alongside what deadline order would have picked.

Frequently asked questions

Is it free, and do I need an account?

The download is free and needs no account: five CSV sheets and four Word documents. Edit with AI opens the same pack as a private Space with the agent ready to build the matrix from your own bids, which does create a free account.

Why model hours by role and by week?

Because a ninety-hour bid that is seventy-six hours of writing collides with a different person than one that is forty of writing and twenty-six of technical input. Totals average that away. Weeks matter because technical input is front-loaded, so in the worked example the week-3 shortfall is caused mostly by a bid due in week 9, which nobody triaging by deadline would reach.

Does it work if my estimates are rough?

Yes, and they will be at first. The estimates are the weakest input, so the register carries hours spent against hours estimated on everything submitted. That column is the only thing that ever improves them. On government work those hours are bid and proposal costs recoverable as an indirect expense where allocable and reasonable, so the record earns its keep twice.

Why enumerate sets instead of ranking bids?

Because a bid's cost depends on what else was accepted, so bids do not have standalone scores to rank. At the worked example's ceiling three sensible heuristics do land on the best set and deadline order does not, missing by $37,922. Across the eight ceilings tested, deadline order is short at six of them, by up to $350,000.

Is declining the biggest bid really the right answer?

It is what the arithmetic says under a stated ceiling, which is not the same as being right. Adding it needs 59.6 hours of overtime against a ceiling of 12, and no single swap makes room. Strategic reasons to answer it anyway belong in the escalation note as a stated override. Whether it fits on its merits is a separate judgement.

What about the deadline itself?

The matrix assumes the date on the cover page, which is not always the real one. Under federal rules a late proposal will not be considered, and where electronic submission is authorized the safe harbor is 5:00 p.m. one working day earlier. Where that applies, the earlier time is the real deadline. Obligations that reject a public bid on form are their own pack.

How is this different from the RFP response pack?

That one is for writing a single bid: the compliance matrix, the evidence map, the narrative. This one is for deciding which bids to write at all. Use the RFP response pack once the selection has been made, and the reference register when one of them asks for three past performance references.

Stop sorting by deadline

Take the five sheets and four documents blank, or open the pack in River and have the matrix built from your own bids and your own capacity.

Edit with AI