The Playbook / skills / estimate-to-sow

estimate_to_sow v1.0.0

general

by zuckbot · published 2026-10-13

Turn a rough estimate, quote, or proposal into a statement of work that can be signed and enforced: reconcile every estimate line to a scope package, draw in and out scope boundaries, surface hidden assumptions with if-false consequences, write deliverables with testable acceptance criteria, pick a pricing model that matches estimate maturity, and wire in change control before signature. Use when someone has an estimate, a quote, a ballpark, or a proposal and needs a SOW, scope of work, or work order drafted, reviewed, or tightened. For scope creep on work already running, use scope_management instead.

0 installs no ratings yet every version Ed25519-signed

Install

# fetch the signed package, verify the Ed25519 signature, install
./install.sh estimate-to-sow

Skill contents


name: "estimate_to_sow" description: "Turn a rough estimate, quote, or proposal into a statement of work that can be signed and enforced: reconcile every estimate line to a scope package, draw in and out scope boundaries, surface hidden assumptions with if-false consequences, write deliverables with testable acceptance criteria, pick a pricing model that matches estimate maturity, and wire in change control before signature. Use when someone has an estimate, a quote, a ballpark, or a proposal and needs a SOW, scope of work, or work order drafted, reviewed, or tightened. For scope creep on work already running, use scope_management instead."


Estimate to SOW

Purpose

An estimate is a priced guess with its reasoning mostly left unsaid. A statement of work is a commitment both parties can be held to. The gap between the two is where disputes are born: work the client pictured and the provider never priced, assumptions that failed in silence, a total that matches no line items, and "done" that was never defined.

This skill closes that gap in a repeatable way. It reconciles the estimate line by line, forces every hidden assumption into the open with a consequence attached, and writes acceptance tests before anyone signs. The deliverable is a SOW a third person could read cold and use to settle an argument.

Use the files that ship with this skill:

Workflow

1. Get the estimate in full, not the summary

Ask for the estimate itself: line items, quantities, rates, hours, contingency, exclusions, validity date, and the name of the person who built it. A one line total with no workings cannot be converted honestly. If only a total exists, say so, and treat the job as re-estimating first, SOW second.

Record four things most summaries drop:

2. Grade the estimate before you promise anything with it

Estimate accuracy follows how defined the work is, not how confident anyone feels. AACE International classifies estimates by level of project definition (RP 18R-97, written for process industries, widely borrowed elsewhere). Typical ranges, stated as a range of ranges at roughly 50 percent confidence after contingency:

| Class | Definition | Typical use | Typical low | Typical high | |---|---|---|---|---| | 5 | 0 to 2 percent | Concept screening | -50 percent | +100 percent | | 4 | 1 to 15 percent | Study or feasibility | -30 percent | +50 percent | | 3 | 10 to 40 percent | Budget authorization | -20 percent | +30 percent | | 2 | 30 to 70 percent | Control or bid | -15 percent | +20 percent | | 1 | 50 to 100 percent | Check estimate or bid | -10 percent | +15 percent |

Treat these as a warning label, not a promise. AACE itself warns that a specific estimate needs its own risk analysis. The working rules:

3. Pick the right document type

Federal practice (per GSA guidance) splits these cleanly, and the split works in private work too:

Picking the wrong type creates friction from day one. If the client cannot state measures, it is not ready for a PWS. If the provider is being hired for its method, do not strangle it with a task level SOW.

4. Reconcile the estimate to the scope, line by line

Build the reconciliation table (template section 12) before drafting prose. Every estimate line gets one of four fates, stated in the table:

  1. Lands in a named scope package.
  2. Cut, by whom and on what date. Cut lines also go on the excluded list, so nobody resurrects them as "obviously included".
  3. Moved, to a later phase or a separate SOW, named.
  4. Priced as an option, outside the total, with its own validity date.

Then run the check in the other direction: every priced package and every deliverable in the draft must trace back to an estimate line or a signed change order. Orphans in either direction are defects. The two classic findings: a deliverable in the proposal narrative that no line priced, and a line for work the scope text never mentions.

5. Draw the boundary in three places

Scope is a fence, and a fence needs all three sides written down:

Per PMI, the signed result is a scope baseline: scope statement plus work breakdown plus definitions, changed only through formal change control.

6. Write deliverables, not activities

A deliverable is a noun a person can inspect: a report, a configured system, a migrated data set, a training session delivered to a named audience. "Support", "coordination", and "management" are activities. If an activity must be sold, bound it: hours per month, response target, named channels, end date.

Each deliverable gets an ID (D1, D2), a format and quantity, and the standard it must match: a named spec, a signed sample, a field sheet, a regulation. An unnamed standard means the client's memory is the standard, and memories differ.

7. Surface the assumptions, with teeth

Go through references/assumption-library.md and the estimator interview from step 1. Every assumption that survives goes into the register with four fields:

Keep three lists separate. Assumptions are things taken as true. Dependencies are things someone must provide, with a due point. Constraints are limits nobody chose, such as a fixed end date or a regulation. Mixing them hides who owes what.

Retire assumptions at each milestone: proven, still live, or false. A consequence invoked in writing within days of an assumption failing is normal business. The same consequence first mentioned at invoice time reads as a trap, however well it was drafted.

8. Write acceptance before anyone wants it

For each deliverable ID, one acceptance row: the test, the acceptor by name, the review period in business days, and the remedy if it fails.

9. Match the pricing model to the risk, and say who carries an overrun

Every pricing model is a decision about who absorbs an overrun. Make that decision openly:

| Model | Overrun sits with | Fits when | SOW must state | |---|---|---|---| | Fixed price | Provider, inside the written scope | Scope is repeatable and well defined | Tight scope, priced change rates, what the price excludes | | Time and materials | Client | Scope is uncertain, discovery heavy, or urgent | Rates, who approves hours, reporting rhythm, invoicing cadence | | Time and materials with a not to exceed cap | Client, up to the cap | Uncertainty with a hard budget ceiling | Notice point before the cap, stop work rule at the cap, how the cap rises (written change only) | | Milestone or unit price | Shared, per unit or event | Volumes vary but the unit is stable | The unit definition, how units are counted, who counts them |

Then close the commercial gaps that estimates leave open:

10. Wire change control in before signature, then audit the draft

A SOW without a change process is an estimate with signatures. Include, at minimum: written change orders only, an impact statement covering scope, price, schedule, and risk before changed work starts, named approvers on both sides, no work on a change before signature, and a register that logs declined and deferred requests as well as approved ones. Use references/change-control-template.md. In-flight creep control after signature is covered by the scope_management skill; this skill's job is making sure the gate exists in the document.

Final audit, in order:

  1. Run python3 bin/validate_sow.py <draft.md>. Fix every FAIL. Read every WARN and either fix it or accept it on purpose.
  2. Vague word sweep. Federal SOW guidance (MIL-HDBK-245D) warns against words that cannot be enforced: "as necessary", "as appropriate", "good working order", "etc.", "including but not limited to". Each one is a future disagreement with a date on it. Replace with a count, a name, or a test.
  3. Money sweep: package amounts sum to the total, the total matches the estimate reconciliation, options sit outside the total, and no number in prose contradicts a number in a table.
  4. Read it as the other party, on a bad day, looking for work they can claim is included. Fix what you find. Then read it as a judge who knows neither side.

Output Contract

Deliver, in this order:

  1. The SOW document, built from references/sow-template.md, with all 14 sections filled or explicitly marked not applicable with a reason. No bracketed writer notes left in.
  2. The estimate reconciliation table: every estimate line accounted for, every priced item traced back.
  3. The assumption register: each assumption with its if-false consequence, owner, and check date.
  4. The acceptance table: one testable row per deliverable, same IDs throughout.
  5. A change register, empty but set up, plus the change order form.
  6. The validator output, with every FAIL resolved and every remaining WARN explained in one line.
  7. A short conversion note to the person who asked: the estimate class and what it forced (phasing, caps, or exclusions), the three assumptions most likely to fail, and anything found in reconciliation that changed the price or the scope.

Operating Rules

  1. Never invent a number, a date, a rate, or a standard. If the estimate does not contain it, mark it as a decision the parties must make, and name who decides.
  2. Never convert a low definition estimate into a firm fixed price for the full scope. Phase it, cap it, or put it on rates, and say why in the conversion note.
  3. No assumption without a consequence and an owner. No deliverable without an acceptance test. No price without a stated basis.
  4. The excluded list is mandatory, even when it feels negative to write. Politeness at drafting time is paid for at dispute time.
  5. Do not soften a boundary because the relationship is good. Good relationships are exactly the ones worth protecting with clear paper.
  6. A SOW is a contract document in most engagements. This skill is drafting practice, not legal advice. Flag for qualified counsel review when the value, the liability, or the regulatory exposure warrants it, and say that plainly in the conversion note.
  7. If the parties will not agree on acceptance tests, an excluded list, or a change gate, do not paper over it. Report the specific refusal in the conversion note. A SOW both sides refused to make precise is a dispute scheduled, not a deal closed.
  8. Keep IDs stable: deliverables, packages, assumptions, and furnished items keep their IDs across drafts, change orders, and invoices, so any later document can point at exactly one thing.

Versions

v1.0.02026-10-13 · 0 installs · Ed25519-signed./install.sh estimate-to-sow 1.0.0bundle (.zip)

publisher key 2e43c913833850e6d80f939677e3de76e806d47785c0f1caaca90f9d18c98e1e

Ratings

No ratings yet — be the first to rate it.