# Robin Rahman

> Full-Stack AI Engineer. 8 years across e-commerce, blockchain, and production AI systems.

- [About](https://robinrahman.pro/about.md): A quick intro to me, my tech stack, and how to connect.
- [Experience](https://robinrahman.pro/experience.md): Highlights from my career and key roles I've taken on.
- [Projects](https://robinrahman.pro/projects.md): Selected projects that show my skills and creativity.

## Blog

- [Building a Desktop YouTube Downloader: Cookies, the n-Challenge, and Zero-Install](https://robinrahman.pro/blog/desktop-youtube-downloader-yt-dlp-electron.mdx): YouTube doesn't hand you a file, and it fights back. Why a download tool has to be a desktop app, how I got past the bot gate and the JavaScript n-challenge, and how I made it install nothing.
- [Private Image Compression in the Browser: WebAssembly Codecs, and the AVIF That Wouldn't Ship](https://robinrahman.pro/blog/browser-image-compression-webassembly.mdx): A bulk image compressor that runs entirely in your browser, nothing uploaded. How the WebAssembly codecs and a worker fit together, why AVIF and parallel PNG optimization broke the build, and how I made PNG actually shrink.
- [Giving a Portfolio Assistant Real Tools (and Five Models So It Never Goes Down)](https://robinrahman.pro/blog/agentic-portfolio-assistant.mdx): Most site chatbots just answer FAQs. I wanted mine to act: scroll to a section, open a post, switch the theme. Here is how the client-side tool calls work, the quota trap I hit, and the fallback chain that keeps it free and online.
- [Giving AI Agents Real Tools: Building MCP Servers for Commerce Data](https://robinrahman.pro/blog/mcp-servers-commerce-agents.mdx): Everyone's agents can chat. Almost nobody's agents can act. How I built MCP servers that let Claude query orders, inventory, and customer history on a Medusa store, and the tool-design lessons that took three iterations to learn.
- [Payload + Next.js: The Content Layer I Pair with Medusa Now](https://robinrahman.pro/blog/payload-cms-nextjs-medusa-content-layer.mdx): Commerce engines are great at products and terrible at pages. Why Payload CMS became my default content layer next to Medusa, how the two share one Postgres instance, and where the editor experience earns its keep.
- [How I Ship Faster with Claude Code, Cursor, and Codex](https://robinrahman.pro/blog/ship-faster-claude-code-cursor-codex.mdx): I use AI coding tools every day. Not as a novelty, but because they measurably cut delivery time. This is my actual workflow across Claude Code, Cursor, and Codex, and where each one fits.
- [Row Level Security in Practice: Multi-Tenant Isolation on Supabase](https://robinrahman.pro/blog/supabase-row-level-security-multi-tenant.mdx): An AI SaaS client needed hard tenant isolation without a dedicated backend team. How we leaned on Supabase and Postgres RLS for it, the policies that worked, and the three mistakes that almost shipped.
- [Semantic Search for E-Commerce: Replacing Keyword Search with pgvector + OpenAI Embeddings](https://robinrahman.pro/blog/semantic-search-ecommerce-pgvector.mdx): "Gifts under $50 for a coffee lover" returned zero results with keyword search. Here's how I rebuilt a Medusa v2 storefront's search with vector embeddings, reranking, and live inventory awareness.
- [Building a Multi-Vendor Marketplace That Grew AOV by 18%](https://robinrahman.pro/blog/multi-vendor-marketplace-medusa-mercur.mdx): How a conversational shopping assistant on a Mercur multi-vendor marketplace lifted average order value, with real-time product recommendations, vendor routing, and the A/B test that proved it.
- [I Jumped on Medusa.js v1 in Week One, and Here's What the v2 Migration Really Looks Like](https://robinrahman.pro/blog/medusa-v1-to-v2-migration.mdx): Most Medusa v2 content is launch hype. This is what actually happens when you migrate a production store with custom plugins, 4,200 products, and real orders flowing through it.
- [Streaming AI Chat UIs with the Vercel AI SDK and Provider Switching](https://robinrahman.pro/blog/streaming-ai-chat-vercel-ai-sdk.mdx): Building chat interfaces that stream tokens in real time and swap between OpenAI and Claude without rewriting the frontend. What the AI SDK handles, and where you still do the work.
- [Building a Multi-Step LangGraph Agent That Handles Orders Autonomously](https://robinrahman.pro/blog/langgraph-agent-order-management.mdx): A D2C brand needed their support bot to actually do things like look up orders, process returns, and check shipping status. This is how I built a LangGraph agent with tool calls and safe-action gating.
- [Stripe Usage-Based Billing for AI Products: Metered Tokens, Tiers, and Connect Payouts](https://robinrahman.pro/blog/stripe-usage-based-billing-ai-saas.mdx): Everyone writes about building AI. Almost nobody writes about billing for it. This is how I set up metered token billing, subscription tiers, and marketplace vendor payouts with Stripe.
- [Cutting Irrelevant Retrieval by 50% in a Legal RAG Pipeline](https://robinrahman.pro/blog/llamaindex-legal-document-pipeline.mdx): A law firm's document assistant kept surfacing the wrong clauses. Restructuring the LlamaIndex pipeline (hierarchical chunking, metadata filters, and a reranker) halved the irrelevant context.
- [Building a RAG Chatbot That Cut Support Tickets by 40%](https://robinrahman.pro/blog/rag-chatbot-cut-support-tickets-40-percent.mdx): Not a tutorial with toy data. This is what a production RAG system looks like when real customers depend on it: chunking strategies, retrieval pipelines, eval harnesses, and the numbers that actually moved.
- [Shipping an ERC-20 Launchpad: Vesting, KYC Gating, and a Slither Audit](https://robinrahman.pro/blog/erc20-launchpad-vesting-slither-audit.mdx): A token launchpad is mostly about the things that go wrong. Cliff/linear vesting, allowlist gating, and the static-analysis pass that caught issues before mainnet.
- [Launching a 10K NFT Collection: Gas-Optimised Minting at Scale](https://robinrahman.pro/blog/nft-minting-platform-gas-optimised.mdx): How we shipped a generative NFT minting platform that handled 2,400 mints in 90 minutes using Merkle tree allowlists, batch minting, and gas savings that actually made it viable.
- [Go Microservices: Lessons from a High-Throughput Backend](https://robinrahman.pro/blog/go-microservices-high-throughput.mdx): What I learned building Golang microservices that handled thousands of requests per second: service boundaries, graceful shutdown, and the patterns that survived production.
