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.
ProblemLokalfotboll ä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ösningJag 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 beslutKä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 visarProjektet 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.
TeknikNext.js 16TypeScriptDrizzle ORMSupabaseZodTailwind v4Anthropic SDKGitHub ActionsRender