DEV LOG
Notes from building small tools
Sheets, Apps Script and simple PWAs: what worked, and the bits that broke.

XLOOKUP vs VLOOKUP in Google Sheets: the 2-minute version
Lookups I ran in a real Google Sheet: where VLOOKUP quietly returns the wrong value, and the XLOOKUP version that doesn't.

Tap Ledger: log a coffee in two taps, total it in Sheets
A small expense app with presets, a month view and on-device receipt reading. Export to CSV and rebuild the same monthly totals in Google Sheets with SUMIFS.

A habit tracker that can leave the app: check-ins to CSV
Try Habit Streak, export a dated CSV, and count check-ins in Google Sheets. Fictional friends, local storage, and a clear boundary between export and sync.

Your Dashboard Refreshed. Did Its Source Data?
Separate page refresh time from source freshness. A fictional inventory example, timestamp contract, and failure drills keep old numbers from appearing current.

Bad Form Auto-Replies Damage Customer Trust
When form auto-replies damage customer trust, and what response rules should be set before automation.

ChatGPT API Costs Quietly Leak Money If You Do Not Count Them
Why ChatGPT API bills quietly grow, and how token tracking, caching, retries, and model routing keep them under control.

I Vibe-Coded a Real GAS App — the Demo Was Fine, and the Field Broke Everything
AI built me a field-inspection app on GAS. The demo ran fine. Then one deploy button locked out every field worker, Sheets swapped my text for a date, and a green checkmark lied. The tiny bugs I fixed all day — and what to watch for before you vibe-code on GAS.

So How Do You Actually Vibe Code? Not the GPT App — Claude Code or Codex
Pasting code into a ChatGPT window isn't vibe coding. You want an agent that reads your files, runs your commands, and deploys — Claude Code or Codex, logged in over OAuth and running locally. A comparison table, setup, a real first session, approval modes, cost, and troubleshooting.

You Built a Slick Front End — and It's Stuck on localhost. Now Deploy It.
AI gave you a gorgeous front end. It only runs on localhost:3000 — a screen only you can see. Per-framework build folders, deploying to Cloudflare (static/SPA) and GAS (Sheets-backed), the 'works locally but breaks deployed' traps, and custom domains — commands included.

Vibe Coding 101: Build with AI, Auto-Deploy Free on Cloudflare
Wire an AI coding agent into clasp, Cloudflare, and gws-cli and you can mass-produce small owned tools at near zero cost, auto-deployed. A 5-minute example (form→sheet→email), the auto-deploy script, real cost numbers, the traps, and where a human must stay in the loop — no secrets held back.

Cut Your Monthly SaaS Bill: Rent vs Own Your Automation
A SaaS subscription is a fixed cost you rent every month. Build the same job once as a tool that runs inside your own Google account and small-scale upkeep is near zero — though never 100% always free. How to decide rent vs own.

How Much Does Adding AI Cost? The One Exception to Zero-Cost Automation
GAS automation runs at zero upkeep, but adding AI introduces one variable cost: a per-call fee. It's usually pennies. Decide the model, the volume, and whose key, and the monthly bill is predictable up front. Plus: the data leaving your account, and keeping a human approval gate.

Automating Your Work with Google Apps Script — The Complete Guide
How to automate repetitive work — orders, bookings, inventory, settlement, field input — with Google Apps Script (GAS). What it does, how far it stays free, and where it hits limits, in one place.

How a Multi-User Inspection App Is Different
A single-user app just needs a screen. An inspection app where several people write the same data hinges on sharing, collisions, and reports. Even so, narrow the scope and you can start with GAS, Sheets, and Drive at no running cost. The fictional browser demo is being rebuilt.

Inventory in Google Sheets: How Far Automation Goes
One store or warehouse: stock in/out, low-stock alerts, and settlement is fine with Sheets automation. Tens of thousands of SKUs and real-time multi-site is the limit.