Fixed-price projects at D3 — milestone-driven, contract-anchored
A fixed-price (FP) project locks scope, timeline, and price at contract signing. Once signed, change happens only through a formal Change Request. The job is to deliver the agreed scope on time, at the agreed price, with the agreed quality. This page describes how D3 runs that delivery.
Six roles run an FP project. The min level shown is the floor — anyone above qualifies. The biggest difference from agile: Project Manager (formal, not Scrum Master), and the Solution Architect carries a much heavier upfront role.
Six phases run sequentially with hard gates. A phase ends when its outputs are signed off — not when "we feel ready". Build is the longest; everything else is short and disciplined.
- Client interviews · stakeholder mapping
- Scope decomposition into deliverables
- High-level architecture sketch + tech stack proposal
- Effort estimation with reserve (10-20%)
- Top-3 risks identified
- scope.md drafted · all deliverables enumerated
- Estimate signed off internally (PM + SA + Head of D3)
- Risk register seeded with top-3 risks
- Client agrees to proceed to SoW
- Formal Statement of Work drafted from scope.md
- Acceptance criteria attached to every deliverable
- Milestone payment schedule defined
- Change Request process documented in contract
- Legal review + redlines + sign-off
- Contract signed by both sides
- Kickoff date scheduled
- Project added to Techvify DES with milestone calendar
- Team allocations confirmed
- System architecture diagrams (C4 or equivalent)
- ADRs for non-trivial choices (DB, queue, auth, etc.)
- NFR plan: performance, security, scalability targets
- Detailed AC per deliverable (BA owns)
- UAT plan drafted (QA Lead owns)
- Build phase plan with weekly checkpoints
- Architecture document signed off by SA + Tech Lead + Client tech contact
- All ADRs reviewed
- AC and UAT plan attached to project tool
- Build phase plan agreed
- ⚠ Build does NOT start before this gate passes
- Feature build sprint-by-sprint (often 2-week iterations internally)
- Continuous internal QA on each feature
- Weekly client demo (informal) — keep visibility high
- Burn-rate tracked vs plan weekly
- Risk register refreshed weekly with weekly report
- Change Requests triaged immediately (no batching)
- 100% of SoW deliverables coded
- Internal QA pass rate ≥ 95%
- NFR targets met (perf, security scan, etc.)
- Build environment matches UAT spec
- UAT readiness checklist signed by Tech Lead + QA Lead
- Client runs test cases against UAT plan
- Defects logged with severity (P0-P3)
- P0/P1 fixes within 1-2 days · P2/P3 batched
- Daily UAT status: open defects, sign-offs, blockers
- Acceptance log updated per story
- 0 open P0/P1 defects
- 100% acceptance criteria signed (or formally waived)
- Acceptance log signed by client sponsor
- P2/P3 defects either fixed, deferred to warranty, or formally accepted
- ⚠ Payment milestone triggers on this signature
- Production deployment per cutover plan
- Smoke tests + production health check
- Handover docs delivered (runbook, ops guide, contact list)
- Warranty: defect SLA only for SoW-scope bugs, NOT new features
- Final lessons-learned + project retro
- Warranty period elapsed without open critical defects
- All warranty tickets resolved or transferred to support contract
- Final payment received
- Project archived in DES (post-mortem written, lessons captured)
The CR process is the only legal way to change scope, price, or timeline after the contract is signed. It must be followed without exception. Bypassing the CR process is the #1 cause of FP project failure.
Five milestone gates govern progression. Each gate has a named owner with veto power. If a gate fails, the project does not advance — the next phase doesn't start. Escalation goes to Head of D3, then to client sponsor.
- Architecture doc signed by SA + Tech Lead + client tech contact
- All ADRs for non-trivial choices recorded
- NFR plan agreed (perf, security, scalability targets)
- AC documented per deliverable
- 100% of SoW deliverables coded and merged
- Internal QA pass rate ≥ 95% across all features
- NFR targets met (load test, security scan, etc.)
- UAT environment provisioned and matches spec
- 0 open P0/P1 defects
- 100% acceptance criteria signed (or formally waived) by client
- Acceptance log signed by client sponsor
- P2/P3 either fixed, deferred to warranty, or formally accepted
- Cutover plan reviewed (rollback, backout, comms)
- Production environment provisioned + smoke-tested
- Handover docs ready (runbook, ops guide, contacts)
- Warranty SLA documented + on-call schedule agreed
- Warranty period elapsed with no open critical defects
- All warranty tickets resolved or transferred to support contract
- Final payment received
- Post-mortem written, lessons archived in DES
The price is locked, so every unknown is risk. The job is to keep risks visible and reserves disciplined — never silently burn through the buffer.
- Scope creep without CR — silently absorbed "small" changes accumulate. Mitigation: CR culture enforced from day 1.
- Late-discovery complexity — design uncovers issues not flagged at estimation. Mitigation: 10-20% reserve, design phase taken seriously.
- Client UAT delays — client doesn't show up to test, project sits idle. Mitigation: UAT plan agreed at design, schedule confirmed at Build start.
- Vague AC — "works well" is not a testable AC. Mitigation: BA owns AC quality, every AC is a measurable test.
- Team turnover mid-build — key Dev or Tech Lead leaves, knowledge transfer suffers. Mitigation: documentation discipline, bus-factor >1 for critical components.
FP reporting is milestone-driven, not sprint-driven. The chart below shows when each report fires across the 6 project phases.
Most FP project failures share a small set of root causes. Each of these has bitten D3 projects before — and each has an early-warning signal you can watch for.