This project learns from your personal activity log (tasks + durations + outcomes + optional energy) and recommends what to focus on next. It runs fully offline on your machine and adapts as you add more logs.
- Reduces decision fatigue by turning "what should I do next?" into a concrete top-k suggestion list.
- Optimizes work sessions by using your historical patterns (time-of-day, day-of-week, durations, outcomes, energy) to recommend categories you actually complete.
- Detects low-productivity periods by summarizing when interruptions spike and energy tends to be low.
- Adapts over time: retrain locally whenever you add new logs.
data/ # CSV logs + schema docs
frontend/ # local dashboard (Streamlit)
model/ # PyTorch sequence model (GRU)
training/ # training pipeline (train/val, save best model)
inference/ # load model and predict next category
automation/ # daily script: recommend + optional logging
utils/ # parsing, validation, features, datasets, insights
artifacts/ # saved model + metadata
See data/README.md.
- Create a virtual environment (recommended):
python -m venv .venv
.\.venv\Scripts\Activate.ps1- Install dependencies:
pip install -r requirements.txt- Create your log:
- Start from
data/activity_log_example.csvand copy it todata/activity_log.csv, then edit/append rows.
- Train:
python -m training.train --data data/activity_log.csv --out artifacts/productivity_model.pt- Recommend the next task category (top-k):
python -m inference.predict_next --data data/activity_log.csv --model artifacts/productivity_model.pt --k 5- Daily workflow (interactive):
python -m automation.daily_recommend --data data/activity_log.csv --model artifacts/productivity_model.pt --k 5 --log-recommendation- Frontend (local dashboard):
streamlit run frontend/app.pyNotes:
.streamlit/config.tomldisables Streamlit usage stats and binds the server to127.0.0.1(local-only).- Optional shortcut:
.\frontend\run_frontend.ps1
- Log what you just did (or let the daily script append it).
- Run the daily recommender to get the next focus suggestion.
- Retrain weekly or whenever you feel recommendations drift:
python -m training.train ...
- Predict next task name as a second head (multi-task learning).
- Add a lightweight calendar-free context: location tag, "deep work vs admin" mode, or "meeting-heavy day" flag.
- Add a fatigue model: predict energy next and recommend breaks.
- Add a bandit layer: learn from whether you accept/ignore recommendations.
- Add a simple local UI (e.g., Textual/Tkinter) for faster daily input.