Gmail Zero: Beeminding Your Inbox

Saturday, September 22, 2012
By dreeves

GmailZero logo

UPDATE 2015: Big improvements to GmailZero!

Two years ago, when I still had a day job and Beeminder was just a side project, I wrote about my epic struggle with email:

My email is dysfunctional. I keep things in my inbox because I can’t afford for them to go out of sight, out of mind — but then that’s exactly what happens. They get buried deeper and deeper in my inbox by all the other messages I delusionally think I’m going to deal with.

That was the preface of a Messy Matters article, Inbox Zeroer, in which I proposed that we all declare email bankruptcy and stop adding things to each other’s task lists willy nilly. No, but seriously, I laid out a wish list for some tools to help me reach Inbox Zero, namely, email snooze, re-ping, and auto-expire. Soon after writing that, I switched from Pine to Gmail and eventually implemented email snooze and re-ping using Google Apps Script. [1]

Guess what I found out? The fundamental problem wasn’t my email processing tools, it was my damn brain. Having an amazing IDE with built-in refactoring tools and a Turing-complete macro language won’t just make you produce code. [2] And as great as email snooze and re-ping are (they’re pretty great) they don’t solve your fundamental procrastination problem.

This sounds like a case for — Beeminder!

Of course “inbox size” is a graphable number and you can beemind it like anything else, but long-time friend of Beeminder, David Yang [3], convinced us to integrate with Gmail to automate the reporting. (His argument was very persuasive: he hacked up a prototype for us.)

How it Works

Beeminder periodically checks your inbox throughout the day and records the number of Read messages. The graph plots only the minimum count of the day, so that you just have to hit the low point and stay there long enough for Beeminder to pick up on it. This lets you make slow forward progress toward inbox zero without having to declare email bankruptcy. Plus, it makes you seem like an amazingly thoughtful person when you actually do pick up that email thread from two years ago and respond.

GmailZero only works for people who (try to) diligently archive messages. It doesn’t count Unread messages against you since you don’t have control over those. For example, the 1000 messages you get on vacation? Not a problem — we don’t count them until you get home and start reading through them.

Ignoring unread messages is a double-edged sword, of course. One user reports that he finds himself marking things as unread in order to avoid Beeminder’s sting (or having to deal with the emails, unclear which!). Another marks a batch of unread messages as read at the end of each day, putting her on the hook to deal with them tomorrow.

Teh Codez

If you’ve been holding back because the permissions GmailZero needs skeeve you out [4] or because you have an incompatible email strategy, or if you’re just looking for an excuse to use our new API, you can hack up your own version of it!

Here’s the relevant excerpt of Beeminder’s own Ruby code to count up read messages. Enjoy!


[1] My code is here — snooze.js — and I intend to blog about it in more detail later. UPDATE: Blogged on Messy Matters.

[2] Non-nerd analogy: an amazing word processor doesn’t make you produce prose.

[3] This was before David took off for Y Combinator and founded Yealthy.

[4] Frustratingly, Google doesn’t give fine-grained enough permissions for us to ask just to see stats about your email. It’s all or nuthin’ with them. But we’re not actually reading your email, we swear it!

Tags: , , , , ,

  • Patrick Brinich-Langlois

    Is this a one-time fix? Or can you set it up so that it continues to monitor you after you get the number of read messages down to a reasonable number?

  • Daniel Reeves

    You can have it keep you below a threshold indefinitely! Here’s mine:

  • Pingback: Zeno Polling | Beeminder Blog()

  • Pingback: Beehind the Curtain: Secrets of our Support Success | Beeminder Blog()

  • Pingback: Beeminder ♥ RunKeeper | Beeminder Blog()

  • Pingback: Beeminder Turns Two! | Beeminder Blog()

  • David MacFarlane


    So, I’ve got a few questions. You get the benefit of a yellow road, right? I.e., if my goal is 10, I have some buffer around that and can likely go up to 20? But, this yellow road isn’t dynamic like weight-loss, right? I mean, there’s no rule that if you are on the right side one day, you can’t lose tomorrow.

    Also, is it stay below the limit at ALL TIMES? If I spike during the day, do I have the ability to get under for end of day?

    Finally, the road dial works a little different for this, doesn’t it? To change your threshhold, you have to input a target and a close date, is that right?


  • Daniel Reeves

    You don’t have to stay below the road at all times. It takes the minimum for the day.

    The answer to the first question is kind of in flux but hopefully given the answer to the 2nd question it’s not critical. I actually think we ought to have no buffer like with weight loss. So it’d be more obvious exactly what number you have to be at every day. But in the meantime the “hard cap” number (and the “now” number in the “goal progress” sidebar) should tell you what you need to know to stay on the road.