Hoply
AI data pipeline

How I turned incomplete sports data into a reliable dataset.

Role
Concept & Development
Focus
Data quality and enrichment
Status
Complete

01 · The problem

There were gaps in the stadium data.

The data sources I used had reliable information about matches, but some were missing essential venue details. Hoply helps people find sports events nearby, so knowing exactly where a match takes place matters.

Data sourceMatches, teams, leagues
HoplyImporting a match
  • teamFortuna Düsseldorfvalid
  • league2. Bundesligavalid
  • fixtureSat, 15:30 · Homevalid
  • venue.nameESPRIT arenaoutdated
  • venue.addressemptymissing
  • venue.coordinatesemptymissing

02 · First solution

Start with deterministic rules.

My first approach was a traditional web crawler that matched teams to the correct stadiums through Wikipedia and other sources. This gave me an initial dataset, which I later used to validate the AI results.

Team dataName, league, country, sport
  • NameFortuna Düsseldorfvalid
  • League2. Bundesligavalid
  • CountryGermanyvalid
  • SportFootballvalid
Traditional web crawlerWikipedia & other sources

„Fortuna Düsseldorf” home stadium

  • MatchMerkur Spiel-Arenavalid
Venue details foundTeam → Stadium · Address · Coordinates
  • Fortuna Düsseldorf
    Merkur Spiel-Arena
    Address
    Arena-Straße 1, 40474 Düsseldorf
    Coordinates
    51.2616° N, 6.7332° E
  • Borussia Dortmund
    Signal Iduna Park
    Address
    Strobelallee 50, 44139 Dortmund
    Coordinates
    51.4927° N, 7.4518° E
  • Hamburger SV
    Volksparkstadion
    Address
    Uwe-Seeler-Allee 9, 22525 Hamburg
    Coordinates
    53.5872° N, 9.8986° E

03 · Limitations

Messy data.

My traditional crawler worked well when the team was easy to identify. But team names can have different spellings, and teams in different sports can share the same name.

Team dataName, league, country, sport
  • NameBayern Munichvalid
  • LeagueBundesligavalid
  • CountryGermanyvalid
  • SportFootballvalid
Traditional web crawlerWikipedia & Web

„Bayern Munich“ Football Venue

Match names · Check sources

IssuesNo unambiguous match

Spelling variations

  • Bayern Munich · Bayern München · FC Bayern München
  • The names don’t match exactly, so matching by name alone can’t reliably identify the team.

Bayern Munich · Match unresolved

04 · Gemini crawler

AI where rules reach their limits.

To fill the remaining gaps, I built an AI crawler with Gemini. It uses the team name, league, country and sport to understand messy data in context and identify the right club. That lets it match each team to the correct stadium.

I integrated Google Maps Grounding into the crawler to find venues and determine their addresses and coordinates.

Team dataUnresolved cases · Team context
  • NameBayern Munichvalid
  • LeagueBundesligavalid
  • CountryGermanyvalid
  • SportFootballvalid
Gemini crawlerSemantic matching
  1. ClubFC Bayern München
  2. Stadium / ArenaAllianz Arena
  3. CityMunich
Google Maps GroundingAddress & Coordinates

Allianz Arena

  • AddressFranz-Beckenbauer-Platz 5, 80939 Münchenvalid
  • Coordinates48.2189° N, 11.6247° Evalid

05 · Validation

Every result gets checked.

I didn’t take the AI’s results at face value. I tested different models, prompts and reasoning levels to find the combination that worked best for this task.

I checked every result against my own reference dataset, which I had built with the traditional crawler and then reviewed manually.

Accuracy measured against my own reference dataset.

AI settingsOne change per run
Model
Model A
Reasoning
Low
Prompt
Match a team to a stadium.
Input
Name · League · Country · Sport
Quality checkAgainst the same reference dataset

60%

Accuracy · Run 1/6

Baseline

Experiment log6 example test runs
  1. 01 · Baseline60 %Baseline
  2. 02 · Prompt adjusted74 %Better · Adopted
  3. 03 · Model A → B69 %Worse · Rejected
  4. 04 · Model B → C85 %Better · Adopted
  5. 05 · Reasoning increased94 %Better · Adopted
  6. 06 · Sources added99 %Better · Adopted

Best result 60 %

A simplified animation for illustration. The underlying principle reflects the actual process.

Summary

From incomplete data to reliable venue information.

  1. 01The starting pointFor Hoply to show sports events nearby, I needed accurate venue information for every match. I filled in the missing stadium names, addresses and coordinates by enriching the data myself.
  2. 02The first approachI built a traditional web crawler that matched teams to their stadiums using Wikipedia and other sources. I later reviewed the collected data manually and used it as a reference for the AI results.
  3. 03The limitationsI ran into different spellings, teams with the same name in different sports and missing sources. To resolve these cases, I needed an approach that could understand the context.
  4. 04Adding AII built an AI crawler with Gemini that identifies the club and venue from the team name, league, country and sport. Google Maps Grounding added the correct address and coordinates.
  5. 05Quality assuranceI tested different models, prompts and reasoning levels against my own reference dataset. Through these iterations, I raised accuracy on the reference set from 60–70 percent to around 99 percent.