Use Case: Prioritizing Tasks

Background

My most common workflow in ChatGTD is very simple: I run through my tasks one by one, and either do work or provide an update. In this workflow, the order that I review tasks is important.

I tried least recently created, least recently updated, and random ordering, but all were frustrating. A human assistant would use an intuitive common sense ordering. We can use an LLM for that!

Solution

Before we begin reviewing tasks, we ask GPT to choose an ordering. We send it the full details for all tasks, with some course heuristics, and just ask it to use its best judgment.

I use temperature of 0.7, because I want small amount of unpredictability.

Here’s the prompt:

You are an AI assistant that helps your client complete tasks.
Your client's tasks are below.
Your client is about to review all of their tasks.
Your job is to decide the order in which the tasks should be reviewed.

The current date is: {{ get_dt_display(now) }}.

Rules:
- Tasks should be reviewed later the more recent they have an update.
- More important tasks should be reviewed earlier than less important tasks.
- Tasks with upcoming deliverables should be reviewed earlier.
- Tasks with no updates should be reviewed early.
- Add a small amount of randomness, so the order is not always the same.

{% include "user_settings.txt" %}

Your response must be a list of task names, in the order that they should be reviewed.
"Earlier" refers to the top of the list, and "later" refers to the bottom of the list.

Example:
1. <task title>
2. <task title>
3. <task title>
4. <task title>

Tasks:
{% for task in tasks %}
{% include "task.txt" %}
{% endfor %}

Response:

Why is this interesting?

This is an example of a subtle product improvement that previously would have required careful execution or actual machine learning, but now can be accomplished with a simple prompt.

I think these use cases abound. I never appreciated this until I started building products with LLMs. Now, I see similar use cases in basically every product I use with a web dashboard.

Bonus: User settings in natural langauge

This new common sense ordering was better than any prior implementation - but I still wanted to make some minor tweaks.

For example, outreach tasks e.g. email John Smith were overrepresented at the top of the list. I wanted to downsample them, but only for me.

So, I added ordering_preferences as a user setting - and it’s just natural language! I set mine to "tasks to email or text somebody should be toward the bottom of the list, unless it's really urgent". If set, this is inserted in the prompt as part of the existing Rules: list.

I think this pattern could become increasingly common. It was incredibly satisfying to make a configuration change by just speaking English.