Skip to content
View nazsats's full-sized avatar
🎯
Focusing
🎯
Focusing

Block or report nazsats

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Content in all repositories owned by your account will be closed.
Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
nazsats/README.md

Hi, I'm Nazrul 👋

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


🔍 Open source

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.


🚀 What I'm building

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


🛠 Stack

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


📈 Also

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 workget in touch

Pinned Loading

  1. dubai-real-estate dubai-real-estate Public

    An AI assistant that does a Dubai property agent's admin: searches your own listings in plain language, matches leads, drafts the pitch. Multi-tenant.

    Python 1

  2. blood-report-analyzer blood-report-analyzer Public

    Your lab gives you numbers. This gives you sentences. Upload a blood test as a photo or PDF and get every marker explained in plain English.

    JavaScript

  3. nazsats-site nazsats-site Public

    My site and blog at nazsats.com. Next.js 16, Supabase-auth CMS, AI draft generation, GitHub integrations and a live coding-time dashboard.

    TypeScript

  4. auto-profit auto-profit Public

    Crypto trading platform: an LLM reads the narrative, the bot sizes the risk, and a Next.js dashboard shows what it did. Paper and live modes.

    Python

  5. ai-blood-report-mobile ai-blood-report-mobile Public

    The phone version of BloodAI. Scan a report with the camera, the gallery or a PDF and get a marker-by-marker action plan. React Native, Expo.

    TypeScript

  6. copy-for-llm copy-for-llm Public

    VS Code extension that copies a snippet with its file path and line range attached, so the AI you paste into knows what it is looking at.

    TypeScript