← Quoting Mastery---
title: SoW authoring with Ducky
status: draft
note: AI-generated first-pass transcript pending video production + SME review.
---
Statements of Work in Cavaridge Operations have a published spec —
`SOW-MASTER-SPEC-v2_3` — and Ducky helps you fill it in. The spec is
LOCKED, and the platform refuses to render an SoW that doesn't conform.
That's a feature.
## What the spec mandates
Every SoW has the same structure. Sections 1–5 are administrative
(parties, term, contacts, references). Section 6 is the body of the
work and has prescribed subsections. Sections 7–9 are
acceptance, change control, and signatures.
In Section 6 you'll always have:
- **Scope** — what's in, what's out.
- **Approach** — how the work gets done, in plain language.
- **Deliverables** — concrete artifacts the customer receives.
- **Assumptions** — what must be true for the estimate to hold.
- **Roles & Responsibilities** — who does what.
- **Milestones** — where progress checkpoints land.
- **Pricing structure** — fixed, T&M, or hybrid; references to
schedules.
- **Three mandatory PM tasks**: kickoff + project plan + milestone
tracking, status reporting cadence, project closeout + retro.
Ducky knows this. When you ask Ducky to draft an SoW, every required
piece is generated. When something is missing, the renderer blocks
publish.
## The labor-hours table
This is the single rule that trips people up:
> Labor-hours tables are `Role | Scope | Hour-range` only. No rates.
> No dollar amounts. No totals.
Rates resolve from `tenantConfig` at render time. The reason is
simple: if rates change, every active SoW renders correctly without
edits. If you bake rates into the table, you're shipping a one-time
artifact that diverges from canon the moment your rate card moves.
When Ducky tries to add a Rate column, refuse. The renderer would
block it anyway, but you should catch it first.
## Drafting flow
In the sandbox, the **cavalier-sow-starter** seed gives you a partial
SoW for a clinical-IT engagement.
1. Open the SoW; some fields are filled, some empty.
2. Ask Ducky: "complete this SoW for a Cavaridge Healthcare migration,
8 weeks, two consultants."
3. Ducky drafts every required section.
4. Review each section. **Don't trust without reading.**
## What to verify
- **Scope** is precise. Vague scope kills change control later.
- **Assumptions** are honest. If client environment access is required
by week 1, say so.
- **Milestones** are real. "Week 2: discovery complete" is real.
"Week 2: kickoff meeting" is decoration if you've already done it.
- **PM tasks** are present and not collapsed into vague phrases.
## When Ducky goes wrong
Two failure modes you'll see:
- **Citations to docs that don't apply.** Ducky may cite the
Cavaridge Market quoting guide when you're writing a Healthcare SoW.
Open the citation; if irrelevant, ignore.
- **Generic boilerplate in Assumptions.** Ducky tends to over-generalize
here. Replace generic assumptions with the customer-specific ones.
## Hands-on
Complete the seeded SoW. Render it. Try to slip a Rate column into
the labor-hours table. Watch the renderer block. Remove the column;
watch publish succeed.
You're now drafting compliant SoWs in minutes. Use that speed to
spend more time on the parts that need human judgment: scope edges,
risk acknowledgment, customer-specific assumptions.
Module 3 of 5
SoW authoring with Ducky
Use Ducky to draft an SoW that conforms to the master spec — and what to never let it do.
Video — pending production
Read the transcript below. Once recording is complete, the video will replace this notice.
Hands-on sandbox
cavalier · seed:
cavalier-sow-starter · 60 min