← Back to WorkCRM / SaaS

AthleteDesk

A purpose-built CRM for sports agencies. One platform for recruiting, roster management, brand deals, and team coordination.

RoleSolo Developer & Designer
StackNext.js, TypeScript, Tailwind, PostgreSQL
Timeline2026

Overview

The Problem

A NIL sports agency reached out with a scaling problem. They were managing hundreds of recruiting prospects, signed clients, brand deals, and contracts across disconnected spreadsheets. As their roster and staff grew, the cracks started showing.

Scouts identified prospects and dropped them into a shared file. Agents had no real-time way of knowing who had been contacted or what the status was. When an athlete was ready to move forward, there was no structured handoff. Someone had to remember to tell the right person.

Brand deals lived separately from athlete profiles. Financial tracking was manual math in a separate sheet. Contracts were buried in email threads. Leadership had no visibility. If they wanted to know how recruiting was going, they had to ask someone or open a file and count rows.

The Solution

I built AthleteDesk, a CRM designed entirely around how this agency actually operates. The core insight from discovery was that a sports agency runs two fundamentally different workflows: recruiting unsigned prospects and managing signed athletes. These needed to be separated, not merged into a single view.

The result is a platform where every athlete, deal, communication, contract, and task lives in one place. Connected, searchable, and visible to the right people based on their role.

Features

Recruiting Database

All prospects organized by region and class year. Every scout sees their assigned region. Admin sees all regions with real-time outreach progress.

Roster Management

Signed clients only. Two deal tracks per athlete: Revenue Share contracts and Marketing/Brand deals, each with auto-calculated agency fees.

Automated Handoffs

When a scout qualifies an athlete, the system auto-assigns an agent. When an athlete signs, marketing is automatically notified. No manual coordination.

Brand Outreach

Track every brand partnership from first contact to deal closed. Attach potential deals to prospects as a pitch tool before they commit.

Communications Hub

Every call, email, text, and meeting logged to the athlete's profile. Full interaction history across the entire team.

Gmail Integration

Send emails directly from the CRM. Every sent email automatically logged to the athlete's communication history.

Team Visibility

Leadership sees staff activity, outreach completion by region, goal progress, and inactive team member alerts. All in real time.

Excel Import

Existing recruiting spreadsheets import directly. Each sheet becomes a region, athletes populate automatically, outreach status carries over.

Challenges

1Understanding the Business Before Building
ProblemThe agency's workflow wasn't obvious from the outside. Scouts, agents, and marketing all do fundamentally different jobs with different data needs. A generic CRM would have combined everything into one view and created more confusion.
SolutionStarted with discovery calls before writing any code. Mapped out the full workflow: how a prospect gets identified, moves through recruiting, what happens when they sign, and how brand deals get tracked separately.
ResultTwo separate systems under one roof: a recruiting database for prospects and a roster for signed clients
2Importing Years of Spreadsheet Data
ProblemThe agency had hundreds of athletes tracked across regional spreadsheets. Each was formatted differently, with state sub-headers as dividers, inconsistent column names, and freeform status notes.
SolutionBuilt a smart importer that reads their existing format. Sheets become regions automatically, header rows are detected and skipped, freeform notes are parsed into structured statuses, and columns are matched intelligently.
ResultUpload an existing spreadsheet and all data populates into the right regions with correct statuses. No manual re-entry.
3Multi-Tenant Data Isolation
ProblemAthleteDesk is built to serve multiple agencies, each with their own athletes, deals, staff, and data. One agency must never see another agency's information.
SolutionImplemented data isolation at the database level using PostgreSQL Row Level Security, not just application filtering. Every piece of data is tagged to an organization and the database enforces the rules directly.
ResultComplete data isolation with invite-only onboarding. Ready to scale to additional agencies.

Stack

Next.jsTypeScriptSupabasePostgreSQLTailwind CSSVercel

Impact

  • Replaced a fully manual spreadsheet operation with a single platform where every athlete, deal, communication, contract, and task is connected and visible in real time.
  • Leadership now has instant visibility into recruiting progress by region, team activity, and revenue pipeline. No status meetings or manual reports needed.
  • Automated handoffs between scouts, agents, and marketing eliminated the coordination gaps that were causing prospects to go cold and deals to get dropped.
  • Built as a multi-tenant SaaS product, ready to onboard additional sports agencies beyond the initial client.