FC Ultimate Team companion app + AI-powered football agent
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.
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.
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
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)
Accuracy: 82%+ exact player match, 95% with OCR disambiguation.
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.
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.