Rails 8.1 · v2.0

The AI layer of your SaaS, already built.

Auth, billing, admin and multi-tenancy — plus the parts that actually take the time: streaming chat over Turbo Streams, document Q&A on pgvector, and per-message credit metering that bills correctly.

One-time price 30-day refund Unlimited projects
your-app/
app/services/ ai_service.rb multi-provider chat document_processor.rb chunk + embed payment_provider.rb stripe | paystack app/models/ ai_conversation.rb ai_message.rb document.rb document_chunk.rb ← pgvector account.rb account_user.rb tenancy app/jobs/ ai_chat_stream_job.rb token streaming process_document_job.rb app/controllers/admin/ 18 controllers users, revenue, AI spend
68 migrations, all reversible
187 tests, green on main
19 transactional emails
3 LLM providers, one interface
Positioning

Why not Jumpstart or Bullet Train?

Use them if you want the mature option. Both are older, have bigger communities, and cover more general SaaS ground. This kit exists for a narrower reason.

The AI layer is the product

Streaming chat, RAG over your documents, credit metering and per-message cost tracking are working code — not scaffolding you finish yourself.

Payments beyond Stripe

Stripe and Paystack behind one facade, with geo-detected currency. Adding a second processor later is usually a rewrite.

Smaller surface area

Fewer abstractions between you and Rails. A real trade-off: less is done for you, and less is in your way.

Said plainly: ruby_llm already gives you a chat call in a few lines. What takes the time is everything around it — streaming it to the browser without an SPA, metering it, storing it, rendering it, and billing for it correctly.

Live demo

This is the actual chat component.

Token-by-token over Turbo Streams — no SPA, no websocket plumbing of your own. What you're watching is what your users get.

Streams from OpenAI, Claude or Gemini
Markdown with syntax-highlighted code
Credits metered per message
AI Chat streaming live
Specification

Everything in the box

No roadmap items, no "coming soon". If it's listed here it's in the repository.

AI
Chat Streaming responses, conversation history, pinning, auto-titles ruby_llm
Providers OpenAI, Anthropic, Gemini, Mistral, local Ollama one interface
RAG PDF/DOCX/TXT ingest, 500-word chunks, cosine search pgvector
Metering Per-message token counting and credit deduction
Tools 10 fill-in-the-blank prompt templates
Commerce
Providers Stripe and Paystack behind one facade PaymentProvider
Currency Geo-detected, multi-currency pricing
Billing Subscriptions, credit packs, webhook lifecycle
Documents Branded PDF invoices and receipts
Platform
Auth Devise, confirmable, OmniAuth (Google, GitHub)
Tenancy Personal and team workspaces, roles, invites acts_as_tenant
Admin 18 controllers: users, revenue, AI spend, impersonation
Growth Referrals, promos, drip campaigns, public roadmap
Jobs Sidekiq with cron scheduling
Mobile Hotwire Native Android shell wrapper
Deploy Kamal 2 config, Docker, CI workflow
Surfaces

The screens you'd have built anyway

AI / Streaming

One interface. Every model.

Switch providers with a flag. Streaming, token counting and credit deduction are already wired through Turbo Streams.

Conversation history & pinning
Auto-generated titles
Per-message cost tracking
app/services/ai_service.rb
service.chat(conversation, msg) do |chunk| # streamed to the browser live broadcast(chunk.content) end # switch models per conversation conversation.update!(model_id: "claude-sonnet-4")
Documents / RAG

Chat with any document.

Upload a PDF, DOCX or text file. Chunking, embeddings and semantic search run in a background job — then ask it questions.

500-word chunks with overlap
Cosine similarity via pgvector
Answers grounded in your files
/documents
quarterly-report.pdf 42 chunks
What's the CAC in year two?
Year-two CAC is projected at $38, down from $52 — driven by referral loops (p. 14)
Payments

Get paid anywhere.

Stripe and Paystack behind one facade — geo-detected currency, webhooks, subscription lifecycle and PDF invoices.

Switch providers with one env var
Credit packs + subscriptions
Branded invoices & receipts
/admin/payments
USD $99.00 Stripe
EUR €89.00 Stripe
NGN ₦150,000 Paystack
GBP £79.00 Stripe
Admin & Growth

A real back office.

Users with impersonation, revenue and AI-cost analytics, campaigns, promos, referrals and a public roadmap.

AI spend vs revenue dashboard
Segmented email campaigns
Roadmap with public voting
/admin/dashboard
MRR
$4,280
AI spend
$312
Active
184
Churn
2.1%
Teams / Mobile

Multi-tenant. Multi-device.

Personal and team workspaces on acts_as_tenant with roles and invites, plus a Hotwire Native Android shell.

Workspace switching built in
Owner / admin / member roles
Android shell included
workspace switcher
A Acme Inc. 4 members
P Personal workspace personal
Setup

From clone to deployed

01
Clone
git clone, then bin/setup. Gems, database and seeds are handled.
02
Configure
Copy .env.example to .env and add your keys. First signup becomes super admin.
03
Deploy
kamal deploy to any VPS — or Hatchbox, Railway, Render, Fly.
~/my-saas — zsh
$git clone saaskit my-app
Cloning into 'my-app'... ✓ 412 files
$bin/setup && bin/dev
✓ Gems installed · DB migrated · seeds loaded
✓ Running on http://localhost:3000
$kamal deploy
✓ Live at https://my-app.fly.dev
Status

Where this is right now

The kit is new. There's no wall of testimonials because there aren't enough customers yet to fill one honestly — so here's the actual state of things.

Maintained by one developer
Built in the open, not by a team.
Everything on this page is real
The chat demo above is the shipped component, not a video.
The Android app is a wrapper
Hotwire Native shell around the web app — not a native client.
Push notifications need work
The FCM path targets Google's retired legacy API. Documented, being fixed.
30-day refund, no questions
If it doesn't fit your project, say so and you get your money back.
Pricing

One price. Yours forever.

Buy once, build unlimited projects. No subscription.

1 Year Updates
$150 once

One year of updates. Yours forever.

  • Full source code
  • Unlimited projects
  • 1 year of updates
  • Email support
Get started
Lifetime
$300 once

Forever updates. Forever access.

  • Full source code
  • Unlimited projects
  • Lifetime updates
  • Priority support
Get started

30-day refund · unlimited projects · lifetime access · no subscription

FAQ

Questions

Still stuck?

Email me directly — you'll get a reply from a person.

support@saasrailkit.com

OpenAI (GPT-4o, o1), Anthropic (Claude), Google (Gemini), Mistral, local Ollama. Swap with one flag — the abstraction is ruby_llm.

They're more mature and cover more general SaaS ground. This goes deeper on the AI layer — streaming chat, RAG, credit metering — and ships a second payment provider. If you don't need those, use theirs.

Yes. It's a starter, not a no-code tool. If you've shipped a Rails app before, you'll be productive in a day.

Kamal 2 config is included. Any VPS, Fly.io, Hatchbox, Render or Heroku. Postgres + Redis + Sidekiq is all you need.

New features land on the main branch; you git pull or merge. 1-year gets 12 months, 5-year gets five years, lifetime gets them forever.

30-day no-questions-asked refund. Email me and I refund you.

Yes. Unlimited projects — your own SaaS, client work, internal tools.

Start with the boring parts already done.

Or get an email when something ships
You're on the list.
Ask the kit claude-sonnet · streaming

This is the streaming chat UI that ships with the kit — Turbo Streams, no WebSocket config. Try a question:

Customize
Accent
Theme
Motion