Your LLM doesn't know what day it is: date handling for AI tool calls
If you're building AI features into your product, your model has no idea what day it is - and it will confidently guess. Here's how to fix it.

Developer Advocate & Startup CTO
I work as a co-founder & CTO at Craftwork — I'm a founder & product builder with background in design and development.
Find me on Bluesky @mikebifulco.com, Threads @irreverentmike or Mastodon.
If you're building AI features into your product, your model has no idea what day it is - and it will confidently guess. Here's how to fix it.
Prompt caching is a prefix match: one changing byte near the top of your prompt drops your hit rate to zero. A timestamp is the obvious culprit - here are the rest.
When your prototype becomes the product your business depends on, you can't just start over. Here's how the Strangler Fig pattern let us rebuild safely.
Being wrong is unavoidable. The real damage comes from allowing a bad assumption to shape everything you build on top of it.
"You are not your user" is fundamentally good advice. It's also occasionally wrong, but in a very useful way.

Subscribe and join 🔥
My weekly newsletter for product builders. It's a single, tiny idea to help you build better products.
Once a week, straight from me to you. 😘 Unsubscribe anytime.
Get in touch to → Sponsor Tiny Improvements
Go beyond balance. Learn how text-wrap: pretty improves readability, reduces awkward breaks, and makes your UI feel more polished.
The first thing AI teaches you about coding is confidence. The second is why that's a problem. Let's talk about the Dunning-Kruger effect.
Your brain rewires itself based on what you practice. If you stop practicing hard things, you slowly lose the ability to do them.
Refactoring isn't a necessary evil -- it is the job. Why the best product teams rebuild constantly, at every scale.
Stable products still need maintenance. Defaults and shiny features quietly tax systems over time, and efficiency is a sign of craftsmanship, not penny-pinching.
Next.js Link prefetching quietly burned through 15 GB of bandwidth on my Vercel-hosted blog. Here's how I fixed it.