Field notes from shipping Rails SaaS with AI inside. Process, tradeoffs, lessons.
Journal
31 May 2026
Stripe billing in a Rails SaaS MVP: the minimum viable schema
Store Stripe IDs and mirrored status, never derive money locally — the moment you add a price_cents column, you're reconciling two ledgers that disagree.
30 May 2026
Solid Queue in Rails 8 production: ditching Redis on a one-box deploy
Rails 8 ships Solid Queue as the default job backend. My rubric for dropping Sidekiq and Redis on one box: one Postgres, one supervisor, FOR UPDATE SKIP LOCKED.
28 May 2026
Adding semantic search to a Rails app with pgvector in one weekend
Embeddings are just another column and the query is ORDER BY — no vector database, no SaaS. The chunking-and-dimensions decision that eats your Saturday if you skip it.
27 May 2026
LLM routing in Rails: OpenRouter with fallback chains and budget caps
Route LLM calls through OpenRouter with an ordered fallback chain and a spend gate — a service object and config file, no gem, with a tier-by-tier ordering rubric.
25 May 2026
Zero-downtime Rails migrations: four moves that cover 90% of cases
A locking-aware rubric for safe Rails schema changes, down to why ADD COLUMN with a constant default stopped rewriting the table in Postgres 11.
23 May 2026
Rails multi-tenancy patterns: row-scoping vs schema vs database per tenant
A rubric for picking row-scoped, schema-per-tenant, or database-per-tenant in Rails — and what each pattern costs you when a query forgets the fence.
22 May 2026
Kamal vs Fly.io vs Render: a solo Rails founder's rubric
Five-axis scorecard for picking between Kamal, Fly.io, and Render when you're the only engineer running a Rails app, a DB, and a worker.
21 May 2026
Devise vs Rodauth in 2026: picking auth for a new Rails app
A five-axis rubric for choosing between Devise and Rodauth on a green-field Rails 8 SaaS — with the trade-offs you inherit on day 400.
20 May 2026
Hotwire vs React for a B2B SaaS dashboard: a Rails engineer's rubric
Five questions I score before picking Hotwire or a React SPA on a Rails API for a B2B SaaS dashboard — and the failure modes each one hides.
19 May 2026
Sidekiq vs Solid Queue in 2026: when to switch and when not to
A four-question rubric for choosing between Sidekiq and Solid Queue in Rails 8, with one falsifiable line on where the switch pays off.
18 May 2026
Fixed-price vs hourly software development: the MVP math nobody shows
Pricing model is a risk allocation choice, not a rate choice. Here's the variance rubric I run before quoting a SaaS MVP, with a worked example.
17 May 2026
A SaaS discovery call agenda that actually fits in 30 minutes
Seven blocks, three to five minutes each, that replace the consulting-firm script with the agenda I run on solo founder calls.
16 May 2026
Atelier redesign and switching chat to Workers AI
Tossing the glass-blur AI-purple aesthetic for an editorial typographic system, and swapping the chat backend to Cloudflare Workers AI in an afternoon.
16 May 2026
Postgres RAG with pgvector: skip Pinecone, ship on one box
How a single-box Rails setup with pgvector and ruby_llm replaced a managed vector DB — 180 lines, 50k chunks, three pitfalls.