Precommitting to data points

TL;DR: Imagine you could enter “pre-commit” data points in the future. Then, if you don’t enter a real data point of at least that amount before that time, your goal derails. This post discusses what I would do with such a feature and what problems I think it would solve.

Problems I’m Having

I have several recurring problems which I think can be summarized as “Delaying on your goals until the exact nanosecond Beeminder is going to derail you causes problems.”. Namely:

  1. I have goals which cannot be completed on weekends, and some goals which cannot be completed on weekdays. If I wait until eep!, I often derail due to ineligibility.
  2. Some days I have a lot of eep!s and if I wait until midnight for all of them, there’s no hope of completing them all.

I’ve seen the following solutions offered previously:

  1. Flattening your road (either by hand or programmatically). This has been talked to death so I hope you’re already aware of the drawbacks.
  2. Using arbitrary deadlines to stagger your eep!s. I don’t care for this option because it feels crushingly arbitrary when there’s only one eep! in the day. If I set my goal to derail at 2 PM, it’s 2 PM no matter the day and no matter what other goals are due. Not to mention I have more than 24 goals, so I would need sub-hour spacing!


Suppose you could enter pre-commit data points for the future which become mini-contracts. For example, suppose I have a goal that’s due in 5 days. If I add a pre-commit for +5 in 15 minutes, the goal would change to “eep! 15 minutes” and then derail in 15 minutes unless I’ve entered data points totalling[1] +5 before then.

  1. I can work around weekends/weekdays off without editing the road. If I ever have a moment of non-akratic thinking, I can commit myself to getting my stuff done before the weekend. I also believe it would also be much easier to programmatically inject pre-commit data points than it would be to edit the road via the API.
  2. If I wake up with a bunch of eep!s, I can sit down over breakfast and plan out my day. If I sprinkle pre-commits throughout the day, I get the benefits of staggering my deadlines without having to guess in advance what time of day is best for each goal. I can take into account my schedule for that day and exactly which goals are eep!ing. You could implement arbitrary deadlines for, say, 2 PM, by leaving your actual deadline as midnight and then always injecting a pre-commit data point at 2 PM. I think you would also side-step the nightowl vs earlybird headaches because midnight would remain the true hard deadline (so if you can only work from 2 - 4 AM you would know that you need to pre-commit to yesterday’s 2 - 4 AM if you wanted a non-midnight deadline).

Anyway, I know this is super random and possibly not well thought out. Thanks for reading :slight_smile:

[1] Dealing with aggday is left as an exercise for the reader.


Here are my proposed solutions:

Problem 1) Design a road that is always flat on certain days.
This is currently only possible via the API or meticulous use of the take a break option, and beeminder will ruin your road if you derail or retroratchet or change you road dial. Fixing all these Beeminder issues would be a great help.
(I guess this is the same as the solution 1. you listed but I think it is the Right Thing to do, so keep bugging @dreev about the Road Editor and fixing Beeminder to not do horrible things to your custom road.)

Problem 2) Use use GTBee to set up a task to clear eep X by Y o’clock.
I think this is equivalent to your pre-committed data points idea but doesn’t involve changing Beeminder’s day sized resolution. (See also: Continuous beeminding)


I really like this idea. It’s a generalisation of my desire for an uncle! button, consistent with the GTBee idea, and puts more control in the hands of the user.

Aside: I worry somewhat about folks being too aggressive with their deadlines, but that’s the same problem we have convincing people to be slightly less aggressive with their goal slopes. After a few self-inflicted derailments, they/we find a balance that helps us achieve more in/with our lives.

I’ll see your arbitrariness and raise you a theory: it’s always arbitrary unless there is a real-world reason for that particularly deadline. e.g. garbage night, end-of-work-day, etc. In some cases that arbitrariness feels helpful. Other times we become too, too aware of the games we’re playing.

I sure can’t predict in advance how I’d like my goal deadlines to be staggered across any given future day. But I might have the presence of mind to force myself to get things done earlier on a particular day.


I agree this is equivalent, except that the Beeminder UI won’t show the eep!s from GTBee. Then again, when I actually start using GTBee I’ll need to integrate it into my workflow somehow…

Honestly, I think the pre-commit data points would be useful even if not akrasia-proofed. At least for the problems I mentioned in the OP, akratically deleting the pre-commits is not really a problem because at worst you end up back the way things are today.

1 Like

I hadn’t thought about the akrasia horizon, just that humans tend to be optimistic about what can be accomplished in a time frame. (I think this holds independent of optimistic/pessimistic base orientantion.)

If you can delete the pre-commitment then it isn’t a pre-commitment and your brain will rebel. You can play that game today using, say, a calendar appointment or some other line in the sand. You don’t need Beeminder for easily-deletable commitments.

I think (without having actually thought through) that this is an irrevocable bringing-forward of the deadline time, for today. Full amount at risk, full consequences if you fail to meet the self-imposed deadline. Reverts to the normal deadline from tomorrow.

Beeminder is an extension of your will. It’s got to have teeth, or you won’t believe that you’re serious about getting this thing done.


@philip I think you’re right that there’s plenty of use cases for it being akrasia proof, however:

I don’t agree completely. I want to use a single system for all my stuff. If I use Beeminder + a calendar that’s 2 things.

This is the same reason why I have some flat-road goals in Beeminder. It keeps all my QS stuff in one place, even if they’re not all commitment contracts.