Skip to main content

What’s Complete

Core Platform (fully functional)

  • 15 frontend pages matching wireframe designs
  • 55 REST API endpoints across 11 resource groups
  • 15-table PostgreSQL schema with UUIDs, JSONB, array types
  • Real PDF extraction engine (pdfplumber + regex NLP)
  • Multi-file upload wizard with AI field detection
  • Role-based access control (admin, agreement_manager, read_only)
  • Subscription tier gating (standard, premium)
  • JWT auth with refresh tokens, forgot/reset password flow
  • Email service (console dev mode, SMTP production mode)
  • Multi-step signup creating institution + admin + reporting period
  • Budget tracking with inline cap editing
  • Deal editing via modal across multiple pages
  • Contract storage + presigned URL download via MinIO
  • Benchmarking engine with real PostgreSQL aggregations + percentiles
  • Save indicators (toast notifications) on all mutation pages
  • Docker Compose orchestration (4 services, one-command startup)
  • Comprehensive seed data (2,320 athletes, 1,852 deals, 17 universities)

Data & Analytics

  • Benchmarks computed from real DB queries (not mocked)
  • Three-way comparison: school vs conference vs peer group
  • Position-level breakdowns with guaranteed/performance splits
  • All benchmark filters functional (sport, position, eligibility year, comp type)
  • Dashboard KPIs accurately reflect active deal data
  • Budget committed spend correctly scoped to active deals only

P0 — Production Readiness

1

Alembic Migrations

Currently using Base.metadata.create_all() for table creation. Set up proper Alembic migrations for schema versioning:
cd backend
alembic revision --autogenerate -m "initial schema"
alembic upgrade head
Update entrypoint.sh to run alembic upgrade head instead of create_all.
2

Production Auth Security

  • Move JWT secret to a proper secret manager
  • Add rate limiting on login/signup/forgot-password endpoints
  • Add CSRF protection for cookie-based refresh tokens
  • Remove demo credentials from LoginPage.vue
3

SMTP Configuration

Configure a real SMTP provider (SendGrid, AWS SES, Resend) and set SMTP_HOST env vars. All email templates are already built.
4

Production Docker

  • Create a Dockerfile.prod for the frontend (build + nginx static serving)
  • Add SSL/TLS termination (Caddy, Traefik, or cloud LB)
  • Configure PostgreSQL with proper connection pooling
  • Set SEED_DB=false in production

P1 — Feature Completeness

FeatureCurrent StateWhat’s Needed
Payment integrationPricing page exists, tier stored on userIntegrate Stripe for plan upgrades, webhook for tier changes
Sport limitationssport_limitations UUID[] field on UserEnforce in query filters so agreement_managers only see assigned sports
Peer group managementConfigured via seed, UI shows chipsWire add/remove buttons in Settings to PUT /admin/peer-groups
Athlete search in upload wizardDropdown of all athletesAdd server-side search endpoint for large rosters
Password change (logged in)Only forgot-password flowAdd /settings/security page with current+new password form
Data exportCSV export for dealsAdd CSV/PDF export for benchmarks, athletes, budget

P2 — Advanced Features

FeatureDescription
LLM extraction upgradeReplace regex NLP with OpenAI/Claude API for 95%+ accuracy on unstructured contracts
Historical trendingStore snapshots per reporting period, build period-over-period trend charts with real data
Collective reportingAllow NIL collectives to submit deals on behalf of universities
Agent trackingTrack athlete agents/representatives as a separate entity
Notification systemIn-app + email notifications for expiring deals, verification due, budget alerts
Bulk operationsBulk verify, bulk export, bulk status change for deals
Audit log searchFull-text search across activity log entries
Mobile appReact Native or PWA for on-the-go deal management

P3 — Infrastructure

ItemDescription
TestingAdd pytest integration tests for all API endpoints, Vitest unit tests for Vue components, Playwright E2E
CI/CDGitHub Actions for lint, test, build, deploy
MonitoringSentry for error tracking, Prometheus/Grafana for metrics
CDNMove MinIO to AWS S3 or Cloudflare R2 for production file storage
CachingAdd Redis for session storage and query caching on heavy benchmark queries

Key Files for New Engineers

FileWhat It DoesStart Here If…
backend/app/main.pyApp bootstrap, all router mountsUnderstanding the API surface
backend/app/models/__init__.pyAll model importsUnderstanding the data model
backend/app/seed.pyDemo data generationCustomizing demo data
backend/app/routers/benchmarks.pyBenchmark engineWorking on analytics
backend/app/services/extraction/real.pyPDF extractionImproving AI extraction
frontend/src/router/index.tsAll routes + auth guardsUnderstanding page structure
frontend/src/stores/auth.tsAuth state + isPremiumWorking on access control
frontend/src/pages/BenchmarksPage.vueMost complex pageUnderstanding frontend patterns
docker-compose.ymlService orchestrationDevOps / deployment