<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Amit Solanki — Writing</title><description>Notes on engineering leadership, platform architecture, and integrations at scale — from a fractional CTO and advisor.</description><link>https://amitsolanki.com/</link><item><title>Remote MCP on Rails: everything that broke</title><link>https://amitsolanki.com/writing/mcp-oauth-rails-production/</link><guid isPermaLink="true">https://amitsolanki.com/writing/mcp-oauth-rails-production/</guid><description>A real remote MCP server on Rails needs OAuth 2.1, three RFCs, and a healthy distrust of defaults. The failures were in Doorkeeper&apos;s silent defaults, the MCP gem&apos;s transport, and a generated fix that was stricter than the spec it implemented.</description><pubDate>Tue, 01 Sep 2026 00:00:00 GMT</pubDate></item><item><title>The Assistant That Couldn&apos;t Say Hello: Building a Grounded RAG Menu Chat for Spree Commerce</title><link>https://amitsolanki.com/writing/spree-menu-chat-rag-assistant/</link><guid isPermaLink="true">https://amitsolanki.com/writing/spree-menu-chat-rag-assistant/</guid><description>spree_menu_chat is a read-only RAG assistant grounded in a Spree store&apos;s real, synced menu and policies — Gemini, Voyage embeddings, and pgvector, with the read-only guardrail enforced structurally, not just prompted. A \r\n-vs-\n parsing bug silently broke every streamed answer behind a fully green spec suite, and even after that was fixed, the assistant still couldn&apos;t handle a plain &quot;hi.&quot;</description><pubDate>Tue, 18 Aug 2026 00:00:00 GMT</pubDate></item><item><title>The Subscriber That Was Never Subscribed: Adding DoorDash Delivery to a Spree Commerce Platform</title><link>https://amitsolanki.com/writing/doordash-drive-delivery-dispatch-spree/</link><guid isPermaLink="true">https://amitsolanki.com/writing/doordash-drive-delivery-dispatch-spree/</guid><description>spree_doordash adds live-quoted, auto-dispatched DoorDash Drive delivery to the Spree + Square restaurant platform. Two real bugs — a phone number format DoorDash silently rejects, and an event subscriber that was never actually wired up — only surfaced once a real storefront checkout was driven through, not the 87-example spec suite that kept passing regardless.</description><pubDate>Mon, 17 Aug 2026 00:00:00 GMT</pubDate></item><item><title>Why I Open-Sourced a Square Integration for Spree Commerce</title><link>https://amitsolanki.com/writing/open-sourcing-spree-square-gem/</link><guid isPermaLink="true">https://amitsolanki.com/writing/open-sourcing-spree-square-gem/</guid><description>spree_square started as one restaurant&apos;s Square integration. Here&apos;s why it made sense to release it as open source, what it actually took to ship it responsibly — a full commit-history security review, closing test-coverage gaps first — and the bug the first real release caught within days.</description><pubDate>Fri, 14 Aug 2026 00:00:00 GMT</pubDate></item><item><title>The Cash Register Is the Database: Building a Restaurant Ordering Platform on Spree + Square</title><link>https://amitsolanki.com/writing/spree-square-restaurant-platform/</link><guid isPermaLink="true">https://amitsolanki.com/writing/spree-square-restaurant-platform/</guid><description>Why Square — not a second admin UI — is the source of truth for the menu in a Spree Commerce restaurant platform: the architecture that fell out of that call, a payment trick that never touches Square&apos;s card APIs, and two webhook quirks that only showed up against a live sandbox.</description><pubDate>Thu, 13 Aug 2026 00:00:00 GMT</pubDate></item><item><title>Shipping WhatsApp&apos;s Native Catalog + Cart: A Field Guide to the Undocumented Gotchas</title><link>https://amitsolanki.com/writing/whatsapp-catalog-cart-field-guide/</link><guid isPermaLink="true">https://amitsolanki.com/writing/whatsapp-catalog-cart-field-guide/</guid><description>What it actually takes to get a Rails app talking to WhatsApp&apos;s Cloud API with real Catalog and Cart support — eight undocumented walls, in the order I hit them, and the checklist that would have saved me a day.</description><pubDate>Wed, 12 Aug 2026 00:00:00 GMT</pubDate></item><item><title>I&apos;m Learning MCP by Building a Server Claude Can Actually Log Into</title><link>https://amitsolanki.com/writing/mcp-server-spree-commerce/</link><guid isPermaLink="true">https://amitsolanki.com/writing/mcp-server-spree-commerce/</guid><description>A hands-on log of building an MCP server against a real Spree Commerce store seeded with 100,000 real historical orders — a silent data-loss bug from a fast insert path, a join fan-out that made my own analytics lie by 42x, and standing up full spec-compliant OAuth 2.1 instead of skipping auth for a quick test.</description><pubDate>Mon, 10 Aug 2026 00:00:00 GMT</pubDate></item><item><title>I&apos;m Learning Voice AI by Building an AI Receptionist for a Restaurant</title><link>https://amitsolanki.com/writing/voice-ai-restaurant-receptionist/</link><guid isPermaLink="true">https://amitsolanki.com/writing/voice-ai-restaurant-receptionist/</guid><description>A hands-on log of building a voice AI phone agent for restaurant ordering with no prior voice-AI background — the architecture bet that paid off, a toolchain bug with zero AI glamour, and the moment a confidently wrong AI got caught by a boring safeguard.</description><pubDate>Fri, 07 Aug 2026 00:00:00 GMT</pubDate></item><item><title>The API Design Checklist I Wish I Had at Integration #1</title><link>https://amitsolanki.com/writing/api-integration-checklist/</link><guid isPermaLink="true">https://amitsolanki.com/writing/api-integration-checklist/</guid><description>10 lessons on idempotency, webhooks, auth, and observability from 200+ production API integrations — and the checklist that came out of learning them the hard way.</description><pubDate>Mon, 03 Aug 2026 00:00:00 GMT</pubDate></item><item><title>Now taking fractional CTO and advisory engagements</title><link>https://amitsolanki.com/writing/open-for-fractional-work/</link><guid isPermaLink="true">https://amitsolanki.com/writing/open-for-fractional-work/</guid><description>After two decades building platforms and teams — WeWork&apos;s hyper-growth years, then eight years scaling a restaurant-integrations organization to 20,000+ live locations — I&apos;m opening a small fractional CTO and advisory practice.</description><pubDate>Sat, 18 Jul 2026 00:00:00 GMT</pubDate></item></channel></rss>