Blog
Engineering notes.
Cases, decisions, and what we learned shipping AI agents and data platforms to production.
- mcp
Authenticating a remote MCP server when the client can't send a header
Claude Desktop and Cursor send an Authorization header. The Claude.ai web Connectors panel only lets you paste a URL. Here is the query-string key fallback and how to make a credential in a URL safe to ship.
Read post - vercel
Blocking vulnerability scanner bots on Vercel and Next.js
Vercel logs full of HTTP 500s for paths like /wp-Blogs.php that don't exist on the site. The fix uses two layers: Vercel Firewall at the edge plus Next.js middleware. Root cause and patterns to block.
Read post - agents
The vertical-agent playbook: from Zeobra to Manufa
We just launched a second vertical SaaS with an AI agent baked in. Same pattern as Zeobra, different vertical. What travels between verticals, and what doesn't.
Read post - case-study
Zeobra: a WhatsApp-native agent for managing construction sites
How we built a multimodal AI agent inside WhatsApp that organizes payments, contracts, and daily site logs. Stack, decisions, and the pitfalls we avoided.
Read post - mcp
MCP vs custom SQL chatbot: when each one wins
Why we chose MCP for the public Acme Store demo, and when a proprietary SQL chatbot still makes more sense. Criteria, not religion.
Read post - claude
How we cut Claude inference cost 60% with model routing
Haiku for the tool loop, Sonnet only for the final synthesis. Aggressive prompt caching. Real numbers from what changed in Zechim's demo cost.
Read post - manifesto
Why we don't do AI without a data foundation first
Most AI projects don't fail because of the model. They fail because of the data. Why we insist on building the foundation before the agent.
Read post