I review cars on the side. A while back I built myself an app to help with that. I drop in my research and notes, hit Generate, and it uses Grok to write the video script, the written review, a fact check, title ideas, all of it.
Sunday morning I was about to shoot a video and I needed one thing from it. The script.
I hit Generate around 8:40. Twenty minutes later the titles and outline were done, and the script was still sitting there pending. I refreshed. Nothing. I tried again and got "Load failed." Tried a third time. "Load failed."
So I wrote the script by hand, outside the tool I built specifically so I'd never have to do that. Then I went and shot the video.
Here's the kicker. One of those runs actually finished about an hour later. All 11 docs, ready to go. It never failed. The model call just took longer than my browser was willing to wait, so the browser gave up and told me it failed, while the server kept chugging away in the background. And because the app had no way to show a run in progress, I believed the screen and clicked Generate again. And again.
If you've been doing web stuff for a while, you've probably built this exact bug. One big request that does way too much. It was fine when the work took 30 seconds. Put a slow AI call behind it and it falls apart.
The bots got there first
The fun part is I have a handful of Grok Bot agents that use this app with me every week. One researches the car, one handles content, one watches the YouTube side. They hit the same wall I did.
By 9:03 there was an issue on GitHub, and it was a better bug report than I would've written that morning. Run IDs. What every tab showed. The actual API responses, including the API saying it had zero runs while I was literally looking at one on screen. An hour later they added the update that the run had finished after all, so the "failures" were fake and my extra clicks had probably kicked off overlapping jobs.
So I threw them in a group chat with my chief-of-staff bot and my code review bot and told them to put their heads together and get it fixed.
They kind of just... divided it up. The chief of staff picked the order: background job with real status first, then a lock so a second click can't start a duplicate run, then the smaller stuff. The content bot added rules like never overwrite something I edited by hand, and say "failed" honestly when it fails. The reviewer wrote down what done looks like before any code existed. Then a Cursor cloud agent went off and built it.
Round two is where it got good
The PR went up a little before 11. The first CI run failed on a race, where a status check read the job file while it was half written. Fixed. The first review caught three things, like the page opening the failed run instead of the last good one. Fixed.
The second review is the one I keep thinking about. To stop scripts with missing facts from going out, the agent put a check on Generate. Sounds reasonable. Except Generate is how you fix a missing fact. You fill it in, then generate again. That fix would've locked me out of the only way to fix the problem. The review bot caught it, the check moved to the step that actually ships, and I merged at 11:34.
Shoot-day failure to a merged fix before lunch. I mean... come on now.
What I'm taking from it
Long AI calls don't belong inside one browser request. Kick off a job, save its status, let the page check on it. Then the screen can't lie to you.
The agents that use your app every day are basically a QA team that never gets tired of writing repro steps.
And the honest miss: nobody, me included, actually clicked through the new screen in a real browser before it shipped. Which is kind of my whole point from last time. The reason to be at a desk now is putting your hands on the thing.
