🏃
FITBIT BRIEF
Weekly Health Summary — Sunday 8 AM IST
Every Sunday, fitbrief.py refreshes the Fitbit OAuth token, pulls steps, sleep, resting HR, and active minutes, then WhatsApps Puja (not Neo) with a friendly weekly recap.
A Real Conversation
Puja's phone — Sunday morning automatic brief
[Zion] 🏃 Weekly Fitbit Brief
━━━━━━━━━━━━━━━━━━━━━━
Steps this week: 52,340
(avg 7,477/day)
Sleep: avg 7h 12m (good)
Deep: 1h 8m / Light: 4h 32m
Resting HR: 68 bpm
Active minutes: 185
Calories burned: 14,200
🏆 Best day: Tuesday
(12,450 steps!)
8:00 AM ✓✓
Every Sunday 8 AM — auto
🔍 click to read full brief
PUJA
📱 Sunday morning brief
⏰
CRON SUN 8 AM
fitbrief.py
fitbrief.py
token refresh + pull
OAuth2 + REST
FITBIT WEB API
Activities + steps series
Sleep stages + score
Heart rate + zones
Active minutes rollup
📊
FORMAT
week vs week-1
emoji + insights
📡 Bridge
POST /api/send
→ Puja JID
← 🏃 Weekly recap delivered
Recipient note:
Puja's WhatsApp — not Neo
☁️ Oracle Cloud VM — weekly cron
Everything Inside Fitbit Brief
Weekly wellness is the sun — components radiate out
🏃
FITBIT
DATA
what we ingest
Fitbit Web API JSON
Steps + distance trends
Sleep stages + duration
HR zones + active minutes
7-day rolling window
AUTH
token lifecycle
OAuth2 authorization
fitbit_token.json cache
Auto refresh before pull
Scopes: activity+heartrate
Secrets on VM only
WEEKLY
cadence + compare
Sunday 8 AM IST cron
Trend vs last Sunday
Emoji-rich summary
Highlights anomalies
Non-blocking on API errors
RECIPIENT
who gets the ping
Puja's WhatsApp JID
Hard-coded routing OK
Not Neo's inbox
Privacy: health data
Bridge enforces TLS
KEY FILE
implementation
TheBoss/fitbrief.py
requests + pandas helpers
Cron entry Sunday 08:00
Logs + retry backoff
Ampere VM timezone IST
Tech Stack
Runtime Python 3 — weekly cron
Schedule Sunday 8:00 AM IST
API Fitbit Web API — OAuth2 + REST resources
Metrics Steps, sleep, resting HR, active minutes
Auth fitbit_token.json — refresh before each run
Recipient Puja's WhatsApp (not Neo)
Key File TheBoss/fitbrief.py