DRAFT - IN DEVELOPMENT PROJECT
WIILD - Product Requirements Document (PRD)

WIILD: Linking Physiology, Habits, and Stressors
It is very difficult for me to think about my performance in the context of a single application or data source. My recovery/physiological data lives in one app (Whoop), my habits live in another (Striide), and my stressors (meetings, emails, calendar noise) sit in Outlook. Each is useful in isolation, but none of them tell the full story or help me derive insights. WIILD is my attempt to connect the dots.
My Thesis
The research is relatively clear: journaling helps focus intentions, sleep drives cognitive performance, and meetings/excess activities drain recovery. But no single factor exists in isolation. My bet is that by looking at my data, together, I can find the levers that actually matter for how I show up every day and better manage my time around them.
​
WIILD Requirement Document:
1. Goals
-
Holistic View (Single-Pane-of-Glass):
-
A single place where recovery, workload, and plans sit side by side.
-
-
Intelligent Insight:
-
Move from “what happened” to “what drove it.”
-
-
Predictive Analytics:
-
See likelihood of completing upcoming slate of tasks based on planned schedule (Outlook) and physiological factors (Recovery, Sleep performance)
-
-
Reflection & Reinforcement:
-
Connect the evening journal (mood, stress, accomplishment) back to the data: did I feel stressed because I overscheduled? Did clear intentions lead to higher completion?
-
-
Ownership:
-
All data in my Blob Storage, with Azure Functions doing the lifting at near-zero cost. By having all my data (Striide, Whoop, Outlook) into my own Blob Storage account, I can ask new questions, test new models, and discover links as I get more personal data
-
2. User Stories:
-
Morning Planning
-
I want to see today’s recovery score, my meeting load, and my planned tasks in one view, so I can right-size my day
-
I want a confidence score for how likely I am to finish my plan, with a clear explanation (“Sleep short; 4h of meetings”), so I can adjust expectations and reschedule non-critical tasks
-
-
Midday Course Correction
-
I want to know when I’m behind on planned minutes or my meeting load spikes unexpectedly, so I can rescope or defer
-
I want a quick glance at minutes completed vs. minutes planned, so I know if I’m on track and have enough open time to complete my remaining tasks
-
-
Evening Reflection
-
I want to log mood, stress, and intention outcome and see how that lines up with today’s recovery and workload, so I can learn from it
-
I want WIILD to highlight the top drivers of the day (e.g., “<6h sleep + heavy meetings leads to -22% efficiency”), so I know what mattered
-
-
Insights & Analysis
-
I want to see which habits or factors statistically move my efficiency and recovery, so I know where to focus and what to avoid
-
I want to play “what-if” scenarios (more sleep, fewer meetings, less backlog) and see how they would change my likelihood of completing tomorrow’s plan
-
3. Architecture (Target State)
-
Data Sources:
-
WHOOP API:
-
Recovery, HRV, RHR, Sleep (minutes + stages), Strain
-
-
Striide DB:
-
Tasks, TaskCompletions, Habits, Journals
-
-
Outlook Graph API:
-
Events (duration, type, category, derived metrics like MeetingHours and FocusTime)
-
-
-
Ingestion Layer:
-
Azure Functions (Consumption plan) run on daily timers:
-
whoop_extract_fn: pulls daily recovery/sleep/strain
-
graph_extract_fn: pulls calendar events, hashes subjects, keeps only useful metadata
-
striide_export_fn: dumps tasks/journals to Blob
-
-
-
Storage:
-
Azure Blob Storage, partitioned by date:
-
raw/{whoop|graph|striide}/YYYY/MM/DD/*.jsonl
-
curated/wiild_daily/{date}.parquet (merged fact table per day)
-
outputs/insights/{date}.json (precomputed insights for UI)
-
-
Azure Key Vault
-
Credentials (WHOOP + Graph tokens).
-
-
-
Analytics Layer:
-
wiild_transform_fn: merges daily facts.
-
wiild_analytics_fn: computes today’s predictions, writes insights JSON.
-
wiild_automl_fn: weekly AutoML retrains models, writes new artifacts.
-
Azure ML (AutoML) for feature discovery & prediction
-
Targets: WeightedEfficiency, RecoveryScore
-
-
Azure OpenAI:
-
Generating one-sentence summaries and action prompts (minimal token usage)
-
-
​
-
Frontend (Wiild Page):
-
Daily header cards: Recovery, Sleep, Workload, Plan
-
Insights strip: Completion likelihood, top driver, action prompt
-
Explorer panels: Driver ranking (bar chart), Sleep vs Efficiency (trend)
-
What-If simulator: sliders to test scenarios
-
Reflection widget: mood, stress, notes
-
4. Data Model (Daily Fact)
​
-
Key fields captured per day:
-
WHOOP:
-
RecoveryScore, HRV, RHR, SleepMinutes, SleepPerf, DeepMinutes, REMMinutes, Strain
-
-
Tasks/Habits:
-
PlannedMinutes, CompletedMinutes, BacklogMinutes, WeightedEfficiency, TasksCompleted
-
-
Journal:
-
Mood, Stress, IntentionOutcome, Notes, Alcohol (bool + tier), Exercise minutes
-
-
Outlook:
-
MeetingsCount, MeetingsHours, FocusBlocksHours, CommuteHours, FirstMeetingTime, LastMeetingTime
-
-
Derived:
-
CompletionLikelihood, TopDrivers, Recommendation
-
-
5. Limitations
-
Data Size:
-
Early models are fragile. I need 30–60 days of journaling before I trust any coefficients
-
-
Retraining:
-
Models should be refreshed every 30 days to adapt to new data and avoid overfitting
-
-
Personal Scope:
-
This is built only on my data. Patterns are personalized, not generalizable
-
-
Hidden Variables:
-
Things like diet, travel, or other stress sources aren’t fully captured
-
​
6. Non-Functional Requirements
-
Cost:
-
<$10/month with Functions (Consumption), Blob (MBs, not GBs), and lightweight AutoML.
-
-
Performance:
-
Insights JSON must be available by 6:30 AM daily
-
-
Security:
-
PII of others (e.g., other attendees on events) stripped from Graph events, secrets in Key Vault, no public Blob access.
-
-
Resilience:
-
Functions retry on API failures; data sync never halts the system
-
