Inspiration
Hamilton does not have a shortage of things happening. It has a discovery problem. A lot of cities have this issue.
Events are scattered across venue websites, social media, ticketing platforms, municipal calendars, newsletters, and more. 73% of residents say that their biggest issue with event discovery is platform segmentation. Visitors struggle to understand what the city is really like. Organisers repeatedly publish the same information without knowing whether it reaches the right audience.
I created HamiltonEvents.ca to become the connective layer between these groups: one dependable, complete local place where people can find what is happening.
Hamilton is the first deployment, but the larger vision is a reusable local-discovery engine that can be adapted for other cities.
What it does
HamiltonEvents.ca is a live events-discovery platform built specifically for Hamilton, Ontario.
People can discover events happening today, this weekend, or later through search, calendars, maps, categories, neighbourhoods, venue pages, curated guides, and detailed event listings. The platform includes recurring schedules, prices, ticket links, accessibility information, calendar downloads, and practical venue details. This isn't just another event platform - this is an event data engine geared towards event organisers and municipalities, while making things easier for locals and visitors.
Organisers can submit events, manage listings through a partner workspace, understand audience interest, promote events, and understand metrics of success for events listed online.
Behind the public experience is an automated ingestion system that monitors local sources, extracts upcoming events, normalises inconsistent information, detects duplicates, models recurring schedules, and keeps listings current; removing burden from organisers that already have to post in multiple places.
As of July 17, 2026, the live platform contained:
- 1,239 distinct upcoming events
- 4,139 upcoming event occurrences
- 295 venues
- 85 active automated sources
- 134 organiser submissions
Most importantly, people are already using it.
During the latest complete 30-day period, HamiltonEvents.ca recorded:
- 20,884 meaningful public visits
- 17,636 active anonymous visitors
- 31,832 page views
- 13,394 recorded high-intent event actions, including website visits, booking clicks, calendar adds, directions, and shares
Compared with the preceding 30 days:
- Visits increased 144%
- Active anonymous visitors increased 161%
- Page views increased 127%
- Search-engine visits increased 189%
This growth happened without paid audience acquisition. Search engines generated 84.7% of all recorded visits, showing that people are actively looking for things to do in Hamilton and finding the platform organically. 30% of visitors come back within a month - already!
How we built it
I built HamiltonEvents.ca with OpenAI Codex as an engineering and operational partner.
The platform uses Next.js, React, TypeScript, Tailwind CSS, Prisma, Neon Postgres, Netlify, Leaflet and OpenStreetMap, RRULE recurrence, Stripe, Postmark, and a separate NAS-hosted ingestion worker backed by a Postgres job queue.
The ingestion pipeline follows a structured flow:
Fetch → Extract → Normalise → Deduplicate → Validate → Publish
Codex helps me work across the entire system rather than treating each feature in isolation. It traces behaviour from public interfaces through API routes, database models, worker jobs, analytics, and deployed configuration. I use it to implement features, write and run tests, inspect live data safely, diagnose ingestion failures, improve mobile UX, audit SEO and accessibility, and verify that fixes reach the surfaces users actually see.
I also use scheduled Codex tasks as an independent data-quality layer.
For example, a daily Codex task researches public demand for Hamilton events over the coming week. It checks official and tourism calendars, venue websites, ticketing platforms, local news, and broader “things to do” sources, then identifies high-interest events the automated ingestion engine may have missed.
Other scheduled reviews can examine crawl output, duplicate titles, missing prices or imagery, source freshness, traffic anomalies, and emerging demand. Codex reports the gaps for review rather than silently changing production data.
This creates a useful quality loop:
Automated ingestion gathers the city → scheduled Codex tasks challenge its coverage → reviewed corrections improve the platform.
Project-specific Codex instructions define production safety, visual density, public copy, environment ownership, ingestion workflows, and release rules. This allows Codex to move quickly while respecting the constraints of a live platform.
Challenges we ran into
The hardest problem was not displaying event cards. It was creating trustworthy event data from sources that all describe dates, venues, prices, images, cancellations, and recurring schedules differently.
A recurring event is especially complex. One parent listing may represent dozens of independently changing occurrences. Correcting only the parent can leave search results, calendars, venue pages, and exports showing stale information. I learned to treat occurrences as first-class records and verify changes across every consuming surface.
Crawler health was another challenge. A job can technically succeed while extracting zero useful events. The platform therefore tracks extracted candidates, normalisation, source freshness, duplication, and content quality instead of relying on a simple success flag.
The next challenge is portability. The source adapters, event and occurrence model, discovery interfaces, analytics, organiser tools, and operational workflows are broadly reusable. However, each city still needs its own source catalogue, geographic rules, taxonomy calibration, local language, and civic context. The goal is not to erase those differences—it is to make the technical engine repeatable while preserving what makes each city distinct.
Accomplishments that we're proud of
HamiltonEvents.ca is not a static prototype. It is a working local platform serving real event information to a rapidly growing audience.
I am particularly proud that it:
- Grew to more than 20,000 monthly meaningful visits without paid promotion
- More than doubled both visits and active visitors in a single 30-day comparison
- Receives the large majority of its audience through organic search discovery
- Turns fragmented local sources into structured, searchable event data
- Correctly represents more than 4,000 upcoming event occurrences
- Gives organisers direct submission, promotion, and partner-management paths
- Supports discovery through dates, categories, neighbourhoods, venues, maps, search, and calendars
- Includes first-party engagement analytics and partner-performance reporting
- Uses scheduled Codex tasks to identify coverage and data-quality gaps
- Includes a municipal intelligence proof of concept
- Is protected by more than 1,000 automated tests
The greatest accomplishment is that the platform now solves both sides of local discovery: helping people find something worth going to while helping organisers reach people already searching for what is happening.
What we learned
I learned that local discovery succeeds or fails on trust. A smaller set of accurate, current, clearly attributed listings is more valuable than a large catalogue of unreliable ones.
I also learned that event data can reveal more than what is happening this weekend. At sufficient scale, it becomes a living signal of how a city uses its venues, neighbourhoods, public spaces, and cultural infrastructure.
Searches, event supply, repeat interest, calendar pressure, category growth, free-event access, venue distribution, and outbound actions can help reveal where public interest is being met—and where opportunities are being missed.
Codex is most effective when treated as a genuine engineering collaborator with explicit constraints, durable context, direct access to evidence, and a requirement to verify its work. It did not replace product judgment. It gave one builder the ability to inspect, build, test, and operate a platform with the breadth of a much larger team.
What's next for HamiltonEvents.ca
Hamilton is the proving ground for a platform that can eventually serve other cities.
Much of the underlying engine is already reusable: source adapters, ingestion jobs, canonical events, occurrences, venues, organiser workflows, discovery interfaces, first-party analytics, and operational monitoring. The next architectural step is separating more Hamilton-specific configuration so a new city can be launched by onboarding its sources, geographic boundaries, taxonomy, branding, and local operating rules.
I am especially excited about the benchmarking this could unlock.
Across participating cities, the platform could compare:
- Event supply and public demand
- Neighbourhood and ward-level access
- Free versus paid cultural opportunities
- Venue activity and geographic distribution
- Seasonal and calendar pressure
- Category growth and unmet public interest
- The relationship between programming, discovery, and visitor action
HamiltonEvents.ca already has a municipal proof of concept covering calendar pressure, neighbourhood activity, public-interest gaps, event mix, venue readiness, and planning signals. A multi-city network could turn those directional insights into comparable benchmarks for municipal, tourism, and cultural-planning teams.
The most exciting possibility is helping cities uncover emerging tourism identities before they appear in official campaign language.
Aggregate event supply and public-interest patterns can reveal growing subcultures around live music, independent film, cycling, maker communities, food events, niche sports, markets, or other locally distinctive scenes. This would not profile individuals. It would identify privacy-conscious, city-level cultural patterns showing what communities are creating and what audiences are actively seeking.
That could help a city recognise that its next meaningful tourism identity is already forming from the ground up.
The long-term goal is:
Make everything worth doing in a city easier to find. Help cities understand the culture taking shape around them. Technology has done enough of pulling people apart from one another, I want to help bring people together again.
Built With
- 5.6
- codex
- sol
- typescript
Log in or sign up for Devpost to join the conversation.