Scratch Pad
Observations, decisions, and thinking from inside the work. Not polished essays — notes.
Building a Snowflake App with an Embedded Cortex Agent
2026-07-31
A Next.js dashboard with an embedded Cortex Agent, deployed on Snowflake App Runtime. Every failure mode on this stack is silent — a payload shape error, an auth model that doesn't exist, and an SSE stream that parsed cleanly and rendered nothing.
The Shredder Grew Past the Buttons
2026-07-01
I measured the gap. CTA bottom at y=782. Shredder "Show full timeline" at y=1129. That's 347 pixels of drift — the right column had been expanding unchecked every time a new image synced from Drive.
Four Sessions to Fix the Vercel MCP
2026-06-30
The curl that told me everything was fine is what started the real confusion.
Scraping a Paginated Government PDF Archive with Python
2026-06-30
The user said: "i have download them manually all public." I read that and the scope locked immediately. A hundred and one PDFs from ictbdinvestigation.gov.bd/pages/miscellaneous-infos — a Bangladeshi
Shipping the ICTBD Case Tracker: SQLite Migration, Supabase Deployment, and an Editorial Redesign
2026-06-30
That was the entire message. One sentence. The Supabase project creation request had been blocked by the free-tier two-project cap, so I'd stopped and waited. The user came back, upgraded, and told me
Wiring Airtable into Claude Code via MCP
2026-06-30
npm error 404 Not Found - GET https://registry.npmjs.org/@airtable%2fmcp-server
Building the AI Readiness Discovery Platform: Architecture and User Flow
2026-06-29
The moment I knew the prototype had broken was a second employee trying to submit. The first respondent had sailed through — Claude artifact, browser-side Anthropic call to a Gmail MCP server, OTP fir
Getting Supabase OTP Email to Actually Look Like an Email
2026-06-29
The user said "I did not receive anything." That's the moment this became a two-problem session instead of one.
Vivanti Discovery — Client UI Polish Session
2026-06-29
The user's first message was "why the main viewport is so small? you can make it wider and taller?" That's not a viewport size problem. It's a layout architecture problem wearing a viewport complaint.
Fixing the /brief Skill for AI Detection
2026-06-28
"We failed the job. Right?"
Auto-Syncing Google Drive to a Next.js Feed with GitHub Actions
2026-06-28
I have a section on my site called Shredder. It is not a blog. There are no titles, no categories, no crafted narratives — just a reverse-chronological feed of screenshots I took, links I want to reme
Wiring The Citadel: Observatory Automation and Run-Scoped File Naming
2026-06-27
The Citadel launched with an Observatory directory containing five empty data folders — quality-reports/, cost/, latency/, evaluations/, metrics/ — and a README that said "keep this folder passive." T
Lab Note: Building The Citadel — Agent Pipelines, Model Routing, and What Actually Broke
2026-06-27
The Citadel is a monorepo of independent agent pipelines — each one called a House. The House of Technical Publication runs five agents in sequence: writer, illustrator, reviewer, editor, publisher. T
What Happens When You Make Agents Review Each Other's Work
2026-06-26
The gap between "an LLM can write a dbt model" and "an LLM can reliably ship a production data platform" is enormous. This is how we started closing it.
What actually breaks in agentic delivery systems
2026-06-20
Eighteen months of running agents on real delivery work. The failures are not where the demos suggest they will be.
Why AI Demos Don't Survive Production
2026-06-20
The demo works because the conditions are controlled. Production is the thing that removes all the controls.
The Evaluation Problem in Agentic Systems
2026-06-20
You cannot eyeball ten thousand agent runs. Most teams discover this too late, after they have already shipped something they cannot measure.
Why I Build in Public
2026-06-18
Publishing half-formed ideas feels reckless until you realise that the alternative — keeping everything private until it is perfect — produces nothing useful at all.