Technical challenges at Kactus

Technical challenges at Kactus

Our candidates sometimes ask us during interviews what our technical challenges are.

It may not obvious how technology can help drastically improve the user experience for booking professional events, so let's take a small detour on the historical alternative to Kactus, and what we do differently.

Traditional actors we are competing with are called venue finding agencies. A venue finding agency works like any traditional, small-scale agency. When a customer has a new event to organise, they call their dedicated project manager at the agency and give them the project's brief. The project manager then starts looking for venues that could match the brief, requests the venues for a quote, and assembles the received offers on a PowerPoint presentation to share with the customer a few days later.

The project manager advises the customer on which choice to make, and assists with the paperwork during the process. They help with contractualisation, invoicing and payment, to make it as simple as possible for the customer.

This is a heavily manual process, full of documents to send, print, sign, scan and resend. It is slow by nature and completely opaque for both the customer and the venue who never get to speak directly. Choice of venues is limited to the project manager's own knowledge and experience.

Venue finding agencies have a hard time scaling past a few dozens of people, because all the complexity and paperwork is handled manually by the project managers.

At Kactus, we are building a venue finding service for the modern era. We are using technology to provide an end-to-end experience from search to payment, built on top of the largest inventory of venues.

So how does that translate into technical challenges ?

From digital to instant

To deliver an end-to-end digital experience from search to payment, we have built our own quoting, contracting and invoicing software that completely removes the need to send documents back-and-forth.

Quotes are built and signed on Kactus, and invoices are issued based on the signed contract. Mail attachments have been replaced with digital documents that customers and partners can interact with on Kactus. This is a big improvement over the old ways, and it is much more transparent. However, we want to go a step further beyond just digitization.

The process of booking a venue for a professional event hasn't changed much since the apparition of web technologies. When a customer is interested in a venue, they still have to request a quote, wait until a salesperson at the venue is available to build the quote a few hours to a few days later.

This is in many ways inefficient, as the customer's search is fragmented into multiple sessions, and the venue salesperson spends a good deal of their day answering quotes to prospective customers.

Our ambition is to be able to deliver instant pricing to customers. From our data, we estimate that ~70% of event requirements are quite standard and could be priced automatically without requiring manual intervention from a venue salesperson.

This will be huge for customers, who will no longer have to wait hours or days for a price, huge for venues as it will save them hours of work, and huge for Kactus as it will drastically improve conversion rates (customers tend to look elsewhere until they are assured to receive quotes).

On the technical side, getting to instant pricing involves building a structured price inventory for each venue, that a machine can use to build the quote by itself. We will need to know the price per hour for renting a given room at different times of the year, the price of that premium lunch with wine, or the price of that extra bartender from 11pm to 2am. It means understanding how venues architect their pricing, what makes prices change, and model an information system to hold these prices.

Since we want humans to fill and maintain the inventory, we have a significant challenge to build easy-to-use interfaces and keep the overall system simple.

Second, we need to structure user requirements in ways that can be used by the machine and matched against the price inventory, to return an instant quote to customers.

In the end, humans are the users of our information systems so there is significant challenge to keep our interfaces simple while dealing with underlying complexity.

Building a price inventory that holds the data for the whole event industry will open up opportunities for innovation that we are very excited about.

Dealing with payments

The payment of a corporate event is a big pain for companies that one would not suspect.

In larger companies, purchases are duly controlled by the purchasing department and any purchase made to a new supplier must go through a lengthy process where the supplier is onboarded and legal documents verified.

This process costs companies a lot of money, so they encourage their collaborators to book venues that are already onboarded with their company. This limits greatly the choice for collaborators, who end up craving for novelty and a wider choice of venues.

To address this problem, Kactus acts as an invoicing and payment gateway. Thanks to a intermediation model called "facturation & encaissement pour compte de tiers", companies only need to onboard Kactus once, and can then book our many thousands of venues. Payments will always be collected by Kactus and transferred to the right venue.

This is huge for companies as it saves them a lot of administrative cost, and it opens up the doors to a lot more venues.

Providing this service means that we do the legal checks ourselves, that we must issue invoices for every event that takes place, collect and transfer the money.

We are still doing a lot of manual operations behind the scenes, and we have a lot of interesting challenges to automate all the tasks involved in this process.

Correctly routing money is a very interesting challenge for example. When we receive a payment on our bank account, we must first identify the related invoice in our system, which is harder than it sounds because humans make errors, or they sometimes group payments together. Figuring out which payment relates to which invoice can sometimes take hours to an operator. Technology can help make this much faster and less error-prone.

Scaling a Rails codebase

We are the proud owners of a Rails monolith, and we intend to continue using Rails as long as possible, and benefit from the mature ecosystem that supports its evolution.

Scaling a monolith comes with its sets of challenges though, and we are currently working on some of them.

Improving page load time
As we rely heavily on SEO for customer acquisition, and given the recent updates to Google's algorithm, we have been and continue working on improving our Rails app's performance.

Technical challenges involve developing a caching strategy on the back-end to improve server response time, asynchronously loading parts of our pages, reducing our JS and CSS bundles to the strict necessary, and optimising how we serve images via a combination of lazy-loading and on-the-fly operations at the CDN.

We are still learning a lot about the challenges behind performance optimisation, but there are tons of interesting engineering challenges, in how we apply caching, SQL optimisation, or browser performances.

These are very impactful challenges, as each 100ms gain has a huge impact on our SEO positions and user experience.

Scaling our front-end
When we started Kactus in 2015, there was very little conventions for how to build the front-end in a Rails app. The only convention was that however you coded your Javascript and CSS, it all went into the asset pipeline to be bundled together in a master JS and CSS file.

A lot of progress has been made regarding front-end since 2015, with the advent of Webpacker that opened the door to modular javascript in Rails. Combined with Stimulus and ViewComponents, we are now fully equiped with battle-tested tools to build modular interfaces around UI components.

This will allow us to get rid of our legacy Coffeescript, per-page Javascript and keep a cohesive, tested, and scalable UI throughout the experience.

Closing words

This is by no means an exhaustive list of all our challenges, but we hope it gives a good idea of the kind of technological problems we are currently facing.

Unlike our competitors who were born before the internet, we are uniquely positioned to build a modern experience for the digital age, that will radically transform our industry.

If you want to apply your technical savoir-faire to solving these challenges with us, we want to talk to you.