Architecture
Prompt Intelligence System

Source: data_layer/docs/PROMPT_INTELLIGENCE_README.md

Prompt Intelligence System

Production-grade prompt retrieval and workflow execution for Google Cloud Run

🎯 Core Capabilities

  1. Catalog: List all 135+ available prompts and workflows
  2. Search: Find closest match using semantic vector search
  3. Update: Improve prompts with suggestions β†’ auto-sync to databases
  4. Execute: Run pre-built workflows with LangGraph state machines

πŸ—οΈ Architecture (lesson_5.py Pattern)

InMemoryStore (Fast <1ms)
  ↓ On startup: Load existing
Firebase (User data, real-time)
  - User prompt preferences
  - Prompt history/feedback
  ↓ On update: Sync
Supabase (League data, analytics)
  - League-specific examples
  - Workflow performance metrics
  - SQL analytics queries
  ↓ Build if missing
Files (Guaranteed fallback)
  - database/prompts/ (135 .md files)
  - database/output-styles/ (7-stage pipeline)

πŸ“‚ File Structure

apps/backend/
β”œβ”€β”€ stores/
β”‚   └── prompts.py          # InMemoryStore + DB sync
β”œβ”€β”€ services/
β”‚   └── prompts.py          # Business logic + workflow execution
β”œβ”€β”€ api/
β”‚   └── prompts.py          # REST API endpoints
└── server.py               # Router registration (line 574-580)

database/
β”œβ”€β”€ prompts/                # 135 .md source files
β”œβ”€β”€ output-styles/
β”‚   └── league_questionnaire_to_contract/  # 7-stage pipeline
└── scripts/
    β”œβ”€β”€ build.py            # Pre-build workflows
    └── validate.py         # End-to-end tests

πŸš€ API Endpoints

1. GET /api/prompts/catalog

List all available prompts:

GET /api/prompts/catalog
 
Response:
{
  "status": "success",
  "catalog": {
    "workflows": [
      {
        "name": "questionnaire_to_contract",
        "namespace": "workflows",
        "metadata": {"total_stages": 7, "avg_execution_time": 22.5},
        "version": 2
      }
    ],
    "prompts": [...],
    "components": [...],
    "recipes": [...]
  },
  "total": 158
}

2. POST /api/prompts/search

Semantic search for closest match:

POST /api/prompts/search
{
  "query": "convert basketball questionnaire to contract",
  "namespace": "workflows",
  "limit": 5
}
 
Response:
{
  "status": "success",
  "query": "convert basketball questionnaire to contract",
  "results": [
    {
      "name": "questionnaire_to_contract",
      "namespace": "workflows",
      "score": 0.95,
      "metadata": {...},
      "version": 2
    }
  ]
}

3. POST /api/prompts/update

Update prompt with improvement suggestions:

POST /api/prompts/update
{
  "prompt_type": "workflow",
  "prompt_name": "questionnaire_to_contract",
  "suggestions": [
    "Add more basketball-specific examples",
    "Improve NBA tier classification",
    "Include luxury tax considerations"
  ]
}
 
Response:
{
  "status": "updated",
  "new_version": 3,
  "suggestions_applied": 3,
  "synced_to_db": true
}

4. POST /api/prompts/execute

Execute workflow:

POST /api/prompts/execute
{
  "workflow": "questionnaire_to_contract",
  "input_data": {
    "questionnaire_text": "...",
    "file_path": "s3://uploads/nba.pdf"
  },
  "user_id": "analyst@altsportsdata.com"
}
 
Response:
{
  "status": "completed",
  "workflow": "questionnaire_to_contract",
  "result": {...},
  "execution_time": 18.5,
  "stages_completed": 7
}

5. POST /api/prompts/batch

Parallel batch execution:

POST /api/prompts/batch
{
  "workflow": "questionnaire_to_contract",
  "inputs": [
    {"questionnaire_text": "NBA..."},
    {"questionnaire_text": "MLB..."},
    {"questionnaire_text": "NHL..."}
  ],
  "max_parallel": 10
}
 
Response:
{
  "status": "batch_completed",
  "total_processed": 3,
  "successful": 3,
  "results": [...]
}

πŸ’Ύ Database Strategy (Google Cloud Production)

Firebase (User Data)

prompts/
  workflows/
    questionnaire_to_contract: {...}  // Critical workflows
  
  user_preferences/
    {userId}/
      preferred_detail_level: "technical"
      favorite_workflows: [...]
 
  user_history/
    {userId}/
      {promptId}: {uses, success_rate, feedback}

Supabase (League Data + Analytics)

-- Workflow definitions and performance
CREATE TABLE workflow_definitions (
  workflow_name TEXT PRIMARY KEY,
  total_stages INT,
  version INT,
  metadata JSONB,
  updated_at TIMESTAMP
);
 
-- Prompt catalog for search
CREATE TABLE prompt_catalog (
  prompt_type TEXT,
  prompt_name TEXT,
  version INT,
  suggestions_count INT,
  metadata JSONB,
  updated_at TIMESTAMP,
  PRIMARY KEY (prompt_type, prompt_name)
);
 
-- Execution tracking
CREATE TABLE workflow_executions (
  id SERIAL PRIMARY KEY,
  workflow_name TEXT,
  execution_time FLOAT,
  success BOOLEAN,
  executed_at TIMESTAMP
);
 
-- League-specific examples
CREATE TABLE league_examples (
  league_name TEXT,
  sport TEXT,
  tier TEXT,
  examples JSONB,
  updated_at TIMESTAMP
);

πŸ”§ Deployment (Google Cloud Run)

Build Workflows at Container Startup

Add to Dockerfile or startup script:

# In Dockerfile
CMD python database/scripts/build.py && uvicorn apps.backend.server:app --host 0.0.0.0 --port $PORT

Or in server.py lifespan:

@asynccontextmanager
async def lifespan(app: FastAPI):
    # Startup - build workflows
    try:
        from stores.prompts import get_prompt_store
        store = get_prompt_store()
        await store.initialize()
        await store.get_workflow("questionnaire_to_contract")
        logger.info("βœ… Workflows pre-built and cached")
    except Exception as e:
        logger.warning(f"Workflow pre-build failed: {e}")
    
    yield
    # Shutdown

Environment Variables

# Required for embeddings
OPENAI_API_KEY=sk-...
 
# Optional - for database sync
FIREBASE_SERVICE_ACCOUNT_PATH=./config/firebase-service-account.json
SUPABASE_URL=https://...
SUPABASE_SERVICE_KEY=...

πŸ“Š Performance Characteristics

OperationTimeNotes
First query~9msBuild from files + cache
Cached query<1msInMemoryStore retrieval
Firebase sync~20msBackground async
Supabase sync~15msBackground async
Workflow execution15-30s7-stage LangGraph pipeline
Batch (10 parallel)~30svs 5min sequential

πŸ§ͺ Testing

Run Validation Suite

cd /Users/kbselander/Developer/Notebook/mcp-servers/servers/mcp-server-altsportsleagues.ai/2.1-cloud-run-docker-mcp
python database/scripts/validate.py

Tests:

  • βœ… Retrieval from InMemoryStore
  • βœ… Catalog listing
  • βœ… Semantic search
  • βœ… Prompt updates
  • βœ… Performance (<1ms cached)
  • βœ… API endpoints
  • βœ… Database sync

Manual Testing

# Start server
cd apps/backend
python server.py
 
# Test catalog
curl http://localhost:8080/api/prompts/catalog
 
# Test search
curl -X POST http://localhost:8080/api/prompts/search \
  -H "Content-Type: application/json" \
  -d '{"query": "questionnaire to contract", "namespace": "workflows"}'
 
# Test update
curl -X POST http://localhost:8080/api/prompts/update \
  -H "Content-Type: application/json" \
  -d '{"prompt_type": "workflow", "prompt_name": "questionnaire_to_contract", "suggestions": ["Add NBA examples"]}'

🎯 Usage Patterns

Pattern 1: Retrieve and Execute

from services.prompts import PromptService
 
service = PromptService()
 
# Execute workflow
result = await service.execute_workflow(
    "questionnaire_to_contract",
    {"questionnaire_text": "..."}
)

Pattern 2: Search and Update

from stores.prompts import get_prompt_store
 
store = get_prompt_store()
await store.initialize()
 
# Search for workflow
results = await store.search_prompts("basketball contract generation")
 
# Update with improvements
updated = await store.update_prompt(
    "workflow",
    results[0].key,
    ["Add more NBA examples", "Improve tier logic"]
)

Pattern 3: Batch Processing

# Process 50 questionnaires in parallel
result = await service.batch_execute(
    "questionnaire_to_contract",
    [{"questionnaire_text": q} for q in questionnaires],
    max_parallel=10
)

πŸ”„ Update Workflow

When you have new examples or improvements:

  1. Update via API:
POST /api/prompts/update
{
  "prompt_type": "workflow",
  "prompt_name": "questionnaire_to_contract",
  "suggestions": ["Your improvements here"]
}
  1. System automatically:

    • Increments version
    • Updates InMemoryStore (immediate)
    • Syncs to Firebase (user data)
    • Syncs to Supabase (analytics)
  2. Next execution uses updated version

πŸŽ“ Best Practices (Production)

Data Separation

  • Firebase: User-specific (preferences, history, feedback)
  • Supabase: League-specific (examples, analytics, performance)
  • InMemoryStore: All prompts (fast cache)

Sync Strategy

  • Reads: Always from InMemoryStore (fast)
  • Writes: InMemoryStore + async background sync (doesn't block)
  • Startup: Load from Firebase (restore state across container restarts)

Error Handling

  • InMemoryStore always works (no network)
  • Firebase/Supabase failures don't break system
  • Graceful degradation to in-memory only

Scaling (Cloud Run)

  • Each container instance has own InMemoryStore
  • Firebase syncs state between instances
  • Supabase tracks aggregate analytics
  • Multi-instance safe

πŸ“ˆ Monitoring

Track in Supabase:

-- Most used workflows
SELECT workflow_name, COUNT(*) as executions
FROM workflow_executions
GROUP BY workflow_name
ORDER BY executions DESC;
 
-- Average execution time by workflow
SELECT workflow_name, AVG(execution_time) as avg_time
FROM workflow_executions
WHERE success = true
GROUP BY workflow_name;
 
-- Prompt update frequency
SELECT prompt_name, MAX(version) as current_version, COUNT(*) as total_updates
FROM prompt_catalog
GROUP BY prompt_name
ORDER BY total_updates DESC;

πŸŽ‰ What This Enables

  1. Dynamic Agent Spawning: Query β†’ Retrieve workflow β†’ Spawn LangGraph
  2. Continuous Improvement: Update prompts based on feedback
  3. Multi-Frontend: Next.js + Streamlit both use same intelligence
  4. Horizontal Scaling: Parallel batch processing
  5. Production Reliability: Multi-tier fallback, DB sync, monitoring

Built following DeepLearning.AI lesson_5.py patterns for production Google Cloud Run deployment.

Platform

Documentation

Community

Support

partnership@altsportsdata.comdev@altsportsleagues.ai

2025 Β© AltSportsLeagues.ai. Powered by AI-driven sports business intelligence.

πŸ€– AI-Enhancedβ€’πŸ“Š Data-Drivenβ€’βš‘ Real-Time