
Building AI Tools That Refuse
An AI job-triage tool I open-sourced this week, and the case for designing AI tools around what they refuse to do.
Writing
Technical writing on systems, boundaries, and maintainability in real-world software.

An AI job-triage tool I open-sourced this week, and the case for designing AI tools around what they refuse to do.

My classifier flickered on identical input — so I voted harder, like the last post taught me. It kept flickering. The model was being faithful; my pro…

A flag in my JD analyzer flickered on and off across identical runs — same input, same temperature=0, same code. Determinism in an LLM app is somethin…

I refactored a working 4-step LLM pipeline from a hand-rolled chain to a LangGraph StateGraph to see what the framework buys. For this shape: almost n…

I was about to add hybrid retrieval to my RAG pipeline — the fashionable upgrade. So I built the eval first. It came back 1.0000 across the board and…

Ad-hoc AI collaboration looks efficient early on, but starts to break down when real product, UX, engineering, and communication work pile into the sa…

Agent-generated code often looks clean, passes tests, and still weakens the system. Teams that review AI pull requests like normal PRs are likely to m…

Node’s permission model is useful, but many teams are expecting the wrong thing from it. It can reduce accidental overreach by trusted code, but it is…

Rebuilding outgoing payments is not about more CRUD. The real problem is architecture: unclear ownership, duplicated workflows, and internal tools rep…