
One of my security guards worked a 36-hour shift. Not because he wanted to. Because the system let him. He was assigned a temporary shift at a different location, and our attendance logic — managed by my team — works correctly 90% of the time but misses a few edge cases.
Labor laws exist for a reason. A guard working 36 hours straight is a liability to me, to the client, and to himself. I needed to fix this in O9X. Not with more human oversight. With better guardrails in the code.
The $35 Question
I currently pay 17 per year for Claude and $18 per year for Google One AI Premium with Gemini access.
I could upgrade to Claude Max for 200 to 240 to $300 per month.
But I am not a coder. I cannot read code and verify it is doing what I think it is doing. I rely on AI to generate it. If I do not understand the workflow logic, I am building blind. So the real cost is not dollars — it is cognitive drift. With unlimited access, I would outsource the thinking. I would ask AI to “just code it” and hope it works. That is not building — that is delegation with extra steps. Constraints force me to think before I code. And thinking is the only part of this process I should never outsource.
The Attendance Management Disaster
The feature: temporary shift assignment for guards working outside their regular location. The constraint: guards can work one temporary shift, but the system must prevent them from working more than 24 consecutive hours.
My first attempt was two weeks of building without a plan. I told Claude Code: “Build attendance logic for temporary shifts.” It generated code. The code worked. Then it broke. Too many functions. Bloated logic. Edge cases I had not anticipated because I had not thought through the workflow.
I kept asking AI to fix it. It added more code, more functions, more complexity. Two weeks later, I had a 400 to 500-line system that technically worked but I could not explain how. That is when I hit Claude Code’s usage limit mid-function.
The Constraint Forcing Function
I took a step back. Instead of asking AI to code, I forced myself to plan.
Session 1 was planning only — no coding. I mapped the entire workflow logic on paper. I identified the operational constraints: a guard can work a temporary shift only if they are not scheduled at their regular location the same day, total hours across regular and temporary shifts stay below 12, and there is no back-to-back shift within an 8-hour window. I listed every edge case my team encounters and documented every guardrail the system must enforce.
Session 2 was planning refinement with AI. I used Gemini — its long context window handles bulk data well — to analyze existing attendance records. I asked: “What edge cases am I missing?” That produced a complete logic document covering all scenarios.
Session 3 was coding with Claude Code. I gave the AI the complete workflow document and stated clearly: “Structure this logic into code. No extra functions.” Sixty minutes of focused coding. I hit the usage limit and switched to Gemini.
Session 4 was coding completion and audit. I continued on Gemini with Claude Opus to finish the feature. New session: “Take on the role of a strict security auditor. Find loopholes.” I listed loopholes from the tool documentation to guide the AI.
Total time: 4 sessions across 4 days. The code was cleaner. The logic was documented. My team tested it, found one edge case, and it was fixed.
What Changed
Before, the sequence was: code, then plan, then realize the plan was wrong, then recode. AI generated bloated output because I gave it no clear constraints. I could not verify the quality because I did not understand the logic. Two weeks, constant back-and-forth, mediocre result.
After separating planning from coding, the sequence changed. I planned separately — no code changes, low context cost, multiple approaches explored. I coded with complete workflow logic — the AI had a clear task and generated focused code. I retained understanding of every decision. Four sessions, cleaner code, better result.
The key insight: planning in the middle of coding is where bloat happens. When I plan while coding, AI might include logic I do not notice. Later I realize it is unnecessary, but AI has already forgotten to remove it. Code gets bloated. A clean separation prevents this. I had already followed this protocol when I started but lost track of my own rules along the way.
The Documentation Tax
I force every AI model to document what it builds.
My instruction: for every function written, add a comment explaining the logic, include a docstring with input and output, document the error handling, and note any assumptions made. This costs 10 to 20% of my token limits. But it is not waste — it is insurance. When I return to code two days later, I do not need to reverse-engineer what AI built. The documentation tells me. When my team finds a bug, I can trace the logic without asking AI to re-explain everything. Documentation tax is insurance tax, and I am more than happy to pay it.
The Jevons Paradox
In 1865, economist William Jevons observed that when coal became more efficient, Britain used more coal, not less. Efficiency did not reduce consumption. It increased it. AI costs follow the same pattern.
If I had unlimited access, I would code 3 to 4 hours per day instead of 60 to 90 minutes. I would generate more variations because I could. I would outsource more thinking. My API bill would hit $240 per month. My understanding of O9X logic would collapse.
My current constraints force me to plan before coding. They limit sessions without prior thinking. They keep my monthly cost at $35. They keep my understanding intact. The cheaper and more efficient AI gets, the more I will use it — unless I impose constraints. Constraints are not limitations. They are forcing functions for better thinking.
The Raw Materials
The planning and coding separation protocol runs across four days. Days one and two are planning only — build the complete workflow logic with AI, identify edge cases and guardrails, document all assumptions, make no code changes. Days three and four are coding only — give AI the full context, run focused sessions of 60 to 90 minutes each, run AI as auditor at the end.
The documentation instruction: force AI to add a comment explaining logic for every function, a docstring with input and output, error handling notes, and documented assumptions. This costs 10 to 20% of token limits. It is worth it.
The cost decision: current subscription at 200 to $260 per month, time saved going from two weeks down to four sessions, cognitive cost of retained understanding versus outsourced thinking.
The Takeaway
I walked away from unlimited AI access. Not because I cannot afford it. Because constraints force me to think.
I am not a coder. I rely on AI to generate code. If I do not understand the logic, I am building on unstable ground. Two weeks of building without a plan demonstrated that speed without thinking is expensive. Four sessions of constraint-driven building demonstrated that thinking before coding is the only real efficiency.
Models will change. Costs will shift. Capabilities will compound. The only constant is my ability to understand what I am building.