ONE TASK BETTER — V04 QUOTE PRACTICE
Write a Clear Service Quote With AI
Status: practice exercise prepared. The V04 video has not been produced or published.

Everything here is fictional exercise data. Amounts are illustrative supplied arithmetic inputs, not actual business prices, market-rate recommendations or tax advice. The deliberately unsafe draft is a constructed example, not a live AI result. No customer receives this draft and no message is sent.

Run with Python 3, without installing anything:
  python3 build_demo.py --input demo-input.json --out result --verify-fixture

Expected output:
  subtotal = 425.00
  suppliedTaxAmount = null
  finalPayableAmount = null
  unsafeDraftRejected = true
  fixtureChecks = 32

Independent calculation: 4 hours × $75 + $80 materials + $45 preparation = $425 subtotal. The prepared $445 subtotal fails. The tax-included claim fails because no tax treatment or amount was supplied. Unknown tax is different from explicitly supplied zero. The final payable amount stays pending until the actual owner supplies the missing information. The teaching firm's required onsite estimate is also incomplete, so the result stays Draft — owner review required even when arithmetic is complete.

demo-input.json preserves the fictional source text and prepared draft. build_demo.py uses Decimal and explicit per-line half-up cent rounding, then sums the rounded lines. It does not infer rates, tax treatment, deposit rules, warranties, payment dates, a start date or other customer-facing terms. Source IDs provide traceability; the builder does not verify that arbitrary source prose agrees with every structured value. A person must check meaning and approve real inputs before using this method for an actual quote.

calculated-quote.json contains the calculated lines, supported scope, blanks, missing-information list and source-linked audit. draft-check.json explains why the unsafe draft failed. quote-lines.csv and quote-summary.csv contain displayed results, not spreadsheet formulas. Import identifiers and human text as Text. CSV quotation does not establish a column type. Formula-leading text receives an apostrophe display prefix; escape-manifest.json keeps the original text. Full original fixture inputs stay in JSON. Unknown numeric values export as empty cells and remain explicit nulls in JSON.

The fixture verification checks the exact subtotal, unknown versus zero tax, an independently supplied hypothetical $34 tax amount, missing quantity/rate/scope, invented scope/terms, deterministic cent rounding, invalid or nonfinite/negative input, missing sources, and formula-leading display escapes. The zero/$34 tax cases are separate constructed exercise variants, not statements about a jurisdiction or this business's real tax obligations. Exact structured-field checks do not validate arbitrary generated prose. Native Excel execution and a human review of real business data are not claimed.

Try the failure exercise: remove the scope inclusion from quote.scope.inclusions and rerun without --verify-fixture. The missing-information list must flag it; do not add ceilings, repairs or disposal to make the draft look complete. Set the labor quantity to null: the labor amount and subtotal must remain pending. Keep --verify-fixture for the supplied baseline fixture only; it deliberately asserts that exact baseline.

workflow-prompt.txt is a draft instruction for a tool you choose. The offline builder calls no AI service, makes no network request, and uses no account or API key. It sends nothing. Use only actual owner-supplied and approved policies and inputs for a real business. No time saving, audience growth, revenue or publication is measured here.

Next lesson: Turn Messy Notes Into a Weekly Business Plan.
