Ambiguous requirements are the #1 cause of sprint failure. FlowSquad's requirement refinement asks clarifying questions and cross-references your codebase before locking in a spec.
Ambiguity in requirements doesn't announce itself. A story that says "Allow users to reset their password" looks complete. It has a verb, a subject, and an object. It'll pass a three-amigo review without objection. Then the developer starts building and asks:
Each of these questions is a decision point. In the absence of a documented decision, the developer makes a judgment call. Some calls are correct. Some aren't. The ones that aren't — discovered at sprint review — generate rework. The rework estimate for a story that needs to be partially rebuilt after development is typically 40–80% of the original story's estimate, paid twice.
The compounding problem is that the same ambiguities recur. Without a systematic refinement process, teams relitigate the same question categories sprint after sprint. A structured refinement process that asks the right questions consistently would eliminate this, but writing those questions manually requires expertise and time that most teams don't have at planning speed.
FlowSquad's requirement refinement engine operates in two sequential phases, transforming a raw requirement into a production-ready story spec:
When you input a raw requirement into FlowSquad, the platform generates a structured set of clarifying questions before any spec is written. These questions are categorised:
AuthService has a rate limiter on reset requests — should this feature use it, or does it need a different limit?"The last category — codebase-informed questions — is unique to FlowSquad. Because the platform has indexed your codebase via the VectorDB layer, it can cross-reference new requirements against existing implementations and ask questions that no generic LLM could generate, because they require knowledge of your specific system.
After you answer the clarifying questions (typically 5–12 questions per requirement, taking 8–15 minutes), FlowSquad generates a complete requirement specification:
Example: FlowSquad Refinement Session
One of FlowSquad's most practically valuable refinement capabilities is identifying requirements that are technically impossible given the current codebase — surfacing them during refinement, before a developer discovers them mid-sprint.
Common examples:
FlowSquad's VectorDB-grounded refinement detects these mismatches by comparing the requirement semantics against the indexed codebase. When it finds a conflict, it surfaces it as a clarifying question: "The current payment gateway integration (payments/gateway/stripe.py) only supports USD, EUR, and GBP. Is expanding currency support a dependency of this requirement, or should it be scoped to supported currencies only?"
This kind of question, answered in a 15-minute refinement session, prevents a 3-day mid-sprint crisis where a developer discovers an architectural blocker and has to escalate to the tech lead.
The end-to-end refinement workflow in FlowSquad takes approximately 20–35 minutes per requirement — including the Q&A session and spec review — and produces a story that is ready for sprint planning without further discussion:
FlowSquad generates acceptance criteria in three formats, configurable per project:
# FlowSquad acceptance criteria output example (YAML)
story:
title: "As a user, I can reset my forgotten password via email"
acceptance_criteria:
given_when_then:
- given: "I am on the login page and do not know my password"
when: "I click 'Forgot password?' and enter my registered email"
then: "I receive a reset email within 60 seconds containing a link valid for 1 hour"
- given: "I click the reset link within 1 hour"
when: "I enter a new password meeting complexity requirements (8+ chars, 1 special)"
then: "My password is updated and all active sessions except the current one are invalidated"
- given: "The reset link has expired (>1 hour)"
when: "I click the link"
then: "I see an error 'This reset link has expired. Please request a new one.' No password change occurs."
- given: "I attempt to request a reset more than 5 times in 10 minutes"
when: "I submit the form"
then: "Requests are rate-limited; I see 'Too many requests. Please try again later.'"
out_of_scope:
- "Admin-initiated password resets (separate story)"
- "SMS-based reset (future enhancement)"
technical_notes:
- "Use existing EmailService (notifications/services/email_service.py)"
- "Reduce PasswordReset token expiry from 24h to 1h in auth/models/password_reset.py"
- "Invalidate sessions via SessionManager.invalidate_all_except(user_id, current_session_id)"
FlowSquad's question generation uses two sources: a trained model of common ambiguity patterns in software requirements (derived from requirement quality research), and semantic analysis of your specific codebase. The codebase-grounded questions — those referencing specific modules, models, or services — are generated by querying the VectorDB index for code related to the requirement's domain and identifying constraints, dependencies, and existing implementations that the requirement must account for.
Yes. FlowSquad generates requirement specs in Markdown format that can be exported to Confluence (via the Confluence integration), emailed as a PDF, or shared as a read-only link. The sign-off workflow allows stakeholders to approve or request changes on the Confluence page — approved pages are locked and their content is automatically synced back to the FlowSquad story as the "signed-off spec."
FlowSquad's refinement engine detects logical inconsistencies in the answer set and surfaces them before generating the spec. For example, if you answer "the reset should invalidate all sessions" to one question and "the user should remain logged in after reset" to another, FlowSquad will flag the contradiction and ask for clarification before proceeding. This prevents the spec from inheriting the contradiction and ensures the generated story is internally consistent.
FlowSquad's requirement refinement supports any language that the configured LLM supports. For OpenAI and Anthropic models, this includes all major European languages, Arabic, Japanese, Chinese, and others. For local Ollama deployments, language support depends on the model — Llama 3.1 and Mistral both support multilingual input/output with moderate quality for European languages and lower quality for less-common languages.
FlowSquad's refinement is designed to work alongside, not replace, your BA and PO process. The typical adoption pattern: BAs use FlowSquad's Q&A to draft requirement specs faster, then review the output against their domain knowledge. The generated spec is a high-quality first draft that typically requires 10–20 minutes of BA review and editing rather than writing from scratch. The result is that a BA who previously refined 4–5 stories per day can refine 10–14 per day using FlowSquad — doubling throughput without increasing headcount.