Put an earned-value S-curve and a manpower histogram under your Gantt
Your Gantt shows when. It doesn't show whether you're getting your money's worth. Here's how to drop a proper earned-value S-curve and a manhour histogram straight under the bars — with CPI and SPI computed for you — without opening a separate EVM tool or fighting a spreadsheet for an afternoon.
Everyone can read a bar chart. The board can see the handover date slide two months to the right. What a Gantt on its own can't tell them is the thing they actually pay you to know: are we spending faster than we're building? Is the work we've done worth what it cost? That's earned value — and for most teams it lives in a spreadsheet nobody trusts, three tabs deep, re-keyed every month from a schedule export.
It doesn't need to. The three curves that matter are just cost-over-time, and your schedule already knows the timing. Load in the money and the quantities, set a baseline, and Sketchedule plots the S-curve under the same Gantt, in the browser — and does the CPI/SPI maths so you don't have to. Let's build one.
The three curves, in plain English
Earned value has a reputation for being impenetrable. It isn't. There are three numbers, all measured in the same currency, all plotted against time:
- PV — Planned Value (older name BCWS): what you planned to have earned by now, per the baseline. The budgeted cost of the work that was scheduled to be done by today.
- EV — Earned Value (BCWP): what you've actually earned — the budgeted cost of the work genuinely completed, regardless of what it cost to do it.
- AC — Actual Cost (ACWP): what that completed work actually cost you.
From those three you get two indices, and this is the whole game:
CPI = EV / AC — cost performance. Below 1 means the work cost more than it was worth: over.
Two ratios, both anchored on EV. A schedule slip shows as SPI < 1; a cost overrun shows as CPI < 1. Plot the three curves and read the gap: the horizontal gap between EV and PV is your schedule variance, the vertical gap between AC and EV is your cost variance. Here's a project that's caught both.
Reading the worked example
Take those numbers at the June data date: PV £6.0m, EV £4.6m, AC £5.4m. Run the two ratios and the story writes itself.
- SPI = 4.6 / 6.0 = 0.77. You planned to have earned £6.0m of work by now; you've earned £4.6m. You're doing about 77p of planned progress for every pound you meant to — roughly two months of drift behind the baseline.
- CPI = 4.6 / 5.4 = 0.85. Every pound you've spent has bought 85p of value. The work you have done cost more than it was budgeted to — an ~18% overrun on completed scope.
Behind and over is the uncomfortable quadrant, and it's the one worth catching early. Behind-but-under can be a resourcing choice; ahead-but-over can be an acceleration you chose to buy. Behind-and-over usually means the plan was optimistic and the work is harder than costed — and the two curves diverging on one page is a far sharper warning than a Gantt bar quietly sliding right. The S-curve makes the trend obvious the month it starts, not the month the money runs out.
Building it in Sketchedule
None of this needs a dedicated EVM package. The schedule gives you the timing; you add the money and the progress; Sketchedule draws the curves and runs the ratios. Here's the whole flow.
- Get the cost and quantity in. Add cost and quantity (manhour) columns to your activities — type them straight into the grid, or bring them with the schedule. Import an
XER/P6 XMLorMSP XMLthat's already resource- and cost-loaded, or drop in an Excel/CSV of budgets and quantities. It all parses in your browser — nothing is uploaded. - Set a baseline. Capture the current plan as the baseline. This is what PV is measured against — the budgeted cost of the work scheduled over time. Without a baseline there's no "planned" to compare to, so this step isn't optional.
- Add a ValueSet / Datagraph for PV, EV and AC. A ValueSet spreads each activity's cost across its duration; a Datagraph plots the running total over time. Add three: planned value from the baseline, earned value from % complete, actual cost from booked spend. Sketchedule accumulates them into the S-curve and drops it under the Gantt, on the same timescale.
- Read CPI and SPI. With PV, EV and AC known at the data date, Sketchedule computes CPI = EV/AC and SPI = EV/PV for you and surfaces them as indicators — RAG-coloured so behind/over reads at a glance, no formula bar required.
- Add the manhour histogram (optional). Point a second Datagraph at the quantity column as bars to get a period-by-period manpower / manhour histogram under the same axis — the resourcing shape behind the cost curve (Fig 3).
- Export or share. Ship it as a landscape PDF or PowerPoint, drop the curve into a report as PNG/SVG, or send a read-only link that rebuilds the whole picture — Gantt, S-curve and indices — in the recipient's browser. What prints matches what's on screen.
Why it isn't already this easy
Two kinds of tool sit either side of this, and neither closes the gap. Desktop schedulers can hold the cost and quantity — but their job is to compute the numbers, not present them. You export a table and rebuild the S-curve in Excel every month, which is exactly the spreadsheet nobody trusts. The other kind — the work-OS and project-board tools everyone lives in — track tasks and %-done but have no concept of earned value at all; there's simply nowhere for PV/EV/AC to go.
Sketchedule sits in the middle on purpose: a presentation layer that keeps the money attached to the schedule. The curve isn't a screenshot pasted under the plan — it's plotted from the same activities, so it stays live. That's the difference between a report you rebuild and a view that just refreshes.
Three ways to make the S-curve lie
No baseline, or a moving one
PV is only meaningful against a fixed baseline. Re-baseline every month "to catch up" and SPI will read a cheerful 1.0 forever while the project quietly drifts. Set the baseline once, and change it only through a controlled re-baseline you can point to.
Progress that outruns the spend
EV comes from % complete. If activities are marked further along than the work really is, EV inflates, CPI flatters, and the curve says "fine" while the site says otherwise. Earn value on real, measured progress — physical percent, not optimism.
Costs booked to the wrong period
AC has to land in the month the cost was actually incurred, or the vertical EV-to-AC gap moves to the wrong place and the cost variance points at the wrong activity. Line the actuals up with the data date and the picture is honest by construction.
| Term | What it is | Reads as |
|---|---|---|
| PV (BCWS) | Budgeted cost of work scheduled by now | The plan line — from the baseline |
| EV (BCWP) | Budgeted cost of work done | Value actually earned — from % complete |
| AC (ACWP) | Actual cost of the work done | What it really cost — from booked spend |
| SPI = EV/PV | Schedule performance index | <1 behind · =1 on plan · >1 ahead |
| CPI = EV/AC | Cost performance index | <1 over · =1 on budget · >1 under |
Key takeaways
- Earned value is three cost-over-time curves — PV, EV, AC — plus two ratios: SPI = EV/PV (schedule) and CPI = EV/AC (cost).
- Add cost and quantity columns, or import them from XER/P6 XML/MSP/Excel/CSV, set a baseline, and add ValueSets/Datagraphs — the S-curve draws itself under the Gantt.
- Sketchedule computes CPI and SPI for you and surfaces them as RAG indicators — no formula bar, no separate EVM tool.
- A second Datagraph on the quantity column gives a manhour histogram on the same timescale; export PNG/SVG/PDF/PPT or a read-only link.
- The curve stays live because it's driven by the same activities — change the plan and it moves with it, no spreadsheet to reconcile.
Put a curve under your own plan
Open Sketchedule in a browser — free, no install, nothing uploaded. Load a cost-loaded schedule and watch the S-curve build.
Primavera and P6 are trademarks of Oracle Corporation; Microsoft Project is a trademark of Microsoft Corporation. Sketchedule is an independent product and is not affiliated with, endorsed by or sponsored by Oracle or Microsoft. Figures are illustrative, drawn in Sketchedule; the numbers shown are worked examples for explanation.