Before development, we agree on the exact trigger, expected behavior, affected users, dependencies, and acceptance checklist. Unknown bugs, large refactors, undocumented legacy systems, and requirements discovered after the work begins may need a separate estimate.