Everyone Left on the Hour
Most of our dream team bots ran on a schedule of "every hour on the hour": 9 a.m., 1 p.m., 6 p.m. Humans remember those easily, so that is how we set them. The catch was that the Windows device and the Mac mini hit the same API at the very same moment.
What Went Wrong
• Requests piled up within one minute after the hour, producing "rate limit exceeded" errors 9 times a day
• A bot that hit the error stopped quietly and did nothing until the next hour
• Laid out in time order, every failure in the logs sat between :00 and :01
At first we thought the bots were broken and blamed the prompts. The culprit was not the content but the clock.
A One-Line Fix
We changed one thing: bots that use the same service now start at least 7 minutes apart.
09:00 Windy briefing
09:07 content bot
09:14 review bot
09:21 cleanup bot
Before / After
| | Before | After |
|---|---|---|
| Start times | All on the hour | 7 minutes apart |
| Rate-limit errors | 9 a day | 1 a day |
| Manual restarts of stalled bots | 3 a week | 0 a week |
Takeaways
• A time that is easy for humans to remember is also the most crowded time for machines.
• When the bot count grows, check the schedule table before the prompts.
• We left that last 1 on purpose. A visible warning sign is safer than a perfect 0.
For a small team, tiny timing tweaks like this are often the cheapest improvement available.