The Grind Log The Post-Mortem • Everyday Jeff

The System That Looked Fine Until It Wasn't

I built a side-gig scheduling system so clean it practically ran itself. Then it did — straight into a wall. Every day's a hustle. Post the Ls too.

What Was Supposed to Happen

The plan was genuinely elegant. I'm not being sarcastic — I was proud of this one. The idea was to batch all my DoorDash blocks into two tight windows per day, morning and dinner rush, then use the dead time in between for focused coding work on the Roblox project. No bleed between the two. No context-switching. Clean lanes, like a well-organized highway where everything moves and nobody merges without signaling.

I'd built it out in Notion. Color-coded. Time-blocked. I even added buffer zones, which, if you know me, is basically the equivalent of me doing yoga. I do not do buffer zones. I did buffer zones. That's how confident I was.

The logic held up. DoorDash earnings would cover the baseline bills while the Roblox work compounded in the background. The side gig feeds the creative project. The creative project eventually reduces the dependency on the side gig. It's the kind of hustle-and-balance equation I'd been trying to crack for a while — not working more, just working in the right order. Stack the active income hours, protect the deep work hours, don't let one eat the other.

I gave it three weeks to prove itself. Set a reminder to review. Told my wife it was going to be different this time. She nodded the way she always nods, which is supportive but also deeply unconvinced. I chose to interpret it as supportive. The system was live. The calendar was locked. I was, for approximately four days, a man with his act together.

Know What Your Business Can Actually Spend

See the cash truly available after bills, payroll, taxes, and reserves before making your next move.

Learn more

What Actually Happened

Week one was fine. Better than fine, actually. I hit my dash blocks, I hit my coding blocks, I even knocked off at a reasonable hour two nights in a row. I texted John about it, which in retrospect was a mistake because he immediately told me I was being surveilled by my own productivity app and I spent twenty minutes reading the terms of service instead of sleeping. Classic John.

Week two is where the seams started to show, and I didn't notice because the output still looked okay on paper. A delivery ran long one morning and I borrowed fifteen minutes from the coding block to make up dash time. Fine, reasonable, one-time thing. Except it wasn't one time. It happened the next day too, and then I started pre-adjusting — shaving the coding block preemptively because I'd mentally already decided the dash run would go long. I was sandbagging my own deep work before it even started.

Then a Roblox bug I'd been ignoring got urgent, so I worked on it during what was supposed to be a dash block, which meant I did a shorter dash window to make up the time, which meant the earnings dipped, which meant I added a third dash window on Saturday to compensate. The buffer zones I'd been so proud of? Gone by day ten. Not dramatically. Just quietly absorbed, one small exception at a time.

By week three the Notion board was still color-coded and pristine because I'd stopped updating it. The system looked intact. I was just no longer inside it. I was running a parallel, informal, worse version of the same schedule entirely from memory and mild panic. The chaos had crept back in so gradually I didn't clock it until I was already in the middle of it, three coffees deep on a Tuesday afternoon wondering why I felt behind on everything simultaneously.

Where It Turned

Here's the thing I keep coming back to: the system didn't fail because it was a bad system. It failed on day nine, when I made what felt like a completely reasonable real-time adjustment and didn't write it down.

That's the moment. Not the bug, not the long delivery, not the Saturday makeup session. It was the decision to borrow fifteen minutes and just hold it in my head instead of logging it as a change to the plan. Because the moment a deviation lives only in your head, it stops being a deviation. It becomes the new normal, silently, with no vote taken.

What made it invisible was that it felt responsible. I wasn't slacking — I was adapting. Real-time optimization. Staying flexible. All the things you're supposed to do when a rigid plan meets a messy reality. Except flexibility without documentation is just drift with better PR. I was telling myself a story about being responsive when I was actually just slowly dismantling the structure I'd built, one unrecorded exception at a time.

The Notion board being up-to-date and wrong was almost worse than having no board at all. It gave me the feeling of having a system without the function of one. I've read enough about what it actually takes to keep a hustle aligned to know that the maintenance of the system is the system — and I was skipping the maintenance while still counting on the results. That's not a scheduling problem. That's a honesty problem. I was lying to the calendar and expecting the calendar to keep me honest anyway.

What Changes

I'm not rebuilding the schedule. The schedule was fine. What I'm changing is the exception protocol, which previously did not exist, which is why this happened.

Any time I deviate from a block — borrow time, skip it, split it, move it — I write it down before I do it. Not after. Before. One line, in the same place every time. What I'm changing, why, and what block absorbs the cost. If I can't answer those three things in thirty seconds, I don't make the change. I wait until I can.

That's it. That's the whole change. No new app, no new color codes, no fresh Notion template that I'll abandon by week two. The structure I had was functional. The logging habit was missing. I'm adding the logging habit.

The other thing — and this is smaller but I think it matters — I'm telling my wife when I make a change to the plan. Not because she's managing me, but because saying it out loud to another human being costs enough social friction that I'll only do it when it's actually necessary. It's a built-in forcing function. If I'm not willing to say "hey, I'm shifting my coding block to tonight because X," then I probably shouldn't be shifting it. The embarrassment tax is real and I'm choosing to use it as a feature.

The system wasn't broken. My relationship to the system was broken. I treated it like infrastructure — something that runs in the background while I make decisions on top of it — instead of something I'm actively inside of and responsible for maintaining. It's not pretty, but it works. Except when you stop working it. Then it just sits there looking pretty while everything quietly falls apart underneath.

Every day's a hustle. Post the Ls too.