Skip to content
Back

SaaS web app

Eventread

The check every booker skips.

Visit site (opens in a new tab)
Eventread month view for Berlin, November 2026, with 18 November selected
Role

Research, design and build, end to end

Timeline

Mar 2026 – ongoing

Team

Solo

Tools
  • Figma
  • Figma MCP
  • Claude Code
  • Next.js
  • Vercel
  • Ticketmaster
  • JamBase
  • football-data.org
  • Wikidata

Problem

Two bands, one lost night. My band's release show lost its audience to a Måneskin arena show on the same night. A friend's band lost theirs to the Champions League final. Nobody had checked, because there was nothing to check with.

Eventread is built for the two people I worked with for eight years: artists and managers picking a date, and promoters and agents filling a room. Both pick a date and hope: ticketing platforms show their own events, and nobody shows the whole night.

Live Nation alone puts on 54,000 shows a year, about 150 every night. Every independent show gets booked around that calendar, usually without seeing it. Prism.fm, TourSmart and ChatGPT each answer part of the question; none checks a date against everything happening that night.

shows every night
Live Nation alone · 54,000 a year

How it works

One search, then it remembers. Pick a city, a month, your genre and your room size, and the month comes back laid out by risk. Around that search sit three things bookers do every week: book for several acts, watch a date after it's booked, and route a tour.

01

Search, then save it as an act

A manager or an agent books for several acts, and every search asked for the same genre and room size again. Signed in, a search offers to save itself as an act. After that the act is one click on the search page, and its genre and room size fill in.

After a search · the offer
Next search · one click
02

Follow the date you booked

Shows keep getting announced after a date is booked. A followed date is re-checked every day, and an email goes out when a competing show lands on that night.

Followed dates: two dates followed, both at risk, three new conflicts since the last visit
03

Plan a tour as one run

Eight cities typed in any order, one date already booked in Paris. The planner routes Berlin to Paris in 12 days and 2,495 km, keeps every drive possible, picks the quietest nights the run can reach, then checks the 20 shortest alternatives: none beats it.

Tour planner result: Berlin to Paris, 8 stops, 2,495 km, 12 days; the 20 shortest alternative routes checked, none better

Under the hoodTicketmaster covers the big ticketed shows and JamBase the local ones it doesn't list: for Berlin in November 2026, 487 shows against 93, 436 of them not on Ticketmaster at all. "Cambridge" returned 124 events across the UK and the US until places carried their country (21 after the fix), and tour shows wanting the same night are assigned in two passes.

Design system

One product, one language. The interface had grown by feature: pill-shaped navigation next to square buttons, colour used for decoration as much as for risk. I surveyed product design systems and built one from three references.

From Vercel

Type

The check every booker skips.
1,000 CAP · 20:00 · 2,495 KM

Geist Sans for words, Geist Mono for numbers and labels.

From Ramp

Colour

SafeThreatCritical
SAFE · 23784D
THREAT · F0A020
CRITICAL · C8333A

Risk is the only colour, shown as a dot and a word.

From Cal.com

Month view

Eventread's month view: each day tile carries its risk

A month at a glance, each day carrying its risk.

Core components
Save tourEdit inputsFollow this dateConflicts9
RockAlternativePop
20:00

One type family, one set of shapes, three colours that always mean risk, and a CI test that fails if an old style comes back.

Challenges

  1. 01

    A blank calendar looked safe

    Not checkedNo coverage hereAll Saints' Day
    What happened

    A month with no data looked exactly like a month with no competition. London showed 7 days of events, Tel Aviv came back as a green “No conflicts”, and holidays were missing.

    What I did

    I gave missing data its own states (“Not checked”, “No coverage here”), showed holidays without scoring them, and added an “announced” indicator built on an 8-city count: about 95% of a month's shows are listed one month out, 1% a year out.

    What it changed

    London went from 7 visible days to all 31.

  2. 02

    The score claimed precision it didn't have

    SafeThreatCritical
    What happened

    “Safe 18” on a tour date read like a date or a time, and a 0–100 number promised more precision than the formula has.

    What I did

    I dropped the number and kept three bands, Safe, Threat and Critical, after checking the cut-points on 3,172 real listings.

    What it changed

    The formula produced only 27 distinct values, and none fell between 35–45 or 64–80: the bands sit on real gaps.

Impact

Live at eventread.vercel.app (opens in a new tab), built solo.
Finds the competing events, ticketed or not, before the date is booked.

Liam Hasson