AI Engineer & Full-Stack Developer. I build LLM applications, autonomous agents and Web3 products — and I ship them, rather than leaving them in a notebook.
Currently building AI agents and open-source AI tooling from Mumbai.
🌐 nazsats.com · 📄 Resume · ✍️ Blog · 𝕏 @Nazsatseh
I read the source of libraries I actually use, looking for places where the code quietly disagrees with itself. Recent finds:
Five merged upstream, across the libraries I build on.
| Project | What I found | |
|---|---|---|
| qdrant-client | The slice guard rejects any index equal to total, but the error message advertised the valid range as 0..total — naming the one value it refuses. Correct your code against the message and you get the same error. A review bot flagged it seven minutes before the commit that introduced it was merged, and nobody read the comment. |
PR #1412 merged ✅ |
| qdrant-client | min_should accepted a min_count of zero and returned the whole collection instead of refusing — the server answers 422. A filter that silently removes itself. |
PR #1369 merged ✅ |
| qdrant-client | MatchExcept matched an explicit null, and an empty should matched nothing rather than everything — any([]) is False where the sibling clauses use all(). |
PR #1333 merged ✅ |
| qdrant-client | Local mode matched points the real server rejected — four range bounds checked independently, so two different values could each satisfy half a range. | PR #1293 merged ✅ shipped in v1.19.0 |
| langchain | DeepSeek's prompt-cache hits never reached usage metadata — the inherited OpenAI parser read a nested field DeepSeek does not populate, so anyone measuring cache savings saw a flat line that was the reporting, not the cache. | PR #39668 merged ✅ |
| LlamaIndex | similarity_top_k=0 returned the entire index instead of nothing — a falsy-zero check inverting the request. |
PR #22519 |
| LlamaIndex | run_async_tasks silently swallowed exceptions raised inside async tasks when show_progress=True. |
PR #22520 |
Every one came from the same approach: take two implementations that are supposed to agree — local mode against a real server, in-memory against Postgres — feed both the edges rather than the middle, and read the rows where they disagree. The convenience implementation is the one nobody runs in production, so it is the least exercised and holds the most bugs.
I write these up too. Ask the Same Question Twice is the method, Two PRs, One Bug covers what separated my fix from a competing one on the same issue, and I Said It Wasn't Résumé-Building is me correcting myself about why any of it is worth doing.
Nazsats AI Builder — describe a
business in one sentence, get a complete storefront in twenty seconds. The model returns a
schema-validated blueprint, never code, so the output is editable field by field, persisted
relationally, and immune to prompt-injected markup. 83 tests.
Next.js 15 · NestJS · PostgreSQL · Prisma · OpenAI structured outputs
BloodAI — upload a blood test, get it
explained in human words in under 30 seconds. Flags out-of-range markers and builds a wellness
plan around your actual chemistry. There's a
mobile app too.
Next.js · GPT-4o Vision · Firebase
Dubai AI Broker — a multi-tenant SaaS that
does a real-estate agent's admin for them. Claude with tool-calling, grounded in a real
database so it can never invent a listing.
FastAPI · Claude · PostgreSQL · Next.js
Copy for LLM — a VS Code extension that copies
code with its file path and line numbers attached, ready to paste into an AI chat. Zero
dependencies, 11 KB.
TypeScript · VS Code API
Languages Python · TypeScript · SQL · Solidity
AI OpenAI (GPT-4o, Vision) · Claude · LangChain · RAG · agents & tool-calling · MCP · vector DBs
Backend FastAPI · Flask · Node.js · PostgreSQL · Supabase · Firebase
Frontend Next.js · React · React Native · Tailwind · Framer Motion
Web3 Solidity · Hardhat · EVM · Solana · Bitcoin Ordinals · ERC-20/721/1155
Founded CatCents, a GameFi and DAO platform on Monad — grew it to a 30,000+ member community and raised $50,000+ across NFT launches.
Before code, I wrote — 50+ articles and 20,000+ readers. It's why I still write up every bug I find.
📬 Open to AI engineering roles and freelance work — get in touch
