Step 1 — Load Context in Parallel
Run all of the following simultaneously:- Calendar: Fetch tomorrow’s events. For each event extract: time, title, attendees, type (internal / external), duration.
- Memory: Run the following searches simultaneously:
- “current week priorities goals and planning”
- “user’s scheduling preferences — when they prefer to work, start time, end time”
- “user’s deep work preferences — preferred time of day, block length, focus conditions”
- “user’s lunch and meal preferences — timing, duration, break habits”
- Tasks (if connected): Check if Todoist or Google Tasks is connected. If yes, fetch all tasks from available lists including comments. If not connected, skip silently.
- If scheduling preferences are found → use them to anchor the day’s start/end time and slot placement
- If deep work preferences are found → use preferred time of day and block length when building the schedule
- If meal/break preferences are found → use preferred lunch time and break durations instead of defaults
- If nothing is found for any preference → silently fall back to defaults (8hr day, deep work stacked in morning, 1.5hrs meals/breaks). Do not tell the user what’s missing.
Step 2 — Ask Two Questions
Before building the plan, ask:- “What do you want to work on tomorrow? Anything specific you want prioritised?”
- If memory has no clear current-week goals or priorities → also ask: “What are your top goals or priorities this week? I want to make sure the plan reflects what actually moves the needle.”
If the user mentions any scheduling, deep work, or meal preferences during the conversation (e.g. “I usually start at 9am” or “I don’t do deep work after 3pm”) → store them in memory immediately for future runs.
Step 3 — Compile the Task List
Build the list of things to plan around from all available sources: Always include:- What the user said in Step 2 (treat this as highest signal)
- Any tasks or priorities found in memory from recent conversations
- Tasks that are overdue, Priority 1, Priority 2, or due tomorrow
- Fetch comments on each task for additional context
Step 4 — Estimate Task Duration
For each item in the task list, estimate time required based on:- Task title and description
- Keywords (e.g. “review”, “write”, “fix”, “call”, “research”)
- Comments (if available from task tool)
- Memory of similar tasks done in the past
Step 5 — Calculate Available Time
Total day = 8 hours Existing meetings = [sum from Step 1] Buffer (adhoc) = 20% of (15hrs - meeting hours) Meals + breaks = 1.5 hours (lunch + dinner + short breaks) Available for work = 15hrs - meetings - buffer - meals If total task time exceeds available time → flag overload (see Output Format).Step 6 — Build the Schedule
Apply these rules when placing tasks: Deep work rules:- Stack deep work slots together — never fragment them across the day.
- Keep 30 mins before any external meeting free.
- Keep 15 mins after any external meeting free.
- External meetings can be back-to-back — that’s fine.
- In the first block of the day (before lunch), prioritise high-priority tasks that take less than 1 hour. Goal: get a few quick wins done before midday.
- Include 1.5 hrs total spread across lunch, dinner, and short breaks. Place at natural breakpoints — never in the middle of a deep work slot.
- Keep 20% of available time unscheduled. Do not fill it with tasks.
Step 7 — Assess the Plan (Be Blunt)
Before presenting, review what’s been prioritised against:- What the user said they want to work on (Step 2 input)
- Current week goals and priorities (from memory or Step 2 input)
- A lower-priority task is taking significant time while a higher-priority one is deprioritised
- Admin or reactive work is crowding out high-leverage work
- Something that feels productive but doesn’t move the needle this week
Step 8 — Present the Plan
Show the full day as a structured list. Then ask for confirmation or adjustments before doing anything on the calendar. 📅 TOMORROW — [Date]🗓 Existing Meetings ([X] hrs committed)
- [Time] — [Title] ([Internal/External])
🧠 Proposed Schedule
- [Time] — [Task / block name] (~[duration]) [Priority tag if applicable]
- [Time] — 🍽 Lunch break (45 mins)
- [Time] — [Task / block name] (~[duration])
- [Time] — ☕ Short break (15 mins)
- [Time] — [External meeting name] (prep 30 mins before is kept free)
- [Time] — 🍽 Dinner break (30 mins)
- [Time] — [Deep work block: Task A + Task B] (~[duration])
📊 Time Summary
- Meetings: [X] hrs
- Planned tasks: [X] hrs
- Meals + breaks: 1.5 hrs
- Buffer: [X] hrs (20%)
- Total: [X] / 15 hrs
