diff --git a/operations/tasks/strategic-roadmap-unicorn-12m.md b/operations/tasks/strategic-roadmap-unicorn-12m.md
new file mode 100644
index 0000000..f32e00e
--- /dev/null
+++ b/operations/tasks/strategic-roadmap-unicorn-12m.md
@@ -0,0 +1,150 @@
+# Staff Unicorn Strategic Roadmap - 12 Month Plan
+
+## Executive Summary
+Target: $1B+ valuation within 12 months through rapid market capture of the AI-powered development automation space.
+
+**Key Strategic Thesis**: Staff is positioned to capture the massive shift from traditional development teams to AI-augmented autonomous development. Our multi-agent architecture gives us a 6-12 month lead over competitors.
+
+---
+
+## Strategic Tasks for Unicorn Status
+
+### PHASE 1: PRODUCT DOMINATION (Months 1-4)
+
+#### Task 1: Platform Scaling & Enterprise Readiness
+**Outcome**: Support 100,000+ concurrent AI agents across enterprise customers
+- Build horizontal scaling infrastructure for agent orchestration
+- Implement enterprise security, SSO, audit logging
+- Add white-label deployment options for large enterprises
+- Create SLA guarantees (99.9% uptime, <2s task routing)
+**Success Metric**: Platform handles 10x current capacity with sub-second response times
+
+#### Task 2: Agent Intelligence Breakthrough
+**Outcome**: Achieve "human-level" software development quality from AI agents
+- Implement advanced reasoning chains for complex architectural decisions
+- Build agent memory systems for long-term project context
+- Create specialized agent types (DevOps, Security, Mobile, ML/AI)
+- Develop agent-to-agent collaboration protocols for large projects
+**Success Metric**: AI agents pass blind code review tests vs human developers 80%+ of time
+
+#### Task 3: Universal Integration Hub
+**Outcome**: Seamless integration with all major development tools and platforms
+- Build 50+ native integrations (AWS, Azure, GCP, Vercel, Netlify)
+- Create marketplace for custom agent types and integrations
+- Implement real-time syncing with all major task management systems
+- Add support for 20+ programming languages and frameworks
+**Success Metric**: Zero-config setup for 90% of development workflows
+
+### PHASE 2: MARKET CAPTURE (Months 3-6)
+
+#### Task 4: Viral Product-Led Growth Engine
+**Outcome**: Self-sustaining viral growth with 40%+ monthly user growth
+- Build "Staff Challenge" - developers compete using AI agents
+- Create shareable project showcases and agent performance metrics
+- Implement referral program with usage credits
+- Launch open-source community edition with upgrade path
+**Success Metric**: 40% of new users come from referrals and organic channels
+
+#### Task 5: Enterprise Sales Machine
+**Outcome**: $50M+ ARR with enterprise customers paying $100K+ annually
+- Build dedicated enterprise sales team and customer success
+- Create ROI calculators showing cost savings vs traditional teams
+- Develop case studies showing 10x faster development cycles
+- Establish partnerships with major consulting firms (Accenture, Deloitte)
+**Success Metric**: 500+ enterprise customers with average contract value $200K+
+
+#### Task 6: Strategic Market Positioning
+**Outcome**: Establish Staff as the definitive leader in AI development automation
+- Launch "The Future of Development" thought leadership campaign
+- Secure speaking slots at major tech conferences (re:Invent, Google Cloud Next)
+- Publish research on AI development productivity gains
+- Create industry standards for AI agent development workflows
+**Success Metric**: 80% unprompted brand recognition among CTOs at Fortune 1000
+
+### PHASE 3: ECOSYSTEM DOMINANCE (Months 5-8)
+
+#### Task 7: Platform Ecosystem & Marketplace
+**Outcome**: $20M+ annual revenue from platform ecosystem
+- Launch Agent Marketplace with revenue sharing for creators
+- Create Staff Developer Network with certification programs
+- Build API ecosystem allowing third-party agent development
+- Establish Staff University for AI development training
+**Success Metric**: 10,000+ active ecosystem developers generating $20M+ platform revenue
+
+#### Task 8: Strategic Acquisitions & Partnerships
+**Outcome**: Accelerate growth through strategic M&A and partnerships
+- Acquire 2-3 complementary AI/dev tools companies ($50M+ total)
+- Form strategic partnerships with major cloud providers
+- Establish reseller network with major system integrators
+- Create joint solutions with enterprise software vendors
+**Success Metric**: Partnerships contribute 30%+ of new enterprise deals
+
+### PHASE 4: VALUATION OPTIMIZATION (Months 7-12)
+
+#### Task 9: Revenue Model Innovation
+**Outcome**: Multiple high-margin revenue streams totaling $200M+ ARR
+- Launch Staff Pro subscriptions for individual developers ($99/month)
+- Create usage-based pricing for enterprise compute resources
+- Develop Staff Consulting services for AI transformation
+- Establish Staff Ventures fund investing in customer companies
+**Success Metric**: $200M+ ARR with 70%+ gross margins
+
+#### Task 10: Global Expansion & Localization
+**Outcome**: International presence driving 40%+ of revenue
+- Launch in 15+ countries with localized agent capabilities
+- Establish regional data centers for compliance and performance
+- Build multilingual agent support for global development teams
+- Create region-specific partnerships and go-to-market strategies
+**Success Metric**: International markets generate $80M+ ARR
+
+#### Task 11: Fundraising & Investor Relations
+**Outcome**: Series B funding of $300M+ at $1B+ pre-money valuation
+- Prepare comprehensive growth metrics and unit economics
+- Build relationships with top-tier VCs (a16z, Sequoia, GV)
+- Create compelling narrative around AI development market size
+- Demonstrate clear path to $1B+ annual revenue
+**Success Metric**: Oversubscribed Series B at $1.5B+ valuation
+
+#### Task 12: Competitive Moat & IP Protection
+**Outcome**: Defensible market position through technology and network effects
+- File 20+ patents on AI agent orchestration and development automation
+- Build proprietary datasets on development patterns and best practices
+- Create network effects through agent collaboration and learning
+- Establish exclusive partnerships with key infrastructure providers
+**Success Metric**: 18-month technical lead over competitors, 50%+ market share
+
+---
+
+## Key Success Metrics Summary
+
+**Financial Targets**:
+- $200M+ ARR by month 12
+- 70%+ gross margins
+- 500+ enterprise customers
+- $300M+ Series B funding
+
+**Product Targets**:
+- 100,000+ concurrent AI agents
+- 90% integration coverage
+- 80% human-equivalent code quality
+- 50+ specialized agent types
+
+**Market Targets**:
+- 40%+ monthly user growth
+- 80% brand recognition among CTOs
+- 50%+ market share in AI development
+- 15+ international markets
+
+**Competitive Advantages**:
+- 18-month technical lead
+- Network effects from agent ecosystem
+- Proprietary development datasets
+- Exclusive infrastructure partnerships
+
+---
+
+**This roadmap leverages Staff's unique multi-agent architecture to capture the massive market opportunity in AI-powered development automation. Success depends on aggressive execution across product, sales, and market positioning while maintaining our technical leadership position.**
+
+**Next Step**: Immediate focus on Tasks 1-3 to establish product-market dominance before competitors catch up.
+
+↑ Type *iterate* to run the next weekly review.
\ No newline at end of file
diff --git a/prd.md b/prd.md
new file mode 100644
index 0000000..293ad40
--- /dev/null
+++ b/prd.md
@@ -0,0 +1,414 @@
+# Staff MVP - Product Requirements Document
+
+**Version:** 1.0  
+**Date:** July 27, 2025  
+**Document Owner:** Product Manager
+
+## Product overview
+
+### Product summary
+
+Staff MVP is a lightweight AI multi-agent development system designed to automate software development tasks through specialized AI agents. The system enables a single user to create, assign, and manage development tasks while AI agents autonomously process these tasks and submit solutions via GitHub pull requests. Built as a CLI application on existing Go infrastructure, this MVP focuses on core functionality that can be delivered within one week.
+
+The project leverages existing components including LLM integration, agent framework, task management interfaces, and Git operations to create a functional multi-agent system that bridges task management with automated code generation and submission.
+
+## Goals
+
+### Business goals
+
+- Deliver a working multi-agent system within one week development timeline
+- Validate the core concept of AI agents autonomously handling development tasks
+- Create foundation for future enterprise multi-agent development platforms
+- Demonstrate integration capabilities with existing development workflows
+- Establish proof of concept for automated task-to-PR workflow
+
+### User goals
+
+- Streamline development task management through AI automation
+- Reduce manual effort in routine development tasks
+- Maintain oversight and control over AI-generated solutions through PR review process
+- Integrate seamlessly with existing Git-based development workflows
+- Enable parallel task processing through multiple specialized agents
+
+### Non-goals
+
+- Multi-user authentication and authorization systems
+- PR comment handling and automated responses
+- Self-learning or AI model improvement capabilities
+- Complex task dependency management
+- Real-time collaboration features
+- Web-based user interface
+- Enterprise user management
+
+## User personas
+
+### Primary user: Solo developer/Technical lead
+
+**Profile:** Experienced software developer or technical lead working on projects requiring task automation and code generation assistance.
+
+**Needs:**
+- Efficient task creation and assignment workflow
+- Automated code generation for routine tasks
+- Maintained control over code quality through PR reviews
+- Integration with existing Git workflows
+- Visibility into agent processing status
+
+**Technical proficiency:** High - comfortable with CLI tools, Git operations, and development workflows
+
+**Goals:** Increase development velocity while maintaining code quality and project oversight
+
+### Role-based access
+
+Since this is a single-user system, all functionality is available to the primary user without access restrictions. Future versions may implement role-based permissions for team collaboration.
+
+## Functional requirements
+
+### High priority
+
+**FR-001: Task management system**
+- Create tasks via CLI commands with title, description, and metadata
+- Store tasks as markdown files in Git repository
+- Support task states: todo, in_progress, completed, archived
+- Enable task priority assignment: low, medium, high
+- Allow manual task assignment to specific agents
+
+**FR-002: Multi-agent system**
+- Support minimum 4 agent roles: CEO, Product Manager, Backend Engineer, Frontend Engineer
+- Load agent configurations from YAML/JSON files
+- Enable agents to run in continuous processing loops
+- Allow agents to claim and process assigned tasks
+- Support agent-specific LLM provider configurations
+
+**FR-003: LLM integration**
+- Support multiple LLM providers: OpenAI, xAI, Claude, Gemini
+- Enable provider-specific configuration and API key management
+- Implement unified interface for agent-LLM communication
+- Handle LLM request failures and retries
+
+**FR-004: GitHub integration**
+- Create feature branches for task solutions
+- Generate pull requests with task metadata and solutions
+- Support automated commit message formatting
+- Enable PR template customization
+
+**FR-005: CLI interface**
+- Implement core commands: create-task, assign-task, start-agent, list-tasks
+- Provide task status monitoring and agent activity logging
+- Support configuration management through CLI
+- Enable agent start/stop controls
+
+### Medium priority
+
+**FR-006: Task dependencies**
+- Allow tasks to reference other tasks
+- Support basic dependency checking before task processing
+- Enable agents to create follow-up tasks
+
+**FR-007: Error handling**
+- Implement graceful handling of LLM API failures
+- Provide task retry mechanisms for failed operations
+- Log agent errors and processing issues
+- Support manual task reassignment after failures
+
+**FR-008: Configuration management**
+- Store agent configurations in version-controlled files
+- Support environment-based configuration overrides
+- Enable runtime configuration updates without restarts
+
+### Low priority
+
+**FR-009: Reporting and metrics**
+- Track task completion rates and processing times
+- Generate basic agent performance reports
+- Monitor LLM API usage and costs
+
+**FR-010: Advanced task features**
+- Support task templates for common operations
+- Enable bulk task creation from files
+- Implement task search and filtering
+
+## User experience
+
+### Entry points
+
+**Primary entry point:** Command-line interface with intuitive command structure
+- `staff create-task --title "Feature X" --description "..." --priority high`
+- `staff assign-task <task-id> --agent backend-engineer`
+- `staff start-agent --name backend-engineer --config config.yaml`
+
+### Core experience
+
+1. **Task creation workflow**
+   - User creates task via CLI with title, description, and optional metadata
+   - System generates unique task ID and stores as markdown file in repository
+   - Task appears in todo state, available for assignment
+
+2. **Agent processing loop**
+   - Agent polls for assigned tasks in todo state
+   - Agent updates task to in_progress and processes with configured LLM
+   - Agent creates feature branch, commits solution, and submits PR
+   - Task status updates to completed upon successful PR creation
+
+3. **Monitoring and oversight**
+   - User monitors agent activity through CLI status commands
+   - User reviews and merges PRs containing agent solutions
+   - System maintains audit trail of all agent actions
+
+### Advanced features
+
+- **Multi-agent orchestration:** Multiple agents running simultaneously processing different tasks
+- **Task chaining:** Agents creating follow-up tasks based on solution requirements
+- **Configuration hot-reloading:** Updating agent configurations without system restart
+
+### UI/UX highlights
+
+- **Command discoverability:** Help system and command autocompletion
+- **Progress visibility:** Real-time status updates during agent processing
+- **Error transparency:** Clear error messages with suggested remediation steps
+- **Configuration simplicity:** Minimal setup required to start processing tasks
+
+## Narrative
+
+As a developer managing multiple projects, I open my terminal and create a new development task using the Staff CLI. The system immediately stores the task in my Git repository and assigns it a unique identifier. I assign the task to my backend engineer agent, which I've configured with specific expertise and LLM preferences. The agent autonomously picks up the task, analyzes the requirements using its configured LLM, generates a solution, creates a feature branch, and submits a pull request for my review. Meanwhile, I can create additional tasks and assign them to other specialized agents, enabling parallel processing of multiple development initiatives. Each completed task results in a clean PR that I can review, modify if needed, and merge into my main branch, maintaining full control over code quality while benefiting from AI-powered automation.
+
+## Success metrics
+
+### User-centric metrics
+
+- **Task completion rate:** Percentage of created tasks successfully processed to PR stage
+- **Time to PR:** Average time from task assignment to PR creation
+- **User adoption of CLI commands:** Frequency of core command usage
+- **Task creation velocity:** Number of tasks created per day/week
+
+### Business metrics
+
+- **Development velocity improvement:** Reduction in time for routine development tasks
+- **Code quality maintenance:** PR merge rate and review feedback quality
+- **System reliability:** Uptime and successful task processing percentage
+- **Feature utilization:** Usage distribution across different agent types and task categories
+
+### Technical metrics
+
+- **Agent processing efficiency:** Average task processing time per agent type
+- **LLM API performance:** Response times and success rates across providers
+- **System resource utilization:** CPU and memory usage during multi-agent operations
+- **Error rates:** Frequency and types of task processing failures
+
+## Technical considerations
+
+### Integration points
+
+- **Git repository integration:** Seamless read/write operations for task storage and branch management
+- **GitHub API integration:** Automated PR creation and repository management
+- **LLM provider APIs:** Reliable communication with multiple AI service providers
+- **Local filesystem:** Configuration file management and logging systems
+
+### Data storage and privacy
+
+- **Task data:** Stored as markdown files in Git repository, version-controlled and backed up
+- **Configuration data:** YAML/JSON files for agent configurations and system settings
+- **API keys:** Environment variable management with no hardcoded credentials
+- **Privacy considerations:** All data remains local or in user-controlled repositories
+
+### Scalability and performance
+
+- **Concurrent agent processing:** Support for multiple agents running simultaneously
+- **LLM rate limiting:** Respect provider API limits and implement backoff strategies
+- **Git operation optimization:** Efficient branch creation and PR submission
+- **Memory management:** Stateless agent design for minimal resource consumption
+
+### Potential challenges
+
+- **LLM API reliability:** Handle service outages and rate limiting gracefully
+- **Git conflict resolution:** Manage potential merge conflicts from concurrent agent operations
+- **Task complexity boundaries:** Define clear limits for agent capabilities
+- **Configuration complexity:** Balance flexibility with ease of setup
+
+## Milestones and sequencing
+
+### Project estimate
+
+**Total timeline:** 5-7 days for core MVP functionality
+
+**Team size:** 1-2 developers (primary developer plus optional reviewer)
+
+### Suggested phases
+
+**Phase 1: Foundation (Days 1-2)**
+- Enhance existing CLI framework with core task management commands
+- Implement task storage system using existing Git operations
+- Create basic agent configuration loading
+
+**Phase 2: Agent processing (Days 3-4)**
+- Integrate agent processing loop with existing LLM providers
+- Implement task assignment and status management
+- Build GitHub PR creation functionality
+
+**Phase 3: Integration and polish (Days 5-6)**
+- End-to-end testing of task-to-PR workflow
+- Error handling and logging improvements
+- Documentation and usage examples
+
+**Phase 4: Validation (Day 7)**
+- User acceptance testing with real development tasks
+- Performance optimization and bug fixes
+- Deployment preparation and final documentation
+
+## User stories
+
+### Core functionality
+
+**US-001: Create development task**
+**Description:** As a developer, I want to create a new development task via CLI so that I can track work that needs to be completed.
+**Acceptance criteria:**
+- CLI command accepts title, description, and optional priority
+- Task is assigned unique identifier and stored as markdown file in repository
+- Task appears in todo state and is available for assignment
+- Command provides immediate feedback with task ID and file location
+
+**US-002: Assign task to agent**
+**Description:** As a developer, I want to assign a specific task to a named agent so that the appropriate AI agent can process it.
+**Acceptance criteria:**
+- CLI command accepts task ID and agent name
+- System validates agent exists and is configured
+- Task metadata updates to reflect assignment
+- Agent can discover assigned task in next polling cycle
+
+**US-003: Start agent processing**
+**Description:** As a developer, I want to start an agent in processing mode so that it can autonomously handle assigned tasks.
+**Acceptance criteria:**
+- CLI command starts agent with specified configuration
+- Agent enters continuous polling loop for assigned tasks
+- Agent status is visible through monitoring commands
+- Agent can be stopped gracefully via CLI or signal
+
+**US-004: Agent processes task**
+**Description:** As an AI agent, I want to process an assigned task and create a solution so that development work can be automated.
+**Acceptance criteria:**
+- Agent retrieves task details from repository
+- Agent sends task to configured LLM for solution generation
+- Agent creates feature branch with naming convention task/{task-id}-{clean-title}
+- Agent commits solution with formatted commit message
+- Agent creates PR with task metadata and solution description
+
+**US-005: Monitor agent activity**
+**Description:** As a developer, I want to monitor agent processing status so that I can track progress and identify issues.
+**Acceptance criteria:**
+- CLI command shows active agents and their current tasks
+- Real-time status updates during task processing
+- Error messages and logs are accessible via CLI
+- Processing history is maintained for completed tasks
+
+### Task management
+
+**US-006: List tasks by status**
+**Description:** As a developer, I want to view tasks filtered by status so that I can understand current workload and priorities.
+**Acceptance criteria:**
+- CLI command lists tasks with status filtering options
+- Output includes task ID, title, status, assignee, and creation date
+- Support for status filters: todo, in_progress, completed, archived
+- Pagination support for large task lists
+
+**US-007: Update task priority**
+**Description:** As a developer, I want to modify task priority so that agents can process high-priority items first.
+**Acceptance criteria:**
+- CLI command accepts task ID and new priority level
+- Valid priority levels: low, medium, high
+- Task metadata updates immediately
+- Agents respect priority ordering when selecting tasks
+
+**US-008: Agent creates follow-up task**
+**Description:** As an AI agent, I want to create additional tasks based on my solution so that complex work can be broken down appropriately.
+**Acceptance criteria:**
+- Agent can create new tasks during processing
+- New tasks reference parent task ID
+- Created tasks appear in todo state for assignment
+- Parent task includes references to created subtasks
+
+### Configuration and setup
+
+**US-009: Configure agent with LLM provider**
+**Description:** As a developer, I want to configure an agent with specific LLM provider settings so that it can generate appropriate solutions.
+**Acceptance criteria:**
+- Configuration file specifies agent name, role, LLM provider, and credentials
+- Support for OpenAI, xAI, Claude, and Gemini providers
+- Agent validates configuration before starting processing
+- Configuration changes take effect on agent restart
+
+**US-010: Configure agent role and expertise**
+**Description:** As a developer, I want to define agent roles and expertise areas so that tasks are processed by appropriate specialists.
+**Acceptance criteria:**
+- Agent configuration includes role definition and system prompt
+- Pre-defined roles: CEO, Product Manager, Backend Engineer, Frontend Engineer
+- Custom system prompts can be loaded from markdown files
+- Role definitions affect task assignment recommendations
+
+### Error handling
+
+**US-011: Handle LLM API failures**
+**Description:** As an agent, I want to gracefully handle LLM API failures so that temporary issues don't permanently block task processing.
+**Acceptance criteria:**
+- Agent retries failed API calls with exponential backoff
+- Maximum retry attempts configurable per provider
+- Failed tasks return to todo state after max retries exceeded
+- Error details logged for debugging and user visibility
+
+**US-012: Recover from Git operation failures**
+**Description:** As an agent, I want to handle Git operation failures so that repository issues don't prevent task completion.
+**Acceptance criteria:**
+- Agent handles branch creation conflicts by using alternative names
+- Failed PR creation attempts are retried with updated metadata
+- Git authentication errors provide clear user guidance
+- Repository state inconsistencies are detected and reported
+
+**US-013: Validate task assignment**
+**Description:** As a developer, I want the system to validate task assignments so that only properly configured agents receive work.
+**Acceptance criteria:**
+- System checks agent exists and is configured before assignment
+- Agent capability matching suggests appropriate agents for task types
+- Invalid assignments are rejected with helpful error messages
+- Unassigned tasks remain available for later assignment
+
+### GitHub integration
+
+**US-014: Create formatted pull request**
+**Description:** As an agent, I want to create well-formatted pull requests so that solutions are clearly documented for review.
+**Acceptance criteria:**
+- PR title includes task ID and descriptive summary
+- PR description includes task details, solution approach, and testing notes
+- Commit messages follow conventional format with task reference
+- PR is linked to original task file for traceability
+
+**US-015: Handle PR creation conflicts**
+**Description:** As an agent, I want to handle PR creation conflicts so that multiple agents can work simultaneously.
+**Acceptance criteria:**
+- System detects when branch names already exist
+- Alternative branch naming strategies prevent conflicts
+- PR creation failures are logged and tasks returned to assignable state
+- User receives notification of conflicts requiring manual intervention
+
+### Advanced features
+
+**US-016: Support task templates**
+**Description:** As a developer, I want to create tasks from templates so that common work patterns can be standardized.
+**Acceptance criteria:**
+- CLI command creates task from named template file
+- Templates include placeholder substitution for dynamic content
+- Template library is stored in repository for version control
+- Custom templates can be created and shared
+
+**US-017: Bulk task operations**
+**Description:** As a developer, I want to perform operations on multiple tasks so that I can efficiently manage large workloads.
+**Acceptance criteria:**
+- CLI supports task selection by status, priority, or assignee
+- Bulk operations include assign, update-priority, and archive
+- Operations provide progress feedback and error summaries
+- Changes are atomic where possible to prevent partial failures
+
+**US-018: Agent performance metrics**
+**Description:** As a developer, I want to view agent performance metrics so that I can optimize task assignment and configuration.
+**Acceptance criteria:**
+- CLI command shows completion rates per agent
+- Average processing times displayed by task type and agent
+- LLM API usage statistics and cost tracking
+- Performance trends over configurable time periods
\ No newline at end of file
