Build vs buy is rarely about the build. It’s about the next two years of running it.
Roughly once a month, an engineering lead reaches out to ask whether building a Reddit shared inbox in-house is reasonable. The honest answer is “it’s reasonable for the first three weeks.” The harder answer is “it’s expensive for the next two years.”
This post is the teardown we wish we had read before we built Subportly. It covers what’s actually involved, where the hard parts hide, and why the math usually goes the other way.
What “a Reddit shared inbox” actually means
Strip the marketing language. The product is:
- Connect N Reddit accounts (brand, moderator, founder, agency) via OAuth
- Pull every DM, modmail, mention, and comment reply from each account
- Display them as a unified queue with filters, search, assignment, status
- Allow replies that go out as the right account
- Support multiple human users on the team, each with their own login, all sharing the queue
- Track metrics: response time, who replied, what got resolved
That’s the whole product. It sounds like a weekend project. It is not.
What’s actually hard
Here is the work, in roughly the order you’ll hit it.
1. Reddit OAuth, properly
Reddit’s OAuth flow is documented but quirky. You will spend three days on the basics: scopes, refresh tokens, the difference between user-context and app-context tokens. You will spend a week on the multi-account piece: how to let one human in your team add three Reddit accounts and have them all linked to that human’s session, with secure storage of refresh tokens.
The thing that bites you here is that Reddit’s user-context tokens expire after one hour, and refresh tokens have to be exchanged correctly under load. Your team will get this right after the third outage.
2. The four feeds
Reddit’s API gives you four different endpoints for the four message types:
- DMs:
/api/v1/me/inbox(with various subendpoints for “messages,” “comments,” “mentions”) - Modmail: a separate, newer API that uses different conventions
- Comment replies: another subendpoint of the inbox
- Mentions: yet another subendpoint
Each has different pagination, different “mark as read” semantics, and different rate-limit behavior. Modmail in particular has its own object model that is unlike everything else (it’s threaded with multiple participants, the others are not).
You will write four pollers. They will not look the same. They will share less code than you hoped.
3. The polling problem
Reddit gives you no webhooks. None. To know that a new DM arrived, you have to poll.
If you poll every minute per account, with five accounts and four endpoints each, that’s 20 calls per minute per account. That number is fine for one customer. It is not fine for a hundred customers, because you will hit your commercial-API call budget faster than you expected and you will get rate-limited.
The fix is some combination of: smart polling intervals based on which accounts are active, exponential backoff when nothing’s happening, careful use of pagination so you don’t re-pull the same items, and shared polling across customers where possible (which has its own complications).
We wrote a separate piece on the engineering of this, because it deserves one. The summary: a robust polling system is the largest single piece of engineering work in the product, and it is what separates “demo on a laptop” from “service that works at 9pm Sunday.”
4. Mark-as-read, across the team
When somebody on the team replies to a DM, the DM should disappear from everyone else’s queue. This sounds trivial. It is not.
The complications: Reddit’s “read” state is per-account, not per-user-of-your-tool. If two of your humans are both watching the same brand account’s DMs, when one of them marks something read on Reddit, the other one’s UI needs to update. You need a shared state layer on top of Reddit’s per-account state.
You also need to handle conflicts: what if both humans start typing a reply at the same time? Most build-it-yourself versions of this skip the conflict handling, which means two replies sometimes get sent to the same DM. That is the worst possible outcome on Reddit, where double-replies look like the brand has lost its mind.
5. Sending replies as the right account
You will write a “send reply” function that takes a target thread and a reply body. The function needs to know which of the connected accounts to send from. The brand-account reply must come from the brand account. The mod-account reply must come from the mod account. Etc.
This sounds like a one-line check. It is not, because:
- Some message types come to one account but the right reply might be from a different account (e.g. a DM to the founder account that should be answered by the brand account)
- Each account has its own OAuth refresh state, and you need to handle “the brand account’s token expired, refresh it before sending”
- Send failures need to be visible in your tool, not silent
- Sent replies need to update the local cache so the user doesn’t see their own message as “unread” five seconds later
Doing this well takes a week. Doing this poorly is the source of the most embarrassing customer-facing bugs in the entire product.
6. Compliance and the commercial API
You cannot run this on personal-use Reddit API tokens at scale. You need a commercial API agreement with Reddit. The agreement takes weeks to negotiate, has minimum commitments, and obligates you to certain behaviors (data retention limits, DSAR handling, content-use restrictions).
For a single brand running an internal tool, this is sometimes optional in practice. For anything larger or longer-lived, it isn’t.
We wrote a separate post on Reddit’s API rules. Read that before you write any code. The agreement constrains the architecture more than people expect.
7. The two-year tail
This is the part that’s invisible at decision time and dominates the actual cost.
Reddit ships breaking API changes every few months. Modmail’s API was overhauled twice in 2024. The DM endpoint changed pagination semantics in 2025. Each change required vendors to update or watch their tools break. If you built it in-house, “you” are the vendor, and you will spend a developer-week every quarter just keeping up.
You’ll also handle: edge cases as they appear (deleted accounts, suspended accounts, banned accounts, NSFW content filters, mod permission changes), customer-specific weirdness (one customer’s mod team uses an unusual modmail config), reliability ops (the polling job died at 3am Sunday, who’s on call), security ops (a token leaked, rotate everything), and feature requests from your own team that won’t stop because the tool is internal so demands are unbounded.
A reasonable estimate: 0.5 to 1 FTE indefinitely after the build phase. Plus the API costs.
The actual math
For most companies, the build vs buy math looks like this.
Build:
- 3 months of one senior engineer to ship v1: ~$80,000 fully loaded
- Commercial API costs from day one: $1,500-$3,000/month
- 0.5 FTE forever for maintenance: $80,000/year
- Year 1 total: ~$180,000
- Year 2 total: ~$120,000
Buy:
- A vendor that has already done the work: $300-$1,500/month depending on accounts and seats
- Year 1 total: $5,000-$20,000
- Year 2 total: same
The build math only makes sense if Reddit tooling is somehow strategic to your business in a way that needs deep customization, or if you are an agency at a scale where you’d be paying so many vendor seats that building becomes cheaper. For an in-house brand team running their own Reddit operation, buy wins by an order of magnitude every time.
The honest pitch
We are obviously biased here. We sell the alternative to building. But the math above is the math we use ourselves to think about whether to build other adjacent things in-house at Subportly. Build is the right answer when the thing is core to your differentiation. Reddit tooling is core to our differentiation. It is rarely core to anyone else’s.
If your team is genuinely sure Reddit tooling is core to your business in a way that needs to be in-house, the engineering reality is what it is. Budget for it accordingly.
If your team is not sure, the answer is buy.
Subportly is the alternative to a year of Reddit-API engineering. One inbox, every account, on a commercial API agreement, maintained by a team that does this all day. See how it works.