Beeminder Forum

Feature request: store safety buffer

this cannot be the first time someone’s thought of this, but i don’t see any uservoice requests for it…

i’m really motivated to build up a bit of safety buffer when i’m in the orange/red, but as soon as i get back into blue/green, i tend to let it slide for a few days until i need to care again. i don’t necessarily want to be throwing away my safety buffer all the time via retroratchet. what would be super cool is if i could “store” my safety buffer for a goal and only apply it if i need it.

so let’s say i get to 4 days buffer on my fitbit goal (hahahahah). i can “store” 3 of those days to make today an orange day. if it then rains all day tomorrow and i don’t feel like walking around outside, i can apply one of my stored days to avoid derailing (leaving me 2 days left to use whenever). it’s not being akratic because i had earned those days before. but now i only view them as the nuclear option, because i’m opening up beeminder every day and being faced with an orange/red that i need to take care of.

alternately, of course, i could stop being lazy just because i have a few days buffer. but i seem to work better when i have to, especially for goals that i would not be doing without beeminder! i can definitely see how this might be a bear to implement, though, so any ideas on how to hack my mind to work this way would be super appreciated!


Ooh, this is a great idea. +1 from me.

I’m so happy that this kind of brainstorming is happening here. And I’m not just saying that as preface to tearing the idea to shreds! This identifies a really important problem and even though I don’t like the specific solution of storing safety buffer I think this is pointing us in the right direction. So thank you! And keep the wild ideas coming!

The reason I don’t like the specific solution of storing safety buffer is that it’s sort of trying to trick yourself (“I’m in the orange but I’m not really in the orange”) which I believe backfires. I’ve been calling this Beeminder’s no-free-lunch theorem, or the power of bright lines, and I’m working on a blog post about it. Excerpt culled from an old email exchange with a user:

A few years ago when we were getting started, we experimented heavily with grace periods and 3-strikes policies and other ways to solve the problem that you’ve astutely identified. But we gradually came to the conclusion that such leniencies necessarily backfire. It’s like a No-Free-Lunch Theorem. The reason is that you have to spell out exactly what the leniency is — necessary when real money is at stake. But then once you’ve done that you’ve just defined a new edge to skate. Like maybe up to 3 misses per month are allowable. Well, I’m akratic, so I’m going to squander those 3 freebees early in the month and be right back where I started.

And worse, unless I understand exactly how the freebees work, I’m actually making it more likely I’ll derail because I’ll know there is leniency and I’ll push things as far as I can which means I can accidentally push them too far. So it turns out to be superior in every way to just make the road itself less steep but then hard-commit to staying on it, with no wiggle room. Another way to say it: the yellow brick road has to be a bright line.

Maybe the real question in your case is “how can I induce myself not to skate the edge so much?” Of course my answer is Moar Beeminding, though I haven’t had a ton of success with this myself. @pjh gave me the idea of beeminding eeplessness which has put a small dent in the problem. I’d like to do more of that, and for Beeminder to make things like that easier. I think that’s a better approach than complicating the core mechanism of the Yellow Brick Road, which is already plenty complicated with colors and lanes and safety buffer and ratcheting…

(Thanks again for proposing this! Huge value in this discussion whether or not we agree about the feature. Also don’t be shy about telling me I’m thinking of this wrong. I know @alice has some big disagreements with the way of thinking behind my bright-lines/no-free-lunch philosophy. This would be a fine place to debate all that!)


Meta: Use that heart button! Discourse seems to do cool stuff with it, at least in terms of stats, even if you think things like badges are dumb.


@dreev, I’m interested in what you are thinking about this problem then? How would you keep yourself motivated when you’ve got a bit of safety buffer?

1 Like

I’m definitely more productive when I’m close to the road’s edge. So much so that I’ve turned on “no mercy” recommits for nearly all of my goals; that week of flatness often breaks my habits. And a lot of my goals have “autoratchet” turned on, so that I can’t build up more than a few days of safety.

That does make it more likely that I’ll derail at some point. And that sucks, though I have a strong suspicion that I get more accomplished because of the strictness than I lose in pledges.

Here’s the thing that I’ve been experimenting with, which isn’t 100% what @chelsea asked for, but might have a similar effect: after N days on track, I can hit the down-pledge arrow

You could interpret this as though I’m trading in my reduced safety-buffer for a reduced-pledge. I haven’t automated this, and I don’t yet know how many days N should be. Feels like a month is too little, and 90 days would be too much. My median derail as of right now seems to have been 53 days ago.

I have it in my head that by reducing pledges periodically on account of good behaviour, each goal will find it’s naturally sustainable pledge value without me having to specify a pledge cap.

We also know that when pledges get too uncomfortably high, folks get more conservative about their commitments. i.e. they stay on the road better, but accomplish less in real life.

@chelsea’s idea adds an extra dimension to that down-pledging. (Thanks!) I’m not storing up safety buffer for a rainy day, but I am making it cheaper to take advantage of a rainy day when one comes along.


You’ve (or @bee has) already blogged about this before:
But I’m sure revisiting the topic would not hurt.

I suspect the solution might lie in meta-beminding. Ideally this would be automated[1] and the second goal is automatically populated based on inputting data in the first.
Main goal: Exercise, where you log the distance you run.
Meta goal: Go for a run 6 times a week. (automatically populated when you enter the main goal data.)
So you can have a 4 day buffer on your running goal, but you still need to at least go down to the end of the driveway today (even if it’s raining) to maintain the habit.

[1] - I’m surprised this is not already implemented as it seems like an easy way for beeminder to increase the amount pledged.


Work in progress! I’ve got but mostly I just skate the edge on everything that’s important. I actually find edge-skating on Beeminder goals kind of exhilarating. I also feel that way about having to sprint through an airport to catch a flight. I realize most people find that horribly stressful so I need to be careful how much I generalize from my own experience on these sorts of questions!


You have made our day with your knowledge of Beeminder canon. (:

That post does have the seed of the idea already but I’m working on an elaborate version that references Schelling Fences, Timeless Decision Theory, and has anecdotes like these…

  1. “My pushups derailment might actually be an instance of Beeminder’s no-free-lunch theorem. We made it slightly more lenient in that between midnight and 3am it submits the automatic datapoint with what is technically yesterday’s timestamp. Which was surely the right choice, but it’s what made it easy for me to get used to ignoring midnight. So there’s this seemingly nice friendly grace period of 3 hours after the nominal derail time but all that does is make the real deadline fuzzier and more confusing which makes you more likely to derail as you naturally try to skate the line. Akrasia = line-skating so the sharper and brighter the line the better.”

  2. “Entering a labeled fake data point is a thing that makes the YBR easier to stay on in the short term. But by the no-free-lunch theorem, that necessarily makes the overall goal harder. So that kind of leniency directly harms the effectiveness of Beeminder. You should always have one single knob to turn to adjust how lenient the goal is, and that’s the steepness of the road itself (ie, the road dial).”

  3. “Mostly Beeminder makes you do the awesomeness-maximizing thing, but once in a while it’s a little off (like forgoing an awesome work spiral in favor of filing papers which can just as well happen tomorrow). But consider the awesomeness level without Beeminder. If that’s much, much lower then it might make sense to live with the small deviations from Absolute Optimal Awesomeness rather than risk neutering Beeminder’s motivational power, the thing keeping you at near-optimal awesomeness. In terms of bright lines: Just do what Beeminder tells you because if you start deviating from that (even with sometimes good excuses) then you could end up not listening to Beeminder at all, which is much worse. (And of course part of what Beeminder is telling you is ‘you can file these papers OR you can choose to pay $5 – either way is fine.’ (That’s Bethany’s point.)”


yup, pretty much! i’ve tried a few meta goals along the lines of @insti , but they haven’t worked great for me so far either. love the idea of automating it. half of my resistance is that i don’t want to send beeminder 4 datapoints every time i weigh in or whatever. it’s almost certainly just a matter of finding the right incentive/goal setup, and i haven’t yet. i might try the pledge stepdown of @pjh, that’s an interesting idea i hadn’t thought of.

i think i disagree that the stored buffer is leniency, though. i earned the buffer; it wasn’t given to me freely because i decided i want 3 days off/month [1]. the rules would be 100% clear - you earn buffer, you have buffer, you can store buffer (if you want) and hide it from yourself. i do agree that i want to trick myself, but i want to trick myself into walking more than i have to. i think i’m just more excited for orange -> blue -> green than 4 days -> 5 days -> 6 days, for whatever reason.

[1] nor did i pay for it. i briefly imagined a world where you could pay half your pledge to postpone your derailment 24 hours. but if you weren’t on track again 24 hours later, no mercy – you’re paying the postpone fee + your pledge. a fun idea that would surely fail spectacularly.


Right, that’s the kind of self-trickery I have in mind too. I call it lenience in that you’re showing yourself an orange or red graph but if you don’t stay on the road you have a reprieve up your sleeve: stored safety buffer. I’m arguing for keeping the line in the bright light of day.

1 Like

that’s fair. it might come down to a personality thing, as you said up above.

i just thought of this comparison – how some of us set our clocks (back when clocks were a thing and not phone alarms) to read later than the true time. you do know that it’s not right, but when you wake up in the morning, your instant reaction is “oh crap i’m late” rather than “the true time is 8:30 minus 15min… i can keep sleeping.” that’s basically the effect i’m after for some of my goals. tell me it’s a beemergency and i’ll react to eliminate it, even if i know better. then if it’s raining or if my feet are killing me from yesterday or anything, i can burn a buffer. it might even be an incentive to not use up safe days, because i’m actively making the choice to use them up, vs. passively not doing anything and watching them waste away.

and it might totally be only me/my personality who’d respond to that, because the whole point of this website is that we’re motivated by different things in different ways and beeminder is a tool to help figure it out!


It’s true that the clock analogy works well for people, so this feature might as well. Even though I’m only tricked for a moment and often make the adjustment immediately, it still helps me to leave a clock a few minutes ahead (anything less than 4-5 min) since it does help me by reminding me how close I really am to that time anyway (since I tend to not think in terms of time passing in the moment or soon after). It can be 2:18 and if I have to leave at 3:15, I’ll still think, I have about an hour. My husband, who does not have a problem being late, sees that as 2:20 or almost 2:30 (since by the time you do one more thing, it will be) and feels like he has about 45 minutes left. I round the wrong way because I always want/wish I had a little more time. However, by leaving a clock ahead, it helps you “bank” a tiny bit of buffer time in your head and only use it if you have to in the end, but gets you to move a little quicker, even if only through the reminder of how close 2:18 really is to 2:15 (i.e. you know it’s really only 2:15, but by seeing 2:18 on the clock, you’re reminded that it will be 2:18 for real before you know it, so hurry up). The same with Beeminder goals. You’d be in the orange and even though you know you’re really in the blue, let’s say, it’d serve as a reminder to how quickly you’d be in the orange for real anyway, so it’d incentivize you to do what you need to do, at least a little more often.

I also agree that this is different than other leniencies. To allow 3 strikes or something like that, that’s unearned leniency. This is something you’ve already earned, like @chelsea said.


I’m becoming more convinced that tricks akin to setting your clock 5 minutes fast are wrong for Beeminder. Beeminder should always be brutally honest with you. And what if you get used to banked safety buffer and lose that feeling of alarm from a red graph, and then find yourself with a red graph without banked buffer? Consistency is key!

I think better is to just cultivate your sense of alarm at seeing an orange or blue graph. Or a graph with less than a 7-day buffer (where it shows the day of the week instead of number of days on the graph image).

Pro tip: if you always have 7d of buffer then you can always flatten your road in case of emergency (or change of priorities) with zero notice and be safe from derailing.


Here’s an idea. It probably won’t work, but anyway:

I think we as people want something to have a purpose. If we have a certain goal and do more than the minimum, the result for some is to have a big buffer that doesn’t motivate us, or having to retroratchet or adjust the rate. And even though the act itself might have been super useful, this now makes it feel a lot more useless.
What if there would be a button to burn a portion of your buffer away like Retroratchet (I guess I like this term better in this context). And then we could have a separate goal to Beemind the amount of buffer you’ve burned in a week. This way, working hard gets more rewards and creating a buffer becomes less of a nuisance and more of a purpose.


You can automate this kind of meta-goal today, with varying degrees of ease.

One of our intrepid users did this with her running goal. She created a runkeeper-fuelled beeminder goal for distance. She also hooked ifttt up to a runkeeper trigger, and set the action to email the beeminder bot with a ^ 1 to increment her meta goal.

For that specific example, you could create multiple runkeeper-fuelled beeminder goals, since one of the options on those is to count frequency rather than distance or time.

If you’re prone to a bit of hacking, you’ll also find a callback field on the scarily advanced settings tab. This will send a chunk of api-compliant json to you whenever a datapoint gets added to that goal, which you can then use to update other goals. For me, gym also means sweat and flex, so I use the callback mechanism to update those.

It’d be a good feature request to ask us to make that easier to do for regular users.


I’ve recently created a script that may help you do something like what you’re describing here. Basically, what I’ve got is a script that will download your beeminder goals and sort and group them by “priority”, where priority is basically how many days left till you derail (0, 1, 2, 3, or more). However, for any individual goal you can define the “ideal” buffer as something other than 4 days, and it will calculate the priorities by evenly dividing the ideal buffer for that goal into three parts. So for example if I have a goal I want to build up some more buffer on, I can set the ideal buffer to 7, and then even if I have 2 days of buffer on that, it will still be sorted as priority 1, thus encouraging me to take care of it as if it’s an orange goal, even though it’s actually blue (but it’s a command-line tool so no actual colors yet).

I made it for myself and have made no effort to either document it or make it easy for other people to use, but if anyone else is interested in taking a look or playing around with it, the code is at


possible (partial) solution - for me, at least part of the extra motivator for eep days is the red colour on the graph. Maybe you could get some of this by letting the user set the amount of time remaining each colour represents on a per-goal basis? That’s also be good for goals where you explicitly want X days safety buffer because you know you might miss weekends etc. This is kinda like amesha’s script, but for me the colours would be really important.


We do have something vaguely similar, namely the sort threshold in Terrifying Advanced Settings, with which you can control how many days of safety buffer cause a goal to jump to the top of your gallery. We plan to ditch that in favor of a more intuitive way to sort and organize goals though. But it’s there in the meantime and we’ll find some reasonable way to transition to whatever the future system is.

1 Like

ANSI color codes can be added to my script very easily. I would probably do it eventually in any case, but if anyone would be interested in using my script if it had colors, let me know and I can do it faster. (But in a week when I’m back from vacation.)

1 Like