Let’s forget how ridiculous 2020 has been for a little while and reflect on how things have changed for the better.
It’s a few months late, but every year I share an update on the systems and operations we implement at Karbon. Essentially, this is how we try to maximize revenue per employee.
We run an unusually (according to Californian standards anyway) capital-efficient business, and do our best to ensure the machine completes as much of our work about work as possible. This strategy keeps our human resources focused on delivering a delightful customer experience.
Quite a few things have evolved in our business operations over the last year or so. Some due to vendor increase in pricing, others due to our ever-increasing scale, and some because our business is maturing.
Salesforce is the powerhouse behind all our customer interactions. Our system of record, if you like.
We integrate all our systems, including the Karbon platform, into Salesforce. Pretty much everything about a customer is stored here.
I think the key to Salesforce is keeping people out of it as much as possible—the data being fed to Salesforce is typically from our other systems. This, in theory, should keep the accuracy up and the risk of duplication and manual effort low.
Luckily our Salesforce data is relatively clean and our automation efforts have been worthwhile in this area.
We dumped Marketo last year for Pardot and haven’t looked back.
The integration with Salesforce and the cost-savings were the main reasons to make the switch, but none of these enterprise marketing platforms are really that great.
Autopilot is a great Australian success story, but our integration and functionality requirements don’t really allow us to migrate again in the short-term.
Zuora is the backbone of the operations in our business. All our invoicing, payments, accounts, and subscriptions are managed in Zuora.
When we first started out, the Chargifys and Recurlys of the world were not up to where they are today. For better or worse, we made a deliberate decision to take our first and very last dollar through the Zuora platform.
I believe this is the right decision, although operating such an integrated and enterprise style product with little or no resource is a difficult task.
While we haven’t customized Zuora all that much, it is heavily integrated into our application via our hand-rolled Back Office Hub.
Zuora has also allowed us to manage our revenue recognition from day 1, ensuring our accounts are accurate and able to be closed within 5-10 business days every month. A topic for another day is the ever-reducing relevance of the GL in businesses where specialized vertical software is becoming more prolific.
We’ve migrated our warehouses to Google’s BigQuery product which, along with Snowflake, are the most reasonably priced offerings available in the market.
Combined with Stitch, which sold to Talend last year, we populate our warehouse (mostly) hourly with data from Salesforce, Pardot, Zuora, our custom-built Back Office Hub, Facebook and Google Ads data, Pendo, all application data (via Segment), Vitally for our NPS data, and our soon-to-be-released Community, Insided. We also place our monthly consolidated financials in the warehouse.
Based on the data in the warehouse, we’ve built out dozens of reports in Mode that not only surface our SaaS vanity metrics (MRR, Net Retention, NPS, Magic Number, CAC, etc), but this well-coordinated dataset allows us to dig much deeper into the usage behavior and product journey that trialists and customers embark on.
We now know the impact of various interactions we conduct along the journey and can fine-tune our delivery offerings to maximize the benefit to the prospect, and therefore increase conversion and customer satisfaction.Share on TwitterShare on Facebook
Something that sets the Karbon team apart from most other software teams is our deep understanding of the accounting segment. We’ll be using this data more and more as it continues to expand, to ensure that we're delivering the highest value we possibly can to our base.
Go-to-market technology has evolved rapidly over the last few years, but sales strategy has barely changed over the last 50 years. Technology merely enables us to (hopefully) serve more customers with less resources.
We've tried many tactics to enhance our velocity and capacity, but we continually conclude that our prospects would like to be guided through the purchasing process. To enable this, we make as many appropriate resources available to them as economically possible.
Therefore, while we add technology around the edges, our sales and go-to-market tools haven't changed very much over the years.
Outreach for our sequences, sales engagement, and automated emailing
Bombora to gather intent data
Handwrytten for highly personalized (post-COVID) old school letters
Zencraft to manage the shipping and delivery via UPS
WeConnect to deliver LinkedIn connections
Hunter to discover email addresses in targeted accounts
Customer Success technology has equally evolved and there are many options for teams to help manage the health and engagement of customers and users.
Gainsight is probably the leading Customer Success platform on the market, but to keep things relatively simple, we chose Vitally due to its integration capacity into our existing systems. Also, our stage of life does not require large, enterprise, customer success software.
We implemented Intercom a few years ago and it's served us well, but it can be frustrating at times. My impression is that they've been given the scare of their lives from Drift and they've had to move fast to try and evolve their product as well as their GTM strategies.
Intercom is still relatively strong in the support area, but its limited functionality for sales and integrations is disappointing for such a large, well-funded organization.
While we’re talking about support, our in-house personnel are supplemented with an elastic service provided by Influx, which is based in Australia. They have agents in the three major timezones and we make sure everyone on the Influx Karbon team is certified and trained in Karbon.
Being relatively small still, we are believers in elastic services such as this to supplement our own resources. We also incorporate this model in our testing of the platform by utilizing Rainforest.
We achieved SOC II Type 1 certification earlier this year and as we developed our processes for compliance, we removed and added some internal systems.
We still utilize Okta for our identity management. More and more vendors are supporting SSO / SAML for login and provisioning, and this makes the life of IT ops people somewhat simpler.
Internal content is now written and stored in Quip, for no other reason other than we try to keep our numbers of new vendors to a minimum.
Salesforce purchased Quip in 2016 for a reported $750m. The product itself is fine, but it feels like anyone who was really involved has gone to the beach for the last few years.
We’ve migrated our website to the Contentful content management system which is distributed utilizing the Netlify platform.
We find changes are easy and quick to make and deploy, versioning is effective, and I’m hoping to utilize Contentful’s multi-language features as we grow to international markets.
Like everyone else, we use Zoom for meetings and Slack for internal collaboration.
I’ve written about this before but I still find asynchronous decision-making in multi-timezone, multi-region organizations sometimes has a negative impact.
It’s difficult to portray tone in Slack, whereas longer-form synchronous writing is usually more thoughtful of its intended audience. Confusion around intent can impede sensible decision-making.
Therefore we use our own product, Karbon, heavily for most of our ongoing work-related collaboration. Of course, I’m biased—but we’ve come to rely on Karbon, and it has genuinely made our company more efficient in countless ways.
I recently shared some of the ways we use Karbon internally.
Speaking of which…
Our platform predominantly runs on Azure, but we now have the capacity to deploy data centers relatively effectively with little human intervention. Not only in Azure, but in AWS as well.
Our environments are deployed entirely via code and destroyed when a new release is conducted. There are a number of benefits to this strategy—the main one is that scheduled release outages can be all but eliminated.
Our vendor, Base2 has been instrumental in leading this fundamental architectural change and while there are still many more things we can do, we’re more nimble and organized in our DevOps lifecycle than ever before.
Everything that users do in the application and website is able to be measured with events that are delivered to Segment via code or API.
Sources, as they are known, then get distributed to destinations. We’ve reduced our destinations over time to consolidate our lexicon, but Intercom and Vitally are applications that consume our events system and we now operate a Google BigQuery warehouse that houses every event in the platform.
Being able to assign traits to users and accounts via these automations inside the database at the time the identify or group call is triggered, rather than managing those attributes (traits) inside code, is a significant gain.
This creates clear separation between code and data, and is a more reliable method of user and account updates.
Sadly, Segment just sold to Twilio, which is amazing for Peter Reinhardt, his co-founders and their investors. Hopefully, they leave the product alone for some time to come. Their purchase of SendGrid is a good omen. Now we’re Twilio customers without ever purchasing a Twilio product (yet)!
One significant aspect of our stack that is missing is a product metrics solution.
While we’ve tried with MixPanel before and failed, it wasn’t really their fault or the fault of the product.
The main issue is the reliability and rigidity (or lack thereof) of our events system.
In order to extract the correct information and be able to ask reasonable questions and receive reliable answers, the data entering the analytics platform must be timely and reliable.
For example, payment events are a critical part of the life cycle of a customer. If the successful payment is not registered against the account, then it’s impossible to understand all the events that users conducted prior to the successful transition from prospect to customer.
We’ve been utilizing Algolia since we first developed Karbon’s initial search functionality, and while it has been a significant part of our platform, our use case has diverged from their ideal customer, so we’re now conducting a project to rebuild our search functionality utilizing Elastic Search.
Essentially, our data is vast because it includes emails, documents, contacts, notes, comments, etc., but our users are (relatively) constrained. So when you search through your emails in Karbon, it’s not as though I’m also searching that data (you’d hope not, right?) or anyone else’s for that matter.
Algolia’s best use case is a relatively smaller amount of data, like product catalogs, or transaction data with many thousands or millions of users, like in Stripe or Shopify respectively. Their infrastructure at the price is no longer suitable, so we’ll manage that change and improve our functionality in the process.
In summary, our stack is in a pretty good place this year as we mature into a $10m business and beyond.
Items will move on and off the list as our requirements change, and those with different expertise will join the company and influence our toolset and optimize our GTM.
For now, the operational platform is meeting the needs of the strategy. But who knows what next year’s version of this article will look like!
CEO & Co-Founder, Karbon
Stuart started his first business 11 years ago and has had many successful ventures, including Paycycle, founded in 2009, which he sold to Xero in 2011. He then built the global Xero Payroll team that delivers payroll software across the US, AU, UK and NZ markets. Stuart is now paving the way for smarter tools to improve how knowledge workers collaborate with their colleagues and look after their clients.