About EventDilly
EventDilly is an aggregation and recommendation application for local events. Mobile capable, it provides people with a fun and convenient way to browse local weekend events and activities. The interface quickly learns a user's likes and dislikes to present relevant events, while including a measure of randomness to expose the user to new ideas and activities.
Multiple Event Sources
Data is aggregated from leading event and social news sources including EventBrite, Yelp, Meetup and the Washington Post covering the Washington DC Metro area (initial release)
Sophisticated Recommendations
Using natural language processing to determine event similarity, EventDilly learns users likes and dislikes to present them with events based on their interests
Modern User Interface
A clean, simple user interface works on browsers and mobile devices and a intuitive like / dislike process quickly gives users a set of events they can attend
Facts
EventDilly statistics
Sources
Events Per Month
Event Similarity Comparisons
The Problem
Declining levels of civic engagement and social capital were highlighted in the 2000 book, “Bowling Alone: The Collapse and Revival of American Community”. While the original studies have been criticized, current events seem to demonstrate ever increasing polarization & silo’ed nature of our social groups. Encouraging more diverse local social interaction would seem to be a productive way to combat isolationist behavior. While sites exist to assist us in choosing venues and services, there is a lack of similar resources to help us find local social activities and events. Finding fun things to do shouldn’t be hard work. No one has the time to scour newspapers and the Internet for weekend events and going to the same club every weekend is boring. Similarly posting your event everywhere is time consuming and expensive. Wouldn't it be nice if there was an easy to use site that aggregated event listings so that everyone can find the events they'd like to attend?
Approach
Gather event data from multiple sources, normalize, build recommender model and present events to users for preference indication
Connect to Sources
Event source website APIs are leveraged to collect events in the Washington, DC Metro area within a current, multi-week window
Collect Events
Each event source is coded as an independent AWS Lambda function that runs daily to get up-to-date information without requiring an always-on server
Normalize Data
Event JSON structures are parsed and consistent, structured data fields are extracted into PostgreSQL database table columns, including event source URLs
Build Document Model
Using Word2Vec and Doc2Vec create embeddings for event descriptions to find other similar events
Cluster and personalize
Cluster events and tracks user actions to learn about their preferences and provide personalized recommendations
Mobile Capable Website
Using Django and Bootstrap, deploy a mobile-capable website using AWS Elastic Beanstalk for application hosting at EventDilly.com
Present Events for Feedback
Present users with information on a random event, including event imagery and description for like / dislike feedback
Update Event Preferences
Update user preferences within session and use feedback to display similar events with occasional randomness to avoid local minimum
Results
EventDilly efficiently gathers events from various sources, creates uniform clusters of events based on their similarity and presents users with candidate events to like or dislike. The application presents events that it thinks the user will like, with an occasional random event for consideration.
Serverless Data Loading
Individual functions are used to load data from each source. The functions are triggered by a daily event alarm and are only active during the data load. Using AWS Lambda functions, costs are incurred only when the load is running. Data loading effectively occurs for free.
Natural Language Event Clustering
Event titles and descriptions are parsed using Doc2Vec to create event vectors. Recommendation engine creates uniform clusters using vector similarity and silhouette method. Event similarities are pre-computed for display performance.
Exploitation / Exploration
User interface uses a continuosly refined exploit-explore algorithm to display events similar to user likes while exploring other event clusters to gather more like / dislike data.
Next Steps
Currently, EventDilly is limited to events from 4 event sources and filtered by a 25 mile radius from the center of Washington, DC. To provide better event coverage and to provide opportunities for under-advertised events, additional data sources will be added. Continuous geographic coverage, while interesting, will probably take a back seat to adding additional metropolitan areas. These will likely be in the continental United States, Canada and potentially Great Britain.
The recommendation engine thoroughly compares every event to each other for similarity, which will have scaling challenges as we add sources and locations. We will likely modify this algorithm to limit event-to-event comparisons to those that are in the same geographic region.
An interesting issue is that some event organizers promiscuously post their events, even to the same source sites, using slightly different descriptions. Large numbers of these kind of events skew event clusters, with the result that users are often presented with what appears to be the same event over and over again. Determining when we see these duplicative events, and selecting which ones to keep and which ones to ignore will be an area of future investigation.
After user testing, one critical feedback we got was the need for a space to review events the user has previously liked. Our initial assumption was that users would follow the link at the bottom of the page to the original posting on whichever site on which it was originally published, and could then select from the tabs they had opened, but this seems not to be the case. This will be considered MVP work for the next release.