Andrew Pignanelli

Andrew Pignanelli

Andrew Pignanelli

Using Discord as a company's operating system

November 2, 2021

Some of you may know that Velvet runs our internal communication on Discord. I like it more than slack, and I've been using it for about 5 years now personally. Earlier today I got into a debate with a friend about the efficacy of using discord for a large company. There are a few features that Slack/Teams have that Discord does not - specifically more advanced channel organization, a professional feeling, and integration with business apps. My argument, though, is that anything Slack integrates with can be done via Discord bots.

In reality, anything with an API can be managed with a Discord bot. If you build a custom discord bot for various custom commands then connect it to Zapier, you can use any API in Discord. And there's a lot of things that have APIs. The natural progression from this thought (for me at least) was the idea that banning someone from a company discord server actually goes through all of the termination paperwork, rescinds logins, and effectively fires them. But if you could do that, you can do a lot more.

"I want to be able to type /ban and it literally fires someone"

So, I pulled up the Gusto API documentation to see how many HR operations can be replaced with Discord. Using Gusto's API, you can review resumes, onboard an employee, set them up with payroll, give them benefits, assign logins for company software, open an expense or bank account for that employee, and terminate all of that in the event of a firing.

If you connect Gusto's API to Zapier, then that Zapier to a custom Discord bot, you can run all HR operations via typing commands to a discord bot. Here's an example of how all of that would work:

Velvet wants to hire someone. Since I manage the HR for Velvet, I would type a custom command like /active-candidates in a discord channel (which is pretty much the same as a Slack channel) titled "HR commands," which lists all of the candidates that have applied for a job in that discord channel. I could then type another command to send an offer letter, /offer-letter candidate12 125000 base 25000 RSU equity at full-benefits and Gusto's API would send an offer letter email with a salary of $125,000, equity of $25,000 in a standard 4-year vesting schedule, the standard full schedule of benefits, and format the letter to the job the candidate applied for.

Let's say they accept the offer letter, and we want to get them set up with their job. First step is making the new employee sign up for discord and adding them to the company server. Another command /onboard candidate12 @username would connect the candidate to their Discord username, and now we're off to the races. That command would initiate a call to begin payroll (via Gusto API) then direct message that user the logins to email (Google Workspace API), github (github API), Notion (Notion API), and if needed company debit cards via Mercury's API.

That's at least an hour of work automated with 3 commands, and an employee fully onboarded without leaving Discord.

Of course, in the event things go poorly with that employee they would need to be let go. The bot could be set up in a way that recognizes the /ban command, connects to the Gusto API, and follows termination procedures essentially reversing what was done with the onboarding commands. A professional manager would hopefully have a conversation with an employee during this unfortunate outcome, but everything else is just software processes.

That's HR covered, but what about other stuff?

Dev work can't be done effectively on discord itself (though you could probably try), but commit tracking can be. Github bots already exist and webhooks make it easy to track Github commits. Connect that to a notion board, and Notion's API can be used to update cards based on Github webhooks, create new issues, or attach documentation.

Banking is another important piece of company operations that we could control via discord commands. Mercury Bank, which we use at Velvet, has a free API for executing/tracking transactions. This lets us move all of our payments operations (that can be done with ACH) to Discord commands. Imagine typing a command to pay an invoice that looks like this: /pay account1 recipient15 $10000 name:11-02-21invoice. It's a simple one line command with the account the money comes from, the recipient, the dollar amount, and the name of the transaction for company records.

Transactions and balances are also tracked with this API, so a message could be automatically sent to a discord channel when money arrives or departs an account. For example, let's say John Doe wires Velvet $10,000. Our discord bot could message the channel with "Money recieved in account 1: $10,000 from John Doe at 11:53 am on Tuesday November 2nd. Current account balance is $45,000"

All of the sudden, you don't need to leave discord for 90% of company banking operations. You don't need to leave discord for all of your HR operations. Or to check the status of a branch on Github. Or a project on Notion. Any key company KPIs can be tracked via webhooks, so those are in your discord server too.

A system like this has its limits, though. HR operations would need to be configured, with things like offer letters needing to be written beforehand, benefit plans decided, and various other misc things. Banking recipients need to be created before transactions are done. Employees trained on how/when to update certain notion pages for compatibility.

Something like this could actually work and centralize most company operations. I'd love to be able to try something like this out, or see an example of a company deploying a similar system. If nothing else, it would be pretty cool.