Proactive Loop
Background intelligence that proactively suggests and takes actions based on context.
Overview
The Proactive Loop is Yukkai's background intelligence system. Instead of waiting for you to ask, it continuously monitors your tasks, schedule, memory, and context to surface relevant alerts and recommendations at the right moment.
Think of it as a quiet assistant that watches everything going on — upcoming calendar events, overdue tasks, changing conditions — and nudges you when something deserves your attention. You can simply read the alert and dismiss it, or mark it as acted-on so Yukkai knows you've handled it.
Good to know: The Proactive Loop is separate from the WatchList. The WatchList monitors specific external data sources you define (stocks, weather, web pages). The Proactive Loop is broader — it analyzes your tasks, calendar, memory, and patterns to generate its own alerts.
How it works
The Proactive Loop runs on a configurable cycle. On each cycle, it performs the following steps:
- Gather context — Pulls in your active tasks, calendar events, memory snapshots, and any pending WatchList triggers.
- Analyze — An AI agent reviews the combined context to detect what needs attention: overdue tasks, schedule conflicts, forgotten follow-ups, or emerging patterns.
- Generate alerts — If the agent finds something worth surfacing, it creates an alert with a priority level (low, medium, high).
- Notify — New alerts are delivered to you as unread (pending) notifications.
- Respect limits — A daily alert cap prevents spam. If you've already received the maximum for the day, lower-priority alerts are suppressed until the next day.
Key parameters
| Parameter | Description | Default |
|---|---|---|
morning_hour |
Hour (0–23) when the morning briefing is generated | — |
check_interval |
Minutes between analysis cycles (min 5, max 1440) | — |
max_alerts_per_day |
Cap on alerts emitted per day (1–50) | — |
enabled |
Start or stop the loop | true |
How to use it
Configuration
You can tune the Proactive Loop at any time. For example, to start the loop with a morning briefing at 8:00 AM, checking every 30 minutes, with a max of 10 alerts per day:
proactive(action: "configure", morning_hour: 8, check_interval: 30, max_alerts_per_day: 10, enabled: true)
To pause the loop entirely:
proactive(action: "configure", enabled: false)
Viewing alerts
- Pending alerts — Shows all unread alerts, sorted by priority:
proactive(action: "pending")
- History — Review the full alert log (most recent first):
proactive(action: "history", limit: 20)
Managing alerts
When you see an alert, you have two options:
- Dismiss — Mark it as seen. Use this when you've read it but no immediate action is needed:
proactive(action: "dismiss", alert_id: "a1b2c3d4")
- Act — Mark it as acted-on. Use this when you actually did something in response to the alert (completed the task, moved the meeting, etc.):
proactive(action: "act", alert_id: "a1b2c3d4")
Tip: Useactrather thandismisswhenever you took a concrete action. This helps Yukkai learn which alerts lead to real follow-through and improves relevance over time.
Triggering a manual cycle
If you don't want to wait for the next scheduled cycle, you can force an immediate analysis:
proactive(action: "run_cycle")
This runs the full analysis pipeline and returns only new alerts (ones not already surfaced).
Examples
Morning briefing
Configure the loop to deliver a morning briefing every day at 7:00 AM, with checks every 45 minutes and a generous daily cap:
proactive(action: "configure", morning_hour: 7, check_interval: 45, max_alerts_per_day: 15, enabled: true)
The morning briefing typically includes:
- Today's calendar overview
- Overdue and due-today tasks
- Any WatchList triggers that fired overnight
- Relevant memory-based reminders
Workday focus mode
Set a tighter loop during work hours — shorter intervals, lower alert cap to reduce noise:
proactive(action: "configure", morning_hour: 9, check_interval: 20, max_alerts_per_day: 5, enabled: true)
Weekend mode
Reduce frequency and alerts on weekends:
proactive(action: "configure", check_interval: 120, max_alerts_per_day: 3, enabled: true)
Tips
Don't set the interval too low
While the minimum is 5 minutes, extremely frequent cycles can generate repetitive alerts and consume resources. A good starting point is 30–60 minutes for most users.
Let the morning briefing do the heavy lifting
The morning briefing is the single most useful output of the Proactive Loop. It consolidates everything you need to know into one digest. Make sure morning_hour aligns with when you start your day.
Use act to improve relevance
Every time you mark an alert as act (rather than just dismiss), Yukkai learns that this type of alert leads to action. Over time, this feedback improves alert quality and reduces false positives.
Combine with WatchList for external monitoring
The Proactive Loop handles your internal context (tasks, calendar, memory). For external data — stock prices, weather changes, web page updates — set up WatchList entries. The Proactive Loop will incorporate WatchList triggers into its analysis, giving you a unified alert stream.
Check history to audit
Use history periodically to review past alerts. If you notice a pattern of low-value alerts, adjust max_alerts_per_day or consider whether your task/schedule data needs cleaning up.
Disable when you need quiet time
Running a focused work session? Temporarily disable the loop:
proactive(action: "configure", enabled: false)
Re-enable it when you're ready to receive alerts again. No alerts are lost — the loop will pick up where it left off on the next cycle.