Write acceptance criteria an offshore developer can verify
Examples for turning product intent into observable behavior that survives a time-zone handoff.
Source-backed guidanceContextual internal linksTop, middle, and bottom CTAs
Published
Key takeaways
Describe starting state and outcome.
Include a negative case.
Keep adjectives out of proof.
Describe behavior
Write what the user can do, what the system changes, and what the user sees next. “Make it robust” is a goal; a rejected request with a clear message is testable behavior.
Use examples that reflect the real role and data boundary.
Cover refusal and failure
Include an unauthorized case, an empty state, a timeout, or another failure that could change the implementation. These examples reveal hidden product decisions early.
Let the developer identify which cases need a product answer before coding.
Review against evidence
Accept the work when the examples are exercised by tests, fixtures, or a recorded manual check. Keep the owner of the acceptance decision visible.
Do not expand criteria during review without recording the scope change.