2026-06-24

Becoming an AI-Era PM 05 | Leave It Vague and AI Will Fill the Gaps for You

You tell AI “build me a login feature.”

It builds it. But between that one sentence and the code, it made a whole string of decisions you never raised: email or phone, code verification or not, how many wrong passwords before the account locks, how long the lock lasts, whether the error says “wrong password” or “wrong account or password,” whether there’s a “remember me,” how long the session stays alive. A dozen decisions — not one of them yours. It guessed every single one for you.

The problem isn’t whether it guessed right. The problem is that it never asks. Hand this job to a person and they’ll ask you back: “is this login by phone or by email?” AI won’t. It’s a yes-machine: it does what you said, not what you meant. Wherever the requirement is silent, it fills in whatever it saw most often in training — validation rules, expiry logic, error handling, all patched in for you, and mostly not what you wanted.

OpenAI’s Sean Grove put it this way: the code you write is only 10% to 20% of your value; the other 80% to 90% is saying clearly what to build. Now that AI has swallowed the “write it” step whole, your job is just that front 80% — getting the requirement down to zero ambiguity. Here are four things you can do about it.

1. Swap adjectives for numbers

“Faster.” “Simpler.” “More eye-catching.” “Good experience.” AI can’t verify any of these, so it just invents a definition of its own. Someone wrote AI a spec saying “the system must respond quickly to overcurrent,” and AI flagged the line as “unverifiable”: there’s no threshold to measure against — how fast is “quickly”?

Swap the adjective for a number and the ambiguity is gone. “Loads fast” becomes “first screen appears within 1.5 seconds.” “Don’t make the list too long” becomes “8 items per screen max, then paginate.” “Make the button stand out” becomes “primary-color button, contrast against the background high enough to read.” Anything you can pin to a number or a rule, don’t leave it as an adjective.

2. Write out every state

doaipm has always pushed the four real states: loading, empty, error, success. Say only “build an order list” and AI defaults to the success state — data present, network fine, everything normal.

Order list: While loading, show a skeleton screen. When there are no orders at all, show “No orders yet” plus a button to go place one. When the request fails, show “Failed to load — tap to retry.” When all is well, each row shows the order number, the amount, and the status.

What the empty list looks like, what the user sees while it loads, how a failure is announced — leave those three out and AI either skips them or patches in something at random. In a real product, the odds a user hits empty and error are far higher than you think.

3. List the edge cases

The thing easiest to skip — and likeliest to blow up — is the failure path. Research into what AI invents when a requirement is vague found that these are exactly what it fills in most: what happens when the data is stale, when someone without permission shows up, when two people act on the same record at once, when something times out.

Building coupons? Then spell these out: what pops up when a user taps “use” on an expired coupon, who wins when the same coupon checks out on two devices at once, whether a half-used coupon comes back after a refund. Leave them off the list and AI invents an assumption for each — and you only find out how it guessed once it breaks in production.

4. Self-check with a zero-context test

There’s a ready-made ruler for whether a requirement is clear enough: hand it to someone who knows nothing about the project, and ask whether they could build the exact thing in your head from it alone. If two people would read it two different ways, it isn’t clear enough yet — keep splitting it until there’s no ambiguity left.

If that’s too much work, there’s an even lazier route: tell AI to hold off building and instead list, one by one, the assumptions it was about to fill in for you. The lines it spits back — “I’m assuming the coupon works storewide,” “I’m assuming a 7-day validity” — are exactly the spots you didn’t make clear. Plug them while it still hasn’t built anything.

One thing you can do today: pick a requirement you’re about to throw at AI, don’t send it yet, run it through “adjectives to numbers, every state, list the edges,” then send. Then compare — how far apart is this version’s output from the one you’d have fired off blind.

Further reading

Discussion

No login needed. Be kind.
Loading…