My Anti-GTD Todoist Setup: Flat, Fast, and Review-Free

How I run client work, side projects, and life in Todoist without GTD, weekly reviews, or nested hierarchies. A flat, fast setup that survives real work instead of theory.
My Anti-GTD Todoist Setup: Flat, Fast, and Review-Free
Photo by Jakub Żerdzicki / Unsplash

My problem with GTD and why Todoist nearly failed for me

I tried to do Getting Things Done properly. Contexts. Projects. Weekly reviews. The whole religion.

It looked beautiful on paper. Then actual work showed up. Client calls, half-finished experiments, baseball practice, tax stuff. The GTD stack turned into a guilt engine. Every weekly review felt like cleaning a teenager's room with a teaspoon.

Todoist did not help at first. I went full hierarchy. Projects inside projects, labels on everything, custom filters, priorities, recurring reviews. I spent more time tuning the system than doing the work.

So I did the opposite. No hierarchy. No weekly review ritual. No complicated labels. Just a flat, slightly opinionated structure that can survive busy weeks without rotting.

This is how I run client work, side projects, and life inside Todoist with almost no maintenance. It is an anti-GTD system. I treat it like a dumb capture bucket with a few sharp edges, not a productivity religion.

The core rule: Todoist is not my second brain

My first mental shift: Todoist is not allowed to be smart. It is only allowed to be obvious.

If a system needs a weekly review to stay useful, I think it is fragile by design. My weeks are not stable enough for that. Sometimes I have a clean Friday afternoon. Sometimes I drag myself to bed after shipping a client build at 1:30 a.m. There is no guarantee.

So I designed the setup as if I will never review anything on purpose. If I get time to clean things up, great. If I do not, the system still works.

That means:

  • No nested projects
  • No complex label schemes
  • No recurring “review” tasks that I will ignore after week three
  • No reliance on custom filters to find critical work

Todoist holds three things only:

  • Stuff I said I would do for someone else
  • Stuff that will hurt if I forget it
  • A few breadcrumbs for what Future Me could work on next

Everything else lives somewhere better. Notes go into a notes app. Specs go into Notion or a repo. Ideas live in a messy document. I keep Todoist as a traffic controller. Not as a content library.

The flat structure: three project buckets and that is it

I run almost everything out of three top-level projects in Todoist:

  • Client Work
  • Side Projects
  • Life Admin

No subprojects. No per-client nesting. I tried that. I always ended up with ghost projects from old clients and dead ideas. The overhead was real.

Instead I use a simple naming convention on tasks themselves:

  • Client Work: [ClientName] Short description of task
  • Side Projects: [ProjectCode] Short description of task
  • Life Admin: plain language, no tag, because I only have one life

Examples from my actual list right now:

  • [ACME] Implement scroll-based animation on pricing cards
  • [ACME] Prepare Loom walkthrough of CMS workflow
  • [LAB] Spike new microphone visualiser in WebGL
  • [RL.COM] Edit post on chronic fatigue experiments
  • Call dentist about rescheduling

The bracket tags are enough. I can search [ACME] and see my world for that client. No project hierarchy needed. It stays flat and stupid.

Dead-simple prioritisation: one label, one color, that is it

I tried the whole priority system that Todoist pushes. P1, P2, P3, custom filters. It turns into a small RPG where every task gets a class and a weapon.

Now I use this:

  • Todoist's built-in priorities, but only P1 and P2
  • One label: @waiting
  • No other labels allowed

I think too many labels are just anxiety decoration. You get the feeling of control without any real leverage. One label forces me to be honest: either the ball is in my court or it is not.

My rules:

  • P1 means it has a real external deadline or a hard consequence.
  • P2 means it moves the needle for something I care about, but nobody will scream if it slips.
  • Everything else is unprioritised noise that I will pull from if I have energy.

The @waiting label is my “I sent the thing, now I am blocked” list. That is where client approvals, content reviews, and onboarding access sit.

If I had to delete everything from Todoist except one filter, I would keep Tasks with @waiting. That list has saved me more client relationships than any fancy GTD setup.

No weekly review. Just two lightweight passes.

I think the weekly review concept is overrated for freelancers and builders who live in messy time. It assumes a clean weekly cadence that rarely exists.

I replaced the weekly ritual with two much smaller passes that take minutes, not hours.

1. The Daily-ish reset (3–5 minutes)

I do this on most days, but I do not break the chain if I miss it. The system survives.

Steps:

  • Open Today view.
  • Anything that obviously will not happen today gets pushed to the next realistic day.
  • If I move a task more than twice, I either delete it or drop its priority.

No emotional stories. No journaling inside Todoist. I just answer one question: “What will actually happen today, given my calendar?”

This keeps the Today view from turning into a museum of regret.

2. The Weekly-ish horizon check (10 minutes, max)

Roughly once a week, usually Sunday night or Monday morning, I do a very blunt pass. It is not a ritual. It is a quick sanity check:

  • Filter: all P1 across all projects for the next 7 days.
  • Ask: “Is this list terrifying?”
  • If yes, I either renegotiate deadlines or strip scope immediately.

Then one extra step that replaced the whole GTD review for me:

  • Scan Side Projects and mark two tasks as P2 for the week. Only two.

That tiny constraint keeps my side projects from dying without turning the whole review into a ceremony. I know exactly what “moving the side-project needle” means this week.

How I capture work without losing context

Flat systems have a real risk. If you just throw tasks into a bucket with no structure, everything becomes mush. You lose context and then you stop trusting the list.

My fix is simple: I never capture a naked verb. I always capture a minimum unit of context directly inside the task name.

Bad tasks that I delete on sight:

  • Landing page
  • Fix bugs
  • Write article

Good tasks in my system look like this:

  • [ACME] Fix mobile overflow on pricing table (safari)
  • [LAB] Implement beat detection spike for audio-reactive shader
  • [RL.COM] Draft section on flat Todoist structure

I treat the task title like a commit message written for Future Me. If I need more detail, I drop a link into the task comment that points to the real home of the work. For example:

  • GitHub issue for a bug
  • Notion spec for a feature
  • Google Doc for a post

Todoist holds the pointer. The heavy context lives elsewhere, where it can breathe. This is how I can keep three projects in one flat list without getting lost.

Calendar first, then Todoist fills the gaps

If my calendar is full, Todoist is not allowed to demand extra heroics.

I have a hard rule. The calendar reflects reality. Todoist negotiates with the calendar, not the other way around.

My planning flow looks like this:

  • Block out non-negotiable time first: client calls, coaching, family stuff, recovery.
  • Look at the gaps that remain.
  • From Todoist, drag P1 and P2 tasks into those gaps as fake “time blocks”.

I do not schedule every minute. I just put anchors in place. For example:

  • 10:00–12:00 [ACME] Build pricing animations
  • 14:00–15:00 [RL.COM] Edit Todoist post

If the calendar gets blown up by a surprise client fire, the rule is simple. I move or renegotiate tasks in Todoist based on what the calendar now looks like. No guilt. Just a new plan.

This keeps Todoist from becoming a fantasy backlog of “ideal me”. It is directly attached to the messy real-week version of me.

How I avoid backlog rot without reviews

Backlogs grow until they become embarrassing. Then people declare backlog bankruptcy and start again. I think that pattern is a symptom of too much structure, not too little.

I use a few small constraints to keep the flat setup from decaying.

1. Hard cap on visible someday items

I do have “someday” tasks, but they never sit in a separate project. They live in the same three projects but without a due date and without a priority.

My rule: if I scroll more than one screen in a project, I delete or export something. Export usually means copying a group of ideas into a doc for later thinking.

This forces me to be honest. If a side project idea sits there untouched for three months and annoys me visually, I let it go. Todoist is allowed to forget on my behalf.

2. Aggressive deletion of zombie tasks

If I reschedule the same task three times, I treat that as a bug in my thinking, not a failure of discipline.

I do one of three things:

  • Delete it, if nobody else cares.
  • Break it into a smaller first step that I can actually do this week.
  • Move it to a note system as an idea instead of pretending it is an actionable task.

This is why the system can survive weeks where I barely touch it. The cruft gets burned off whenever I come back to reality.

3. No templates for projects

Every time I tried to build project templates in Todoist, I ended up with fake work. A long list of pre-filled tasks that did not match the actual project.

Now I do not template inside Todoist at all. If a process really earns a template, I write it up once in a doc, then link that doc in a single Todoist task like:

  • [ACME] Run launch checklist (link)

Todoist stays small and sharp. The heavy, reusable process lives where it can be edited without clogging up the day-to-day flow.

Real examples: how a typical week feels inside this setup

Here is a concrete sketch of how this looks when the week gets messy.

Monday morning. I open Today and see:

  • [ACME] Implement scroll-based animation on pricing cards (P1)
  • [ACME] Send invoice for phase 2 (P1)
  • [RL.COM] Draft Todoist post structure (P2)
  • Call insurance about physio reimbursement

I also have three calls already on the calendar. I know I probably have a 3–4 hour block of real build time, plus a couple of 20-minute admin windows.

I drag “scroll-based animation” into a big block. I drop “send invoice” and “call insurance” into small gaps. The Todoist list shrinks. I do not care about the rest yet.

Tuesday, a client adds an “urgent” request. I capture it as:

  • [ACME] Debug flicker on hero animation in Firefox

I set it as P1 for today, delete one of the less important Life Admin tasks, and move the blog post drafting to tomorrow. No ceremony. Just trade-offs.

By Thursday, my side-project tasks are untouched. I open Upcoming, see those P2 tasks still sitting there, and ask if I still care. If I do, I block 90 minutes on Friday. If I do not, I drop them back to unprioritised and move on.

No weekly review session. Just small local decisions that keep the system clean enough.

Why I think hierarchies fail under real load

Todoist makes nested projects and labels feel powerful. On quiet days they are. You can organise your world into stacks of nice folders. It scratches the architect itch.

But under real load, I think hierarchies hurt more than they help:

  • You hesitate when capturing because you have to decide where something lives.
  • You end up with stale subprojects that feel too official to delete.
  • Important tasks hide in tidy corners that you never filter for.

Flat systems force one question: “What actually matters today?” They give you less structure but more contact with reality.

I am not claiming this is universal truth. If GTD and detailed nesting make you productive and happy, keep them. For my mix of client work, experimental projects, coaching, and life admin, the overhead was killing momentum.

My Todoist setup now is boring on purpose. Three projects. One label. Two priority levels that mean something. Calendar first, tasks second.

It is not pretty. It survives.

Subscribe to my newsletter

Subscribe to my newsletter to get the latest updates and news

Member discussion