Legacy chaos. A spec you have no time to write. An investor about to grill you. One command each - and what lands is a domain model, a sequence diagram, a reconciliation report. Not a pep talk, not a summary.
Something real got built and shipped - then the people who understood it moved on. But the truth didn't leave with them. It's still in the code: the state machines, the rules, the edge cases, all there, just unread and scattered across files nobody has mapped. The docs you have describe a version from two rewrites ago. What you're missing isn't the logic. It's someone to read it back out.
The app already ships. This one is gnarly enough to deserve a spec - idempotency, retries, webhook races, partial refunds - but a full PRD up front is waste. Half of it rots before a line ships; the other half you rethink the moment you see the real API. So most teams skip the spec and pay for it in the code.
You have rehearsed the story you want to tell. You have not rehearsed the one your weakest assumption is hiding behind - the unit economics, the churn math, the part of the architecture that doesn't survive scale. That question should not get asked for the first time in the room with the check on the table.
These are three of many. You don't pick the path up front - the orchestrator detects where you are and routes you to the right skill.