The Business Rules AI Can't Guess
Why We Still Can't Just Throw Requirements at AI?
"Help me add an order cancellation feature."
AI quickly finds the order interface, adds status checks, updates the database, adds notification logic, and even writes tests. You look at the all-passing results and think this development is probably done.
Until the product colleague asks: "For already-paid orders, when will the money be refunded?"
Then more questions pop up. Should inventory be released? Can coupons be refunded? What if the order is already being shipped? If the refund API call times out, what status does the user see?
A lot of code has been written, but the requirements are only just becoming clear.
Between requirement text and deliverable software, there are many rules, constraints, and trade-offs that need confirmation. AI can help surface these problems, but it also needs sufficient grounds to handle them correctly.
A one-line requirement hides many default assumptions
Team communication often relies on unspoken context.
When product says "support export", they might assume only exporting data the current user has permission to see. When a developer says "add a field", they might assume historical data can be empty. When operations says "retry on failure", they might assume no duplicate charges, duplicate coupons, or duplicate messages.
These default assumptions come from past discussions, existing processes, and business experience. Even among team members, they may not be fully consistent.
When AI receives a one-line requirement, it needs to search for answers from context. When background is insufficient, it might adopt a common approach, and implement that approach fairly completely.
That's the problem here. The more complete the implementation, the easier it is for the team to overlook unconfirmed assumptions.
For example, "return coupon after order cancellation" seems reasonable, but campaign rules might say some coupons are non-refundable. That answer has to come from business agreements; code generation alone can't determine it.
AI can complete the solution; the team needs to confirm the basis
During development, there are always places not covered by requirements.
What to show when a field is empty? What if a third-party API fails? What happens when the same request executes twice?
AI can often propose a handling approach. But once a handling approach goes into code, it becomes part of the system's externally promised behavior.
Suppose the refund API times out and AI immediately marks the order as "cancellation successful". This implementation lets the flow end smoothly, but leaves behind a state that needs explanation. The order is cancelled, but has the money been refunded? Will the backend continue processing?
Therefore, when reviewing, you need to ask not just "is there a problem with the code?", but also:
- Which rules come from explicit requirements?
- Which behaviors follow existing implementation?
- Where did AI make assumptions?
- Which questions still need confirmation from the person in charge?
Writing these things down gives the discussion concrete objects.
Running code only verifies part of the delivery
Compilation passing means the code satisfies some language and dependency requirements. Tests passing means it behaves as expected under those test conditions.
Business correctness needs another layer of basis.
Suppose AI interprets "unpaid orders can be cancelled" as "unfinished orders can be cancelled", and writes code and tests based on that understanding. All tests can pass, but the functionality still deviates from business requirements.
When code and tests share the same wrong assumption, they can hardly correct each other.
This is also why acceptance criteria should be defined in advance. At minimum, you should know what input leads to what behavior, which conditions must be rejected, and what state the system should preserve on failure.
For order cancellation, you can first write a few concrete scenarios:
| Scenario | Behavior to clarify |
|---|---|
| Cancelling an unpaid order | How does order status change, whether to release occupied resources |
| Cancelling a paid order | Is it allowed, how the refund is initiated and tracked |
| Order already shipped | Whether to reject, or move to another business process |
| Repeated cancellation request | Whether to return existing result, how to avoid duplicate processing |
| Downstream service failure | Whether to retry, what status the user sees |
Each row can change the implementation approach, and also determines what tests should verify.
A small requirement enters an existing system
Requirement descriptions usually focus on the changes the user wants to see, but the code runs in an existing system.
Adding a field might involve historical data, old clients, and downstream subscribers. Adding a status update might affect reports, scheduled tasks, and message consumption. Adding a new API might require reusing existing permission checks and audit mechanisms.
These impacts rarely appear fully in a ticket's body.
AI can discover them by reading code, searching documents, and analyzing call relationships. The precondition is that it has the right project, sufficient access scope, and trustworthy source material.
If you only provide a screenshot of the requirement and a few files, the scope of impact it can see is limited. The team needs to combine with the actual system situation to confirm whether related modules are covered.
The later you find a wrong direction, the more rework
AI makes implementation faster, and also lets an unconfirmed decision spread faster.
A status definition can go into APIs, databases, pages, and tests. A wrong field meaning can be written into multiple objects and documents. By the time you find the deviation during integration, the changes already touch many places.
So some confirmation before development is still worth keeping, and AI can directly participate.
First ask it to organize requirement understanding, list key flows and questions to confirm. Then check existing implementation, give the change scope, API impact, and verification approach. Once the direction is clear, continue implementation.
This process doesn't need to be a long document. For simple changes, a few sentences are enough. For requirements involving payment, inventory, permissions, or cross-system state, you need to make key behaviors more specific.
The depth of confirmation should match the impact of the change.
How to hand requirements to AI so it can move forward?
A task specification that supports development can contain five items.
Goal. What problem does the user have, and what change should happen after completion.
Scope. Which entry points, roles, and business states are involved, and where does this delivery end.
Basis. Where the relevant code, API contracts, business documents, and project standards are.
Constraints. Which old behaviors need to be compatible, and which operations have permission or environment limits.
Acceptance. What results should be obtained for normal, exceptional, and repeated execution scenarios.
When there are still questions, you can ask AI to list them first, and distinguish which ones block implementation and which can proceed after clarifying assumptions.
For example, if button text is not finalized, that usually doesn't prevent implementing already-confirmed backend logic. But if the meaning of refund status is unclear, that might directly affect the data model and API design, and needs to be resolved first.
This way, the team can clarify issues while advancing work that has a basis.
Where do humans need to participate?
AI can handle requirement organization, code retrieval, solution comparison, implementation, and verification. Humans need to confirm business meaning in these outputs, decide trade-offs, and judge whether the delivery meets real needs.
This participation process can be very concrete.
At the start, confirm AI's understanding of the goal and scope. During implementation, handle business ambiguities it discovers. At delivery, check the changes, test evidence, and unverified items.
Going back to the sentence "add an order cancellation feature", the most valuable first delivery might be a list of cancellation rules to be confirmed, and an impact analysis of the existing order flow.
Once these rules have answers, AI has a clear basis to implement refunds, release inventory, handle duplicate requests, and prove it did the right thing in the specified scenarios.