Define states first, or the screens and APIs will each invent their own logic
Many requirement documents jump straight into “submission page,” “approval page,” “pending list,” and “detail page” without ever establishing a clear state dictionary. Then the frontend treats “returned” and “rejected” as nearly the same thing, the backend mixes “cancelled” with “closed,” and the business team expects “waiting for additional information” to still behave like an active approval item. Every piece can be built, yet the workflow remains ambiguous.
A stronger starting point is to list the full set of possible states for one business object, then define which actions are allowed in each state, which new state follows, and which roles can trigger the transition. Once that map is stable, filters, buttons, notifications, reports, and audit records become much easier to align.
Name each state, its meaning, and its entry condition before discussing layout details
Separate confusing business actions such as return, reject, withdraw, and void into explicit definitions
Document editability, approvability, and reminder behavior per state together with permissions