Brian Scanlan on Running a 15-Year-Old Rails Monolith as an Agent-First Engineering Organization

Open on YouTube ↗
Overview

Intercom runs a Rails monolith that is about 15 years old and contains millions of lines of code. It also describes itself as "technically conservative." In this episode of On Rails, host Robby Russell asks Brian Scanlan, a senior principal engineer on Intercom's platform group, how those two facts fit alongside an aggressive, company-wide bet on Claude Code. Scanlan's answer is that a boring, well-understood foundation makes the bet easier. The conversation covers what broke as a result, including CI, code review, and the limits of the models, and how Intercom has been rebuilding its development lifecycle around agents. The conversation was recorded in mid-April 2026.

38 min read

Why Intercom stays on Rails: being "technically conservative"

Scanlan jokes that the monolith is simply too big to break into microservices, "obviously something we would love to do." The serious answer is the usual one. Rails is expressive, easy to get started with, and light on boilerplate. That lets developers focus on building product instead of learning huge frameworks or building complex microservices.

Scanlan ties this to a broader engineering principle. Intercom calls itself a principles-driven organization, and the principle that has served it best is being technically conservative. In practice this means large applications into which the platform teams put "all of the smart stuff." Product engineers then spend as little thought as possible on "gunge and undifferentiated heavy lifting" and more time shipping product.

Asked how this relates to "boring," Scanlan cites Dan McKinley's Choose Boring Technology. They re-read it periodically and call it "gold." In their summary of McKinley's argument, if you build on well-understood components, scaling work gets absorbed into the shared effort of keeping, say, the MySQL layer or the Rails app healthy. If a team picks a bespoke technology that fits its problem perfectly, it now owns a pet that it has to feed and maintain. Scanlan concedes that approach is better than doing nothing, but holds that in most businesses, investing deeply in a small set of technologies gives everyone more throughput and higher quality. "It's hard enough to scale one database," Scanlan says. Scaling three because different teams picked different ones would be far worse.

The platform group and how it partners with product teams

Scanlan has been at Intercom for 12 years. The platform group is responsible for availability, performance, cost, security, and developer productivity. That covers the monoliths and developer environments, and Scanlan does everything from on-call to interviews to architecture. Scanlan says the job lately feels like being "some sort of Claude Code evangelist or whisperer." The group has also been especially influential in Intercom's AI rollout.

The platform group owns Rails upgrades, but Scanlan draws the line with product teams much deeper than the framework version. The group owns the interfaces product engineers build on: async workers, web servers, the "glue" patterns, observability, and everything from the AWS accounts up to large amounts of Rails code. It pairs with product teams on operational issues, database upgrades, and query optimization. It does not treat the Rails app as a black box that people bring problems to. The group owns the problems, and will sometimes change how features work to keep them performant, cost-effective, or upgradable.

Robby asks whether there is a DBA-style gatekeeper for schema changes. Scanlan says no. The goal is for product engineers to use ordinary Rails migrations and mechanisms, and have them work in production as easily as they would in a simple environment. The platform teams are staffed mostly with former product engineers, not sysadmins or DBAs, which Scanlan finds ironic given their own SRE background. People typically drift into a niche such as database performance or deployments and then ask to join. Intercom generally doesn't hire for specialist knowledge, or even for "10 years of Rails." It prefers generalists who are willing to go deep, while keeping enough experienced people on the bench.

What keeps Scanlan up at night: not moving fast enough on AI

Scanlan's current worry is that Intercom isn't adopting AI fast enough. Having talked to many companies, Scanlan guesses Intercom is in "the very high percentiles," but says that isn't good enough. The anxiety is about headwinds. A greenfield competitor doesn't carry 15 years of complex features and many different code styles. Scanlan considers it unacceptable for Intercom to be held back because a million lines of code means Claude Code takes five times as long to get something good.

Scanlan also believes that even if the tools stopped improving, Intercom is on a path to assembling, "Voltron style," enough Claude Code skills and guidance to handle the vast majority of what a product engineer does. The impatience is about finishing that work while keeping a very high quality bar. Scanlan isn't very worried about going down wrong paths, since you can notice when things go badly. The aim is to get it right the first time, and changing how people work is a huge amount of effort. "Turns out that humans do a lot of work," Scanlan says.

When CI blew up

Robby had read Scanlan's tweet thread on how Intercom uses Claude Code, and was struck by how much pressure the CI system had come under. Scanlan frames it as a problem of success. They like to say that when a scaling problem hits, the first step is to throw a party, and the second is to figure out the fix.

The success was a rapidly rising rate of pull requests. The monolith's test suite has hundreds of thousands of tests and would take about two and a half days of wall-clock time to run serially. Intercom parallelizes heavily, makes hundreds of changes a day, and ships to production up to 100 times a day. The company is so dependent on this that being unable to ship is treated as a P1 event, whether the cause is a flaky test or a stuck pipeline.

Two things went wrong. The first was flakiness. About a year earlier, Intercom had adopted Shopify's Rotoscope to identify changes where only a subset of tests needs to run. Scanlan says this saves a great deal of compute and cost, but little time, since the slowest test and the setup and teardown still dictate duration. With higher velocity and Rotoscope, retries and flaky tests grew. Intercom automatically retries failed tests. A genuinely flaky test normally fails under one seed or ordering and passes on the next run, which is tolerable when you ship all day. Past a certain critical mass, though, the flaky tests started "tripping over each other." The second problem was cost, which Scanlan says was growing faster than the business, and the business itself was growing fast.

There was no single fix. The team resized hosts and put everything in scope, including temporarily stopping its aggressive use of AWS spot instances. Scanlan explains that spot hosts can be reclaimed at any moment in exchange for a lower price, which suits tests because you can simply rerun them. They still need tuning, for example so that a host signaling shutdown stops picking up new tests. Pausing spot usage stabilized things for a while.

The rest was "the classic boring scientific method": use observability to find the bottlenecks. Using Honeycomb tracing, the team found that most of the time went into loading factories. Heavyweight "semi-god objects" such as conversations and workspaces were set up hundreds of thousands of times across the suite. A deep conversation factory that worked for almost any test could be replaced with a lightweight version that only does the complex setup when needed. Scanlan says dozens of fixes like this, aimed at the biggest sources of time and flakiness, got CI into a better state. None of it was rocket science.

The mandate: double engineering throughput

Scanlan says throughput started rising around the previous summer. That coincided with CTO Darragh publishing a goal to double engineering throughput, measured crudely as pull requests per head in R&D. Scanlan acknowledges that any metric stops being a good measure once it becomes a target. Still, if AI tooling makes producing code much easier, a natural rise in PR throughput is a reasonable expectation. The team already knew CI had low-hanging fruit, so its trouble wasn't a surprise.

Intercom also invested in linting. It already had a decent RuboCop setup and GitHub Actions checks, but expanded them on the expectation that more code needed to be better code. Claude Code "still can get stuff wrong," Scanlan notes. Without guardrails it can produce confusing code or code "inspired by code we wrote 15 years ago," which is worse. The number and sophistication of Intercom's custom cops are now much higher. Scanlan credits Claude Code with being good at writing cops, whose syntax can be intimidating.

One effort had mixed results. Scanlan once counted about 10 HTTP client wrappers in the monolith, including Typhoeus and various per-service wrappers. The team started consolidating them, on the reasoning that what's good for humans is good for LLMs and agents should know the one way to do things. The work petered out because its impact was hard to prove. Scanlan concluded it's easier to tell Claude Code which HTTP client to use, or "do not use metaprogramming," than to perform surgery across the whole app. Many old patterns stay in place, and the guidance keeps the agent from copying them.

One tool, agent-first work

Robby asks what the workflow looks like when an engineer picks up a ticket. Scanlan starts with the mandate: Claude Code is Intercom's single tool. Without one platform, it's hard to build up the sophistication of repeatable skills, whether for Rails upgrades, flaky tests, outages, or new features. Scanlan cites Greg Brockman's post saying all technical work at OpenAI would be agent-first by March 31st, and says Intercom has the same principle, with OpenAI "a little bit ahead." If you aren't opening an agent first, for outage response, planning, research, or writing code, "you're kind of doing it wrong."

By Scanlan's figures, well over 90% of code changed daily in the Rails codebase is generated by Claude Code, and some days 95% or higher. The vision is for people to stop reading code and close their IDEs. You tell Claude the problem, it picks the skills, and it produces the right code the first time. Scanlan says they rarely open an editor anymore. Many people still use editors, invoke Claude from VS Code, or inspect the output, but Scanlan thinks most of Intercom is well along a maturity curve that runs from tab completion, to the agent writing most of the code, to no longer looking at code at all. Scanlan doesn't write giant specs. Their preference is interactive, conversational, interview-style work in which the plan develops as it goes.

The exception is "artisan" work. Scanlan's metaphor is that the software factory, the assembled Claude Code skills, produces IKEA furniture. Ornate, novel, or unusually high-quality work that the factory hasn't seen still calls for skilled humans. UI is an example: Claude Code still can't reliably notice that something is "off by two pixels," so visual work benefits from a human and an editor in the loop. Scanlan describes their own job right now as filling the gaps. Whenever the code isn't right the first time, they figure out why and fix it.

Local agents today, remote agents next

Asked whether autonomous agents pull tickets off a backlog, Scanlan says the work is mostly driven from local Claude Code. When paged into an incident, Scanlan habitually opens Claude and tells it about the incident, and muses about automating that step. Intercom is building its own remote agent system, which effectively mimics its local Claude Code setup. Scanlan mentions published work from Stripe and Ramp and various startups as other options. Remote agents are needed for multiplayer, long-running, large, scheduled, or automation-triggered work, such as joining incidents or Slack channels on their own. Scanlan notes, though, that recent features like scheduled tasks have narrowed the advantage, and that "just local Claude Code is a perfectly good way to get through a lot of work."

Code review is the new bottleneck

Robby describes clients whose developers now spend more time reviewing the growing number of PRs, and who wonder whether humans should review at all. Scanlan agrees that code review is the current bottleneck, and says that's exactly what increasing throughput is for: you find the next bottleneck and fix it. Intercom's goal is for the majority of pull requests to be approved automatically with no human approver. Today about 20% of Rails app PRs are fully auto-approved by a Claude Code–based system that identifies "safe PRs." The target is over 50%.

Scanlan traces this back several years to Dependabot. Intercom used to open issues for teams to handle Dependabot security PRs, and the teams ignored them, so hundreds or thousands piled up across a long tail of applications. Scanlan questions what value a human adds when upgrading, say, the JSON gem in a huge codebase. The human isn't really re-verifying anything and is relying on unit, integration, and smoke tests and post-deploy exception monitoring anyway. So Intercom stopped putting humans in the loop and began auto-merging Dependabot PRs in batches on Tuesdays, Wednesdays, and Thursdays, visible in a Slack channel and never at 2 a.m. A handful of "load-bearing" dependencies are excluded based on experience: the AWS gem and Rails itself, and LangChain in Python. Scanlan says outsiders are often aghast at this trust in CI. Their view is that the value of a human in that loop is very low, and people shouldn't be asked to do low-impact work just because it's the process.

Intercom also has deterministic, path-based auto-approvals. Changes that only touch specs, documentation, and similar files ship without human approval. Scanlan says all of this is written into Intercom's SOC 2 and ISO 27001 compliance. "Despite rumors to the contrary," these regimes don't require humans to approve each other's work. They require documented processes, controls, risk mitigation, and audit trails, all achievable with automated review. Scanlan sees no reason a mix of agents and rules can't produce faster, more repeatable, and better review processes.

"Putting manners on the bots"

The first attempt at AI code review, simply asking Claude Code to review PRs, produced reviews Scanlan calls terrible even though they looked good. LLMs are good at producing things that look like good work, are eager to say anything, and can make a big fuss over minor points. The fix was to "put manners on these bots." The reviewer was told not to get involved unless something is very impactful, to keep it short, and to say nothing if it has nothing to say. It was also given examples of the kinds of issues Intercom wants caught.

Because Intercom has a huge history of changes, it could generate many candidate reviews and compare them with reviews by its best Rails engineers. Those engineers then graded the LLM output, creating a feedback loop instead of relying on one-shot reviews. Scanlan says that once the noise dropped, people started acting on the feedback. Noisy reviewers get ignored.

Approvals followed the same process: backtest historical reviews and approvals with your best people, and decide which criteria you're comfortable with. Intercom combined historical data, expert input, and common-sense rules. A good candidate change isn't hundreds of lines long, sits behind a feature flag where possible, and avoids certain code paths. The agent's job is to answer "is this safe to approve?" Scanlan acknowledges that reviews also serve as a teaching aid and catch other problems. Intercom's bet is that it can push more throughput through the system, learn from what goes wrong, and improve its checks, its codebase, or even its deployment system, which Scanlan calls very simple and possibly in need of more features.

Why keep humans involved at all?

Robby pushes on an apparent contradiction. If one engineer's Claude writes the PR and another engineer's Claude reviews it, and nobody is meant to read the code, why not have a single engineer chain skills for submit, fresh-context review, fix, and merge? And how does accountability work if engineers are told not to look at the code?

Scanlan calls it tough. Code review has been the default gatekeeping mechanism and a way to see what's changing, and some things in the code and infrastructure Scanlan still wants to know about. But much of that visibility can be handled reactively with agents. A team working on the Intercom Messenger, for example, can ask Claude for a weekly summary of what changed in its area. Blocking people from shipping is "a pretty extreme solution" for that need. Where specific concerns exist, such as Intercom's hottest code path, the review agent can refuse and demand a human. Scanlan calls that the "ejector seat." Education and awareness can also happen after the fact.

Scanlan's core argument is that most code "is just not that interesting," especially once it has passed heavier linting and tests and been pushed by the auto-approval criteria into small, tested changes. What would have been risky before is, in their view, far less risky now. Scanlan also describes a deployment agent in development that would monitor 100% of deploys. It would read the code and determine which metrics to watch, the way you'd have your best engineer watch a Rails upgrade "like a hawk," but for every change. Scanlan presents this as a capability Intercom never had before, and one that offsets the risk of moving more changes with fewer humans in review.

The skills architecture

Scanlan says product engineering "might actually be the least interesting part" of the story, but first describes the plugin structure, which is shared between R&D and the rest of the company.

A base plugin provides telemetry and safety. Claude Code hooks send metadata about every session and skill call to Honeycomb, so anyone developing a skill can explore how it's being used. Full session transcripts, usually large JSON files, are copied to S3 and lightly anonymized. Scanlan admits there's only so much anonymization you can do. Sessions from groups such as legal and finance are excluded. The purpose is quality control and a feedback loop, since "there's gold in there" about how people work and whether things are working.

Core plugins cover general developer work used across Intercom, such as fixing a flaky spec or opening a pull request. The bar is very high. Core skills must have evals, must follow both Anthropic's skill guide and Intercom's internal guides, and are improved with "skill improvement skills." Skills graduate into this tier, and once there, the team commits to maintaining them. Core skills should be unopinionated and usable by anyone.

Team plugins have "exploded." They fit specific workflows and can carry a lower quality bar and more opinionated setups, because overfitting to a team's preferences is the point. Some are high quality but deliberately restricted. The Rails upgrade skill is one: Intercom has been running bleeding-edge Rails in production with weekly upgrades, and has encoded the repetitive steps into a continuously improved skill. Only one team should be upgrading Rails, so the skill is hidden from everyone else.

Below that is a long tail of personal skills and marketplaces, and Intercom is deliberately liberal about letting people build and distribute them, partly so people learn. Scanlan favors small, discrete, testable skills over monolithic ones, which can be composed from smaller skills. Intercom accepts overlap. Ten different "investigate a bug" skills can coexist, and the team then uses session data to find which parts actually get results and pulls out the best. Momentum matters more than going slowly and hoping the good stuff emerges on its own.

Skills, rules, guidance, and hooks as different levers

Scanlan describes skills, rules, guidance, and hooks as levers suited to different goals, and illustrates with one of Intercom's earliest skills, for pull request descriptions. Out of the box, Claude Code "regurgitates" what the code does, which Scanlan calls useless. PR description quality fell as adoption grew, because the important part is why the change exists. Even a link to a GitHub issue is more useful than an English paraphrase of the diff.

Intercom first added a rule that calls a skill. The skill reads the session data to establish the purpose of the change and asks the user if it can't tell. That helped, but the rule wasn't being invoked consistently, so the team moved to a hook to force the behavior. The general method is to experiment, use telemetry to see whether behavior changes, and ask people why a skill wasn't used: are they on the right Claude Code version, which plugin versions do they have? Scanlan calls it a "huge tech support kind of thing." Intercom is at the mercy of whatever Anthropic ships next, but Scanlan considers the building blocks good enough.

A thousand weekly users, most of the value outside engineering

Intercom has over 1,000 weekly Claude Code users, and adoption went "viral" outside R&D once the tool was connected to Snowflake with good support. Sales, marketing, customer support, and other teams began doing work they had long wanted to do: answering their own questions and encoding their workflows as skills. Scanlan credits three things: picking one tool, providing access with good controls over Snowflake data, and a core team setting people up with MCP configs and lots of technical support. "If that's not there, then you're going to have a bad time." Scanlan reports people saying in internal channels that they're doing the best work of their careers and no longer wait months for an analyst to run a query.

Robby asks whether this lets Intercom avoid building internal admin tools and reports. Scanlan says writing code "might be the least important thing" happening with Claude Code at Intercom. The main non-R&D use is analytics: making sense of data in Snowflake, Tableau, and elsewhere, where people previously didn't know which fields to trust and "Snowflake doesn't actually know." With good guidance and access, people ask a question and get the answer ad hoc. Scanlan suggests that many dashboards, and the teams maintaining them, are "almost obsolete in a certain way," since their real job was answering questions. Scanlan considers this a much bigger deal than reliably producing database migrations.

The Rails console MCP, and why non-engineers use it most

Most integrations are standalone local MCPs for individual services, which means authenticating "to a million different things." Intercom has also been consolidating functionality into the Rails app. Scanlan recalls that when they joined, customer support staff queried production directly in the Rails console. As Intercom grew and "became more boring," the console was locked down to engineers, for good reasons.

One of Intercom's philosophies is that anything you can do on your laptop, your agent should be able to do. One day Scanlan was running console queries and pasting the output into Claude, and realized they were acting as a proxy for the agent. Intercom was already building API versions of internal tools like customer lookup, so Scanlan built an MCP that lets Claude Code send arbitrary Ruby to the Rails console, layered on the console's existing safeguards. Scanlan was a little apprehensive and launched it quietly. The top five users, each running hundreds of queries of ad hoc exploration and often combining the console with Snowflake data, were all non-engineers. "I felt so proud," Scanlan says. Design managers and senior product directors were "unwittingly" running fairly complex Ruby because Claude chose the console as the best place to answer their questions. Scanlan suspects Intercom's head of product wouldn't even know they had used production access.

Technically, the MCP takes a string of Ruby as an API parameter, which can be a multi-part, lambda-like block. It runs checks against it, executes it in the production environment with the same functionality as SSHing into a host and opening a console, returns the output, and logs everything to an audit trail. The experience is worse than a real REPL. There's no tab completion, and each call may land on a different server, so the code has to be right the first time. Claude often sends invalid code, but when it gets it right, Scanlan says, "it's amazing to see." Claude learns what to write from a skill that accompanies the tool with examples. Users are also usually running Claude inside the Rails codebase, so it alternates between exploring code and running queries in production. The tool is currently read-only. Scanlan isn't opposed to writes on principle, but nobody has asked for them. If something needs to be written regularly, the answer is to build an API endpoint, "one Claude Code session," with proper validation.

On security, Robby asks about a hacked laptop exposing all production data. Scanlan answers that these users already had access to this data, and Claude acts as a proxy. From a strict compliance standpoint, what people can access doesn't change. The volume of access does grow, and laptops now hold more credentials and active sessions, so detection matters more. Scanlan also calls securing agents in general "very much an unsolved problem." Intercom's mitigations include governing which MCPs people can connect to and where plugins come from, detection on laptops, and distributing plugins and locked-down Claude configuration through internal IT systems. Scanlan admits this doesn't stop someone from downloading Codex and bypassing it all, but says it makes the default safer and avoids encouraging shadow IT. With recent news about new models and security threats, Scanlan expects things "to get more exciting for security teams," and says the answer is doing the fundamentals well.

Teaching the terminal, again

Asked whether non-technical staff are intimidated by a terminal UI, Scanlan recalls getting into computing about 27 or 28 years ago, running student-run Unix systems at university around 1998. They hosted newsgroups, IRC, instant messaging, and email: "the best social network" on campus. Thousands of non-technical students were "banging down our door" to learn the terminal because they saw friends doing cool things with it. Nearly 30 years later, Scanlan says the job is the same.

There's also bottom-up enthusiasm. Intercom's VP of operations, after teaching colleagues, used Claude Code to build a small guide for non-technical people getting started, warning that the terminal is "real nerd stuff" but manageable. Scanlan's conclusion is that motivated people get past the terminal quickly once they see productivity gains, even if few will go as far as installing Oh My Zsh. Robby, who created Oh My Zsh, recalls doing it to make designers and front-end developers comfortable with the terminal.

Where AI still fails: a Datadog false alarm

Robby asks about deterministic versus open-ended work. Scanlan says that even in Intercom's well-guided environment, Claude Code struggles with open-ended problems, and gives an example from three or four weeks earlier. One of Intercom's most important alarms fired on a weekend. It's an SLO-style alarm on inbox usage that fires when customers' reply behavior deviates from statistical predictions. Past causes have included slow databases, internet issues, and Carnival in Brazil.

The on-call engineer did what Scanlan would do and brought Claude in. Claude produced many plausible theories, including blaming changes from the previous day, even though the drop was short and had recovered, which didn't fit a latent bug. The theories sent the engineer down several paths, and they settled on one. A couple of hours later Scanlan dug in and found that the real cause was an eventual-consistency issue in Datadog's metrics, not an obvious conclusion. Scanlan admits to being pleased for a few minutes to still be able to "outsmart" the LLMs.

The lesson Scanlan draws is not about the individual. The engineer was experienced at Intercom and, in Scanlan's words, one of its best AI engineers. The lesson is that in open-ended situations without a clear goal, the model gives confident, plausible answers, and it takes real skill to say "the vibes are wrong." Novel cases can be encoded so Claude checks them next time, and Scanlan thinks that eventually covers most edge cases. But being led down red herrings is worse than Claude admitting it has no idea. Repeated at scale, it can build wrong beliefs about production or leave root causes unsolved. Scanlan acknowledges humans do this too. Asked whether incidents get a second look by process, Scanlan admits to "cheating": they join nearly every incident channel and apply "the eye of Sauron," which they concede may not scale at every company.

The airline pilot metaphor

Scanlan's model for the future is the commercial airline pilot. Pilots land mostly on autopilot and monitor and manage it. They also know they'll be tested in simulators without it, take pride in the craft, and deliberately disengage it for some share of landings to stay sharp. Scanlan is "extremely bullish" that Claude Code will eventually resolve most incidents faster than Scanlan can, and calls that the bar, while saying Intercom is still a good way from it. Even then, Scanlan plans to race it, or disable its ability to act, and compare.

The reason is that running the system is Scanlan's job, and a factory owner has to understand the output deeply, "take the IKEA furniture home and use it and assemble it." Even for well-understood, deterministic jobs like Rails upgrades and flaky test fixes, which Scanlan considers about 90% solved with Claude Code, people still need to turn the autopilot off at times. Without the expertise to judge the LLMs' output, "you lose control of the system."

Robby raises aspiring entrepreneurs who want to build apps entirely with fleets of role-playing agents. He also recalls learning Rails when it was considered risky and figuring things out as problems arose. His view is that the industry will work these questions out together as it encounters them.

The 2x goal was met; now for more

Scanlan reports that Intercom met its goal of doubling R&D throughput within about a year, roughly two weeks before the recording, and now intends to double it again. Scanlan now considers 2x "kind of underwhelming" given where models and harnesses are going. The organizational change of rewiring how hundreds of people work is years of work that Intercom is trying to "speed run." Scanlan compares the shift to compilers: as more work moves to agents, people will think less about low-level details and more about inputs and outputs, while still being able to go deep. Scanlan asks, "why can't it be 10x?" and thinks that's realistic.

Token costs: deliberately not optimizing, yet

On token consumption, Scanlan says the opportunity cost of optimizing is currently too high, so Intercom isn't focusing on it. They acknowledge that the spend is "an extraordinary amount of money," that they consider it appropriate for Intercom, and that the current growth rate isn't sustainable. There are known short-term wins Intercom hasn't pursued. Scanlan expects harnesses to improve, citing recent Anthropic features around model selection and anticipating better caching, but still expects spend to keep rising. The current priority is avoiding sloppiness: no over-complex orchestration that burns tokens for fun, no Opus where Sonnet would do. Playwright is one area Scanlan says burns many tokens and can be improved with minor changes. More attention to cost is expected "in a few months' time."

Robby asks how teams with skeptical finance departments should handle this. Scanlan admits Intercom is "easy mode": leadership is all in, and the finance team are heavy Claude Code users themselves, which Scanlan says reduced the questions. From years of managing Intercom's AWS account, its biggest spend, Scanlan had regular conversations with finance. About a year earlier, when finance asked when the growth would end, Scanlan sent them a Steve Yegge article, which Scanlan recalls as "Death of the Junior Developer," predicting token spend would grow 10–100x within a year or two. Scanlan's broader framing is that AI spend should come out of the headcount budget, at a similar scale, rather than being treated like tool seats such as JetBrains licenses. Scanlan argues that for most businesses, and certainly progressive tech companies, running as fast as possible is critical. If budget holders block adoption, that should be escalated to the C-level immediately, because companies that move conservatively now "are going to look pretty bad in a year or two."

Ephemeral code

Robby floats an idea: an agent might write temporary classes, overlay them on the Rails app, answer a question, and discard the code, keeping the codebase and context window smaller. Scanlan finds it interesting and points to Intercom's rake tasks, which are largely one-off code that has to live somewhere so it can be run and reviewed. Truly one-off work might end up flowing through the Rails console MCP instead of Git. Scanlan stresses that an audit trail is always needed, and says the MCP would probably need more state and helpers to serve as that kind of execution environment.

Does Rails hold up in the AI era?

Robby asks whether Ruby's smaller share of training data hurts. Scanlan says that two years ago they would have said yes. React, Node, and Python got better results than Intercom's Ember or Rails, especially the custom Rails that accumulates in a large codebase. Something changed last year, and Scanlan attributes it not only to models but to harnesses getting better at discovering and navigating large codebases. Claude Code started getting Intercom's Rails code right the first time.

Scanlan mentions a recent study making a case for Ruby being LLM-friendly, but mostly relies on a simple heuristic: what's good for humans is good for LLMs. That includes docs, tests, short code, and Ruby and Rails' expressiveness. Perhaps LLMs once favored verbose, Java-style boilerplate, but Scanlan says they no longer see Claude taking wrong approaches in Intercom's codebase. Asking it to make code more idiomatic works, and its Ruby doesn't read like a Python or Java developer's. Scanlan hedges that they haven't used many other Rails codebases, and that unusual structure or something like Sorbet might be a barrier. For Intercom, "the teething pains" of two years ago are over.

Wishlist: an agent-first Rails ecosystem

Looking 6–12 months ahead, Scanlan wants the Rails community to treat agents as the primary users of the framework: choosing it, installing it, operating it, and querying it for telemetry. Scanlan asks why LLMs don't pick Rails by default. They mention a podcast in which John Collison described finishing a side project before thinking to ask what language it was in. Scanlan says agents currently tend to default to Node or React, and suggests the community work on the zero-to-one experience of installation, setup, and documentation, a kind of "agent SEO" or agent experience. Intercom is doing similar work to make its own product appealing to agents.

Concretely, Scanlan would like not to have to build something like the console API themselves. They want native or well-supported community gems for agent access, with Console1984-style safety and good defaults, so that choosing Rails, or having your agent choose it, gives you the best agent-first environment. Scanlan also suggests revisiting some conventions on the assumption that agents, not people, are driving, possibly discarding conventions that don't serve agents. Agents take the path of least resistance, so if configuring or enabling something in Rails is easiest, they'll use it.

Asked how to get feedback from agents, Scanlan suggests writing evals to find breaking points and benchmark over time. You can ask agents or dig into session data, but Scanlan says they aren't self-aware and will produce plausible explanations that may not reflect what happened. Practical steps include serving developer docs as markdown and making search accessible, so agents reach answers in fewer steps. Scanlan compares this to latency in shopping funnels: more tokens and steps lower the "conversion rate," even if the agent eventually gets there. Scanlan believes Ruby on Rails is already very LLM- and agent-friendly, and says the community should do the rest of the work so agents adopt it.

Closing: re-reading the classics

For a book recommendation, Scanlan bends the rules and picks a technical book: Martin Kleppmann's Designing Data-Intensive Applications, recently reread, possibly prompted by a new edition. Scanlan's point matches the earlier nod to McKinley. You don't need to read every book, just know a handful of core works well and keep revisiting them. Scanlan didn't learn anything specific from this rereading, but was reminded to keep the fundamentals top of mind in day-to-day work. That echoes the pilot metaphor: even as more work moves to the autopilot, the humans running the system need to stay fresh on the craft.