A couple of weeks ago I built the Internetās least romantic date planning service. Plan-a-date takes input from two users, compares their preferences, and then uses Cloudflare Workers AI to create a custom date night plan.
Reviews varied. Feedback ranged from my wife asking me āwhy would you build this? What is wrong with you?ā to my college-bros-group-chat asking for kinkier toggles. So, another big win in my project trophy case.
Now that the app has been out there in the wild, I was curious about the data. One neat thing about Cloudflare Workers AI is the integration with Cloudflareās AI Gateway, a kind of proxy and gateway for the requests that your application sends to an AI model (any AI model, not just inference models running on Cloudflare).
You can use AI Gateway to cache responses, add rate limiting, and capture logs with feedback loops. The logs part is interesting to me for this experiment because I can evaluate the preferences of users. Important note: this data lacks anything that tells me who a submitter is - I am not capturing anything identifiable about any user. No account login or sneaky tracking etc.
So, that means we can play a kind of The Newlywed Game in anonymous aggregate. Just how agreeable are yāall?
It takes some manual effort but you can export your logs, in an encrypted format, via Cloudflare Logpush. Iāll skip over the details since they are covered in that documentation but, funny enough, itās probably the most tedious part of building out this entire application.
Once you have the logs you can analyze them in your tool of choice. I used both a Google Sheet and OpenAIās new o1 reasoning LLM and compared notes. The breakdown below combines outputs from both of those tools.
First, letās consider all entries as just one big population pool. Weāll treat all users as individuals without regard for their partner. We can use this first pass to evaluate general popularity of certain preferences.
One important note: many of these toggles are multiselect. So, a user can submit that they would be open to eating out or getting take out food. As a result, the percentages in some of the categories below are not expected to add up to 100. They are also not required, so some users skipped some categories.
Eating
Preference submitted by 87% of users.
No big surprise here, right? Going out on a big date night seems more popular than staying at home.
Activity
Preference submitted by 81% of users.
Well, until we get to the activity. Most of yāall want to just stay in your pajamas. I get that. I do too. Like all selection options, though, a lot of this is going to be biased. I know exactly one person who likes to go out dancing regularly. And the other options are probably too generic. I donāt have an option for, letās say, pottery class.
Watching
Preference submitted by 81% of users.
This is probably the best example in this dataset of revealed versus stated preferences. More people claim they want to spend time together without screens, but I bet the real data suggests that many couples just wind up watching something on Netflix until one partner falls asleep. Purely hypothetical guess; definitely not talking about myself hereā¦
Genre
Preference submitted by 44% of users.
This is impacted by the fact that if you pick No Screens
you cannot select a genre, so the percentages of all users selecting a genre will naturally be smaller.
Physical Intimacy
Preference submitted by 90% of users.
The most popular answer by percentage of preferences submitted. Nearly half of all respondents want to get hot and heavy, but letās see if their partners agree.
The section above treats everyone as an individual, but that is not the point of Plan-a-Date. Plan-a-Dateās mission is to find compromise. To that end, how hard does Plan-a-Date have to work? I can also use the AI Gateway logs to compare the inputs from the actual couples themselves to see how often they overlap.
This raises an interesting point that I had not considered. Plan-a-Date uses AI to get creative because there are so many different permutations of what two people can prefer. While I bet it is rare, you could imagine a deterministic step that happens upfront where Plan-a-Date skips the AI model altogether and just says āhey, you picked the exact same things. Here they are - go nuts.ā
Anyway, on to the data.
Eating: 62% match
Activity: 54% match
Watching: 42% match
Genre: 29% match
Physical Intimacy: 71% match
Iām not sure what to make of this, but I will hazard a guess. I assume that physical intimacy is this high because that is something that can become a real headache in a relationship if youāre not on the same page about it (while acknowledging that some days are different from others). Whereas my preference for RomComs and my wifeās preference for Fantasy Epics doesnāt really impact the health of our relationship that much.
Iāll leave this thing running until the domain expires (at which point Iāll just move it to something like a subdomain of samrhea.com
. Admittedly, traffic has dropped off and I donāt think Iām going to see a whole lot of repeat customers. This is mostly an entertaining gimmick.
And given that it took just an hour or two to ship, thatās worth it to me. Fun chance to test out new pieces of the Cloudflare stack, specifically AI Gateway. Also a neat opportunity to experiment with OpenAIās new o1 model.
Iām sure more scientific analysis could be done here. Real experts do that with real dating application data all the time. Like Plan-a-Date itself, though, this analysis is just for fun.