Say “the review is on Tuesday” to most systems and they store the word Tuesday. Six days later that word points at the wrong day, and a week after that it’s pure noise. Language about time decays; the moment of speaking is the only thing that anchors it.
So Lethe resolves every temporal expression against the moment you said it, in your timezone, and stores both: the original phrasing (forever — the UI shows your words, not a bare timestamp) and the resolved instant every feature actually computes with.
Ambiguity lowers confidence — it never guesses silently
“2026-10-01” is nearly certain. “October 1” with no year infers the upcoming one and says so. A bare “Friday” is genuinely ambiguous — which Friday? — and a two-number date like “03/04” depends on where you live. The resolver never refuses and never bluffs: it resolves to its best reading and carries a visibly lower confidence, so every downstream surface can treat a shaky date as shaky.
Earning the interruption
A resolved date is what lets a reminder be honest. Only deadlines that actually resolved may interrupt you — overdue, due today, or due tomorrow, once per day, on your machine’s own clock. A thing you merely said recently never pops, because “said lately” is not “due soon,” and pretending otherwise is how reminder features become noise you learn to dismiss.
And as of today, a deadline doesn’t need to belong to a tracked goal to count — mentioning it in conversation is enough. We found that gap the embarrassing way, the night before recording our own demo. It’s in the build notes.