Back to projects

FUT Evolution

FC Ultimate Team companion app + AI-powered football agent

Kotlin Multiplatform SwiftUI Compose Koog Next.js PostgreSQL Python FAISS RevenueCat
FUT Evolution app screenshots
Role Solo Developer
Timeline 2023 - Present
Platform iOS (SwiftUI), Android (Compose), Web (Next.js)

Why I built it

Every FC Ultimate Team companion app does the same thing: show you what's on the market. Player prices, card stats, tier lists. But none of them know your team. You still have to browse websites, compare players yourself, figure out who fits your formation and budget. That takes time most players don't have.

I wanted something different: an app where you import your squad and an AI coach does the rest. It knows your players, your budget, your weak spots. It scouts upgrades, tracks price drops, and tells you exactly what to do. No more browsing. The coach handles it.

How it's built

Cross-platform mobile app (Kotlin Multiplatform)

The app is built with Kotlin Multiplatform. iOS runs SwiftUI, Android runs Compose Multiplatform. All business logic lives in a shared Kotlin module: networking with Ktor, serialization, data models. The iOS side uses SKIE for smooth Swift-Kotlin interop. Subscriptions are managed through RevenueCat.

AI Coach (Koog Agent Framework)

Evo Agent

The coach is an autonomous AI agent built with Koog (Kotlin Agent Framework). It's not a chatbot with scripted answers. It plans, picks its own tools, and chains actions to solve squad-building problems. Ask "Who should replace my left-back under 50K?" and it analyzes your current LB, searches alternatives by position and budget, checks chemistry impact, looks at price trends, and returns a ranked shortlist with reasoning.

It has access to 10 tools: player search, detailed stats, upgrade alternatives, chemistry links, meta tier lists, formations, price history, chemistry styles, custom tactics, and community insights. A background crawler continuously aggregates real-world player opinions from video content, forums, and review sites so the coach doesn't just rely on raw stats.

AI Coach Architecture

User Query
Natural language
Classifier
Intent + cache check
Pre-fetcher
Parallel data loading
Agent Planner
Select + chain tools
10 Tools
Search, stats, prices...
Stream
Buffered response
AI Coach screen

Squad scan: from screenshot to full analysis in 2.5 seconds

This was the most technically challenging part. The user takes a screenshot of their in-game squad, and the app detects every player, matches them to the database, analyzes weaknesses, and suggests upgrades.

Squad Scan Pipeline (2.5s)

Screenshot
PNG/JPEG
InsightFace
Face detection
~1s
FAISS
2926 players
~300ms
OCR
Rating + position
~500ms
Formation
Hungarian algo
DB Match
Strict + Levenshtein
Upgrades
Budget + chemistry

Accuracy: 82%+ exact player match, 95% with OCR disambiguation.

Squad analysis screen

Infrastructure

The backend runs on Next.js API routes with PostgreSQL on Supabase. The face detector is a Python FastAPI service running on DigitalOcean. The web companion uses Next.js with server-side rendering for SEO. Player images are stored on AWS S3. Mobile, web, and the AI coach all share the same PostgreSQL database.

Meta tier list screen Price history screen

What's next

I'm training a fine-tuned Llama model for FC tactical advice so the coach can reason faster and cheaper. I'm also adding real-time push notifications when a tracked player drops below your target price. And I want to expand the screenshot analysis to detect match results and suggest tactical adjustments based on how you play.

Next project Afrique Sports