22 KiB
MyOrg Personal Assistant - Implementation Plan
Project: +myorg-assistant
Document: Implementation Plan
Created: 2026-01-31
Status: Planning
Overview
This document outlines the step-by-step implementation plan for building the MyOrg Personal Assistant. The project is broken down into phases, with each phase delivering functional value that can be tested and used.
Implementation Strategy
Approach: Incremental delivery with vertical slices
- Each phase delivers a working feature end-to-end
- Early phases establish core infrastructure
- Later phases add intelligence and automation
- Can deploy and use the system after Phase 2
Development Environment:
- Local development: Python virtual environment, local git clone of myorg
- Testing: Unit tests + integration tests with test myorg repository
- Deployment: Docker container → k3s cluster
Phases
Phase 0: Project Setup & Foundation (Week 1)
Goal: Set up development environment and project structure
Tasks:
-
Create project repository structure
myorg-assistant/ ├── src/ │ ├── agent/ # Claude Agent SDK integration │ ├── tools/ # Agent tools (file ops, git, parsers) │ ├── parsers/ # Todo.txt, calendar.txt parsers │ ├── api/ # FastAPI endpoints │ ├── bot/ # Discord bot │ ├── web/ # Web UI (templates, static files) │ └── scheduler/ # Scheduled jobs ├── tests/ ├── k8s/ # Kubernetes manifests ├── Dockerfile ├── requirements.txt └── README.md -
Set up Python environment
- Create virtual environment
- Install core dependencies: FastAPI, Claude Agent SDK, GitPython, Discord.py
- Set up pre-commit hooks (black, ruff, mypy)
-
Create parsers for myorg formats
TodoParser: Parse todo.txt formatCalendarParser: Parse calendar.txt formatProjectParser: Parse projects.txt- Unit tests for each parser
-
Create test myorg repository
- Minimal working example with sample data
- Use for testing without affecting real data
Deliverable: Working parsers that can read myorg files
Estimated Time: 3-4 days
Phase 1: Core Agent with File Tools (Week 1-2)
Goal: Build Claude Agent SDK integration with basic file operations
Tasks:
-
Set up Claude Agent SDK
- Configure connection to LiteLLM endpoint
- Set up Claude Sonnet 4.5 model
- Create base agent class
-
Implement file operation tools
read_file(path): Read any myorg filewrite_file(path, content): Write/update filesappend_to_file(path, content): Append contentlist_files(directory): Browse structure- Add safety checks (validate paths, backup before write)
-
Implement task management tools
add_task(description, project, context, priority, due_date)complete_task(task_line_number): Mark complete with timestampsearch_tasks(filters): Query by project/context/priority- Use TodoParser for proper formatting
-
Implement git tools
git_status(): Check repo statusgit_commit(message): Commit changesgit_pull(): Sync from remotegit_push(): Push to remote
-
Create agent system prompt
- Define agent role and responsibilities
- Document myorg structure and formats
- Set guidelines for autonomous actions
-
Build simple CLI for testing
- Interactive chat with agent
- Test file operations and task management
- Verify git integration
Deliverable: Working agent that can read/write myorg files and manage tasks via CLI
Estimated Time: 4-5 days
Phase 2: Discord Bot Integration (Week 2-3)
Goal: Deploy agent as Discord bot for daily use
Tasks:
-
Set up Discord bot
- Create Discord application and bot
- Implement discord.py integration
- Connect bot to agent backend
-
Implement core bot commands
- Natural conversation → agent processes
/briefing: Manual trigger for daily summary/add [task]: Quick task addition/tasks [filter]: Show filtered tasks/today: Today's calendar and priority tasks/context [context]: Set current context
-
Format agent responses for Discord
- Use Discord markdown formatting
- Add emojis for readability
- Handle long responses (pagination/truncation)
-
Create Docker container
- Dockerfile with Python app
- Include git for repository operations
- Environment variables for config
-
Deploy to k3s cluster
- Create Kubernetes Deployment manifest
- Create ConfigMap for configuration
- Create Secret for Discord token and git credentials
- Create PersistentVolumeClaim for myorg repository
- Deploy and test
-
Set up repository sync
- Clone myorg repo on container startup
- Periodic git pull (every 15 minutes)
- Auto-push after agent commits
Deliverable: Discord bot that can chat, add tasks, and show daily summary
Estimated Time: 5-6 days
Phase 3: Scheduled Briefings & Reminders (Week 3-4)
Goal: Add proactive scheduled features
Tasks:
-
Implement briefing generators
generate_morning_briefing(): Calendar + priority tasks + waiting itemsgenerate_evening_summary(): Accomplishments + tomorrow prep- Format as Discord messages
-
Implement reminder logic
check_deadlines(): Find tasks due soon (7d, 3d, 1d)check_waiting_items(): Find stale waiting list itemscheck_upcoming_events(): Calendar prep (30 min before)
-
Set up scheduling system
- Option A: APScheduler in-process
- Option B: Kubernetes CronJobs (preferred for k8s)
- Configure timezone handling
-
Create Kubernetes CronJobs
morning-briefing: Daily at 8:00 AMevening-summary: Daily at 8:00 PMdeadline-checker: Hourlywaiting-followup: Weekly (Monday 9:00 AM)git-sync: Every 15 minutes- All jobs send messages via Discord bot
-
Implement context inference
infer_context(time, calendar_events): Guess user context- Time-based rules (work hours, evenings, weekends)
- Calendar-based (meeting → @telefon, travel → location)
Deliverable: Automated briefings and reminders sent via Discord
Estimated Time: 5-6 days
Phase 4: Web Interface (Week 4-5)
Goal: Build web dashboard for richer visualization
Tasks:
-
Set up FastAPI web server
- Create FastAPI app
- Add Jinja2 template engine
- Serve static files (CSS, JS)
-
Build core pages
- Dashboard (
/):- Today's calendar events
- Priority tasks list
- Quick stats (active projects, waiting items)
- Context selector
- Chat (
/chat):- Chat interface with agent
- Server-Sent Events for real-time updates
- HTMX for message sending/loading
- Tasks (
/tasks):- Filterable task list
- Add/complete tasks
- HTMX for dynamic updates
- Calendar (
/calendar):- Monthly/weekly calendar view
- Today's events highlighted
- Simple CSS Grid layout
- Projects (
/projects):- Active projects list
- Progress indicators
- Link to related tasks
- Dashboard (
-
Style with vanilla CSS
- Clean, semantic HTML
- Responsive layout (mobile-friendly)
- Dark mode support
- Minimal, fast-loading
-
Add HTMX interactivity
- Task completion without page reload
- Live task filtering
- Quick-add forms
- Auto-refresh sections
-
Implement SSE for chat
- Real-time agent responses
- Streaming message updates
- Connection handling
-
Add authentication (basic)
- Simple password or API key
- Protect web interface
- Optional: OAuth if needed
-
Update Kubernetes manifests
- Add Service for web interface
- Add Ingress (optional, for external access)
- Configure internal DNS
Deliverable: Web interface for viewing tasks, calendar, and chatting with agent
Estimated Time: 6-7 days
Phase 5: Advanced Intelligence (Week 5-6)
Goal: Add smart suggestions and goal tracking
Tasks:
-
Implement calendar tools
parse_calendar(): Read and structure calendar.txtadd_event(): Add formatted eventsget_events(date_range): Query eventsget_todays_events(): Quick today access
-
Implement project & goal tools
get_active_projects(): Parse projects.txtget_quarterly_goals(): Read current quarter goalsget_telos(): Read telos.mdanalyze_project_progress(project): Count tasks completedanalyze_goal_progress(goal): Track goal completion
-
Implement intelligent suggestions
suggest_tasks(context, time_available, energy_level):- Filter by context
- Consider time of day
- Prioritize goal-aligned work
- Respect due dates
- Add to morning briefing and
/suggestcommand
-
Implement goal alignment features
- Show project → goal → mission mappings
- Highlight projects not progressing
- Suggest tasks that move goals forward
- Weekly goal progress report
-
Add working memory integration
- Automatically update working-memory.txt after significant actions
- Include working memory in agent context
- Show recent activities in dashboard
-
Enhance weekly review assistant
- Follow skills/weekly-review.md guide
- Interactive walkthrough via Discord
- Automatic archival suggestions
- Project progress analysis
- Goal alignment check
Deliverable: Intelligent task suggestions and goal tracking
Estimated Time: 6-7 days
Phase 6: Polish & Optimization (Week 6-7)
Goal: Improve performance, reliability, and user experience
Tasks:
-
Performance optimization
- Cache frequently accessed files (telos, goals)
- Optimize parser performance
- Reduce LLM API calls where possible
- Add request/response caching
-
Error handling improvements
- Graceful degradation if LiteLLM unavailable
- Better error messages for users
- Automatic retry logic for transient failures
- Rollback on git commit failures
-
Add monitoring and logging
- Structured logging (JSON format)
- Log agent actions (file writes, git commits)
- Track API usage and costs
- Optional: Prometheus metrics
-
Improve Discord UX
- Better formatting and layout
- Interactive buttons for confirmations
- Typing indicators while agent thinks
- Help command with examples
-
Improve web UI
- Loading states for HTMX requests
- Error notifications
- Keyboard shortcuts
- Accessibility improvements
-
Add configuration options
- User preferences (briefing time, reminder settings)
- Configurable contexts
- Custom scheduling
- Store in SQLite database
-
Testing and QA
- Integration tests for key workflows
- Test with real myorg data
- Performance testing under load
- Security audit (file access, git operations)
-
Documentation
- User guide (how to use bot and web UI)
- Deployment guide (k8s setup)
- Development guide (how to add tools)
- Troubleshooting guide
Deliverable: Production-ready assistant with monitoring and docs
Estimated Time: 5-6 days
Phase 7: Optional Enhancements (Future)
Goal: Additional features based on usage and feedback
Potential features:
- Mobile PWA (progressive web app)
- Voice interface (speech-to-text for task entry)
- Email integration (send briefings via email)
- Calendar sync (import/export to Google Calendar)
- Habits tracking (daily check-ins, streaks)
- Advanced analytics (productivity reports, time tracking)
- Multi-user support (family/team organization)
- Backup and restore functionality
- API webhooks for external integrations
Technical Details
Repository Structure
myorg-assistant/
├── src/
│ ├── __init__.py
│ ├── main.py # Application entry point
│ ├── config.py # Configuration management
│ │
│ ├── agent/
│ │ ├── __init__.py
│ │ ├── core.py # Claude Agent SDK setup
│ │ ├── prompts.py # System prompts
│ │ └── tools.py # Tool registry
│ │
│ ├── tools/
│ │ ├── __init__.py
│ │ ├── file_ops.py # File operation tools
│ │ ├── task_ops.py # Task management tools
│ │ ├── calendar_ops.py # Calendar tools
│ │ ├── git_ops.py # Git tools
│ │ ├── project_ops.py # Project/goal tools
│ │ └── intelligence.py # Smart suggestions
│ │
│ ├── parsers/
│ │ ├── __init__.py
│ │ ├── todo_parser.py # Todo.txt format
│ │ ├── calendar_parser.py # Calendar.txt format
│ │ └── project_parser.py # Projects.txt format
│ │
│ ├── api/
│ │ ├── __init__.py
│ │ ├── app.py # FastAPI application
│ │ ├── routes/
│ │ │ ├── chat.py # Chat endpoints
│ │ │ ├── tasks.py # Task CRUD endpoints
│ │ │ ├── calendar.py # Calendar endpoints
│ │ │ └── dashboard.py # Dashboard data
│ │ └── middleware.py # Auth, CORS, etc.
│ │
│ ├── bot/
│ │ ├── __init__.py
│ │ ├── discord_bot.py # Discord bot setup
│ │ ├── commands.py # Bot commands
│ │ └── formatters.py # Discord message formatting
│ │
│ ├── scheduler/
│ │ ├── __init__.py
│ │ ├── jobs.py # Scheduled job definitions
│ │ └── briefings.py # Briefing generators
│ │
│ ├── web/
│ │ ├── templates/ # Jinja2 templates
│ │ │ ├── base.html
│ │ │ ├── dashboard.html
│ │ │ ├── chat.html
│ │ │ ├── tasks.html
│ │ │ ├── calendar.html
│ │ │ └── projects.html
│ │ └── static/
│ │ ├── css/
│ │ │ └── style.css
│ │ └── js/
│ │ └── app.js # Minimal vanilla JS
│ │
│ └── utils/
│ ├── __init__.py
│ ├── git.py # Git helper functions
│ └── context.py # Context inference
│
├── tests/
│ ├── __init__.py
│ ├── test_parsers.py
│ ├── test_tools.py
│ ├── test_agent.py
│ └── fixtures/
│ └── test_myorg/ # Test myorg repository
│
├── k8s/
│ ├── deployment.yaml # Main app deployment
│ ├── service.yaml # ClusterIP service
│ ├── ingress.yaml # Optional ingress
│ ├── configmap.yaml # Configuration
│ ├── secret.yaml.example # Secret template
│ ├── pvc.yaml # Persistent volume claim
│ └── cronjobs/
│ ├── morning-briefing.yaml
│ ├── evening-summary.yaml
│ ├── deadline-checker.yaml
│ ├── waiting-followup.yaml
│ └── git-sync.yaml
│
├── Dockerfile
├── requirements.txt
├── requirements-dev.txt
├── .env.example
├── .gitignore
├── pytest.ini
├── mypy.ini
└── README.md
Key Dependencies
# requirements.txt
fastapi==0.109.0
uvicorn[standard]==0.27.0
discord.py==2.3.2
gitpython==3.1.41
anthropic==0.18.0 # Claude Agent SDK
jinja2==3.1.3
python-multipart==0.0.6
httpx==0.26.0
apscheduler==3.10.4
python-dotenv==1.0.0
pydantic==2.5.3
pydantic-settings==2.1.0
# requirements-dev.txt
pytest==7.4.4
pytest-asyncio==0.23.3
black==24.1.1
ruff==0.1.14
mypy==1.8.0
Environment Variables
# .env.example
# LiteLLM Configuration
LITELLM_ENDPOINT=http://litellm-service.default.svc.cluster.local:4000
LITELLM_API_KEY=your-api-key
LITELLM_MODEL=claude-sonnet-4-5
# Discord Configuration
DISCORD_BOT_TOKEN=your-discord-bot-token
DISCORD_CHANNEL_ID=your-channel-id
# Git Configuration
GIT_REPO_URL=https://github.com/yourusername/myorg.git
GIT_BRANCH=main
GIT_USERNAME=your-username
GIT_TOKEN=your-git-token
# Myorg Repository Path
MYORG_REPO_PATH=/data/myorg
# Scheduling (timezone)
TIMEZONE=Europe/Madrid
# Web Interface
WEB_HOST=0.0.0.0
WEB_PORT=8000
WEB_SECRET_KEY=your-secret-key
# Optional: Authentication
WEB_PASSWORD=your-password # Basic auth for web UI
Docker Configuration
# Dockerfile
FROM python:3.11-slim
# Install git
RUN apt-get update && apt-get install -y git && rm -rf /var/lib/apt/lists/*
# Set working directory
WORKDIR /app
# Copy requirements
COPY requirements.txt .
# Install dependencies
RUN pip install --no-cache-dir -r requirements.txt
# Copy application code
COPY src/ ./src/
# Create data directory for myorg repo
RUN mkdir -p /data/myorg
# Expose web interface port
EXPOSE 8000
# Run application
CMD ["python", "-m", "src.main"]
Kubernetes Deployment Example
# k8s/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: myorg-assistant
labels:
app: myorg-assistant
spec:
replicas: 1
selector:
matchLabels:
app: myorg-assistant
template:
metadata:
labels:
app: myorg-assistant
spec:
containers:
- name: myorg-assistant
image: myorg-assistant:latest
imagePullPolicy: IfNotPresent
ports:
- containerPort: 8000
name: web
env:
- name: LITELLM_ENDPOINT
valueFrom:
configMapKeyRef:
name: myorg-assistant-config
key: litellm_endpoint
- name: DISCORD_BOT_TOKEN
valueFrom:
secretKeyRef:
name: myorg-assistant-secret
key: discord_token
- name: GIT_TOKEN
valueFrom:
secretKeyRef:
name: myorg-assistant-secret
key: git_token
envFrom:
- configMapRef:
name: myorg-assistant-config
volumeMounts:
- name: myorg-data
mountPath: /data/myorg
resources:
requests:
memory: "256Mi"
cpu: "250m"
limits:
memory: "512Mi"
cpu: "500m"
volumes:
- name: myorg-data
persistentVolumeClaim:
claimName: myorg-assistant-pvc
Timeline Summary
| Phase | Duration | Deliverable |
|---|---|---|
| Phase 0: Setup | 3-4 days | Parsers working |
| Phase 1: Core Agent | 4-5 days | CLI agent with file tools |
| Phase 2: Discord Bot | 5-6 days | Discord bot deployed to k8s |
| Phase 3: Scheduling | 5-6 days | Automated briefings |
| Phase 4: Web Interface | 6-7 days | Web dashboard |
| Phase 5: Intelligence | 6-7 days | Smart suggestions & goal tracking |
| Phase 6: Polish | 5-6 days | Production-ready system |
| Total | ~6 weeks | Full personal assistant |
Development Workflow
Local Development
- Clone myorg-assistant repository
- Create Python virtual environment:
python -m venv venv - Install dependencies:
pip install -r requirements.txt -r requirements-dev.txt - Copy
.env.exampleto.envand configure - Clone test myorg repository to
/tmp/test-myorg - Run tests:
pytest - Run locally:
python -m src.main
Testing
- Unit tests for parsers and tools
- Integration tests for agent workflows
- Test against test myorg repository
- Manual testing via CLI and Discord
Deployment
- Build Docker image:
docker build -t myorg-assistant:latest . - Push to registry (or load into k3s)
- Apply Kubernetes manifests:
kubectl apply -f k8s/ - Check logs:
kubectl logs -f deployment/myorg-assistant - Test Discord bot
- Test web interface
Monitoring
- Application logs:
kubectl logs -f deployment/myorg-assistant - CronJob status:
kubectl get cronjobs - Git sync status: Check commits in myorg repository
- Discord bot health: Send test message
Success Criteria
Phase 2 (MVP):
- ✅ Can chat with agent via Discord
- ✅ Can add tasks through natural language
- ✅ Can view today's tasks and calendar
- ✅ Agent commits changes to git
Phase 3 (Automation):
- ✅ Receives morning briefing daily
- ✅ Receives evening summary daily
- ✅ Gets deadline warnings automatically
Phase 4 (Complete):
- ✅ Can use web interface as alternative
- ✅ Dashboard shows relevant information
- ✅ HTMX provides smooth interactions
Phase 5 (Intelligence):
- ✅ Agent suggests context-aware tasks
- ✅ Goal progress is tracked and reported
- ✅ Weekly review is assisted and automated
Phase 6 (Production):
- ✅ System is stable and reliable
- ✅ Error handling is robust
- ✅ Documentation is complete
Risk Mitigation
| Risk | Impact | Mitigation |
|---|---|---|
| LiteLLM endpoint unavailable | High | Add connection retry logic, graceful degradation |
| Claude API rate limits | Medium | Cache responses, limit proactive messages |
| Git conflicts on sync | Medium | Always pull before push, handle merge conflicts |
| Discord bot rate limits | Low | Throttle messages, batch notifications |
| File corruption | High | Backup before write, validate format, git history |
| Kubernetes pod crashes | Medium | Set restart policy, health checks, persistent storage |
Next Steps
- Now: Review and approve this implementation plan
- Next: Set up project repository (Phase 0)
- Week 1: Build parsers and core agent (Phases 0-1)
- Week 2: Deploy Discord bot (Phase 2)
- Ongoing: Continue through phases, testing at each step
Last Updated: 2026-01-31