Workload estimations with OmniFocus?

New to OmniFocus and loving it.

I’m wondering if there exist any approaches - by Omni or third parties - to turn a to-do list with durations into a kind of workload estimating tool.

Meaning, you define a typical work schedule - say, eight hours per day, six days per week - and the tool I’m thinking about would try to fit your list of to-do’s (all with durations defined) into the schedule and distribute them across the needed number of work days.

This would allow you to get a rough estimate of when (i.e. on which day) a given to-do actually has a chance of getting done.

If you edit your to-do list and add items to it, the estimate would have to be recalculated.

I’ve searched the forum for a feature like this, but it’s sort of hard to find the correct keywords.

If this doesn’t exist yet, I might give it a shot, say as a simple web app that accepts an OmniFocus export to work on…

I’ve had this problem and I’ve learned to trust my own instincts instead of letting an algorithm try to figure it out for me.

I have a Keyboard Maestro macro that sets OmniFocus in the left side of my screen and Fantastical in Weekly view on the right side. This allows me to see my schedule for the upcoming week as well as a list of available tasks for me sorted by context (errands, house, office, computer) or by estimated duration.

I can manually drag and drop an OmniFocus task into a time block in Fantastical to set a “do” time for me. I take into account if it’s a brain-dead task that I can do in my zombie state (the mid-afternoon crash where I’m just feeling lethargic) or if it’s an intensive task where I need to really think (writing, scripting, spreadsheet work). I spread it out over the week.

I learned which hours of the day are my “power” hours where I can do brain-intensive work. I have an idea of when my zombie brain kicks in. Then I know I have preferred dates to do things based on my schedule. Personally, Wednesdays are typically free and that’s when I am able to run errands or to call clients.

I need to take into account life’s daily interruptions (my kid fell down in gym class and injured herself thus requiring me to drop everything and pick her up to go to the medical clinic) as well as needing buffer time between meetings and other life maintenance tasks. Or I might have a walk-in customer who can take anywhere from 5 minutes to an hour. I wouldn’t know unless I’ve dealt with the customer before.

I usually only plan one big thing to do in the morning and one in the afternoon. Life is too chaotic for me to just let a plug-in or ChatGPT decide for me what to do.

How about just blocking out a big time block for related tasks? I have a lot of house cleaning tasks that can be grouped into a 1-2 hour time block. I have an errands time block to include the shopping and any tasks outside of my home or office. I have another “computer” time block to handle the emails, bill paying, and any other task needing my computer.

I don’t know if a plug-in would help with figuring out how much buffer time I need. After a meeting, I need at least 10-15 minutes to help me process any meeting notes while it’s still fresh before heading off to my next task.

Can you just designate certain days with themes? Monday is computer time, Tuesday and Thursday are Big Rock project time where I can focus on a main project. Wednesday could be a free day scheduled just for meetings and miscellaneous tasks. Friday is probably a good time for me to wrap up any work still unfinished and then pre-plan next week’s schedule.

I’ve heard of some folks that like to use ChatGPT to set up something. Using prompts such as “I use OmniFocus and I want to plan my week’s schedule. Here’s a list of tasks that I want to do…” Then provide more information about yourself such as “my power hours to do intensive work are between 1 pm and 4 pm. Reserve work that requires a lot of brain power for that time. My zombie hours are from 12 pm to 1 pm after I finished my lunch. I like to do errands on Wednesdays.”

That might give ChatGPT context about your personal schedule. Personally, I’m wary of giving that kind of info to ChatGPT and I’d rather do it myself.

But if you do find something, please let us know!

3 Likes

Thank you - this is great food for thought if I end up going the manual route! I’ll take a peek at Fantastical.

My situation is that I have clients working in a, um, dynamic way - i.e. often urgent tasks arise with zero notice which disrupt the entire to-do list.

If I had a way to quickly find out what such a disruptive new task means for my entire schedule, including other tasks I do for the client - so I could say “yeah ok I can do this, but it means that task x will take at least until Wendesday instead of Monday as planned” that would be a lifesaver.

I’ll be sure to post here if I find something (or manage to come up with something).

I’d definitely be looking for a simple, standalone program or script to do this - I wouldn’t want to use ChatGPT for this either!

3 Likes

There’s no point in trying to fill up the day because of possible interruptions. I just plan one big thing in the morning and one big thing in the afternoon. Those are the two most important things (MITs) to work. I have a list of other tasks that I’d like to squeeze in. This is on an index card. I try to schedule another 1-2 into today if I can. The rest goes to tomorrow.

If a plug-in tries to schedule the whole day, just one interruption will break the schedule like a cascade of dominoes.

It’s not about how many things get done. It’s about “did I get the most important things done??

2 Likes

This is true re planning the current day but in my case not necessarily for a workload potentially stretching weeks into the future!

But, there may also well be a reason why this does not exist yet. I’ll try my hand at building a solution if I can, and report back whether it survived contact with reality 😁

1 Like

Your general gist of the to-do list would be hard to identify priorities to put what should be at the top. If the items have due dates, you can use the Forecast view to see what is coming up this week and just complete the tasks in order. The durations can help you see if you are overloaded & you can use a script to calculate the total remaining.

I do use estimated durations for something not exactly along the lines of what you are asking, but to help me with prioritizing work. I can look at tasks that are due over the next period (week or month for example) and using a script calculate the total duration of those tasks. Since I really should prioritize tasks that are due over those that have no due date, this gives me a view of the workload. If it’s high, I know I can’t really do tasks that without a due date and need to focus on those. But if it’s relatively low, I can grab other tasks and make progress on those projects without a due date.

The challenge is if you have relatively few number of tasks in OF, something like what you are asking about makes sense. But when you have thousands of tasks across dozens of projects, prioritization in an automated way becomes tough. For example, in my DB I have >3400 tasks still remaining. I know I’m not finishing all of them this week, but I put EVERYTHING in OF, so my weekly reviews help with prioritization.

1 Like

Could you give more info about this script please?

Perhaps this?

1 Like

In general, the Omni scripting libraries give a lot of power to do most ANYTHING you’d like. Full documentation is available here: OmniFocus & Omni Automation

Many people in the community have made versions of their scripts that are generalized available like the Estimate Total Time. That particular one is nice since you simply select the tasks you want to include & it will tell you the total time. But if your use case needs a more consistent way of selecting the tasks to include, you can always modify the script. For example, maybe you grab all tasks due in the next month or all tasks in certain projects or any other selection that makes sense for you.

2 Likes

Perfect, thanks both @nielsm and @wilsonng