Complete automated progress tracking system for Duolingo with real-time analytics, simple reminders, and goal management.
🎯 Current Focus: French course (272 units) with 18-month completion goal
- 📊 Accurate Progress Tracking: Counts ALL learning activities (lessons, practice, stories, reviews)
- 🤖 Automated: Scrape-on-demand, with a simple morning reminder window
- 📱 Simple Notifications: Short Pushover reminders sent at fixed times (08:30–12:00)
- 📈 Goal Analytics: Track pace, burn rate, and completion projections
- 🔒 Privacy-First: All data stays local on your machine
Prerequisites: Python 3.8+, Firefox, geckodriver
git clone https://github.com/yourusername/owlgorithm.git
cd owlgorithm
python scripts/setup.py --all # Interactive setup wizard📋 For complete setup instructions, see Setup Guide
The setup guide includes:
- ✅ Platform-specific installation details
- ✅ Course configuration examples
- ✅ Automation setup (cron/Task Scheduler)
- ✅ Troubleshooting common issues
- Scrapes fresh data from duome.eu using headless Firefox
- Processes lesson data with professional-grade algorithms
- Calculates progress toward your completion goal
- Sends simple morning reminders independent of scraping
- Updates your progress dashboard
Owlgorithm uses an intelligent dual-mode tracking system that adapts to Duolingo's course structure changes:
- Variable lessons per unit (~31 average)
- Complex unit boundary detection using session timing patterns
- Historical accuracy for completed sections
- Fixed 7 lessons per unit (Duolingo's new structure)
- Known unit counts per section (255, 245, 180, 185)
- Simple lesson counting for accurate projections
Duolingo restructured their B1/B2 content (Sections 5-8) by splitting multi-lesson units into smaller single-lesson units. This 5x increase in unit count required a new tracking approach while preserving historical data integrity.
Transition Point: Lesson #89 (start of Section 5)
- Before: Complex tracking preserves accurate unit completion data
- After: Simplified tracking uses fixed ratios for reliable projections
Owlgorithm follows user-focused versioning:
- New versions are released when there's genuine value for users (new features, important fixes, easier setup)
- Check CHANGELOG.md for user-friendly release notes explaining what's new and why you'd want to update
- Semantic versioning: MAJOR.MINOR.PATCH based on impact to your workflow
- No forced cadence: Updates happen when they're worth your time, not on artificial schedules
Current Version: See VERSION file and CHANGELOG.md for latest improvements.
Notifications are intentionally simple and fixed-time:
- Sent at 08:30, every 30 minutes through 12:00 (08:30, 09:00, 09:30, 10:00, 10:30, 11:00, 11:30, 12:00)
- Content is a short reminder message (customize in
scripts/send_simple_notification.py)
- 📋 Documentation Index - Overview of all documentation
- 🚀 Setup Guide - Complete installation and configuration
- 🚨 Core Business Logic - System rules and constraints
- 🔧 Developer Guide - Development commands and workflow
- 📝 Changelog - Project history and version changes
- Read First: Core Business Logic contains immutable rules
- Follow Conventions: Use Conventional Commits
- Update Version: Bump version in
VERSIONfile for significant changes - Test Changes: Run
python scripts/daily_update.pyto verify functionality
# Examples
feat: add ntfy notification backend support
fix: improve Firefox automation reliability
docs: update setup guide with troubleshooting
chore: bump dependencies to latest versionsData-Driven Learning: Objective progress tracking reveals patterns that intuition might miss.
Automation First: Set it and forget it. Consistency beats perfection.
Privacy & Control: Your data stays yours. No cloud dependencies, no accounts required.
Gentle Motivation: Facts over guilt. Actionable insights, not judgmental pressure.
Licensed under the Apache License 2.0. See LICENSE for details.
🎯 Complete your language learning goals with automated progress tracking and smart analytics.