Time Tracking
Time tracking requirements and best practices for FLYPILOT projects.
Overview
All billable work must be tracked accurately. Time tracking ensures:
- Fair client billing
- Accurate project estimation
- Resource planning
- Team utilization insights
Systems by Organization
| Organization | System | Rounding | Workspace |
|---|---|---|---|
| FLYPILOT | Toggl | 15-minute | FLYPILOT |
| OMG Interactive | Toggl | 15-minute | OMG Interactive |
| Learned Media | Harvest | 6-minute (0.1 hour) | Learned Media |
Time Entry Requirements
Required Fields
Every time entry must include:
- Project: Correct client/project selected
- Task/Category: Type of work performed
- Description: Brief summary of work done
- Duration: Actual time worked
Description Format
[Ticket#] Brief description of work
Examples:
FLY-123 Implement user authentication form
FLY-456 Fix cart total calculation bug
FLY-789 Review PR and provide feedback
Minimum Description Quality
Good descriptions:
- "FLY-123 Add password reset email template and API endpoint"
- "FLY-456 Debug checkout flow, identify race condition in cart update"
- "Client meeting: Review Q1 roadmap and prioritize features"
Poor descriptions:
- "Development"
- "Working on stuff"
- "Meetings"
When to Track Time
Billable Activities
| Activity | Billable |
|---|---|
| Feature development | Yes |
| Bug fixes | Yes |
| Code review | Yes |
| Client meetings | Yes |
| Testing/QA | Yes |
| Documentation | Yes |
| Deployment | Yes |
| Client communication | Yes |
Non-Billable Activities
| Activity | Billable |
|---|---|
| Internal meetings | No |
| Training/learning | No |
| Administrative tasks | No |
| Tool setup | No |
| Personal breaks | No |
Toggl Usage
Desktop App
- Select workspace (FLYPILOT or OMG)
- Select project
- Start timer with description
- Stop when task complete
- Round to nearest 15 minutes
Keyboard Shortcuts
| Action | Mac | Windows |
|---|---|---|
| Start/Stop | Cmd + O | Ctrl + O |
| New entry | Cmd + N | Ctrl + N |
| Edit current | Cmd + E | Ctrl + E |
CLI Integration
# Start tracking
toggl start "FLY-123 Implement feature" -p "Client Project"
# Stop tracking
toggl stop
# Current status
toggl now
Harvest Usage
Rounding Rules
Harvest uses 0.1 hour (6-minute) increments:
| Minutes | Round To |
|---|---|
| 1-3 | 0.0 |
| 4-9 | 0.1 |
| 10-15 | 0.2 |
| 16-21 | 0.3 |
| ... | ... |
Entry Format
Task: Development
Notes: [LM-123] Implement contact form validation
Hours: 1.5
Weekly Requirements
Minimum Hours
- Full-time: 40 hours/week
- Part-time: As contracted
Entry Deadline
All time entries must be submitted by:
- Daily: End of each work day (preferred)
- Weekly: Friday 5pm (required)
Review Process
- Team lead reviews weekly entries
- Questions raised for unclear entries
- Corrections made before invoicing
- Entries locked after client approval
Common Issues
Forgot to Track
If you forget to track time:
- Review calendar for meeting times
- Check Git commits for development work
- Review Slack/email for communication time
- Estimate and add entry with note: "(estimated)"
Timer Left Running
If timer runs overnight:
- Stop the timer
- Estimate actual work time
- Adjust entry duration
- Add note if significant adjustment made
Wrong Project Selected
- Edit the entry
- Change to correct project
- Verify entry moved correctly
Reporting
Personal Dashboard
Review your time weekly:
| Metric | Target |
|---|---|
| Utilization | 75-85% billable |
| Entry quality | 100% with descriptions |
| Submission | 100% by deadline |
Project Reports
Access via Toggl/Harvest dashboards:
- Hours by project
- Hours by team member
- Budget vs actual
- Weekly trends
Automation
Git Commit Integration
Track time based on commits:
# In commit message, include time
git commit -m "FLY-123 Implement feature [2h]"
Calendar Integration
Sync calendar meetings to time tracker for automatic meeting time capture.
Data Sync Architecture
All time tracking data flows through Supabase as the central data lake.
Source Systems Supabase Consumers
-------------------------------------------------------------------
Harvest (LM time) --+
|--> UNIFIED DATA LAKE --> Dashboards
Toggl (OMG/FP time) --+ (source of truth) Reports
Analytics
Sync Commands
# Activate virtual environment first
source .venv/bin/activate
# Sync all departments (incremental by default)
python -m sync.cli sync --all
# Sync specific department
python -m sync.cli sync --department lm # Harvest
python -m sync.cli sync --department omg # Toggl
python -m sync.cli sync --department fp # Toggl
# Force full sync (disable incremental mode)
python -m sync.cli sync --all --force
Incremental Sync
Sync uses incremental mode by default to minimize API calls:
- Tasks and time entries fetch only records modified since
last_successful_sync_at - Timestamp tracked per source in
sync_statetable in Supabase
Automated Schedule (Mac Studio)
| Job | Schedule | Description |
|---|---|---|
| Quick Sync | Every 30 min, 9am-6pm, Mon-Fri | Incremental sync |
| Full Sync | Daily at 6am | Complete data refresh |
Start timer when you begin work, stop when you switch tasks. Small consistent tracking is easier than reconstructing your week.