Business on the back. Party on the front.
Ruboss is a boutique software consultancy, and the team behind Leanpub. We build and modernize Rails products, with modern front ends, typed APIs, and the CLIs and MCP servers that AI agents use. For the first time since 2019, we’re taking on clients again.
Open for business again.
From 2009 to 2019, Ruboss bootstrapped Leanpub with millions of dollars of software development consulting for clients in the US and Canada. Then Leanpub could support the team on its own, so we stopped.
Leanpub is doing well. And in the age of AI, the Ruboss team has far more development capacity than Leanpub needs. So we’re putting that team to work on your product, too.
Build - We build the business on the back, and the party on the front.
Ruby on Rails and a SQL database on the back: rock solid, boring on purpose. On the front, whatever your product genuinely needs, from plain Rails and Turbo to a full React Router app.
- Product development. A Ruboss team that designs, builds, and ships your product or feature: Rails 8 on the back, and React Router on the front wherever the UI genuinely needs it.
- Rails modernization without a rewrite. Rails upgrades, refactoring into bounded contexts, and a new front end built against your live app, one piece at a time. We did exactly this to Leanpub, and never stopped shipping.
- Typed APIs and contracts. One GraphQL schema that generates typed clients for your web app, your mobile app, and your public API, so a change in Ruby turns into a type error in TypeScript before it reaches a customer.
- Rust CLIs and MCP servers. The interfaces AI agents actually use. Fast, single-binary Rust command-line tools that coding agents can drive, and MCP servers for assistants, built on the same contract as the rest of your product.
- Performance, caching, and scale. Public pages served from the edge, caches that survive dozens of languages, N+1 queries caught by tooling instead of by a slow page, and reads routed to replicas safely.
- AI features in production. AI that runs reliably in front of real customers, every day, not just in a demo. We build and operate AI services inside Leanpub, and we build them for clients.
Track record - Nineteen years of the same haircut.
Rails on the back and a rich front end has been our architecture since 2007, starting with Flex on Rails. At Leanpub, the same Rails app has had three front ends: plain Rails, React over REST, and now React Router over GraphQL. The Rails app never needed replacing.
Here’s Leanpub in round numbers. These count lines of code only: no comments, blank lines, generated code, or vendored libraries.
- Lines of Rails, including admin panels
- 300K
- Lines of React Router front end
- 370K
- Lines of test code, across 28,000 tests
- 340K
- Lines of native iOS and Android
- 140K
- Lines of code in total
- 1.26M
- In production since
- 2010
- Languages served from the edge
- 42
- Clients on one GraphQL schema
- 5
Case study: Leanpub - A new front end, against the live app, with no stop-the-world rewrite.
Everybody knows you shouldn’t do a full rewrite. So we didn’t. We rewrote the front end while upgrading the Rails app underneath it, and kept shipping the whole time.

- React Router over GraphQL. A React Router 7 front end with more than 800 routes, talking to Rails over a GraphQL schema that generates a fully typed client.
- Rails upgraded, not replaced. The same Rails app, upgraded to Rails 8 and refactored into bounded contexts, with 285 tables and a database history going back to 2010.
- One schema, five clients. The same schema feeds the web app, the iOS and Android apps, a public REST API, and an MCP endpoint for AI assistants.
- Built for the edge. Public pages are byte-identical for every visitor, cached at the edge in 42 languages, with a second cache layer so a miss stays cheap.
How we build - Rules that survived contact.
Every one of these is written down where we work, and every one was learned the hard way. They come with us to every engagement.
- Keep the back office plain Rails. Never put a fancy front end on the thing only your staff sees.
- One byte-identical response for public pages. No user-specific data in server-rendered HTML, so public pages can come off the edge.
- Never let the browser write a query. It sends an operation name. The allowlist is compiled, not configured.
- Deprecate, count the traffic, then delete. Old bundles and pinned mobile builds outlive your deploy by months.
- Generate the mirror, never hand-write it. If you ever type the words “keep in sync with”, you have already lost.
- Auth at the layout, not the route. One check per layout, instead of one per page that somebody has to remember.
AI in production - AI shipped in production, not theorized in a deck.
The Ruboss team builds and operates a growing suite of AI services inside Leanpub, used by real authors every day. That’s the experience we bring to your AI features.

- AI translation at scale. Translating entire programming and data-science books into dozens of languages while preserving code, formatting, and meaning.
- AI course creation. Turning existing content into structured, sequenced, teachable courses.
- AI ghostwriting, copy editing, and transcription. Drafting, refining, and transcribing content with the author in the loop.
- Interfaces for agents. An MCP endpoint on the same schema as the rest of the product, so AI assistants get the same typed contract as every other client.
Advise - The boundary is the real product decision.
Not every product needs a separate front end. Sometimes plain Rails wins outright. We help you make that call, and the others that come after it, honestly.
- Architecture review: mullet or crew cut?. A fixed-scope review of your front-end and back-end boundary, ending in a written recommendation. Sometimes the answer is plain Rails and Turbo, and we will tell you so.
- Product thinking partner. A senior sounding board for product ideas, positioning, and what to build next. Regular sessions to think out loud with someone who has built and sold a product for sixteen years.
- Pricing and packaging. Tiers, memberships, bundles, and revenue shares that match how your customers actually buy. Leanpub has run them all, from variable pricing to subscriptions.
- Fractional CTO and CPO. Part-time technical and product leadership, owning architecture, roadmap, and the hard calls alongside your team without a full-time hire.
- AI product strategy. Where AI genuinely changes your product and business model, and where it does not, grounded in running AI systems in production.
- AI-native engineering. Getting real leverage from AI coding agents: agent instructions, custom commands and hooks, and the test coverage that makes agent-written code safe to ship. It’s how the Ruboss team works every day.
Engagement models - Ways to work with Ruboss.
Whether you need a team for a year or a sharp answer to a single question, there’s a model that fits.
- Dedicated product team. A Ruboss team working on your product on an ongoing basis, led by Ruboss and accountable for shipping.
- Fixed-scope project. A defined product, feature, CLI, or API, built and delivered against an agreed scope.
- Modernization program. A long-running upgrade of an existing Rails app and its front end, delivered incrementally alongside your own team.
- Architecture review. A short, focused engagement that ends with a clear recommendation and a plan you can execute with us or without us.
- Advisory retainer. Standing access to Ruboss leadership for founders, CEOs, boards, and investors who want senior judgment on call.
- Product thinking sessions. Regular sessions with Peter to think through product ideas, positioning, and what to build next.
The team - Led by Peter Armstrong. Built by the Ruboss team.
You work with the same team that builds and runs Leanpub every day, led by the founder who has been building Rails products since 2007.
- Peter Armstrong, founder. Eight years at Silicon Valley startups, author of the 2007 book Flexible Rails, founder of Ruboss in 2008 and of Leanpub in 2010. Peter leads every Ruboss engagement.
- A team proven on a real production codebase. Ruboss developers earn their place on Leanpub first: a sixteen-year-old production app used by thousands of authors and hundreds of thousands of readers. Then they work on yours.
- Full stack, from Rails to Haskell. Rails and GraphQL Ruby, React Router and TypeScript, iOS and Android, AWS, a book-generation engine written in Haskell, and production AI services.
- AI-native development. The team builds with AI coding agents every day. That’s why we have capacity to spare, and why we build the CLIs and MCP servers those agents use.
Who we work with - Built for teams with real products.
Ruboss works best with companies that want an experienced team to build something that lasts, and the judgment to know what not to build.
- Rails companies with a front end that has aged badly
- Startups that need a product built, not a slide deck
- Teams that need a public API, MCP server, or CLI
- AI product teams
- Developer-tool, publishing, education, and creator platforms
- Leaders who want an honest partner to think through product ideas with
A partner to think with - Not another courtier.

If you lead a successful company, you know the dictator’s dilemma. The more successful you are, the more you end up surrounded by a court: people who are mostly trying to please you. It gets harder and harder to find out what anyone actually thinks.
I don’t care about any of that. I just want to work. I genuinely enjoy processing product ideas with people, and talking through how to make great products and how to position them. I don’t have all the answers, but I’ll always tell you what I honestly think.
Peter Armstrong, Founder
Contact Ruboss
Tell us what you’re building, or what you’re stuck on. Every engagement starts with a short conversation with Peter Armstrong to understand the problem and whether the Ruboss team is the right fit.
Email peter@ruboss.com