bizy-ai 1.0.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- agent/__init__.py +5 -0
- agent/cli.py +228 -0
- agent/core.py +205 -0
- agent/models.py +216 -0
- agent/planner.py +363 -0
- agent/research.py +199 -0
- agent/tasks.py +251 -0
- bizy_ai-1.0.0.dist-info/METADATA +471 -0
- bizy_ai-1.0.0.dist-info/RECORD +18 -0
- bizy_ai-1.0.0.dist-info/WHEEL +5 -0
- bizy_ai-1.0.0.dist-info/entry_points.txt +2 -0
- bizy_ai-1.0.0.dist-info/licenses/LICENSE +21 -0
- bizy_ai-1.0.0.dist-info/top_level.txt +2 -0
- scripts/agent_cli.py +232 -0
- scripts/evening_review.py +148 -0
- scripts/init_db.py +91 -0
- scripts/morning_brief.py +132 -0
- scripts/weekly_review.py +72 -0
agent/tasks.py
ADDED
@@ -0,0 +1,251 @@
|
|
1
|
+
from datetime import datetime, timedelta, date
|
2
|
+
from sqlalchemy import and_, or_
|
3
|
+
from agent.models import Task, DailyLog, get_session
|
4
|
+
|
5
|
+
class TaskManager:
|
6
|
+
def __init__(self):
|
7
|
+
self.session = get_session()
|
8
|
+
|
9
|
+
def create_task(self, title, description=None, priority=3, category=None,
|
10
|
+
estimated_hours=None, due_date=None, parent_goal_id=None,
|
11
|
+
dependencies=None, tags=None):
|
12
|
+
"""Create a new task"""
|
13
|
+
task = Task(
|
14
|
+
title=title,
|
15
|
+
description=description,
|
16
|
+
priority=priority,
|
17
|
+
category=category,
|
18
|
+
estimated_hours=estimated_hours,
|
19
|
+
due_date=due_date,
|
20
|
+
parent_goal_id=parent_goal_id,
|
21
|
+
dependencies=dependencies or [],
|
22
|
+
tags=tags or []
|
23
|
+
)
|
24
|
+
self.session.add(task)
|
25
|
+
self.session.commit()
|
26
|
+
return task
|
27
|
+
|
28
|
+
def get_task(self, task_id):
|
29
|
+
"""Get a specific task by ID"""
|
30
|
+
return self.session.query(Task).filter(Task.id == task_id).first()
|
31
|
+
|
32
|
+
def get_tasks_for_today(self):
|
33
|
+
"""Get all tasks due today or overdue"""
|
34
|
+
today = datetime.now().date()
|
35
|
+
tomorrow = today + timedelta(days=1)
|
36
|
+
|
37
|
+
tasks = self.session.query(Task).filter(
|
38
|
+
and_(
|
39
|
+
Task.status.in_(['pending', 'in_progress']),
|
40
|
+
or_(
|
41
|
+
Task.due_date == None,
|
42
|
+
Task.due_date < datetime.combine(tomorrow, datetime.min.time())
|
43
|
+
)
|
44
|
+
)
|
45
|
+
).order_by(Task.priority, Task.due_date).all()
|
46
|
+
|
47
|
+
return tasks
|
48
|
+
|
49
|
+
def get_tasks_by_status(self, status):
|
50
|
+
"""Get all tasks with a specific status"""
|
51
|
+
return self.session.query(Task).filter(Task.status == status).all()
|
52
|
+
|
53
|
+
def get_tasks_by_goal(self, goal_id):
|
54
|
+
"""Get all tasks linked to a specific goal"""
|
55
|
+
return self.session.query(Task).filter(Task.parent_goal_id == goal_id).all()
|
56
|
+
|
57
|
+
def get_tasks_by_category(self, category):
|
58
|
+
"""Get all tasks in a specific category"""
|
59
|
+
return self.session.query(Task).filter(Task.category == category).all()
|
60
|
+
|
61
|
+
def get_overdue_tasks(self):
|
62
|
+
"""Get all overdue tasks"""
|
63
|
+
now = datetime.now()
|
64
|
+
return self.session.query(Task).filter(
|
65
|
+
and_(
|
66
|
+
Task.status.in_(['pending', 'in_progress']),
|
67
|
+
Task.due_date < now
|
68
|
+
)
|
69
|
+
).order_by(Task.priority).all()
|
70
|
+
|
71
|
+
def update_task(self, task_id, **kwargs):
|
72
|
+
"""Update task fields"""
|
73
|
+
task = self.get_task(task_id)
|
74
|
+
if task:
|
75
|
+
for key, value in kwargs.items():
|
76
|
+
if hasattr(task, key):
|
77
|
+
setattr(task, key, value)
|
78
|
+
self.session.commit()
|
79
|
+
return task
|
80
|
+
|
81
|
+
def complete_task(self, task_id, actual_hours=None):
|
82
|
+
"""Mark a task as completed"""
|
83
|
+
task = self.get_task(task_id)
|
84
|
+
if task:
|
85
|
+
task.status = 'completed'
|
86
|
+
task.completed_at = datetime.now()
|
87
|
+
if actual_hours:
|
88
|
+
task.actual_hours = actual_hours
|
89
|
+
self.session.commit()
|
90
|
+
return task
|
91
|
+
|
92
|
+
def block_task(self, task_id, reason=None):
|
93
|
+
"""Mark a task as blocked"""
|
94
|
+
task = self.get_task(task_id)
|
95
|
+
if task:
|
96
|
+
task.status = 'blocked'
|
97
|
+
if reason:
|
98
|
+
task.notes = f"{task.notes or ''}\n[BLOCKED] {reason}"
|
99
|
+
self.session.commit()
|
100
|
+
return task
|
101
|
+
|
102
|
+
def delete_task(self, task_id):
|
103
|
+
"""Delete a task"""
|
104
|
+
task = self.get_task(task_id)
|
105
|
+
if task:
|
106
|
+
self.session.delete(task)
|
107
|
+
self.session.commit()
|
108
|
+
return True
|
109
|
+
return False
|
110
|
+
|
111
|
+
def get_tasks_for_date_range(self, start_date, end_date):
|
112
|
+
"""Get all tasks within a date range"""
|
113
|
+
return self.session.query(Task).filter(
|
114
|
+
and_(
|
115
|
+
Task.due_date >= start_date,
|
116
|
+
Task.due_date <= end_date
|
117
|
+
)
|
118
|
+
).order_by(Task.due_date, Task.priority).all()
|
119
|
+
|
120
|
+
def get_daily_summary(self, date_obj=None):
|
121
|
+
"""Get summary of tasks for a specific day"""
|
122
|
+
if date_obj is None:
|
123
|
+
date_obj = datetime.now()
|
124
|
+
|
125
|
+
if isinstance(date_obj, date) and not isinstance(date_obj, datetime):
|
126
|
+
date_obj = datetime.combine(date_obj, datetime.min.time())
|
127
|
+
|
128
|
+
day_start = date_obj.replace(hour=0, minute=0, second=0, microsecond=0)
|
129
|
+
day_end = day_start + timedelta(days=1)
|
130
|
+
|
131
|
+
# Get tasks due on this day
|
132
|
+
tasks_due = self.session.query(Task).filter(
|
133
|
+
and_(
|
134
|
+
Task.due_date >= day_start,
|
135
|
+
Task.due_date < day_end
|
136
|
+
)
|
137
|
+
).all()
|
138
|
+
|
139
|
+
# Get tasks completed on this day
|
140
|
+
tasks_completed = self.session.query(Task).filter(
|
141
|
+
and_(
|
142
|
+
Task.completed_at >= day_start,
|
143
|
+
Task.completed_at < day_end
|
144
|
+
)
|
145
|
+
).all()
|
146
|
+
|
147
|
+
return {
|
148
|
+
'date': date_obj.strftime('%Y-%m-%d'),
|
149
|
+
'tasks_due': len(tasks_due),
|
150
|
+
'tasks_completed': len(tasks_completed),
|
151
|
+
'completion_rate': len(tasks_completed) / len(tasks_due) if tasks_due else 0,
|
152
|
+
'completed_tasks': [t.to_dict() for t in tasks_completed],
|
153
|
+
'pending_tasks': [t.to_dict() for t in tasks_due if t.status != 'completed']
|
154
|
+
}
|
155
|
+
|
156
|
+
def get_yesterday_summary(self):
|
157
|
+
"""Get summary for yesterday"""
|
158
|
+
yesterday = datetime.now() - timedelta(days=1)
|
159
|
+
return self.get_daily_summary(yesterday)
|
160
|
+
|
161
|
+
def create_daily_log(self, date, tasks_completed, tasks_planned,
|
162
|
+
wins=None, blockers=None, learnings=None,
|
163
|
+
energy_level=None, mood=None, notes=None):
|
164
|
+
"""Create or update daily log"""
|
165
|
+
# Check if log already exists
|
166
|
+
existing_log = self.session.query(DailyLog).filter(
|
167
|
+
DailyLog.date == date.replace(hour=0, minute=0, second=0, microsecond=0)
|
168
|
+
).first()
|
169
|
+
|
170
|
+
completion_rate = tasks_completed / tasks_planned if tasks_planned > 0 else 0
|
171
|
+
|
172
|
+
if existing_log:
|
173
|
+
existing_log.tasks_completed = tasks_completed
|
174
|
+
existing_log.tasks_planned = tasks_planned
|
175
|
+
existing_log.completion_rate = completion_rate
|
176
|
+
existing_log.wins = wins
|
177
|
+
existing_log.blockers = blockers
|
178
|
+
existing_log.learnings = learnings
|
179
|
+
existing_log.energy_level = energy_level
|
180
|
+
existing_log.mood = mood
|
181
|
+
existing_log.notes = notes
|
182
|
+
log = existing_log
|
183
|
+
else:
|
184
|
+
log = DailyLog(
|
185
|
+
date=date.replace(hour=0, minute=0, second=0, microsecond=0),
|
186
|
+
tasks_completed=tasks_completed,
|
187
|
+
tasks_planned=tasks_planned,
|
188
|
+
completion_rate=completion_rate,
|
189
|
+
wins=wins,
|
190
|
+
blockers=blockers,
|
191
|
+
learnings=learnings,
|
192
|
+
energy_level=energy_level,
|
193
|
+
mood=mood,
|
194
|
+
notes=notes
|
195
|
+
)
|
196
|
+
self.session.add(log)
|
197
|
+
|
198
|
+
self.session.commit()
|
199
|
+
return log
|
200
|
+
|
201
|
+
def get_weekly_stats(self, start_date=None):
|
202
|
+
"""Get statistics for the past week"""
|
203
|
+
if start_date is None:
|
204
|
+
start_date = datetime.now() - timedelta(days=7)
|
205
|
+
|
206
|
+
end_date = datetime.now()
|
207
|
+
|
208
|
+
logs = self.session.query(DailyLog).filter(
|
209
|
+
and_(
|
210
|
+
DailyLog.date >= start_date,
|
211
|
+
DailyLog.date <= end_date
|
212
|
+
)
|
213
|
+
).order_by(DailyLog.date).all()
|
214
|
+
|
215
|
+
if not logs:
|
216
|
+
return {
|
217
|
+
'total_tasks_completed': 0,
|
218
|
+
'total_tasks_planned': 0,
|
219
|
+
'average_completion_rate': 0,
|
220
|
+
'days_logged': 0
|
221
|
+
}
|
222
|
+
|
223
|
+
total_completed = sum(log.tasks_completed for log in logs)
|
224
|
+
total_planned = sum(log.tasks_planned for log in logs)
|
225
|
+
avg_completion = sum(log.completion_rate for log in logs if log.completion_rate) / len(logs)
|
226
|
+
|
227
|
+
return {
|
228
|
+
'total_tasks_completed': total_completed,
|
229
|
+
'total_tasks_planned': total_planned,
|
230
|
+
'average_completion_rate': avg_completion,
|
231
|
+
'days_logged': len(logs),
|
232
|
+
'logs': [log.to_dict() for log in logs]
|
233
|
+
}
|
234
|
+
|
235
|
+
def get_task_velocity(self, days=30):
|
236
|
+
"""Calculate average tasks completed per day over a period"""
|
237
|
+
start_date = datetime.now() - timedelta(days=days)
|
238
|
+
|
239
|
+
logs = self.session.query(DailyLog).filter(
|
240
|
+
DailyLog.date >= start_date
|
241
|
+
).all()
|
242
|
+
|
243
|
+
if not logs:
|
244
|
+
return 0
|
245
|
+
|
246
|
+
total_completed = sum(log.tasks_completed for log in logs)
|
247
|
+
return total_completed / len(logs) if logs else 0
|
248
|
+
|
249
|
+
def close(self):
|
250
|
+
"""Close the database session"""
|
251
|
+
self.session.close()
|
@@ -0,0 +1,471 @@
|
|
1
|
+
Metadata-Version: 2.4
|
2
|
+
Name: bizy-ai
|
3
|
+
Version: 1.0.0
|
4
|
+
Summary: AI-powered business planning and execution agent
|
5
|
+
Author: Reid Chatham
|
6
|
+
License: MIT
|
7
|
+
Project-URL: Homepage, https://github.com/reidchatham/bizy-ai
|
8
|
+
Project-URL: Documentation, https://github.com/reidchatham/bizy-ai#readme
|
9
|
+
Project-URL: Repository, https://github.com/reidchatham/bizy-ai
|
10
|
+
Project-URL: Issues, https://github.com/reidchatham/bizy-ai/issues
|
11
|
+
Keywords: ai,business,planning,productivity,cli,agent
|
12
|
+
Classifier: Development Status :: 4 - Beta
|
13
|
+
Classifier: Intended Audience :: Developers
|
14
|
+
Classifier: Intended Audience :: End Users/Desktop
|
15
|
+
Classifier: Topic :: Office/Business
|
16
|
+
Classifier: Topic :: Office/Business :: Scheduling
|
17
|
+
Classifier: License :: OSI Approved :: MIT License
|
18
|
+
Classifier: Programming Language :: Python :: 3
|
19
|
+
Classifier: Programming Language :: Python :: 3.8
|
20
|
+
Classifier: Programming Language :: Python :: 3.9
|
21
|
+
Classifier: Programming Language :: Python :: 3.10
|
22
|
+
Classifier: Programming Language :: Python :: 3.11
|
23
|
+
Classifier: Programming Language :: Python :: 3.12
|
24
|
+
Classifier: Programming Language :: Python :: 3.13
|
25
|
+
Requires-Python: >=3.8
|
26
|
+
Description-Content-Type: text/markdown
|
27
|
+
License-File: LICENSE
|
28
|
+
Requires-Dist: anthropic>=0.18.0
|
29
|
+
Requires-Dist: schedule>=1.2.0
|
30
|
+
Requires-Dist: python-dotenv>=1.0.0
|
31
|
+
Requires-Dist: pyyaml>=6.0
|
32
|
+
Requires-Dist: sqlalchemy>=2.0.0
|
33
|
+
Requires-Dist: requests>=2.31.0
|
34
|
+
Requires-Dist: beautifulsoup4>=4.12.0
|
35
|
+
Requires-Dist: pandas>=2.0.0
|
36
|
+
Requires-Dist: rich>=13.0.0
|
37
|
+
Requires-Dist: python-dateutil>=2.8.2
|
38
|
+
Requires-Dist: click>=8.1.0
|
39
|
+
Requires-Dist: jinja2>=3.1.2
|
40
|
+
Dynamic: license-file
|
41
|
+
Dynamic: requires-python
|
42
|
+
|
43
|
+
# Business Agent - AI-Powered Daily Business Execution Assistant
|
44
|
+
|
45
|
+
An autonomous AI agent that runs daily to help you execute your business plan, manage tasks, conduct research, and stay on track toward your goals.
|
46
|
+
|
47
|
+
## 🎯 Current Status: Phase 1 Complete ✅
|
48
|
+
|
49
|
+
**Local Python MVP** with full AI-powered features is ready to use!
|
50
|
+
|
51
|
+
---
|
52
|
+
|
53
|
+
## Quick Start
|
54
|
+
|
55
|
+
### Installation
|
56
|
+
|
57
|
+
```bash
|
58
|
+
# Install globally via pip
|
59
|
+
pip install business-agent
|
60
|
+
|
61
|
+
# Set up your API key
|
62
|
+
mkdir -p ~/.business-agent
|
63
|
+
echo "ANTHROPIC_API_KEY=your-key-here" > ~/.business-agent/.env
|
64
|
+
|
65
|
+
# Initialize database
|
66
|
+
python -c "from agent.models import init_database; init_database()"
|
67
|
+
|
68
|
+
# Use the CLI
|
69
|
+
bizy task list
|
70
|
+
bizy goal list
|
71
|
+
```
|
72
|
+
|
73
|
+
### Development Setup
|
74
|
+
|
75
|
+
```bash
|
76
|
+
# Clone the repository
|
77
|
+
git clone https://github.com/reidchatham/business-agent.git
|
78
|
+
cd business-agent
|
79
|
+
|
80
|
+
# Install in editable mode
|
81
|
+
pip install -e .
|
82
|
+
|
83
|
+
# Run setup script
|
84
|
+
./setup.sh
|
85
|
+
```
|
86
|
+
|
87
|
+
See **[INSTALL.md](INSTALL.md)** for detailed installation options.
|
88
|
+
|
89
|
+
---
|
90
|
+
|
91
|
+
## Features (Phase 1)
|
92
|
+
|
93
|
+
✅ **AI-Powered Goal Breakdown** - Claude breaks big goals into 5-10 actionable tasks
|
94
|
+
✅ **Daily Morning Briefings** - Personalized insights and prioritized tasks
|
95
|
+
✅ **Evening Reviews** - Reflect with AI analysis
|
96
|
+
✅ **Weekly Strategic Reports** - Comprehensive progress analysis
|
97
|
+
✅ **Research Agent** - Market research and competitive intelligence
|
98
|
+
✅ **Task Management** - Priorities, dependencies, progress tracking
|
99
|
+
✅ **CLI Tool** - Quick command-line interactions
|
100
|
+
✅ **Automated Scheduling** - Runs briefings/reviews automatically
|
101
|
+
|
102
|
+
---
|
103
|
+
|
104
|
+
## 📈 Development Roadmap
|
105
|
+
|
106
|
+
The project is designed to evolve through 4 phases:
|
107
|
+
|
108
|
+
### Phase 2: Enhanced Python (Weeks 4-6) 🔜
|
109
|
+
- Live CLI dashboard with real-time updates
|
110
|
+
- Google Calendar integration
|
111
|
+
- Email integration
|
112
|
+
- Velocity-based predictions
|
113
|
+
- Advanced analytics with charts
|
114
|
+
- PDF/CSV exports
|
115
|
+
|
116
|
+
### Phase 3: Web Interface (Weeks 7-10)
|
117
|
+
- FastAPI backend
|
118
|
+
- React + TypeScript frontend
|
119
|
+
- PostgreSQL database
|
120
|
+
- Real-time WebSocket updates
|
121
|
+
- Multi-device access
|
122
|
+
- User authentication
|
123
|
+
|
124
|
+
### Phase 4: Production & Scale (Weeks 11-14)
|
125
|
+
- Cloud deployment (AWS/Railway)
|
126
|
+
- Mobile apps (PWA/React Native)
|
127
|
+
- Team collaboration
|
128
|
+
- Payment integration (Stripe)
|
129
|
+
- Integration marketplace
|
130
|
+
- Advanced analytics
|
131
|
+
|
132
|
+
**See [ROADMAP.md](ROADMAP.md) for complete migration plan and technical details.**
|
133
|
+
|
134
|
+
---
|
135
|
+
|
136
|
+
## Project Structure
|
137
|
+
|
138
|
+
```
|
139
|
+
business-agent/
|
140
|
+
├── agent/ # Core modules
|
141
|
+
│ ├── core.py # AI agent (briefings, reviews)
|
142
|
+
│ ├── models.py # Database schema
|
143
|
+
│ ├── tasks.py # Task management
|
144
|
+
│ ├── planner.py # Goal planning & AI breakdown
|
145
|
+
│ └── research.py # Research & intelligence
|
146
|
+
│
|
147
|
+
├── scripts/ # Automation scripts
|
148
|
+
│ ├── init_db.py # Database setup
|
149
|
+
│ ├── morning_brief.py # Morning briefing
|
150
|
+
│ ├── evening_review.py # Evening review
|
151
|
+
│ ├── weekly_review.py # Weekly report
|
152
|
+
│ └── agent_cli.py # CLI tool
|
153
|
+
│
|
154
|
+
├── templates/ # Configuration
|
155
|
+
│ └── business_plan_template.yaml
|
156
|
+
│
|
157
|
+
├── main.py # Scheduler daemon
|
158
|
+
├── requirements.txt # Python dependencies
|
159
|
+
├── setup.sh # Automated setup
|
160
|
+
│
|
161
|
+
└── Documentation
|
162
|
+
├── README.md # This file
|
163
|
+
├── QUICKSTART.md # 5-minute quick start
|
164
|
+
├── ROADMAP.md # Complete development roadmap
|
165
|
+
├── GETTING_STARTED.md # Development guide
|
166
|
+
└── PROJECT_COMPLETE.md # Setup summary
|
167
|
+
```
|
168
|
+
|
169
|
+
---
|
170
|
+
|
171
|
+
## Essential Commands
|
172
|
+
|
173
|
+
### Daily Use
|
174
|
+
```bash
|
175
|
+
# Morning
|
176
|
+
python scripts/morning_brief.py
|
177
|
+
|
178
|
+
# Complete a task
|
179
|
+
python scripts/agent_cli.py task complete 5
|
180
|
+
|
181
|
+
# Evening
|
182
|
+
python scripts/evening_review.py
|
183
|
+
```
|
184
|
+
|
185
|
+
### Task Management
|
186
|
+
```bash
|
187
|
+
# Add task
|
188
|
+
python scripts/agent_cli.py task add "Task title" -p 1 -h 3
|
189
|
+
|
190
|
+
# List tasks
|
191
|
+
python scripts/agent_cli.py task list
|
192
|
+
|
193
|
+
# Complete task
|
194
|
+
python scripts/agent_cli.py task complete <ID>
|
195
|
+
```
|
196
|
+
|
197
|
+
### Goal Management
|
198
|
+
```bash
|
199
|
+
# Add goal
|
200
|
+
python scripts/agent_cli.py goal add "Goal title" -h quarterly -t 2025-12-31
|
201
|
+
|
202
|
+
# List goals
|
203
|
+
python scripts/agent_cli.py goal list
|
204
|
+
|
205
|
+
# AI breakdown (creates tasks automatically)
|
206
|
+
python scripts/agent_cli.py goal breakdown <ID>
|
207
|
+
```
|
208
|
+
|
209
|
+
### Research
|
210
|
+
```bash
|
211
|
+
# Research topic
|
212
|
+
python scripts/agent_cli.py research topic "market trends"
|
213
|
+
|
214
|
+
# Competitor analysis
|
215
|
+
python scripts/agent_cli.py research competitors "domain" "offering"
|
216
|
+
```
|
217
|
+
|
218
|
+
### Automation
|
219
|
+
```bash
|
220
|
+
# Start scheduler (runs morning/evening/weekly automatically)
|
221
|
+
python main.py
|
222
|
+
```
|
223
|
+
|
224
|
+
---
|
225
|
+
|
226
|
+
## Technology Stack
|
227
|
+
|
228
|
+
### Phase 1 (Current)
|
229
|
+
- **Python 3.8+**
|
230
|
+
- **Claude (Anthropic API)** - AI intelligence
|
231
|
+
- **SQLAlchemy + SQLite** - Database
|
232
|
+
- **Rich** - Beautiful terminal UI
|
233
|
+
- **Click** - CLI framework
|
234
|
+
- **Schedule** - Task automation
|
235
|
+
|
236
|
+
### Phase 2 (Planned)
|
237
|
+
- **Textual** - Advanced TUI
|
238
|
+
- **Google Calendar API** - Calendar sync
|
239
|
+
- **Gmail API** - Email integration
|
240
|
+
- **Plotext** - Terminal charts
|
241
|
+
- **ReportLab** - PDF generation
|
242
|
+
|
243
|
+
### Phase 3 (Planned)
|
244
|
+
- **FastAPI** - Backend framework
|
245
|
+
- **PostgreSQL** - Production database
|
246
|
+
- **React + TypeScript** - Frontend
|
247
|
+
- **TailwindCSS** - Styling
|
248
|
+
- **WebSockets** - Real-time updates
|
249
|
+
|
250
|
+
### Phase 4 (Planned)
|
251
|
+
- **AWS/Railway** - Cloud hosting
|
252
|
+
- **React Native/PWA** - Mobile apps
|
253
|
+
- **Stripe** - Payments
|
254
|
+
- **Redis** - Caching
|
255
|
+
- **Celery** - Background jobs
|
256
|
+
|
257
|
+
---
|
258
|
+
|
259
|
+
## Development with Claude Code
|
260
|
+
|
261
|
+
This project is configured for Claude Code development:
|
262
|
+
|
263
|
+
```bash
|
264
|
+
# The project includes:
|
265
|
+
.claude_code.json # Claude Code workspace config
|
266
|
+
GETTING_STARTED.md # Development guide
|
267
|
+
ROADMAP.md # Migration path details
|
268
|
+
```
|
269
|
+
|
270
|
+
Open this directory in Claude Code to start developing with AI assistance!
|
271
|
+
|
272
|
+
---
|
273
|
+
|
274
|
+
## Documentation
|
275
|
+
|
276
|
+
- **[QUICKSTART.md](QUICKSTART.md)** - Get started in 5 minutes
|
277
|
+
- **[ROADMAP.md](ROADMAP.md)** - Complete development roadmap with migration plans
|
278
|
+
- **[GETTING_STARTED.md](GETTING_STARTED.md)** - Development guide for Claude Code
|
279
|
+
- **[PROJECT_COMPLETE.md](PROJECT_COMPLETE.md)** - Setup summary and status
|
280
|
+
- **[templates/business_plan_template.yaml](templates/business_plan_template.yaml)** - Business plan with roadmap
|
281
|
+
|
282
|
+
---
|
283
|
+
|
284
|
+
## Key Benefits
|
285
|
+
|
286
|
+
✅ **Never forget important tasks** - AI breaks down goals automatically
|
287
|
+
✅ **Stay on track daily** - Morning briefings keep you focused
|
288
|
+
✅ **Learn from patterns** - Evening reviews capture insights
|
289
|
+
✅ **Make informed decisions** - Research agent gathers intelligence
|
290
|
+
✅ **Adapt your strategy** - Weekly reviews suggest improvements
|
291
|
+
✅ **Build momentum** - Daily habit creates consistent progress
|
292
|
+
|
293
|
+
---
|
294
|
+
|
295
|
+
## Examples
|
296
|
+
|
297
|
+
### Create Your First Goal
|
298
|
+
```bash
|
299
|
+
# 1. Create a quarterly goal
|
300
|
+
python scripts/agent_cli.py goal add "Launch MVP Product" \
|
301
|
+
-h quarterly \
|
302
|
+
-t 2025-06-30
|
303
|
+
|
304
|
+
# 2. Let AI break it down into tasks
|
305
|
+
python scripts/agent_cli.py goal breakdown 1
|
306
|
+
|
307
|
+
# Output: Claude creates 5-10 actionable tasks like:
|
308
|
+
# - Design database schema (3h, priority 1)
|
309
|
+
# - Implement user authentication (6h, priority 1)
|
310
|
+
# - Build frontend UI (16h, priority 2)
|
311
|
+
# - etc.
|
312
|
+
|
313
|
+
# 3. View your tasks
|
314
|
+
python scripts/agent_cli.py task list
|
315
|
+
|
316
|
+
# 4. Get your morning briefing
|
317
|
+
python scripts/morning_brief.py
|
318
|
+
```
|
319
|
+
|
320
|
+
---
|
321
|
+
|
322
|
+
## How It Works
|
323
|
+
|
324
|
+
```
|
325
|
+
1. YOU define goals
|
326
|
+
↓
|
327
|
+
2. AI breaks down goals into tasks
|
328
|
+
↓
|
329
|
+
3. Morning briefing prioritizes today's tasks
|
330
|
+
↓
|
331
|
+
4. YOU work on tasks throughout the day
|
332
|
+
↓
|
333
|
+
5. Evening review captures learnings
|
334
|
+
↓
|
335
|
+
6. AI analyzes patterns and suggests improvements
|
336
|
+
↓
|
337
|
+
7. Weekly review provides strategic insights
|
338
|
+
↓
|
339
|
+
8. Cycle repeats, continuously improving
|
340
|
+
```
|
341
|
+
|
342
|
+
---
|
343
|
+
|
344
|
+
## Troubleshooting
|
345
|
+
|
346
|
+
### API Key Issues
|
347
|
+
```bash
|
348
|
+
# Check .env file exists
|
349
|
+
ls -la .env
|
350
|
+
|
351
|
+
# Verify key is set
|
352
|
+
cat .env | grep ANTHROPIC_API_KEY
|
353
|
+
```
|
354
|
+
|
355
|
+
### Virtual Environment
|
356
|
+
```bash
|
357
|
+
# Always activate first
|
358
|
+
source venv/bin/activate
|
359
|
+
|
360
|
+
# Check Python version
|
361
|
+
python --version # Should be 3.8+
|
362
|
+
```
|
363
|
+
|
364
|
+
### Database Issues
|
365
|
+
```bash
|
366
|
+
# Reset database
|
367
|
+
rm data/tasks.db
|
368
|
+
python scripts/init_db.py
|
369
|
+
```
|
370
|
+
|
371
|
+
### Permission Issues
|
372
|
+
```bash
|
373
|
+
# Make scripts executable
|
374
|
+
chmod +x setup.sh main.py scripts/*.py
|
375
|
+
```
|
376
|
+
|
377
|
+
---
|
378
|
+
|
379
|
+
## Cost Estimate
|
380
|
+
|
381
|
+
Based on typical usage with Claude Sonnet:
|
382
|
+
|
383
|
+
- Morning briefing: ~1,000 tokens (~$0.003)
|
384
|
+
- Evening review: ~1,500 tokens (~$0.005)
|
385
|
+
- Weekly review: ~3,000 tokens (~$0.009)
|
386
|
+
- Goal breakdown: ~2,000 tokens per goal (~$0.006)
|
387
|
+
- Research: ~3,000-5,000 tokens per query (~$0.009-0.015)
|
388
|
+
|
389
|
+
**Monthly estimate**: $5-15 depending on usage
|
390
|
+
|
391
|
+
---
|
392
|
+
|
393
|
+
## Contributing to This Project
|
394
|
+
|
395
|
+
This is a personal business tool, but if you're building something similar:
|
396
|
+
|
397
|
+
1. Fork the repository
|
398
|
+
2. Check the [ROADMAP.md](ROADMAP.md) for upcoming features
|
399
|
+
3. Build Phase 2 features
|
400
|
+
4. Share your improvements!
|
401
|
+
|
402
|
+
---
|
403
|
+
|
404
|
+
## Roadmap Highlights
|
405
|
+
|
406
|
+
### 🔜 Next Up: Phase 2 (Weeks 4-6)
|
407
|
+
|
408
|
+
**Top priorities:**
|
409
|
+
1. **Live Dashboard** - Real-time task updates in terminal
|
410
|
+
2. **Calendar Integration** - Sync with Google Calendar
|
411
|
+
3. **Velocity Predictions** - AI predicts completion dates
|
412
|
+
4. **Email Integration** - Daily briefings via email
|
413
|
+
|
414
|
+
**Timeline:** 3 weeks
|
415
|
+
**Start Date:** This week!
|
416
|
+
|
417
|
+
See [ROADMAP.md](ROADMAP.md) for detailed implementation plans.
|
418
|
+
|
419
|
+
---
|
420
|
+
|
421
|
+
## Requirements
|
422
|
+
|
423
|
+
- Python 3.8 or higher
|
424
|
+
- Anthropic API access (Claude)
|
425
|
+
- ~50MB disk space
|
426
|
+
- Works on: macOS, Linux, Windows
|
427
|
+
|
428
|
+
---
|
429
|
+
|
430
|
+
## License
|
431
|
+
|
432
|
+
MIT License - feel free to use and modify for your business.
|
433
|
+
|
434
|
+
---
|
435
|
+
|
436
|
+
## Support
|
437
|
+
|
438
|
+
- 📖 **Documentation**: Check the docs in this directory
|
439
|
+
- 🐛 **Issues**: Check error logs in `data/logs/`
|
440
|
+
- 💬 **Questions**: Review `GETTING_STARTED.md` and `ROADMAP.md`
|
441
|
+
- 🚀 **Updates**: Follow the roadmap for upcoming features
|
442
|
+
|
443
|
+
---
|
444
|
+
|
445
|
+
## Next Steps
|
446
|
+
|
447
|
+
### If You're Just Getting Started:
|
448
|
+
1. Run `./setup.sh` to set up the environment
|
449
|
+
2. Add your Anthropic API key to `.env`
|
450
|
+
3. Run `python scripts/morning_brief.py` to test
|
451
|
+
4. Create your first goal and let AI break it down
|
452
|
+
5. Start using daily for one week
|
453
|
+
|
454
|
+
### If You Want to Develop:
|
455
|
+
1. Review [ROADMAP.md](ROADMAP.md) for migration path
|
456
|
+
2. Check [GETTING_STARTED.md](GETTING_STARTED.md) for dev guide
|
457
|
+
3. Open in Claude Code for AI-assisted development
|
458
|
+
4. Start building Phase 2 features
|
459
|
+
5. Test with beta users
|
460
|
+
|
461
|
+
### If You Want to Understand the Vision:
|
462
|
+
1. Read [templates/business_plan_template.yaml](templates/business_plan_template.yaml)
|
463
|
+
2. Review the 4-phase roadmap
|
464
|
+
3. Understand the migration from Python → Web → Production
|
465
|
+
4. See how each phase builds on the previous
|
466
|
+
|
467
|
+
---
|
468
|
+
|
469
|
+
**Ready to execute your business plan? Let's go! 🚀**
|
470
|
+
|
471
|
+
Built with ❤️ using Claude (Anthropic)
|