A simplified implementation of Nion's three-tier orchestration architecture (L1→L2→L3) for AI-powered project management and communication analysis.
This system analyzes incoming messages (emails, Slack, meetings) and orchestrates a hierarchy of AI agents to extract action items, risks, issues, and decisions while maintaining proper visibility boundaries.
L1 Orchestrator (Strategic Layer)
↓ delegates to
L2 Coordinators (Domain Layer)
↓ coordinates
L3 Agents (Execution Layer)
L1 Orchestrator
- Ingests and parses messages
- Classifies intent
- Creates execution plan
- Manages dependencies
L2 Coordinators (Domain-specific)
TRACKING_EXECUTION: Action items, risks, issues, decisionsCOMMUNICATION_COLLABORATION: Q&A, reporting, message deliveryLEARNING_IMPROVEMENT: Instruction-based learning
L3 Agents (Task-specific)
- Extraction agents (action items, risks, issues, decisions)
- Tracking agents (status monitoring)
- Communication agents (Q&A, reporting, delivery)
- Cross-cutting agents (knowledge retrieval, evaluation)
- L1 sees only L2 domains + Cross-Cutting agents
- L2 sees only its own L3 agents + Cross-Cutting agents
- L1 never directly calls L3 agents (except Cross-Cutting)
- Python 3.8 or higher
- No external dependencies required (pure Python implementation)
# Clone the repository
git clone https://github.com/YOUR-USERNAME/nion-orchestration.git
cd nion-orchestration
# No additional dependencies needed!Interactive Mode:
python main.pyRun All Test Cases:
python tests/run_all_tests.pySingle Test Case:
python main.py --test tests/test_case_1.json| # | Test Case | Description |
|---|---|---|
| 1 | Simple Status Question | Basic status inquiry with context retrieval |
| 2 | Feasibility Question | New feature evaluation with risk assessment |
| 3 | Decision Request | Strategic decision with gap-aware response |
| 4 | Meeting Transcript | Multi-item extraction from meeting notes |
| 5 | Urgent Escalation | Crisis handling with priority routing |
| 6 | Ambiguous Request | Graceful handling of unclear input |
===========================================================================
NION ORCHESTRATION MAP
===========================================================================
USER REQUEST:
What's the status of the authentication feature?
===========================================================================
L1 PLAN
===========================================================================
[TASK-001] → L3:knowledge_retrieval (Cross-Cutting)
Purpose: Retrieve project context and current status
[TASK-002] → L2:TRACKING_EXECUTION
Purpose: Extract action items from status request
[TASK-003] → L2:TRACKING_EXECUTION
Purpose: Extract and assess risks
[TASK-004] → L2:COMMUNICATION_COLLABORATION
Purpose: Formulate status response
Depends On: TASK-001, TASK-002, TASK-003
===========================================================================
L2/L3 EXECUTION
===========================================================================
[TASK-001] L3:knowledge_retrieval (Cross-Cutting)
Status: COMPLETED
Output:
• Current Milestone: Sprint 14
• Progress: ~68% complete
[TASK-002] L2:TRACKING_EXECUTION
└─▶ [TASK-002-A] L3:action_item_extraction
Status: COMPLETED
Output:
• Action: Review security implications — Owner: ? (Gaps: Owner Missing)
===========================================================================
nion-orchestration/
├── README.md # This file
├── main.py # Entry point
├── l1_orchestrator.py # L1 strategic planning
├── l2_coordinator.py # L2 domain coordination
├── formatter.py # Output formatting
│
├── l3_agents/ # L3 agent implementations
│ ├── TRACKING_EXECUTION/
│ │ ├── action_item_extraction.py
│ │ ├── risk_extraction.py
│ │ ├── decision_extraction.py
│ │ └── ...
│ ├── COMMUNICATION_COLLABORATION/
│ │ ├── qna.py
│ │ ├── message_delivery.py
│ │ └── ...
│ ├── LEARNING_IMPROVEMENT/
│ │ └── instruction_led_learning.py
│ └── CROSS_CUTTING/
│ ├── knowledge_retrieval.py
│ └── evaluation.py
│
├── tests/
│ ├── test_case_1.json
│ ├── test_case_2.json
│ ├── ...
│ └── run_all_tests.py
│
└── outputs/ # Generated test outputs
├── test_case_1_output.txt
└── ...
Uses keyword-based pattern matching for simplicity:
- "status", "what's the" →
STATUS_REQUEST - "can we", "feasible" →
FEASIBILITY_REQUEST - "should we", "prioritize" →
DECISION_REQUEST - "meeting", "blocked" →
MEETING_SUMMARY - Fallback →
AMBIGUOUS
Agents generate realistic dummy data since there's no actual database integration. This demonstrates the orchestration flow while keeping the implementation self-contained.
Tasks are executed sequentially, respecting the dependency graph defined in L1 planning. Future enhancement could add parallel execution for independent tasks.
Current implementation assumes successful execution. Production system would need comprehensive error handling and retry logic.
- Python 3.11: Core implementation
- Claude (Anthropic): Development assistance
- Pure Python: No external dependencies for simplicity
- LLM-based intent classification (replace keyword matching)
- Actual database integration for knowledge retrieval
- Parallel execution of independent tasks
- Error handling and retry mechanisms
- Persistent state management
- Real-time streaming output
- Web UI for visualization
- No Persistence: All data is in-memory, no database
- Simulated Outputs: L3 agents generate dummy data
- Sequential Execution: No parallel task processing
- Rule-based Classification: Intent detection uses keywords, not ML
- No Real Integration: No actual Slack/email API calls
Run the complete test suite:
python tests/run_all_tests.pyThis will:
- Execute all 6 test cases
- Generate formatted outputs
- Save results to
outputs/directory
Verify outputs match expected format with proper:
- Task ID sequencing
- L2→L3 hierarchy display
- Dependency tracking
- Cross-cutting agent marking
[Ishan]
Internship Assessment - December 2024
Contact: [ishankumar657@gmail.com]
MIT License - see LICENSE file for details
This implementation was created as part of the Nion Orchestration Internship Assessment.