Get in touch
Blog

Engineering notes from 9io.

How we build products, AI systems and trading infrastructure — and what we learn on the way. Written by the people who do the work, with the sources linked.

AI agent containment lessons from the summer 2026 incidents

Lab agents reached real systems and MCP tools turned on their users. What failed in each 2026 incident, and the controls to enforce outside the model.

8 October 2026 · 12 min read

Three Amplify Hosting limits our Next.js BFF only hit in production

A 6 MB response cap, an 8 KB URL limit and a localhost origin broke parts of our Next.js BFF on AWS Amplify. What we saw, the fixes, and how to test early.

7 October 2026 · 11 min read

How we halved an AI stylist’s latency, and when hedging stops paying

A streaming AI stylist went from a 30 s median response to 13 to 15 s. The four changes, how we measured them, and why hedged requests stopped paying.

6 October 2026 · 11 min read

Rate limits, holidays and atomic writes in our market data layer

How we fetch daily prices for US and Indian stocks without tripping Yahoo’s limits, how we tell an NSE holiday from a missing file, and what we haven’t fixed.

5 October 2026 · 14 min read

How to take a vibe-coded app from Lovable to production safely

Moving a vibe-coded app from Lovable to production: the Supabase RLS, key, storage and webhook checks that matter, how to migrate, and when to rebuild.

4 October 2026 · 19 min read

How a backfill bug ran up a $1,100 LLM vision bill

A job re-classified items it had already classified: 419,057 vision calls and about $1,100. What went wrong, and the guardrails that catch it early.

2 October 2026 · 10 min read

How we built the 9io.ai blog on Markdown files and FastAPI

Markdown files and one Python module run the 9io.ai blog, with JSON-LD, canonical URLs, a sitemap, RSS and llms.txt built in. How it works and what we’d change.

10 September 2026 · 8 min read

Caching server-rendered Next.js HTML at the edge, by device type

We cached a Next.js storefront’s HTML on Cloudflare, split by device type. Cached pages come back in about 70 ms; mobile PageSpeed rose from 65 to 87.

8 September 2026 · 16 min read

Why our LLM pipeline reported 0 dropped while most output was missing

A course build shipped 26 of 51 diagrams and reported 0 dropped. How a per-call limiter, 429s and deadlines hid the gap, where tokens went, and the fixes.

1 September 2026 · 11 min read