“It’s the similarities, stupid!” Playing matchmaker between events and users.


Billetto’s big dream is to delight people with spot-on event recommendations. But — as we’ve made abundantly clear — this isn’t exactly a piece of cake.

Having said that, we have to start somewhere, right?

Let’s sneak a peek under the hood to see what Billetto’s cooking.

Right now, we’re presenting recommendations to visitors who have explicitly indicated what events they enjoy. They have either already attended a Billetto event or “liked” one on the Billetto website.

Like so!

Once we know the user’s preferences, we can begin to find events to match those. At its most basic, it’s all about pinpointing the similarities between events. Who knew?!

To find these similarities, we look at several factors.

1. Event descriptions
If Event A and Event B both mention the same unique keywords — e.g. “pool party” or “nunchuks battle” — we can assume they’re at least somewhat similar.

(The technical way we look for these similarities is by using a “tf-idf” statistic, which stands for “term frequency–inverse document frequency” and is definitely not a made-up term we just came up with.)

2. Location
If a person has attended (or liked) an event, it’s fair to assume that either the event is close to where they are or that they’re willing to travel there. So it makes sense to look at other events nearby when identifying similarities.

3. Duration
How long each event lasts also gives us an idea about whether they’re similar. A three-day business seminar probably doesn’t have much in common with a four-hour wine tasting event.

Unless you combine the two, in which case — nice!

4. Timing
In general, two events that take place in the evening will have more in common with each other than with a morning event. When looking at this factor, we consider both the time of day and day of the week.

5. Available tickets
The quantity of available tickets hints at the size of the event, which in turn is useful in finding matching events of a similar size.

6. Ticket price
Ticket price also tells us when two events are in the same price range and potentially appeal to similar people.

“But wait, aren’t some of these factors better at predicting similarity than others?” you may wonder.

You’re right, insightful reader!

That’s why we assign different weights to each of them:

feature_weights = {
descriptions.similarity: 2,
bookings.similarity_n_tickets: .5,
bookings.similarity_mean_price: .5,
duration.similarity: .5,
location.similarity: .5,
start_time.similarity_tod: .25,
start_time.similarity_dow: .25,
}

After our model does its number crunching, it calculates how similar each event pair is. This is expressed as a number from 0 to 1, where “0” means the two events have absolutely nothing in common and “1” means they’re literally the same exact event.

Whenever people who’ve previously attended or liked an event come back to the site — that’s about 60% of Billetto users — we can present them with a mix of events that are as similar as possible to the original one.

Neat, huh?

We’ll reveal exactly how that looks in one of the upcoming posts.

Going forward, there are plans to incorporate e.g. Facebook data about which events are liked by the same groups of people, and so on.

But one step at a time, as they say…


Watch this space.

Every Thursday, we’ll be posting about the promise and challenges of personalised event recommendations, along with Billetto’s current efforts and future plans.

Have some thoughts on or experience with event recommendations? We’d love to hear them. You can leave a comment or send an email with your thoughts to dagn@billetto.com. We’ll read it. Promise.

Show your support

Clapping shows how much you appreciated Billetto’s story.