A web platform that pulls events from across the United States, enriches the content, and enables users to search events by location and date.
A web aggregator that pulls offline events from a wide range of online sources and presents them in one easy-to-use catalog. Visitors can select a city, venue, date range, and event category, then instantly see a relevant list of activities. Each event page shows the description, time, venue, a link to the original source, and an image gallery; search and filters remain fast and responsive even at high data volumes.
Lisa, a US-based founder, regularly attends local events and struggled to discover them easily — which inspired this product. Lisa came to us at the pre-launch stage with a limited MVP budget, so the scope had to stay tight on the functionality that mattered most for going live.
Fragmented sources
Events were scattered across dozens of websites and listings, each with a different structure and inconsistent quality of descriptions, so aggregation required a unified data pipeline to collection and normalization.
Limited data from the SERP API
The external service did not always return complete records and only delivered minimal preview images, so we required enrichment and completion logic for the data.
Duplicate events
The same event could appear across many sites with different wording, dates, and links, which required an intelligent grouping mechanism.
Flexible update rules
Different cities and time horizons required different refresh frequencies — near-term events more often than distant ones — with fine-grained control.
Visual content
The goal was to present a gallery of high-quality images per event, while the raw sources typically delivered one small thumbnail at best.
Accuracy and performance
The platform had to combine heavy server-side processing — deduplication, categorization, image search — with fast user-facing response times.
We built the aggregator on a headless backend in Directus with a React frontend. The platform polls the SERP API on a schedule, normalizes incoming data, merges duplicates, and enriches events with categories and images. Update schedules, sources, deduplication rules, and content moderation are all managed through the admin panel.
Discovery and usage scenarios
We defined the core scenarios upfront: searching events by city, date, and category; viewing the event detail page; following the link to the original source; and using the platform from mobile. In parallel, we agreed on data-freshness expectations across different locations, which directly shaped the design of the background scheduler.
Data model in Directus
In Directus, we agreed to model the entities "event," "source," "location," "raw record," "event group," and "image," along with the rules that link them. That structure allows us to keep multiple raw entries for the same gathering, merge them into a single event group, and surface only the normalized record to the user.
SERP API integration and update scheduler
The backend service calls the SERP API on intervals using different location and date parameters, stores raw results in a dedicated table, and processes them downstream. Each location has its own refresh frequency, with a more aggressive mode reserved for events happening today or in the next few days.
Deduplication and categorization with a language model
Raw results pass through a dedicated processing layer. Based on title, description, date, and venue, the system groups records likely to describe the same event. A language model helps detect semantic similarity, normalize categories, and fill in missing fields, consolidating several raw entries into a single canonical event.
Image search and enrichment
For each event, we implemented a dedicated image-search algorithm that queries open sources by keywords, location, and venue or brand name. Returned images are filtered by resolution and format to assemble a curated gallery, raising the visual quality of the catalog well above the raw previews from source data.
React frontend focused on search and filters
The frontend covers the main catalog, city pages, and event detail pages. Search and filtering runs on top of the API with combined filters (city + date range + category). We focused on performance: lazy-loaded cards, pagination, optimized API queries, and a fully responsive UI.
Admin panel and operational control
The client's team manages the active list of locations and updates rules through Directus, intervenes manually in difficult deduplication cases, hides irrelevant events, and highlights important ones. We also confirmed the need for logging and baseline dashboards so the team could see how often locations were refreshed, how many new events were ingested, and how many were filtered out as duplicates.
In the first stage, together with Lisa we defined priority cities and event types, how often users expected updates, and what "current event data" actually meant for different markets. That defined the requirements around data volume, SERP API usage, and the level of detail needed to support monetization later.
+2 Resource
We delivered a single, manageable catalog with relevant results across different cities. End users got a convenient discovery tool, and Lisa's team got a transparent process for data ingestion and quality control that can be developed and scaled.
in place of dozens of disconnected sources
of the same event
by location and time horizon
for events thanks to dedicated image search
through tools for managing sources, locations, and processing rules
Or send us a message and we'll get back to you within 15 minutes during business hours