Requirements gathering is not about asking users what they want; it is about discovering the progress they are trying to make. This guide focuses on two authoritative frameworks: Jobs to be Done (JTBD) for discovery and Specification by Example (SbE) for formalization.
Users don't "buy" products; they "hire" them to do a job. The goal of requirements elicitation is to identify the Job Story.
Unlike User Stories, Job Stories focus on the Situation and Motivation rather than just the Persona.
"When [Situation], I want to [Motivation], so I can [Expected Outcome]."
To uncover deep requirements, analyze the forces acting on the user:
Specification by Example transforms vague requirements into a set of concrete, illustrative examples that serve as both documentation and automated tests.
Vague Requirement: "Users get a discount for large orders." Specification by Example:
| Order Total | Customer Type | Discount Applied | Expected Total |
|---|---|---|---|
| $50.00 | Standard | 0% | $50.00 |
| $150.00 | Standard | 10% | $135.00 |
| $50.00 | VIP | 15% | $42.50 |
| $150.00 | VIP | 25% | $112.50 |
Use this template to document the findings from an elicitation session.
job_id: "JOB-402"
job_summary: "Reconcile daily transactions against bank statements"
situation: "End-of-day accounting closure"
motivation: "Identify missing or duplicated entries without manual line-matching"
desired_outcomes:
- "Zero discrepancy between internal ledger and statement"
- "Completion of reconciliation in < 15 minutes"
specification_by_example:
scenarios:
- name: "Exact Match"
given: "Ledger has \$100 entry; Statement has \$100 entry"
when: "Reconciliation runs"
then: "Both entries are marked 'Matched'"
- name: "Discrepancy - Missing Statement Entry"
given: "Ledger has \$50 entry; Statement has no matching entry"
when: "Reconciliation runs"
then: "Ledger entry is flagged 'Unmatched - Missing from Statement'"
constraints:
security: "Bank credentials must never be stored in plaintext"
data_retention: "Audit logs must persist for 7 years per policy FIN-01"