What’s actionable right now
Every tracked item has a rate limit - a window you cannot act inside. This panel keeps the clocks so you don’t have to, and stays quiet until something clears.
Tracked items
Sorted by time to clearEvery item above is a synthetic demo row or a visitor-created row stored in Supabase. No third-party account is connected. Seed snapshot: 2026-08-01 UTC.
Real data
Track a new recurring action
This writes a real row to the tracked-items table - it becomes part of the ground truth the agent reasons over immediately.
Agent
Check in
Ask in plain English. You get a prioritized list of what is actually actionable.
No check-in yet. Ask a question to get today’s action list.
Beyond the demo
The Agent Pattern
What you just used is the narrowest possible instance of a pattern: deterministic date-math computes ground truth, and a strands.Agent wired to Gemini through Strands’ model-agnostic provider layer is handed that computed state as its only source of facts, then reasons over it in plain English. The math never guesses. The model never invents. Two demo rows and a cooldown clock are one instance of that shape — here are others it fits without changing the architecture, only the schema.
Content licensing re-clearance
A catalog of licensed tracks or clips each carries its own re-clearance window after last use. Swap the tracked-item schema for license_id, exclusivity_hours, last_cleared_at and the same compute_statuses date-math tells you exactly which titles are clear to re-license today.
API rate-limit fleet dashboard
Instead of cooldown_hours per marketplace listing, track per-integration rate-limit reset windows across a dozen third-party APIs your product calls. Same ready/waiting computation, same check-in box: "what can I call right now without a 429?"
Compliance re-audit scheduling
Regulatory or internal audits recur on fixed intervals (quarterly PCI scans, annual access reviews). The last_action_at / cooldown_hours pair becomes last_audit_at / audit_interval_hours, and the agent answers "what's overdue for re-audit" instead of "what's ready to publish."
Firmware/config rollout throttling
Staged rollouts often enforce a minimum soak time between waves. Track each fleet segment's last-rollout timestamp and required soak window; the same grounded check-in tells an on-call engineer which segments have cleared soak and are safe for the next wave.
Warranty/contract renewal windows
Renewal-eligible contracts open a window before expiry. Model each contract as a tracked item with a negative-direction cooldown (window opens rather than closes) and ask the agent which accounts are inside their renewal window this week.
Honest roadmap
Now vs. next
| Now | Next |
|---|---|
| Cooldown state lives in one Supabase table, one shape (cooldown_hours + last_action_at). | Per-item-type schemas (rate limits, audits, rollouts) behind a shared status-computation interface. |
| One Gemini model call per check-in, no caching, no rate limiting on the endpoint. | Response caching keyed on statuses hash, plus per-IP throttling before this leaves demo scale. |
| Agent reasons over the full item list on every question. | Retrieval step that filters to relevant items first, so the context stays small as the tracked set grows past a few dozen rows. |
| Single check-in endpoint, pull-based (person asks, agent answers). | A scheduled Strands run that proactively surfaces newly-ready items instead of waiting to be asked. |
| "agent_ok: false" fallback returns raw statuses with no explanation of why the model call failed. | Structured error surfaced in the UI (quota exhausted vs. network vs. malformed response) so a real operator knows whether to retry. |
This is just the beginning
See the code. Fork it. Make it yours.
The whole system is two files: pure date-math in api/_lib.py and a Strands agent wired to Gemini instead of Bedrock. No AWS bill, no Bedrock model-access request — just a free Gemini key and your own schema.