Case study · 2026
TICS Radar: the same concert, on several ticket sites. Which one is actually the cheapest?
TICS tracks the ticketing platforms in Romania, recognises the same event on each of them and shows the final price, fees included. It does not sell tickets and takes no commission.
- Role
- Founder. Product, design, code, data
- Period
- June - October 2026
- Status
- Live on tics.ro
- Platforms
- Website, admin panel, Chrome extension in testing
- The problem
- The same concert is sold on several platforms, with different fees, often shown only in the cart.
- What I built
- A system that tracks 20 platforms, recognises the same event on each one and shows the final price. Plus the TICS Barometer, a public report on the ticket market.
- The result
- Live on tics.ro, with events tracked in hundreds of towns. The browser extension is waiting to be published in the stores.
- 20 ticketing platforms tracked
- 4,813 events on sale now
- 506 towns with events
- 391 backend commits, in four months
The first three figures are read live from tics.ro when you open the page. The values in the code are those from 5 November 2026.
01 · The problem
The price on the poster is not the price you pay.
In Romania, tickets to the same concert are often sold on several platforms at once. Each has its own fees: a platform fee, a processing fee, sometimes shown only in the cart. To find out where it is cheaper, you open four sites and go all the way to checkout on each.
On 5 November 2026, the TICS Barometer showed that two thirds of tickets carry a fee, on average +6.5% above the base price. For organisers, the same lack of transparency means they do not know how the market around them is selling.
02 · What it does
One place for each event, with all the prices side by side.
An event page puts the tickets from each platform side by side: the base price, the platform fee, the processing fee and the total. It shows which categories still have seats and how the price moved over the last 30 days.
For organisers and artists there is Radar Pro: alerts, price history and a monthly report. For the press, the TICS Barometer, a public report on the ticket market.
03 · How it works
From a platform page to the compared price.
Everything runs on a task scheduler, with Redis queues monitored in Horizon. Each step is a separate command, with its own pace.
- 01
Discovery
- Sitemaps read every hour
- Lists and APIs for platforms without a sitemap
- Respects robots.txt, at most 2 requests at a time
- 02
Extraction
- JSON-LD structured data, with HTML as a fallback
- 17 dedicated extractors
- Selectors editable from the admin, no deploy needed
- 03
Matching
- The same event, recognised across platforms
- Score on title, venue, date, artist and city
- Audit of suspicious merges
- 04
Prices
- Updated every 4 hours, 30 days ahead
- Fees found all the way to the cart
- History and hourly alerts
- 05
Market
- Daily snapshot at 23:50
- Occupancy from seat maps
- The public Barometer
Steps 1-4 run continuously. The daily snapshot feeds the Barometer and the Radar Pro reports.
04 · The hard part
How do you know two pages are the same concert?
Titles differ from one platform to another (“Concert X - Tour 2026” versus “X live”), and times can be written differently. The algorithm looks for candidates one day either side and gives them a weighted score: title 30%, venue 22%, date and time 20%, artist 15%, city 13%. Above 0.75, the two pages become one event.
The first version wrongly merged different shows in the same venue on the same evening. Now a match on venue and date counts only if the titles share a word of at least four letters that is not a place name. A separate command regularly checks merges that look suspicious.
05 · Components
What I built, piece by piece.
The public website
Laravel and Blade, with Tailwind and Alpine. Fast and easy to index.
- Event, artist, venue and city pages
- Comparison across platforms, with fees shown separately
- 30-day price chart
- Calendar, full-text search in PostgreSQL
- Seven sitemaps, Event structured data, IndexNow
The data engine
32 commands and a scheduler that runs anywhere from every 15 minutes to once a week.
- Extractors for each platform
- Normalisation of Romanian dates, cities and addresses
- Cross-platform matching and deduplication
- Images converted to WebP ahead of time
- Detection of finished events
Radar Pro
Subscription for organisers, agencies and artists, paid through Stripe.
- Price and stock alerts, checked every hour
- Monthly report by email
- Artist mode, with social media data
- Market analysis dashboard
- Promoting an event in the results
The admin panel
Filament 4, with 12 resources and 9 dedicated pages.
- Platforms, with their editable selectors
- Duplicate events to check by hand
- Opportunities and sales reports
- Venue statistics
- Settings for seven external services, with a connection test
06 · The Barometer
A market report anyone can quote.
The daily data produces the TICS Barometer: the median ticket price, how much the fees add, how full the venues are and how many events have sold out. The page is made for journalists, with big numbers and the methodology one click away.
07 · Metrics
What the data shows.
The market figures come from tics.ro and the Barometer, on 5 November 2026, and change daily. The code figures are counted in the repo.
- 20ticketing platforms trackedfrom the site
- 555,967seats tracked in venue seat mapsfrom the site
- 100 RONmedian ticket price, fees includedBarometer
- +6.5%average fee, on the two thirds of tickets that carry a feeBarometer
- 42%average venue occupancy, where the platform publishes the seat mapBarometer
- 0.75score threshold above which two pages become the same eventin code
- 100 / 15 minevents refreshed by the extraction queuein code
- 0.53 → 0visual shift of the list (CLS), after I reserved the grid spacemeasured
How much code
- 38
- data models
- 67
- migrations
- 32
- scheduled commands
- 51
- services
- 127
- Blade templates
- 74
- tests
08 · What I learned
Four things I take with me.
Other people’s data changes without warning
One platform changes its page, another sends invalid JSON. That is why the selectors live in the database, editable from the admin, and every extractor has a fallback.
A comparison is fair only if it sees the whole price
Without the fees from the cart, the comparison would have been on the base price, which is exactly what the buyer already sees.
Wrong merges cost more than missed ones
Two shows merged into one display false prices. I chose a strict threshold and a list to check by hand.
Say what you cannot measure
The artist plan states clearly what public data cannot show: revenue or the buyer profile. The Barometer methodology does the same.
09 · Where it is now
The site is live. The extension is waiting to be published.
The Chrome extension shows the comparison directly on the page of the platform you are buying from. It has 26 source files and covers 14 ticketing domains, but on 5 November 2026 it was not yet published in the stores.
TICS is backed by Tixello, my ticketing platform. Organisers who want to sell directly reach Tixello from the page for organisers.
Working on something similar?
I build web products from idea to launch, as a developer or as a technical co-founder. Write to me and we will see if it fits.