Source: docs/guides/MVP_SIMPLIFICATION.md
League Intelligence Platform - MVP Simplification Plan
Core Value Proposition
"AI-powered league analysis, contract generation, and partnership acceleration"
MVP Architecture (Simplified)
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Single Backend (FastAPI) β
β - PDF Upload β Contract Generation (Your IP!) β
β - Database Query Router (Vertex/Supabase/ChromaDB/etc.) β
β - League Pipeline Monitor β
β - League Comparison Engine β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Single Frontend (Next.js) β
β - Upload questionnaire PDFs β
β - View generated contracts β
β - Query league intelligence (multi-DB) β
β - Daily pipeline dashboard β
β - League comparison views β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββDirectory Structure (Cleaned)
2.1-cloud-run-docker-mcp/
βββ apps/
β βββ backend/ # Single FastAPI backend
β βββ main.py
β βββ routers/
β β βββ contracts.py # PDF β Contract generation
β β βββ database_query.py # Multi-DB query router
β β βββ pipeline.py # League pipeline monitoring
β β βββ comparison.py # League comparison
β βββ tools/
β βββ sequential_contract_generator.py
β βββ database/
β β βββ vertex_connector.py
β β βββ supabase_connector.py
β β βββ chromadb_connector.py
β β βββ redshift_connector.py
β βββ pipeline/
β βββ league_monitor.py
β βββ daily_standup_generator.py
β
βββ clients/
β βββ frontend/ # Single Next.js frontend
β βββ app/
β β βββ contracts/ # Contract generation UI
β β βββ query/ # Database query UI
β β βββ pipeline/ # Pipeline dashboard
β β βββ comparison/ # League comparison
β βββ components/
β
βββ deploy/
βββ Dockerfile.backend
βββ deploy-gcloud-run.sh
βββ README.mdCore Features (MVP v1.0)
1. Contract Generation (Your Unique IP)
Endpoint: POST /api/contracts/generate-from-pdf
Flow:
Upload PDF β Extract Data β Sequential AI Reasoning β
4 Pricing Tiers β DOCX/PDF Contracts β DownloadUI: Simple upload form β Processing progress β Download contracts
2. Multi-Database Query Router
Endpoint: POST /api/database/query
Request:
{
"database": "vertex|supabase|chromadb|redshift",
"query": "Show me all T1 leagues in basketball",
"context": {}
}Features:
- Single endpoint routes to appropriate DB connector
- Standardized response format
- Query history logging
- Performance metrics
UI: Query builder with database selector dropdown
3. League Pipeline Monitor
Endpoint: GET /api/pipeline/status
Returns:
{
"active_leagues": 47,
"by_tier": {"T1": 12, "T2": 18, "T3": 17},
"by_stage": {
"questionnaire_received": 15,
"under_analysis": 8,
"contract_drafted": 12,
"negotiation": 7,
"signed": 5
},
"upcoming_events": [
{"league": "PWHL", "event": "Contract expiry", "date": "2025-11-15"},
{"league": "PLL", "event": "Renewal discussion", "date": "2025-11-20"}
]
}UI: Real-time dashboard with charts
4. Daily Standup Generator
Endpoint: GET /api/pipeline/daily-standup
Returns:
# League Intelligence Daily Standup - Oct 3, 2025
## π― Today's Priorities
- 3 contracts ready for review
- 5 leagues awaiting questionnaire analysis
- 2 renewals due within 30 days
## π Pipeline Health
- Active Leagues: 47
- New This Week: 4
- Conversion Rate: 68%
## π¨ Action Items
1. Review PWHL contract terms (T1 league)
2. Follow up with Premier Basketball (questionnaire incomplete)
3. Prepare renewal docs for Athletes Unlimited
## π₯ High-Value Opportunities
- World Sevens Football: T1 classification, $2.4M LTV
- Battle League USA: Emerging tier, high growth potentialUI: Simple daily briefing view, exportable to email/Slack
5. League Comparison Engine
Endpoint: GET /api/comparison/leagues?ids=league1,league2,league3
Returns:
{
"comparison_matrix": {
"PWHL": {
"tier": "T1",
"market_size": "$45M",
"data_quality": 92,
"api_readiness": "High",
"ltv_3yr": "$2.1M"
},
"PLL": { /* ... */ }
},
"recommendations": [
"PWHL offers highest LTV and best API integration",
"PLL has stronger social media presence"
]
}UI: Side-by-side comparison table with radar charts
Database Connector Architecture
Unified Interface
# apps/backend/tools/database/base_connector.py
from abc import ABC, abstractmethod
class BaseDatabaseConnector(ABC):
@abstractmethod
async def query(self, query_text: str, context: dict) -> dict:
"""Execute query and return standardized response"""
pass
@abstractmethod
async def health_check(self) -> bool:
"""Check database connectivity"""
passSpecific Implementations
# apps/backend/tools/database/vertex_connector.py
class VertexConnector(BaseDatabaseConnector):
async def query(self, query_text: str, context: dict):
# Vertex AI RAG query logic
return {"results": [...], "source": "vertex"}
# apps/backend/tools/database/supabase_connector.py
class SupabaseConnector(BaseDatabaseConnector):
async def query(self, query_text: str, context: dict):
# Supabase query logic
return {"results": [...], "source": "supabase"}
# Similar for ChromaDB, Redshift, etc.Router
# apps/backend/routers/database_query.py
@router.post("/query")
async def query_database(request: DatabaseQueryRequest):
connector = get_connector(request.database)
results = await connector.query(request.query, request.context)
return results
def get_connector(db_name: str):
connectors = {
"vertex": VertexConnector(),
"supabase": SupabaseConnector(),
"chromadb": ChromaDBConnector(),
"redshift": RedshiftConnector()
}
return connectors[db_name]What to Delete/Archive
Immediate Deletions
# Archive these entire directories
mv clients/frontend-app-versions/_archived/
mv apps/practice_backend_versions/_archived/
mv apps/practice_email_assistant_versions/_archived/
# Keep only:
# - clients/frontend/ (one Next.js app)
# - apps/backend/ (one FastAPI backend)Frontend Consolidation
Keep ONE frontend:
clients/frontend-001-nextjs-ui-grok-chat(rename toclients/frontend/)- Delete the other 7+ variants
Backend Consolidation
Keep ONE backend:
apps/backend/(current FastAPI)- Delete all
practice_backend_versions/
Deployment Strategy (Single Stack)
# Backend deployment
cd apps/backend
./deploy_to_cloud_run.sh
# Frontend deployment (Vercel)
cd clients/frontend
vercel --prod
# Or Cloud Run for frontend too
./deploy-gcloud-run.sh frontendResult:
- Backend:
altsportsleagues-backend-api.us-central1.run.app - Frontend:
altsportsleagues-frontend.vercel.appor Cloud Run
Development Workflow (Simplified)
Local Development
# Terminal 1: Backend
cd apps/backend
uv run python main.py
# Terminal 2: Frontend
cd clients/frontend
npm run dev
# Access:
# - Frontend: http://localhost:3000
# - Backend API: http://localhost:8000
# - API Docs: http://localhost:8000/docsTesting
# Backend tests
cd apps/backend
pytest
# Frontend tests
cd clients/frontend
npm testMigration Plan (3 Days)
Day 1: Backend Consolidation
- Copy contract generation tools to
apps/backend/tools/ - Implement database connector architecture
- Create pipeline monitoring endpoints
- Add daily standup generator
- Test all endpoints
Day 2: Frontend Consolidation
- Create single Next.js app in
clients/frontend/ - Build contract upload/download UI
- Build database query interface
- Build pipeline dashboard
- Build comparison view
Day 3: Deployment & Cleanup
- Deploy backend to Cloud Run
- Deploy frontend to Vercel
- Archive old directories
- Update documentation
- Test end-to-end workflows
Success Metrics (MVP)
Technical
- Backend response time < 2s for queries
- Contract generation < 30s
- 99.5% uptime
- All database connectors functional
Business
- Process 10+ league questionnaires/week
- Generate 5+ contracts/week
- Daily standup viewed by stakeholders
- League comparison used for 3+ decisions/month
Post-MVP Roadmap (Deferred)
Phase 2 (After MVP validation)
- Email intelligence system
- Automated pipeline updates
- CRM integrations
- Advanced analytics
Phase 3 (Market fit achieved)
- Prediction market features
- Multi-tenant support
- White-label options
- Mobile apps
Questions for Clarity
- Which databases are critical for MVP? (Vertex, Supabase, others?)
- What's the primary use case for database queries? (League research, comparison, reporting?)
- Who are the daily standup consumers? (You, team, investors?)
- Current contract generation volume? (10/week, 100/month?)
Let's validate these assumptions before proceeding with the simplification.