Let your Oura readiness score reshuffle your Todoist day
Every weekday at 7am, your recovery decides the plan: hard work when you have the capacity, lighter admin when you do not.
Every weekday at 7am in my local timezone, look at how recovered I actually am and decide what I should work on today. Use a cron trigger for this, since it needs to run on a fixed morning schedule.
Step 1. Read this morning's numbers from Oura. Use List Daily Readiness and List Daily Sleep, both scoped to today's date. Take my readiness score, and use the sleep score plus the readiness contributors (HRV balance, resting heart rate, body temperature, previous night's sleep) as supporting evidence for the explanation you will give me later.
Step 2. Pull my open tasks due today from Todoist with List Tasks. Scope this to a single project so the workflow never touches my personal or shared lists. Default that project to my main work project, and make it easy for me to change.
Step 3. Read the task titles and classify each one as either deep work (writing, designing, analysis, strategy, anything needing sustained focus) or light admin (approvals, quick replies, expenses, scheduling, filing, short calls). Judge this from the actual wording of each task. If a title is too vague to classify with confidence, treat it as light admin and say so in the summary rather than moving it.
Step 4. Branch on the readiness score. If readiness is 80 or above, pick the single hardest deep work task and promote it to top priority using Update Task, then tell me to do it first while I have the capacity. Note that Todoist's API represents the highest priority as 4, which shows up as P1 in the app, so set it to 4. Change nothing else.
If readiness is between 70 and 79, leave my plan completely untouched. Make no writes at all. This is a normal day and I do not want the workflow fiddling with it.
If readiness is below 70, rebalance the day. Use Update Task to move the most cognitively demanding items to tomorrow, and use Update Task to pull lighter admin work forward to today so the day still moves without wrecking me. Be conservative: reschedule at most the two or three heaviest items, never the entire list. Also use Create Task to add exactly one evening wind down reminder for tonight, and only on these low readiness days.
Step 5. Finish by sending me a Slack direct message with Send a Message. This is the accountability step, not decoration. Because this workflow edits my real task list, the message must always state exactly what changed: every task moved, what it was changed from and to, anything newly created, and the readiness number and reasoning behind each call. Explicitly note what you left alone too. Write it so I can scan it in ten seconds and reverse any wrong call before I start work.
Guardrails. If Oura returns no readiness data for this morning, for example because I did not wear the ring or it has not synced, make no changes at all and send me a Slack message saying the workflow ran but stayed hands off, and why. Never guess a readiness score. Never move a task that is already overdue, and never move the same task to tomorrow two days running, since that means it will never get done. Only ever touch tasks in the one project I scoped it to.
Knobs I will want to change: the 80 and 70 thresholds, since the right cutoffs depend on my personal readiness baseline; which Todoist project the workflow is allowed to operate on; the 7am run time; and whether the summary goes to a direct message or a private channel.
Example output
What does this prompt do?
- Checks this morning's Oura readiness and sleep scores before your day starts.
- Reads everything due today in Todoist and sorts the genuinely demanding work from the light admin.
- On a strong recovery day it moves your hardest task to the top so you hit it while you are sharp. On a rough day it pushes heavy items to tomorrow, pulls easy wins forward, and adds an evening wind down reminder.
- Sends you a Slack message spelling out every single change and the reasoning, so you can undo anything before you start work.
What do I need to use this?
- An Oura Ring with an active Oura membership, which is what makes your daily scores available
- A Todoist account where today's tasks have reasonably descriptive names and due dates
- A Slack workspace where you can receive a direct message
How can I customize it?
- Move the cutoffs. 80 and 70 are sensible defaults, but the right numbers are the ones that match your own readiness baseline.
- Point it at a single Todoist project such as Work, so personal errands and shared lists stay untouched.
- Change the 7am timing, or send the summary to a private channel instead of a direct message.
FAQs
What happens if I did not wear my ring last night?
Do I need a paid Oura membership?
Can I undo what it moves?
How does it know which tasks are hard?
Will it touch my tasks on weekends?
Related templates
When someone leaves, we check which shared passwords they used in their final months and post a ranked rotation list to your security channel.
Every Monday, check every S3 bucket for public exposure, missing encryption and weak backup settings, then get the risks ranked in Slack.
Twice every weekday, the conversations from your social inbox land on the right HubSpot contact timelines, with a Slack recap for sales.
Every morning, find the addresses that hard bounced or filed a spam complaint, update the matching HubSpot contacts, and post a short Slack recap.
Every weekday at 4pm, spot the threads that went quiet, stage a ready-to-send nudge in your mailbox, and get a ranked Slack recap.
When you merge a fix in GitHub, this agent checks the matching dead-letter queue, replays the failed messages, and reports back on the pull request and in Slack.
Stop forcing deep work on four hours of sleep.
Let your recovery data set the plan each morning, then override it in a single glance.