Building with AI: Grassroots football tools
Building with AI: Grassroots football tools

300+
Lineups created already - with literally no distribution effort
#2.3
Average position on Google for main landing page
42.9%
Beverage brands supported
I've built two products for Danish grassroots football, and a third underneath them that I'm more proud of than either. All of it solo, designed and built with AI as the engine.
Opstillingen is a lineup builder for coaches. Apart from just being a nice way to set your team with all the expected features, I put some effort into making it bespoke for danish football. It imports your squad straight from DBU's player roster, learns where each player usually plays so you're not starting from scratch every week, and reads a lineup off a photo via OCR.
While these aren’t features that are used that much, they serve a bigger purpose which is positioning. There aren’t any proper tools for coaches in Denmark. And we’re 20.000 across the country, big enough market size to demand modern digital tools.
It had traffic from day 1, and while numbers aren’t massive, they’re steadily growing, with more and more repeat usage too. A decent mix of new and returning users.
The numbers are small. The shape is what matters: a funnel that ranks for the real search, converts most of the click, and brings people back, with nothing pushing it.
The proof is in the usage, all of it organic. I showed Opstillingen to two people and never marketed it.
Local-first: works offline, syncs when you sign in. No framework, no build step, vanilla JS by choice. Club kits, colours and badges are pulled from danish-football-clubs, the shared library underneath.
Coaches first. Parents next.
Findenklub.dk is the next product. It helps parents find a club for their kid: which clubs near them have a team for a twelve-year-old girl, whether it's recruiting, how to sign up. The information exists in raw form on DBU's side, leaving the user with the hard work of figuring out what the data means. They’re basically giving you an address.
The product is a simple search, giving you exactly what you need.

The users problem comes down to this:
Based on age and which month the kid is born, there are actually more possibilites than most parents know. On top of that, each club has a different way of taking in new players. I try to meet both those needs with continuous scraping and enriching of the data.
This is largely an information hierarchy problem, and the part I enjoy most.

And then the library I would have wished for when I started.
I knew I needed clubs data - first it was simple stuff, but it gradually got more advanced. It felt wrong even before starting to build this into the first app - ok, here’s the scenario:
Both tools need club data, and the first version of that data was almost literally a list of club names in a file. Then I thought it would be nice with a club logo. And why should users (coaches) set up their own kit design, when it’s usually somewhere to be found.

Findenklub needed it richer, with teams, age groups, locations, municipality mappings, membership links. So the list became a real library, danish-football-clubs, and now there's a third and fourth tool in the pipeline, each needing it richer still.
It’s a deliberate decision, not an accident of growth - and it’s actually superfun to build and maintain. It’s a different discipline that what I’m used to, because it’s data, it’s on github, I can’t click it. But it’s also just design like everything else I do; systematic, organised and easy to use.
One shared foundation, every tool a focused single-purpose thing sitting on top.
The payoff compounds. The first tool had to assemble a list of club names just to exist. The next one starts from a library that already knows almost everything about Danish football, and only has to learn the one new thing it needs. Each tool I add makes the next one cheaper to build.


I’ve been thinking about how to crowdsource the data in the library more effectively, but I don’t have critical mass yet - until then, I’m taking in the data I’m given from users of the apps and treating it as input to validate. Lots of these clever little moves invovled.
And now what?
It’s all based on things I know the community needs. I’ve been coaching for a decade, I absolutely love it, but I’m also torn by it. Volunteers run out of breath, and hand off the baton to the next one who reluctantly picks it up. There’s a massive brain drain because nearly all coaches stop coaching when their kid moves on.
I can’t fix capacity in football clubs in the major cities. I can’t make coaches stay on for longer than desperately needed either. But I can make a difference and provide some tools for the coaches to use, and for the organisations to see.
And learn a ton while doing it.

Building with AI: Grassroots football tools

#2.3
Average position on Google for main landing page
42.9%
Beverage brands supported
300+
Lineups created already - with literally no distribution effort
I've built two products for Danish grassroots football, and a third underneath them that I'm more proud of than either. All of it solo, designed and built with AI as the engine.
Opstillingen is a lineup builder for coaches. Apart from just being a nice way to set your team with all the expected features, I put some effort into making it bespoke for danish football. It imports your squad straight from DBU's player roster, learns where each player usually plays so you're not starting from scratch every week, and reads a lineup off a photo via OCR.
While these aren’t features that are used that much, they serve a bigger purpose which is positioning. There aren’t any proper tools for coaches in Denmark. And we’re 20.000 across the country, big enough market size to demand modern digital tools.
It had traffic from day 1, and while numbers aren’t massive, they’re steadily growing, with more and more repeat usage too. A decent mix of new and returning users.
The numbers are small. The shape is what matters: a funnel that ranks for the real search, converts most of the click, and brings people back, with nothing pushing it.
The proof is in the usage, all of it organic. I showed Opstillingen to two people and never marketed it.
Local-first: works offline, syncs when you sign in. No framework, no build step, vanilla JS by choice. Club kits, colours and badges are pulled from danish-football-clubs, the shared library underneath.
Coaches first. Parents next.
Findenklub.dk is the next product. It helps parents find a club for their kid: which clubs near them have a team for a twelve-year-old girl, whether it's recruiting, how to sign up. The information exists in raw form on DBU's side, leaving the user with the hard work of figuring out what the data means. They’re basically giving you an address.
The product is a simple search, giving you exactly what you need.

The users problem comes down to this:
Based on age and which month the kid is born, there are actually more possibilites than most parents know. On top of that, each club has a different way of taking in new players. I try to meet both those needs with continuous scraping and enriching of the data.
This is largely an information hierarchy problem, and the part I enjoy most.

And then the library I would have wished for when I started.
I knew I needed clubs data - first it was simple stuff, but it gradually got more advanced. It felt wrong even before starting to build this into the first app - ok, here’s the scenario:
Both tools need club data, and the first version of that data was almost literally a list of club names in a file. Then I thought it would be nice with a club logo. And why should users (coaches) set up their own kit design, when it’s usually somewhere to be found.

Findenklub needed it richer, with teams, age groups, locations, municipality mappings, membership links. So the list became a real library, danish-football-clubs, and now there's a third and fourth tool in the pipeline, each needing it richer still.
It’s a deliberate decision, not an accident of growth - and it’s actually superfun to build and maintain. It’s a different discipline that what I’m used to, because it’s data, it’s on github, I can’t click it. But it’s also just design like everything else I do; systematic, organised and easy to use.
One shared foundation, every tool a focused single-purpose thing sitting on top.
The payoff compounds. The first tool had to assemble a list of club names just to exist. The next one starts from a library that already knows almost everything about Danish football, and only has to learn the one new thing it needs. Each tool I add makes the next one cheaper to build.


I’ve been thinking about how to crowdsource the data in the library more effectively, but I don’t have critical mass yet - until then, I’m taking in the data I’m given from users of the apps and treating it as input to validate. Lots of these clever little moves invovled.
And now what?
It’s all based on things I know the community needs. I’ve been coaching for a decade, I absolutely love it, but I’m also torn by it. Volunteers run out of breath, and hand off the baton to the next one who reluctantly picks it up. There’s a massive brain drain because nearly all coaches stop coaching when their kid moves on.
I can’t fix capacity in football clubs in the major cities. I can’t make coaches stay on for longer than desperately needed either. But I can make a difference and provide some tools for the coaches to use, and for the organisations to see.
And learn a ton while doing it.

Building with AI: Grassroots football tools

I've built two products for Danish grassroots football, and a third underneath them that I'm more proud of than either. All of it solo, designed and built with AI as the engine.
Opstillingen is a lineup builder for coaches. Apart from just being a nice way to set your team with all the expected features, I put some effort into making it bespoke for danish football. It imports your squad straight from DBU's player roster, learns where each player usually plays so you're not starting from scratch every week, and reads a lineup off a photo via OCR.
While these aren’t features that are used that much, they serve a bigger purpose which is positioning. There aren’t any proper tools for coaches in Denmark. And we’re 20.000 across the country, big enough market size to demand modern digital tools.
It had traffic from day 1, and while numbers aren’t massive, they’re steadily growing, with more and more repeat usage too. A decent mix of new and returning users.
The numbers are small. The shape is what matters: a funnel that ranks for the real search, converts most of the click, and brings people back, with nothing pushing it.
The proof is in the usage, all of it organic. I showed Opstillingen to two people and never marketed it.
300+
Lineups created already - with literally no distribution effort
#2.3
Average position on Google for main landing page
42.9%
of organic visitors go on to complete a full lineup
Local-first: works offline, syncs when you sign in. No framework, no build step, vanilla JS by choice. Club kits, colours and badges are pulled from danish-football-clubs, the shared library underneath.
Coaches first. Parents next.
Findenklub.dk is the next product. It helps parents find a club for their kid: which clubs near them have a team for a twelve-year-old girl, whether it's recruiting, how to sign up. The information exists in raw form on DBU's side, leaving the user with the hard work of figuring out what the data means. They’re basically giving you an address.
The product is a simple search, giving you exactly what you need.

The users problem comes down to this:
Based on age and which month the kid is born, there are actually more possibilites than most parents know. On top of that, each club has a different way of taking in new players. I try to meet both those needs with continuous scraping and enriching of the data.
This is largely an information hierarchy problem, and the part I enjoy most.

And then the library I would have wished for when I started.
I knew I needed clubs data - first it was simple stuff, but it gradually got more advanced. It felt wrong even before starting to build this into the first app - ok, here’s the scenario:
Both tools need club data, and the first version of that data was almost literally a list of club names in a file. Then I thought it would be nice with a club logo. And why should users (coaches) set up their own kit design, when it’s usually somewhere to be found.

Findenklub needed it richer, with teams, age groups, locations, municipality mappings, membership links. So the list became a real library, danish-football-clubs, and now there's a third and fourth tool in the pipeline, each needing it richer still.
It’s a deliberate decision, not an accident of growth - and it’s actually superfun to build and maintain. It’s a different discipline that what I’m used to, because it’s data, it’s on github, I can’t click it. But it’s also just design like everything else I do; systematic, organised and easy to use.
One shared foundation, every tool a focused single-purpose thing sitting on top.
The payoff compounds. The first tool had to assemble a list of club names just to exist. The next one starts from a library that already knows almost everything about Danish football, and only has to learn the one new thing it needs. Each tool I add makes the next one cheaper to build.


I’ve been thinking about how to crowdsource the data in the library more effectively, but I don’t have critical mass yet - until then, I’m taking in the data I’m given from users of the apps and treating it as input to validate. Lots of these clever little moves invovled.
And now what?
It’s all based on things I know the community needs. I’ve been coaching for a decade, I absolutely love it, but I’m also torn by it. Volunteers run out of breath, and hand off the baton to the next one who reluctantly picks it up. There’s a massive brain drain because nearly all coaches stop coaching when their kid moves on.
I can’t fix capacity in football clubs in the major cities. I can’t make coaches stay on for longer than desperately needed either. But I can make a difference and provide some tools for the coaches to use, and for the organisations to see.
And learn a ton while doing it.
