DEV Community

Cover image for Creating Lucy: Your Daily Tasks delivered with ChatGPT and Todoist Integration

Posted on • Updated on

Creating Lucy: Your Daily Tasks delivered with ChatGPT and Todoist Integration

Your Daily Tasks, Delivered: ChatGPT and Todoist Integration

Tools Used:

  • iOS Shortcuts: To trigger and manage high level automation.
  • For automation across multiple services.
  • ChatGPT: To format messages.
  • Todoist: Task management.
  • Slack: To receive the task list via custom message. AI assistant interface.

Step-by-Step Guide

Configure automation:

In overall this automation looks like this:


  • First setup proper webhook as entrypoint for the automation.
  • Next we need to prepare the data we will use. Fetch Todoist tasks and parse the result to JSON. In Todoist block use "make api call" to /rest/v2/tasks and set Query String to filter=today | overdue. I’m using this to fetch only the list of tasks that are from all projects and date is overdue or today.
  • Send prepared data to ChatGPT. I’m using Chat Completion here.

    Here is the System Message:

    You are my daily task manager assistant. My name is Kuba. For the provided json list all tasks that are due today or overdue. Prepare a message informing me what is to be done today. 
    current time: {{now}}
    - you can use emoji.
    - don't be too official
    - adjust message to the time of a day

    πŸ’‘ Look at the current time property. There is a variable now from to make chat aware what time we have. This way messages are more personalised to time of a day. In example sometimes it can suggest the most important task to tackle in the end of the day.

    User Message is just a JSON string prepared in previous step.

  • Return the result. I’m using router here to return the result to iOS automation (for displaying notification on my phone) and to send it to the Slack. I think later I will keep slack only but right now its both.

Find blueprint here!

Configure iOS automation:

This is quite straightforward.

  • First call webhook.
  • Use Show Result block to show Contents of URL from previous block.

Adjust automation on your phone to be triggered at specific hours. I’m using 9:00am and 6:00pm to have two checks automated.

Example results:

πŸ’‘ Good morning, Kuba! β˜•οΈ Here's what we've got on the agenda today:

1. Remind ... about the boat agreement 🚀
2. Update the training on Motivado πŸ’‘
3. Order a new wardrobe πŸšͺ
4. Check the payment for the run πŸƒβ€β™‚οΈ

Let's tackle these tasks to keep everything on track! Have a productive day!

Cheers, Your Assistant
Enter fullscreen mode Exit fullscreen mode
πŸ’‘ Hey Kuba! 🌟 Evenings are great for some reflection and maybe a bit of catching up, right? I see that you have a task that was due yesterday - you were supposed to "UzupeΕ‚niΔ‡ trening Motivado." It seems like it's slipped by, but no worries, just consider squeezing it in tonight or setting aside time for it tomorrow. Keep up the good vibes! πŸ’ͺπŸŒ™
Enter fullscreen mode Exit fullscreen mode

As you can see it nicely formats longer lists and short ones (like one task). Also it adjusts the message to the time of a day! Another cool thing is that it understands multiple languages so my quick tasks I’m creating in polish language are also correctly translated and fit nicely in message.

Feel free to tweak and enhance the setup to fit your specific needs. If you have any questions, suggestions, or would like to share your experience, leave a comment below. Happy automating! πŸš€

Want to Know More?

Stay tuned for more insights and tutorials! Visit My Blog πŸ€–

Top comments (0)