Skip to main content
Checked against the product · 2026-10-05

BD ROI — Does Business Development Pay?

Every owner asks it and almost nobody can answer it on numbers: is the money we spend chasing new business coming back? BD ROI answers on posted actuals, never on projections. It sets every dollar spent on bid and proposal work, business development and marketing against the gross profit the new-business wins have actually earned, and it shows what is still under contract beside those figures rather than blending it in.

Who uses it: the CEO and finance leadership judging the BD investment, and the capture team seeing which of their wins have paid back. It reads the books; it never changes them.

Finding it​

Toolsets → Business Development → BD ROI. If the item is not in your navigation, your role does not hold the module, or Toolsets is not turned on for your tenant.

Before you start​

Three things have to be true before the page can answer, and it tells you which one it is waiting on.

  • A closed month. The report measures realized actuals, so it begins with the first closed accounting period. Until then it says Nothing has closed yet.
  • Confirmed BD spend accounts. Your chart of accounts is yours, so the page proposes rather than assumes. The first visit shows one card, Confirm what counts as BD spend: every active expense account whose name says bid, proposal, business development or marketing, with the Kind of spend the name suggests and what it carried over the Trailing 12 months. Tick Counts on the ones that are BD spend, tick Exclude on any the name pattern caught that are not, and press Confirm and compute. Nothing is computed until a set is confirmed, and you can change it later under Setup.
  • Awarded contract numbers on the wins. A win reaches its profit only through the awarded contract number recorded on its NEO pursuit, resolved through the contract alias table the rest of the product uses. The solicitation or RFQ number is not the award number. The Deals tab names every win still waiting for one.

Overview​

Once the report is computed, the tab strip BD ROI sections at the top right switches between Overview, Cohorts, Deals and Setup. Above the tabs, the Window bar sets the closed months every figure is measured over, through its Window presets: All closed months, Last 12 months, the two fiscal-year presets, or Custom with Window start month and Window end month, never past the close. Spend and gross profit are both bounded to it, cohorts are the years won inside it, and the link carries it. Years the actuals table flags as weak are counted and named in the notice at the top, so every year with BD spend shows what it spent and what came back; untick Count flagged years to leave them out of both streams. Export to Excel, beside the tab strip, downloads the report over the same window as a workbook: a Cash flows sheet with one row per measured win's contract and per expense line and one column per month (then the totals, the net and the running total), a Deals sheet and a Notes sheet. Overview shows six figures, each with a ? explaining what it is and what to do when it looks wrong:

FigureWhat it is
BD dollars spentEvery dollar posted to the confirmed accounts, plus fringe on the confirmed B&P/BD labor accounts (posted where your books carry an allocation line, computed at the year's fringe rate where they do not, never both for one month), plus bonuses to BD/B&P people once set up, from the first month with BD spend through the last closed month.
Gross profit returnedRealized gross profit after fringe on direct labor, on new-business wins whose contracts carry posted actuals, from the month each win was recorded.
Return per BD dollarGross profit returned divided by BD dollars spent. Below 1.0x means the wins have not yet paid back what was spent.
PaybackMonths from the first BD dollar until cumulative profit first covers cumulative spend. Not yet when it has not happened.
NPVBoth streams discounted to the first month at the annual rate in Setup. The rate is shown beside it.
IRRAnnualized. Shown only when the streams can carry one; a dash before the return turns positive is the honest answer, and so is a dash on a window that opens with returns already ahead of the spend, since there is no investment in it to rate.

Under them, the population line says how many wins actually feed the figures: wins recorded, wins with a contract number, wins with posted actuals, vehicle seats shown separately, numbers that matched nothing, and wins still awaiting a number. Read every figure against it.

The chart Spend out, profit back shows BD spend below the line, profit earned by new wins above it, and the running total. Payback is where the running total crosses zero.

A notice appears while bonuses are not yet counted: payroll books a bonus to the person's labor account, so until someone is marked as BD/B&P the return is overstated, and the page says so rather than leaving it out. Its Set up bonuses button opens the Setup tab. A second notice appears when the measured window starts before the payroll register does: it names the month each payroll company's register begins, because a bonus paid before a company's first pay run is not in the register and is not counted, so the return over those months is overstated until the register is backfilled or the bonus is recorded by hand.

Vehicle seats — a BPA, IDIQ, GWAC, MATOC or schedule seat — earn nothing themselves; the task orders awarded under them do, and each order is its own pursuit. They are reported in their own panel with the orders under them and kept out of the return figures. A seat is recognized three ways, none of them from a title: its accounting row's billing type, task orders that name it as their vehicle, or the awarded number itself when its instrument letter names an agreement or an indefinite-delivery contract — so a seat the register holds no row for is still a seat.

Cohorts​

Wins grouped by the year they were recorded, each year read on its own: Won in, Wins, Measured, Vehicles, Award value, BD spend (that calendar year), GP to date, Per BD dollar, Under contract, Months to mature and Orders (the task orders under the year's vehicle seats). A recent year should look thin — it has spent its B&P and earned a few months of multi-year contracts. Judging BD on one blended number hides exactly that.

Read on names the actuals years a cohort's profit is measured over and marks any weak year among them. Beneath the grid, Where the actuals come from lists each of those years with its Source, Months, Revenue, Of P&L revenue, Labor share and Flags. A year whose rows carry no stated source, whose contract revenue is below 80% of the P&L's, or whose direct labor sits below half the other years' share is flagged, and gross profit earned in it is overstated; the same caveat appears at the top of the Overview, so the return is never read without it. When accounting has confirmed a cutover, the section also names the period from which the actuals come from Arcvue's own books rather than the incumbent's, because a cohort earning across that date is read on two books.

Deals​

One row per new-business win: Pursuit, Won, Contract, Status, Revenue (since the win), GP before fringe, GP after fringe, Months, Award value, Under contract and PoP end.

Status reads Measured, Found, nothing earned yet, Vehicle seat, Shares a contract, Canceled after award, Awaiting number, No match or Ambiguous. Shares a contract means another win already claims the same contract, so this one is counted zero: a duplicate NEO row, or a number copied from a sibling. The record your win/loss register wrote keeps the contract when one of the two came from there; otherwise the earlier win does. A contract is caught as shared as soon as it is found in the register, before it has earned anything. The note links to NEO's Settings, where Duplicate numbers pairs the two records; merging there keeps your win/loss register's values. Canceled after award means the customer canceled before a contract was issued; the B&P behind it is counted and nothing came back, so it stays in the population as a loss. A win still Awaiting number may show the number its NEO solicitation record carries as a proposal, displayed and never computed on, and never proposed at all when it is a vehicle's number. No match means nothing in Accounting answers to the number: check it is the award's own number, and if it is, the executed award has not been loaded into Accounting's register yet. Ambiguous means several FP&A contracts answer to the bare number and no accounting record ties them together. A contract that is several FP&A rows (a subcontract performed by a second entity, a re-cut project) is summed and the row says how many; a contract that predates the FP&A register is reached through the historical import. Opening a pursuit takes you to it in NEO, where the awarded contract number is entered under Capture once the pursuit is marked Won; a win that came from the W&L workbook takes the workbook's Award ID, which the sync re-asserts. A vehicle seat lists the task orders under it beneath its contract. An asterisk after the win date means Actuals predate the win: the contract carries revenue from before the win was recorded, those months are not counted, and the number on the win probably points at an older contract.

Setup​

  • BD spend accounts — the same table as the first visit, with Counts, Account, Kind, Trailing 12 months and Exclude. Change the ticks and press Save account set; the report recomputes.
  • Discount rate — the annual rate behind the NPV, entered under Annual rate, percent as a number between 0 and 50 and saved with Save rate. The default is labeled as a default until you set one.
  • Bonuses to BD and B&P people — everyone who charged hours to the confirmed BD accounts over the trailing twelve months, and everyone the payroll register paid a bonus, with BD / B&P to mark them, Person, BD hours, Bonus lines, Total paid and Period. A person with hours and no bonus yet is still on the list to mark; someone who charged but is not on the register is named below the table rather than dropped. Mark who counts and press Save roster; their register bonus lines are pulled in automatically. Under Recorded by hand, record a bonus paid outside the register by Month paid, Person and Amount, dollars with Record bonus, and Remove one recorded in error. Person suggests the people marked above. A bonus the payroll register already carries is refused there, and an entry the register catches up with later reads In the payroll register, counted once: the register's copy is the one counted. Above the table, How far back the payroll register reaches lists each payroll company with the first and last pay date its lines cover and its pay-run count, so a month reading no bonus can be told from a month the register never saw.

What this page never does​

It never guesses a contract from a title or an agency, never counts a recompete, never credits a vehicle seat with its task orders' profit in the portfolio return, and never blends contract value into realized profit.