Skip to main content
14 entries Subscribe via RSS

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.