Project Phoenix Meta-Domain

Routing Architecture

Rule-Based + LLM Hybrid Routing

Three Routing Strategies

DomainRouter

Rule-Based

Regex pattern matching for fast, deterministic routing. Each domain has 4-8 distinctive patterns.

  • Deterministic & reproducible
  • Sub-millisecond latency
  • Confidence: 0.0-1.0

LLMDomainRouter

LLM-Based

LLM-powered routing for ambiguous queries. Fallback when rule confidence < 0.5.

  • Handles ambiguity
  • Context-aware
  • Claude/OpenAI/Ollama

HybridDomainRouter

Recommended

Rule-based first, LLM fallback. Best of both: speed + intelligence.

  • Fast for clear queries
  • Smart for edge cases
  • Production default

Routing Flow

# Hybrid Routing Decision Flow User Query: "analyze my forehand consistency" | v +---------------------------+ | Rule-Based Router | | Pattern: "forehand" | | Match: TennisAgent | | Confidence: 0.85 | +---------------------------+ | | confidence >= 0.5? | +---> YES: Route to TennisAgent | +---> NO: LLM Fallback | v +------------------+ | LLM Router | | "Which domain | | handles this?" | +------------------+ | v Route to selected domain

Domain Patterns

Each domain has distinctive regex patterns for rule-based routing.

Domain Primary Patterns Confidence Boost
TennisAgent zepp|babolat|serve|forehand|backhand|tennis|racquet +0.3 per match
Portfolio portfolio|holdings|tax|options|dividend|allocation|stock +0.3 per match
Optiver optiver|trading|kaggle|feature|ensemble|backtest|wap +0.3 per match
WQ worldquant|wqu|housing|air quality|bankruptcy|volatility +0.25 per match
Stan stats 315|eslii|ridge|lasso|spline|boosting|statistical +0.25 per match
AI_WQ computer vision|cnn|resnet|yolo|image|deep learning +0.25 per match
QCiAgent quantum|qubit|dirac|qatalyst|qci|optimization|eqc +0.35 per match
YieldModel yield|wafer|defect|semiconductor|manufacturing|ic +0.35 per match
ParableAgent parable|jesus|gospel|matthew|luke|biblical|kingdom +0.35 per match
PPR_Agent ppr|pacemaker|implant|device|cardiac|medical +0.35 per match

Routing Result Structure

# RoutingResult dataclass @dataclass class RoutingResult: domain: str # "TennisAgent" confidence: float # 0.85 method: str # "rule" | "llm" | "hybrid" matched_patterns: List[str] # ["forehand", "tennis"] reasoning: Optional[str] # LLM explanation (if used) # Example Result RoutingResult( domain="TennisAgent", confidence=0.85, method="rule", matched_patterns=["forehand", "consistency"], reasoning=None )

LLM Routing Prompt

When rule-based confidence is low, the LLM router uses this structured prompt:

# LLM Router System Prompt You are a query router for Project Phoenix domains. Given a user query, determine which domain should handle it. Available domains: - TennisAgent: Tennis sensor analysis, match/practice data - Portfolio: Investment portfolio, tax, options - Optiver: Trading ML, Kaggle competition - WQ: WorldQuant data science projects - Stan: Stanford Stats 315A coursework - AI_WQ: Computer vision, deep learning - QCiAgent: Quantum computing products - YieldModel: Semiconductor manufacturing - ParableAgent: Biblical parables analysis - PPR_Agent: Medical device reports Respond with JSON: {"domain": "...", "confidence": 0.X, "reasoning": "..."}

Routing Accuracy by Domain

100%

TennisAgent

Perfect routing

100%

YieldModel

Perfect routing

100%

QCiAgent

Perfect routing

100%

PPR_Agent

Perfect routing

90%

Portfolio

High accuracy

80%

Optiver

Good accuracy

80%

ParableAgent

Good accuracy

40%

Stan

Needs improvement

Overall: 80.6% routing accuracy (83/103 queries)