Building Autonomous FTEs (Full-Time Equivalents) in 2026
Tagline: Your life and business on autopilot. Local-first, agent-driven, human-in-the-loop.
- Overview
- Key Features
- Achievement Tiers
- Architecture
- Tech Stack
- Prerequisites
- Installation & Setup
- Configuration
- Usage
- Testing
- Project Structure
- Documentation
- Security
- Contributing
- License
- Acknowledgments
The Digital FTE (Digital Full-Time Equivalent) is a local-first, autonomous AI agent system that acts as your Personal AI Employee. It proactively manages:
- Personal Affairs: Gmail, WhatsApp, Bank transactions
- Business Operations: Social Media, Payments, Project Tasks, ERP (Odoo)
Using Claude Code as the reasoning engine and Obsidian as the management dashboard, this system transforms AI from a chatbot into a proactive business partner that works 24/7.
A Digital FTE works ~9,000 hours/year vs a human's ~2,000 hours. The cost per task reduction (from ~$5.00 to ~$0.50) represents an 85-90% cost saving—the threshold where a CEO approves a project without debate.
Every Monday, your AI Employee autonomously audits bank transactions and tasks to report:
- Revenue: Total earned this week
- Bottlenecks: Tasks that took too long
- Proactive Suggestions: "I noticed we spent $200 on software we don't use; shall I cancel?"
- Claude Code as the reasoning engine with multi-step task completion
- Ralph Wiggum Loop for persistent task execution until completion
- Human-in-the-Loop approval workflows for sensitive actions
- Gmail Watcher: Monitors inbox for urgent emails
- WhatsApp Watcher: Detects keywords like "urgent", "invoice", "payment"
- Social Watcher: Manages scheduled posts across platforms
- File System Watcher: Processes dropped files for action
- Email MCP: Send, draft, and manage emails
- Browser MCP: Navigate websites, fill forms, make payments
- Odoo MCP: ERP integration for invoices, customers, accounting
- Social MCP: Post to Facebook, Instagram, Twitter, LinkedIn
- Dashboard.md: Real-time system status and activity feed
- Business_Goals.md: Q1 objectives and key metrics
- Company_Handbook.md: Rules of engagement and decision authority
- Workflow Folders:
/Needs_Action/,/Approved/,/Done/,/Pending_Approval/
- Cloud Agent: 24/7 email triage, social drafts, Odoo drafts (draft-only)
- Local Agent: Approvals, WhatsApp, payments, final send/post actions
- Git-based Vault Sync: Secure synchronization with zero-knowledge
- Work-Zone Specialization: Clear separation of cloud vs local capabilities
This project follows a tiered achievement system to accommodate varying skill levels:
| Tier | Time | Description | Status |
|---|---|---|---|
| 🥉 Bronze | 8-12 hrs | Foundation: Obsidian vault, 1 watcher, basic skills | ✅ Complete |
| 🥈 Silver | 20-30 hrs | Functional: 3 watchers, MCP integration, HITL workflow | ✅ Complete |
| 🥇 Gold | 40+ hrs | Autonomous: Odoo ERP, social media, CEO briefing, error recovery | ✅ Complete |
| 💎 Platinum | 60+ hrs | Production: Cloud-local split, 24/7 ops, security, demo validated | ✅ Complete |
| 🎨 Dashboard | 2-3 hrs | Premium UI: Real-time command center with stunning visuals | ✅ Complete |
42/42 hackathon requirements verified and implemented across all tiers + Premium Dashboard added!
A stunning, real-time visual command center for monitoring your AI Employee's activities:
- 📊 Real-Time Metrics - Emails, WhatsApp, Tasks, Revenue (auto-refresh every 30s)
- 📈 Beautiful Charts - Weekly activity with gradient area charts
- 💰 Revenue Tracking - Semi-circle gauge showing progress to target
- 📱 Live Activity Feed - Real-time log of all AI Employee actions
- 🎨 Premium UI - Dark theme, glassmorphism, smooth animations
- ⚡ Fast & Responsive - Next.js 14, TypeScript, Tailwind CSS
- Framework: Next.js 14
- Language: TypeScript
- Styling: Tailwind CSS
- Animations: Framer Motion
- Charts: Recharts
cd dashboard
npm install
npm run dev┌─────────────────────────────────────────────────────────────────┐
│ PERSONAL AI EMPLOYEE │
└─────────────────────────────────────────────────────────────────┘
┌──────────────┐ ┌──────────────┐ ┌──────────────┐ ┌──────────┐
│ Gmail │ │ WhatsApp │ │ Bank APIs │ │ Files │
└──────┬───────┘ └──────┬───────┘ └──────┬───────┘ └────┬─────┘
│ │ │ │
▼ ▼ ▼ ▼
┌─────────────────────────────────────────────────────────────────┐
│ PERCEPTION LAYER (Watchers) │
│ Gmail Watcher │ WhatsApp Watcher │ Finance Watcher │ Social │
└────────────────────────────┬────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────┐
│ OBSIDIAN VAULT (Memory/GUI) │
│ /Needs_Action/ │ /Plans/ │ /Done/ │ /Logs/ │ Dashboard.md │
└────────────────────────────┬────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────┐
│ REASONING LAYER (Claude Code) │
│ Read → Think → Plan → Write → Approve │
└────────────────────────────┬────────────────────────────────────┘
│
┌──────────────┴──────────────┐
▼ ▼
┌────────────────────────┐ ┌────────────────────────────────┐
│ HUMAN-IN-THE-LOOP │ │ ACTION LAYER (MCP) │
│ Review & Approve │ │ Email │ Browser │ Odoo │ Social│
└────────────────────────┘ └────────────────────────────────┘
┌─────────────────────────────────────────────────────────────┐
│ CLOUD AGENT (24/7 on Oracle Cloud) │
│ • Email triage & draft replies │
│ • Social post drafts (draft-only) │
│ • Odoo draft records (draft-only) │
│ • Vault sync coordinator │
└──────────────────────┬──────────────────────────────────────┘
│ Git-based Sync (Zero-Knowledge)
▼
┌─────────────────────────────────────────────────────────────┐
│ LOCAL AGENT (User's Machine) │
│ • User approval workflows │
│ • WhatsApp session management │
│ • Payment/banking execution │
│ • Final send/post actions │
│ • Dashboard.md maintenance (single-writer) │
└─────────────────────────────────────────────────────────────┘
| Component | Technology | Purpose |
|---|---|---|
| Reasoning Engine | Claude Code (Anthropic) | AI reasoning & decision making |
| Knowledge Base/GUI | Obsidian v1.10.6+ | Local Markdown dashboard |
| Language | Python 3.13+ | Core implementation |
| Package Manager | UV | Fast Python dependency management |
| MCP Runtime | Node.js v24+ LTS | Model Context Protocol servers |
| Browser Automation | Playwright | WhatsApp Web, browser actions |
| ERP | Odoo Community 19+ | Business management (invoices, accounting) |
| Process Manager | PM2 | Watcher daemon management |
| Cloud Deployment | Docker + Oracle Cloud | 24/7 cloud agent operations |
| Version Control | Git + GitHub Desktop | Source control & vault sync |
| Software | Version | Purpose | Install Link |
|---|---|---|---|
| Python | 3.13+ | Core runtime | python.org |
| Node.js | v24+ LTS | MCP servers | nodejs.org |
| Obsidian | v1.10.6+ | Knowledge base | obsidian.md |
| Docker Desktop | Latest | Odoo & cloud deployment | docker.com |
| Git | Latest | Version control | git-scm.com |
| UV | Latest | Python package manager | astral.sh/uv |
- Google Cloud Console: Gmail OAuth credentials
- Twilio Console: WhatsApp sandbox credentials
- LinkedIn Developer: API credentials (or use Playwright login)
- Meta Developer: Facebook Page & Instagram tokens
- X Developer Portal: Twitter API credentials
- Odoo: Local instance or cloud subscription
- Minimum: 8GB RAM, 4-core CPU, 20GB free disk
- Recommended: 16GB RAM, 8-core CPU, SSD storage
- For Cloud: Oracle Cloud Free VM (1/8 OCPU, 1GB RAM)
# Navigate to parent directory
cd E:\Personal-AI-Employee
# Clone or access the Digital-FTE folder
cd Digital-FTE# Sync Python environment using UV
uv sync
# Activate virtual environment (Windows)
.venv\Scripts\activate
# Or using PowerShell
.\.venv\Scripts\Activate.ps1# Install global PM2 for process management
npm install -g pm2
# MCP servers are auto-installed via .mcp.json when Claude Code runs# The vault is already created at:
# AI_Employee_Vault/
# Open in Obsidian:
# 1. Open Obsidian
# 2. Click "Open folder as vault"
# 3. Select: E:\Personal-AI-Employee\Digital-FTE\AI_Employee_Vault# Copy the example environment file
copy .env.example .env
# Edit .env with your credentials
# NEVER commit .env to version control!Required Environment Variables:
# Agent Configuration
AGENT_ID=local-agent
IS_CLOUD_AGENT=false
VAULT_PATH=./AI_Employee_Vault
DRY_RUN=false
DEV_MODE=true
# Odoo Configuration
ODOO_URL=http://localhost:8069
ODOO_DB=odoo
ODOO_USERNAME=admin
ODOO_PASSWORD=your-secure-password
# Gmail OAuth
GMAIL_CREDENTIALS_PATH=.credentials/gmail_oauth.json
# LinkedIn (for Playwright)
LINKEDIN_EMAIL=your-email@example.com
LINKEDIN_PASSWORD=your-password
# Twitter/X
TWITTER_API_KEY=your-api-key
TWITTER_API_SECRET=your-api-secret
# ... (see .env.example for full list)# Start Odoo with Docker Compose
docker-compose up -d
# Access Odoo at: http://localhost:8069
# Create database: "odoo"
# Set admin password (match with ODOO_PASSWORD in .env)- Go to Google Cloud Console
- Create new project or select existing
- Enable Gmail API
- Create OAuth 2.0 credentials
- Download
gmail_oauth.jsonto.credentials/folder - Run authentication flow:
python watchers/gmail_watcher.py- Go to Twilio Console
- Enable WhatsApp sandbox
- Copy Account SID and Auth Token to
.env
- Facebook/Instagram: Meta Developer Portal
- Twitter/X: X Developer Portal
- LinkedIn: LinkedIn Developer
The project uses 3 MCP servers:
{
"servers": [
{
"name": "odoo",
"command": "uvx",
"args": ["mcp-odoo-adv"],
"env": {
"ODOO_URL": "${env:ODOO_URL}",
"ODOO_DB": "${env:ODOO_DB}",
"ODOO_USERNAME": "${env:ODOO_USERNAME}",
"ODOO_PASSWORD": "${env:ODOO_PASSWORD}"
}
},
{
"name": "gmail",
"command": "uvx",
"args": ["@shinzolabs/gmail-mcp"],
"env": {
"GMAIL_CREDENTIALS_PATH": "${env:GMAIL_CREDENTIALS_PATH}"
}
},
{
"name": "browser",
"command": "uvx",
"args": ["@anthropic/browser-mcp"],
"env": {
"HEADLESS": "${env:HEADLESS:true}"
}
}
]
}module.exports = {
apps: [
{
name: 'gmail-watcher',
script: 'python',
args: 'watchers/gmail_watcher.py',
instances: 1,
autorestart: true,
watch: false
},
{
name: 'social-watcher',
script: 'python',
args: 'watchers/social_watcher.py',
instances: 1,
autorestart: true,
watch: false
}
]
};# Activate virtual environment
.venv\Scripts\activate
# Start all watchers
python scripts\start-watchers.py
# Or start individual watchers
python watchers\gmail_watcher.py
python watchers\social_watcher.py# Start all watchers with PM2
pm2 start ecosystem.config.js
# View status
pm2 status
# View logs
pm2 logs
# Stop all
pm2 stop all# Deploy cloud agent
docker-compose -f cloud/docker-compose.cloud.yml up -d
# View logs
docker-compose -f cloud/docker-compose.cloud.yml logs -fThe system includes 15 Agent Skills for Claude Code:
# Start Claude Code session
claude
# Available skills:
/vault-processor # Read/write vault files
/gmail-actions # Send emails, manage inbox
/whatsapp-reply # Send WhatsApp messages
/linkedin-post # Post to LinkedIn
/odoo-actions # Create invoices, query Odoo
/ceo-briefing # Generate weekly CEO briefing
/ralph-loop # Persistent task completion
/facebook-post # Post to Facebook
/facebook-summary # Facebook analytics
/instagram-post # Post to Instagram
/instagram-summary # Instagram analytics
/twitter-post # Post to Twitter
/twitter-summary # Twitter analytics
/browsing-with-playwright # Browser automation
/skill-creator # Create new skills# Gmail Watcher automatically detects new emails
# Creates files in: AI_Employee_Vault/Needs_Action/email/
# Claude processes emails:
/claude "Process all files in Needs_Action/email/"
# For sensitive actions, approval files created in:
# AI_Employee_Vault/Pending_Approval/email/
# User approves by moving file to:
# AI_Employee_Vault/Approved/email/
# Local agent executes and moves to:
# AI_Employee_Vault/Done/email/# Weekly briefing runs automatically (Sunday 8 PM)
# Or trigger manually:
/ceo-briefing "Generate weekly CEO briefing for period 2026-03-17 to 2026-03-24"
# Output:
# AI_Employee_Vault/Briefings/2026-03-24_Monday_Briefing.md
# AI_Employee_Vault/Briefings/data_briefing_2026-03-24.json# User drops request in Needs_Action/odoo/
# Claude processes with:
/odoo-actions "Create invoice for Client A, $500, Project Alpha"
# Odoo MCP creates draft invoice
# Approval file created in Pending_Approval/odoo/
# User approves → Invoice confirmed → Logged to Done/odoo/# Install test dependencies
uv sync --dev
# Run pytest
pytest
# Run with coverage
pytest --cov=. --cov-report=html# Run in dry-run mode
DRY_RUN=true python watchers/gmail_watcher.py
# Check logs for:
# - Gmail API connection
# - Email detection
# - Action file creation# Test Odoo connection
python scripts/odoo_json_rpc.py --test
# Expected output:
# ✓ Connected to Odoo at http://localhost:8069
# ✓ Authenticated as UID: 2
# ✓ Test invoice created successfully# Test Facebook posting (dry run)
DRY_RUN=true python -c "from scripts.social_summaries import generate_facebook_summary; generate_facebook_summary()"
# Check output in:
# AI_Employee_Vault/Reports/Social_Summary_YYYY-MM-DD.mdThe Platinum demo scenario has been validated end-to-end:
# Full test report available at:
docs/PLATINUM_DEMO_VALIDATION.md
# Test Results:
# - 12/12 steps PASSED (100%)
# - 5/5 security checks PASSED (100%)
# - 5/5 work-zone validations PASSED (100%)Digital-FTE/
├── .claude/ # Claude Code configuration
│ ├── commands/ # Custom commands (13 sp.* files)
│ ├── hooks/ # Session hooks
│ └── skills/ # 15 Agent Skills
│ ├── browsing-with-playwright/
│ ├── ceo-briefing/
│ ├── facebook-post/
│ ├── facebook-summary/
│ ├── gmail-actions/
│ ├── instagram-post/
│ ├── instagram-summary/
│ ├── linkedin-post/
│ ├── odoo-actions/
│ ├── ralph-loop/
│ ├── skill-creator/
│ ├── twitter-post/
│ ├── twitter-summary/
│ ├── vault-processor/
│ └── whatsapp-reply/
│
├── .credentials/ # OAuth tokens (gitignored)
│ └── gmail_oauth.json
│
├── .specify/ # Specification templates
│ ├── memory/
│ ├── scripts/
│ └── templates/
│
├── .venv/ # Python virtual environment (gitignored)
│
├── AI_Employee_Vault/ # Obsidian knowledge vault
│ ├── .obsidian/ # Obsidian config
│ ├── Inbox/ # New items
│ ├── Needs_Action/ # Items requiring action
│ │ ├── email/
│ │ ├── social/
│ │ ├── finance/
│ │ ├── odoo/
│ │ ├── whatsapp/
│ │ └── general/
│ ├── Plans/ # Active plans
│ │ ├── cloud/
│ │ └── local/
│ ├── Pending_Approval/ # Awaiting human approval
│ ├── Approved/ # Approved actions
│ ├── In_Progress/ # Currently processing
│ │ ├── cloud-agent/
│ │ └── local-agent/
│ ├── Done/ # Completed actions
│ ├── Briefings/ # CEO briefings
│ ├── Reports/ # Analytics reports
│ ├── Logs/ # Audit logs
│ ├── Updates/ # Cloud→Local updates
│ ├── Signals/ # Cloud→Local signals
│ ├── Business_Goals.md
│ ├── Company_Handbook.md
│ └── Dashboard.md
│
├── cloud/ # Cloud deployment (Platinum)
│ ├── docker-compose.cloud.yml
│ ├── Dockerfile.cloud
│ ├── nginx.conf
│ ├── README.md
│ └── supervisor.conf
│
├── docs/ # Documentation
│ ├── adr/ # Architecture Decision Records
│ │ ├── ADR-001-mcp-server-pattern.md
│ │ ├── ADR-002-ralph-wiggum-loop.md
│ │ ├── ADR-003-vault-communication.md
│ │ └── ADR-004-error-handling-strategy.md
│ ├── ARCHITECTURE.md
│ ├── LESSONS_LEARNED.md
│ ├── PLATINUM_VERIFICATION.md
│ ├── PLATINUM_DEMO_VALIDATION.md
│ ├── SETUP.md
│ └── [research files]
│
├── mcp_servers/ # MCP server implementations
│ └── cloud_odoo_mcp/
│ └── server.py
│
├── orchestrator/ # Core orchestration (Platinum)
│ ├── orchestrator.py
│ ├── claim_manager.py
│ └── sync_coordinator.py
│
├── scripts/ # Automation scripts
│ ├── start-watchers.py
│ ├── start-watchers.bat
│ ├── generate_briefing.py
│ ├── odoo_json_rpc.py
│ ├── aggregate_social.py
│ ├── social_summaries.py
│ └── setup_platinum_vault.py
│
├── services/ # Service monitoring
│ └── health.py
│
├── specs/ # Tier specifications
│ ├── 001-bronze-tier/
│ │ └── spec.md
│ ├── 002-silver-tier/
│ │ └── spec.md
│ ├── 003-gold-tier/
│ │ ├── spec.md
│ │ └── gold-tier-implementation-checklist.md
│ └── 004-platinum-tier/
│ ├── spec.md
│ └── implementation-plan.md
│
├── utils/ # Utility modules
│ ├── approval_processor.py
│ ├── audit_logger.py
│ ├── retry_decorators.py
│ ├── vault_guard.py
│ └── vault_security.py
│
├── watchers/ # Event watchers
│ ├── __init__.py
│ ├── base_watcher.py
│ ├── filesystem_watcher.py
│ ├── gmail_watcher.py
│ ├── helpers.py
│ ├── social_watcher.py
│ └── webhook_server.py
│
├── .env # Environment variables (gitignored)
├── .env.example # Environment template
├── .gitignore # Git ignore rules
├── .mcp.json # MCP server configuration
├── CLAUDE.md # Claude project guide
├── docker-compose.yml # Local Docker setup
├── ecosystem.config.js # PM2 configuration
├── FINAL_COMPLETION_REPORT.md # Project completion summary
├── Hackathon_details.md # Hackathon requirements
├── pyproject.toml # Python project config
├── README.md # This file
└── uv.lock # UV dependency lock
| Document | Description | Location |
|---|---|---|
| Architecture | Complete system architecture with diagrams | docs/ARCHITECTURE.md |
| Setup Guide | Detailed setup instructions | docs/SETUP.md |
| Lessons Learned | Development retrospective | docs/LESSONS_LEARNED.md |
| Platinum Verification | Platinum tier compliance report | docs/PLATINUM_VERIFICATION.md |
| Demo Validation | End-to-end demo test results | docs/PLATINUM_DEMO_VALIDATION.md |
| ADR | Topic | Location |
|---|---|---|
| ADR-001 | MCP Server Pattern | docs/adr/ADR-001-mcp-server-pattern.md |
| ADR-002 | Ralph Wiggum Loop | docs/adr/ADR-002-ralph-wiggum-loop.md |
| ADR-003 | Vault Communication | docs/adr/ADR-003-vault-communication.md |
| ADR-004 | Error Handling Strategy | docs/adr/ADR-004-error-handling-strategy.md |
docs/gold-tier-research.md(2,083 lines)docs/platinum-tier-research.md(1,307 lines)docs/gap-research-report.md(720 lines)docs/gap-closure-report.md
| Feature | Implementation | Status |
|---|---|---|
| Zero-Knowledge Sync | Sensitive files never sync to cloud | ✅ Implemented |
| Capability-Based Access | Cloud draft-only, Local execute | ✅ Enforced |
| File Integrity (HMAC) | Tamper detection for vault files | ✅ Implemented |
| Data Classification | 4 levels (Public, Internal, Confidential, Restricted) | ✅ Implemented |
| Content Scanning | Detects passwords, API keys, tokens | ✅ Implemented |
| Comprehensive .gitignore | All sensitive patterns excluded | ✅ Complete |
| Audit Logging | 90-day retention, JSONL format | ✅ Implemented |
- Never commit
.env- Contains actual credentials - Use
.env.example- Template with placeholders for GitHub - Rotate credentials monthly - Especially API keys and tokens
- Use app-specific passwords - When 2FA is enabled
- Review approval files - Always verify before approving sensitive actions
# Secrets
.env
.credentials/
*.token
*.key
*.pem
# Sessions
.linkedin_session/
.whatsapp_session/
tokens.json
# Database
*.sqlite
*.db
# Logs (may contain sensitive data)
logs/
*.logContributions are welcome! Please follow these guidelines:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Make your changes
- Run tests (
pytest) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Python: Follow PEP 8
- Type Hints: Use type annotations for all functions
- Documentation: Add docstrings to all public functions
- Testing: Write tests for new features
- Ensure all tests pass
- Update documentation as needed
- Add entry to CHANGELOG.md (if applicable)
- Request review from maintainers
This project is licensed under the MIT License - see the LICENSE file for details.
- Event: Personal AI Employee Hackathon 0: Building Autonomous FTEs (2026)
- Organizer: Panaversity
- Tagline: Your life and business on autopilot. Local-first, agent-driven, human-in-the-loop.
- Claude Code - AI reasoning engine by Anthropic
- Obsidian - Knowledge base and dashboard
- Odoo - Open-source ERP
- Model Context Protocol (MCP) - AI agent integration
- Playwright - Browser automation
- UV - Fast Python package manager
- Ralph Wiggum Stop Hook - Anthropic's pattern for persistent task completion
- Agent Factory - SDD methodology for specification-driven development
- Context7 - Up-to-date documentation and code examples
- Documentation: Check
docs/folder for detailed guides - Issues: Open an issue on GitHub for bugs or feature requests
- Discussions: Use GitHub Discussions for questions and ideas
- Hackathon Details: See
Hackathon_details.mdfor full requirements - Completion Report: See
FINAL_COMPLETION_REPORT.mdfor project status - Demo Validation: See
docs/PLATINUM_DEMO_VALIDATION.mdfor test results
✅ All tiers complete (Bronze/Silver/Gold/Platinum)
✅ 42/42 requirements verified
✅ Demo validated end-to-end
✅ Documentation comprehensive
Ready for submission! 🚀
- Provision Cloud VM (Oracle Cloud Free Tier or AWS/GCP)
- Create private Git repo for vault synchronization
- Configure environment variables in
.env - Deploy with Docker Compose on cloud VM
- Configure HTTPS (Let's Encrypt)
- Test full demo scenario end-to-end
- Monitor and validate 24/7 operations
Built with ❤️ for the Personal AI Employee Hackathon 2026
