Case / hyperlokal data-hub

Kommunfotbollen

Next.js / Claude API / GitHub Actions

Kommunfotbollen samlar tabeller, matcher och nyheter för en kommuns fotbollslag på ett ställe, uppdaterat automatiskt utan att någon behöver mata in data manuellt.

Problem

Lokalfotboll är utspridd över en extern sportkälla och flera lokaltidningar. Ingen plats samlade serier, matcher och målskyttar, och matchreferaten fanns bara som fritext utan struktur.

Lösning

Jag byggde en Next.js-app med en källagnostisk ingest-arkitektur som hämtar serier och matcher, och en AI-pipeline där Claude läser lokaltidningarnas matchreferat, bedömer om artikeln är relevant för ett visst lag och extraherar målskyttar ur den ostrukturerade texten.

Tekniska beslut
Källagnostisk ingest-arkitektur (MatchSource) så fler datakällor kan kopplas in utan att skriva om resten av appen.Claude används för två separata AI-uppgifter: relevansfiltrering av nyheter och extraktion av målskyttar ur matchreferat.Supabase Postgres via Drizzle istället för en inbäddad databas, så data överlever omstarter oberoende av var appen körs.Synkning flyttad från in-process timers till schemalagd GitHub Actions-cron mot en autentiserad endpoint, så drift blir enkel och stateless.Zod-validering av extern data för att hålla datamodellen pålitlig trots källor med varierande kvalitet.
Vad det visar

Projektet visar att jag kan bygga integrationer mot flera externa datakällor, använda AI för strukturerad extraktion ur text, och göra medvetna arkitekturval för att hålla driftkostnaden nere.

Teknik
Next.js 16TypeScriptDrizzle ORMSupabaseZodTailwind v4Anthropic SDKGitHub ActionsRender