Introducing Expensify.cash, open-source financial group chat, built with React Native
When people hear "Expensify", they typically think "expense reports". But with the introduction of the Expensify Card, Concierge Travel, invoice sending, and bill payment features -- all in 2020 -- it's increasingly clear that we're becoming a whole lot more. Indeed, this is why according to Google, more people search for "Expensify" by name than "expense reports" as a whole: what we're building goes beyond any single function. Rather, Expensify can replace several expensive, disconnected services with one fully connected preaccounting platform for a tiny fraction of the cost.
And now I'm happy to offer a sneak peak of our latest addition: open-source financial group chat. Like Slack, SMS, or WhatsApp, but optimized for financial conversations, designed to be used both at work and between friends, and maintained by a community of open source developers.
If you're in a hurry, go to https://Expensify.cash to join the waitlist. And if you are a developer, share your GitHub handle to skip to the front of the line, and check out our Upwork jobs to earn some extra cash over the holiday break. But if you've got time, pour a stiff cup of eggnog and read on...
Now, when we launched the Expensify Card, people "got it". It's very tightly connected to expense management, so it makes sense. Same goes for Concierge Travel booking -- it feels pretty close to expense management. Invoicing and bill pay were a bit more surprising to people, as those have historically been different industries. But expense management sits in a company's accounts payable/receivable department, and all these do too, so it generally makes sense.
Chat -- even financially-optimized group chat -- is less obvious. And launching open-source (where anybody can see and contribute to the code) is even less obvious still. To help make sense of that, let me explain two radical beliefs that underpin everything we do.
First, Expensify's long-term product vision derives from a core belief:
Payments and chat are the same thing.
Every payment is a structured chat to resolve some kind of debt tension that exists between two people. The way we see it, there is a spectrum of functionality between "freeform chat" and "expense management" -- and every form of payment is somewhere on that spectrum:
- Expense management is the most sophisticated form of payment possible: it's a complex transaction with coding, accounting, and legal ramifications, that requires documentation and auditing, that reconciles to various accounts, and goes through a complex approval workflow before reimbursement. It's truly the most complex workflow a company will ever experience, and exists as a kind of structured chat: to submit an expense is to formally state "I have made purchases A, B, and C in line with expense policy X, as demonstrated by documentation Y, and hereby formally request reimbursement from Z." Expense management is really just a kind of templated chat system, optimized for this highly constrained but extremely complex kind of conversation.
- Invoices are pretty much the same kind of complex conversation as expense management, but with a simpler approval structure (because your customer is expected to pay all or nothing) and more knowledgeable participants (removing employees who don't care about the accounting).
- Corporate travel booking (a subset of procurement as a whole) is also like expense management, but simpler still: a structured chat between the employee and the travel manager to make purchases in line with a travel policy.
- Freeform chat is really just the same common structure, but with all the constraints and workflow removed.
Accordingly, everything we've done to date is largely just research: we had to become a major player in all these separate industries in order to ensure we understood them at an incredibly deep level, as well as to lay down a technical and legal platform that enables us to operate freely in all of them.
But none of that was ever the goal; that was just a tool to learn -- and Expensify.cash is a from-scratch reimplementation of everything we've learned to date, atop the most thoroughly modern technology available, wiping away all technical debt in one fell swoop.
Interested in helping us build the future? That's great! Here's how:
- Go to https://Expensify.cash and sign in with your normal Expensify account
- When prompted, provide your GitHub user handle
- You will be immediately granted access to the web/desktop version of the app, and we will reach out to invite you to the TestFlight for iOS, or Google Play beta for Android
- You will also be invited to a Slack channel to talk with our team in realtime (yes, I'm aware of the irony; help us move this to an Expensify.cash channel soon!)
- Read CONTRIBUTORS.md to learn how to get started
- Pick an open job in Upwork, and go!
So we believe payments and chat are the same thing, and we have been steadily building our product platform with that in mind, all along. However, there's a second belief that is also important to understand:
Financial chat is 100x bigger than expense reports.
Most people are surprised to hear that Expensify was never intended to be a pure expense management system. Nor was it intended to be exclusively a back office tool -- or even a business tool.
In fact, 99% of our users are not accountants: they are individual employees just trying to GSD, in both their professional and personal lives. This is no accident. QuickBooks Online, the most popular cloud accounting tool in the world, only has 5 million users… and we already have 10 million. Personal payment tools like Venmo and Square Cash have gotten to tens of millions -- and it's clear a hundred million is within striking distance.
But there's no way any of those will get to a billion users: they just aren't solving a problem experienced by a billion people. There's only one use case that unites every single person, and that's chat. And there are many examples of billion-user chat networks: Facebook, Instagram, WhatsApp, WeChat, Twitter, etc.
Accordingly, even though we look like a narrowly focused expense management tool on the surface targeting accountants and business travelers -- what we've actually been building under the hood is the foundation of a much, much larger system more akin to a social network than an enterprise system. So we are much closer to the start of our "S-curve" journey than the end.
(If you're not familiar with the classic "S-curve" followed by nearly every VC-backed company, it works like this:
- Things grow very slowly while they build their product and figure out market fit. During this period they raise "seed" or "early stage" funding to pay the bills before they start making money.
- Once things start to work, they tend to accelerate very rapidly as they establish their position, and then raise a bunch of "growth capital" -- dumping it all immediately into customer acquisition, generally at a significant loss (ie, "growth at all costs") because they are competing against other VC-backed companies in the same space, using the exact same strategy. So the only way to "differentiate" is to raise and spend more wantonly than your competition in a kind of "prisoner's dilemma" (or even, a game of "chicken") where everyone loses, but you hope others lose more.
- Eventually you run out of "low-hanging fruit" (even though that fruit is kind of rotten in the first place seeing as how you are losing money on every customer), and growth decelerates. At this time you raise "late-stage capital" and focus on tiny incremental improvements -- scraping the bottom of the barrel harder and harder -- basically just accepting that your glory days are behind you, and wherever you are is pretty much all you're going to have. The $100MM ARR mark is a common threshold for when VC's lose interest in sinking money into an unprofitable company, and are starting to look to sell. This is typically the point when the founders and VCs (but rarely the employees -- they are usually diluted to nothing from all the fundraising) "exit" by going public or getting acquired, with employees sticking around as long as their "golden handcuffs" keep them from leaving.
Every company differs in the details, but almost all of them follow that path -- there are literally thousands of VC backed companies that follow this path quietly, in obscurity, making VCs and founders rich, but achieving very little real world traction, and inevitably being vacuumed up by one of the mega-companies that acquire and digest these startups by the dozens.)
So given that we're a VC-backed "unicorn" startup crossing the $100MM threshold, you might assume we're entering that third stage, and that the future of Expensify is going to just be more of the same.
You'd be wrong.
The reality is we're still in that first stage, still researching the market, building the core platform, and perfecting product market fit. The way we see it, we haven't even begun our "growth stage". Rather, we've been steadily checking off the boxes for our core financial functionality, and are only just now starting to put serious effort toward mass customer acquisition. That's where Expensify.cash comes in.
In a way, you can think of Expensify like a startup developing an experimental COVID vaccine -- but selling a highly profitable cough medication to pay the bills. No matter how good that cough medicine business might seem on the outside, it's nothing compared to the potential value of eradicating COVID. Expensify.com is our cough medicine, and Expensify.cash is our vaccine -- going into human trials, right now.
And "human trials" isn't much of an exaggeration: at the moment Expensify.cash feels like a standalone chat application, that you sign into using your standard Expensify login. You can chat, send pictures, the basics. But under the hood, it's a complete rewrite of the Expensify front end, built on a radical new React Native platform that uses the same codebase across not just iOS and Android, but also web and desktop. That means Expensify.cash works exactly the same whether you open it up with a laptop browser, your mobile browser, or install the mobile app, or even install our standalone desktop app. I could be wrong, but I think we're the first company to even attempt this at any significant scale.
So even though what Expensify.cash does is pretty familiar, how it does it is very novel: it's pretty bleeding edge stuff. Not only is it built using the absolute latest React Native capabilities, but it's using our own Onyx platform to enable it to work seamlessly offline and on (so you can read and write chats while offline and it'll "catch up" the next time it connects online). There are still a lot of kinks to work out -- and we'd love your help doing it.
For this reason, we're initially limiting access to Expensify.cash to developers (and anyone they invite): go to https://Expensify.cash to sign in and provide your GitHub handle, then go to https://github.com/Expensify/Expensify.cash to check out the code (open sourced using the MIT license).
Additionally, we've intentionally left a bunch of small bugs unfixed to create some easy ways to get involved -- and are paying top dollar to fix them. Check out our list of Upwork jobs if you're looking for some side income over this holiday season, and we intend to funnel every issue we can there to create steady opportunities going forward.
It's an exciting time, as this launch has been a very long time coming, and officially kicks off the start of our "growth stage" in the S-curve. It's the start of something really special, and it would be our honor to have you help us test and build it!
Founder and CEO of Expensify
Ask me anything at @dbarrett on Twitter!
PS: To address some likely questions:
Q: Is the Expensify that I use today going away?
No. That's why we're launching Expensify.cash as a totally separate site and app. Expensify.com will remain entirely as it is today for the foreseeable future.
Q: Do I need to create a new Expensify.cash account?
No. Your existing Expensify.com account works with Expensify.cash -- they use the same back end database, and the same actual account behind the scenes. Expensify.cash is just a rewrite of the "front-end" -- the part that runs on your laptop or phone.
Q: Should I use Expensify.com or Expensify.cash?
Unless you are a developer looking to contribute to a new open source project, and to help build the next generation of Expensify, you should keep using Expensify.com.
Q. When will non-developers be able to use Expensify.cash?
Only if a developer invites them. So find a software developer buddy of yours and ask them to sign up. In the meantime, sign in to join the waitlist, and you'll be first in line when it's ready for you.
Q: Why would I use this over email?
With apologies to Mark Twain: the death of email has been greatly exaggerated. Odds are you are reading this as an email right now. Email is here to stay, and Expensify.cash is designed to complement email, not compete with it. Every Expensify.cash conversation generates an email summary for you -- and your email response will be sent out via mobile push or SMS text message based on whomever you are talking with. But at some point, when the conversation gets serious enough that it goes "realtime," using realtime chat is usually more convenient than a zillion tiny emails.
Q: Why would I use this over Slack?
For the same reason a Google Workspace customer might pick Google Meet over Zoom -- it does the same thing, except without costing any extra, and in a way that will be more optimized for complex financial conversations. Furthermore, the vast majority of our customers don't use Slack, so most customers aren't even asking this question.
Q: Why would I use this over WhatsApp or SMS?
Those tools are great for one-to-one conversations, as well as a small number of relatively low-volume, small group conversations. But when you really sit down to GSD with a group of people, the volume of chats and overall complexity of the conversation gets hard to manage with those simple tools. Slack solves that with "channels" and "threads" and "reactions" and a number of other features -- all of which are coming to Expensify.cash, along with our own deeply embedded financial tools to manage group expenses.
Q: Why not just build this into Expensify.com?
In a way, we have: our new Concierge chat system was an early form of this. And our Concierge chat system was really just an upgrade to our report commenting system. Accordingly, this "new" chat platform is actually already used by millions of people to talk with Concierge, or to "chat" with other users via report comments. However, to get the full benefit of React Native and Onyx, it requires a much more serious rewrite than can be done incrementally. Over time we will gradually expand Expensify.cash with nearly all of Expensify.com's features, and users will naturally migrate from one to another. But we are committed to minimizing disruption to our existing customers, so we opted to build it as a separate app for now.
Q: Does Expensify.cash cost anything?
Nope! For now it's just a free chat tool. Enjoy! However, the long-term goal is to create company-managed "rooms" that would create billable activity just like any other. You can think of Expensify as the "Amazon Prime for back office services": a one stop shop for everything you need to run your business, all with a single inclusive price. Even then it wouldn't cost anything extra, it would just be one more service provided by the Expensify platform.
Q: Why open source Expensify.cash; why not just hire more engineers?
To be clear, we are always hiring engineers -- please send your unemployed friends to we.are.expensify.com. But the key to Expensify's ability to remain so nimble at scale is keeping an extremely small core team of generalists who understand the "big picture" -- and then engaging a large ring of highly talented specialist contractors from around the world to execute that vision. This is how we offer award winning 24/7 realtime chat support with only a couple dozen Concierge employees, as well as immediate free phone onboarding for every user (just click the "call" button on any Inbox task). We believe there is an opportunity to execute that same playbook for our engineering team, pairing our core group of engineering generalists, with a global network of open source engineering specialists. We've already been doing this at a smaller scale with our close partnership with SQLite, and our open-source BedrockDB, so this is just doubling down on what has already been working exceptionally well.