Finbarr Taylor, software engineer at Y Combinator, on the code behind Investor Day.
In the past after YC Demo Day, startups would scramble to arrange as many meetings with investors as possible. This typically involved sending hundreds of emails back and forth and lots of manual scheduling.
We wanted to address this problem for the S16 batch so we came up with Investor Day–a full day of investor/startup meetings immediately following the two demo days.
Companies were each assigned a table and investors moved between tables for meetings. Each meeting was 20 minutes long, which meant companies could meet 15 investors in one day - something that would have been logistically impossible otherwise.
We wanted to automatically generate the schedule based on mutual interest. Here’s how it worked.
The software was able to generate a schedule with over 1300 meetings in one day. Over 80% of the investors who wanted to attend Investor Day and liked companies during Demo Day had meetings scheduled. Investors had an average of 5.18 meetings with a median of 4 meetings. S16 companies had an average of 13.88 meetings with a median of 15 meetings. 15 was the maximum and there was roughly a 3:1 ratio of investors:startups.
During Demo Day, investors used our software to “like” companies they wanted to meet. They stack ranked the companies and each company stack ranked the investors that liked them. The software generated a schedule of meetings based on these inputs. Because Investor Day took place the day after the second Demo Day, scheduling had to happen as quickly as possible.
The Investor Day scheduling problem has a lot in common with some well-known matching problems. The Stable Marriage Problem seeks to find a stable matching between two equally sized sets of elements given an ordering of preferences for each element. The Resident Matching Program problem is a generalization of the SMP. Some sharp commenters on Hacker News quickly identified these similarities when we announced Investor Day.
The main difference with the Investor Day scheduling problem is that each company has capacity for multiple meetings (15), so the matches are many to many. There are also significantly more investors than companies, roughly 3:1.
We started off with this simple variation of the SMP:
This algorithm worked surprisingly well. For a field of ~100 companies and ~350 investors, it runs in a fraction of a second in Ruby. The matchings are high quality, and most companies have a full schedule. We measured quality in terms of the average of the 2 rankings between the matched companies and investors.
Unfortunately, this algorithm generates schedules with lots of gaps for investors. We addressed this by constraining the number of gaps allowed in any schedule and the maximum size of a single gap.
The gap-avoiding algorithm generates much more palatable schedules with the cost of slightly worse matches on average, and still manages to fill the schedule of most companies. We trade an order of magnitude reduction in the number of gaps for a roughly 5% decrease in the average meeting score.
A single run of the algorithm results in a schedule, but there are no guarantees that the schedule is optimal. Because the algorithm runs so quickly, we generated many schedules, comparing each one along multiple axes such as the number of meetings and the average quality of meetings. The best schedule found was then selected for Investor Day. There was no manual intervention in the scheduling of meetings on Investor Day.
To help people stay on time, we implemented a custom timer app that was displayed on TVs throughout the venue. The timer app was written in Rails 5 using websockets through ActionCable to keep the time synchronized between displays. We implemented an admin control for manipulating the time centrally. Each TV was controlled by a Kindle Fire tablet.
Investor Day seems to have been successful on multiple levels. The day itself ran very smoothly. We’ve collected feedback from companies and investors and it was overwhelmingly positive - more than 97% of founders and investors said they would do it again. We have some ideas for how to improve it in the future, such as allowing investors to block off certain times when they are unavailable.