Stage 3 of 7

Planning & PRD

This is where I turned my vision into a buildable plan — writing the requirements, user stories, success metrics, and a prioritised roadmap.

3.1 Product Requirements Document

PRD: Snug Tonight — Baby Sleep Clothing Guide

🌙 Snug Tonight PRD

A free mobile app (React Native/Expo) that tells sleep-training parents exactly how to dress their baby for the entire night, based on tonight's weather forecast and the child's age.

Author
Katlego Phokela
Version
V1.0
Last Updated
February 2026
Status
Shipped — V1 live on the App Store
Launch
Q1 2026 (approved on resubmission)
Stakeholders
PM, Design, Engineering

Background & Context

As a sleep-training parent, I face this dilemma every night: how do I dress my child for sleep when I won't enter the room again until morning? Room temperature fluctuates overnight (typically 2–5°C between 7pm and 3am), the dressing guidelines change depending on the child's age, and getting it wrong means either overheating (a SIDS risk factor) or a cold baby who wakes up and breaks weeks of sleep training.

Right now, parents like me check a weather app, Google a TOG chart, and try to do mental maths — all while managing a fussy baby at bedtime. The only dedicated product (Sleep Like Goldilocks) costs ~R700 and needs physical hardware. There's no free, digital, age-aware solution that recommends clothing for the entire night.

That's the gap I'm filling. Snug Tonight takes two inputs (child's age + room temperature or location) and instantly gives a specific, age-appropriate clothing recommendation based on the overnight temperature forecast and paediatric safety guidelines.

3.2 Goals & Non-Goals

Goals & Non-Goals

I needed to be clear about what I was building and what I was deliberately leaving out. Non-goals aren't failures — they're focus decisions. They tell engineers "don't build this yet" and show that I'm making intentional trade-offs.

✅ Goals (V1 Scope)

  • Provide specific clothing recommendations based on room temperature
  • Factor in overnight temperature forecast (dress for the coldest point)
  • Customise recommendations by 3 age bands (0–3mo, 3–12mo, 12+mo) in the recommendation engine
  • Support both manual temperature input and location-based weather
  • Show visual clothing illustrations with SVG diagrams (not just text)
  • Cite AAP/pediatric safety guidelines for trust
  • Dark mode for nighttime use
  • Deliver a recommendation in under 10 seconds
  • 5-step onboarding: Welcome, Location (skippable), Temperature Unit, Baby Stage + Name, Wardrobe Setup
  • 4-tab navigation: Tonight, Morning, Wardrobe, Settings
  • Morning log with star rating (sleep quality), outfit feedback (Too Cold / Just Right / Too Warm), wake-up counter, and optional notes
  • Insights dashboard showing average sleep rating, % just right, average wake-ups, and pattern detection
  • Digital wardrobe with categories: Bodysuits, Sleepsuits, Sleep Bags & Suits, Swaddles & Layers, Sleep Layers
  • Laundry tracking for wardrobe items
  • Substitute suggestions when preferred items aren't available
  • Premium pricing model: Free (1 child profile), Premium subscription for up to 10 child profiles

❌ Non-Goals (Not in V1)

  • Smart thermometer hardware integration
  • Cloud sync across devices (local storage only for V1)
  • Push notification alerts for temperature changes
  • E-commerce links or product shopping recommendations
  • Medical advice or replacing pediatrician consultation
  • Multi-language support (English-only for V1)
  • AI-powered parent chat (V2 feature)
  • Share button or social sharing
3.3 User Stories & Acceptance Criteria

User Stories

I wrote each feature as a user story — the same format I use at work. Each one describes what the user wants and why, and the acceptance criteria define exactly when it's "done." These are what I'd hand to an engineer to build from.

US-001 · Tonight’s Recommendation · Must Have
As a sleep-training parent, I want to select my child’s age and get a temperature reading (automatic or manual) so that I get a specific clothing recommendation for tonight.
Acceptance Criteria
  • Given I select my child’s age range (0–3mo, 3–12mo, 12+mo) and the app detects tonight’s temperature (via device location or city search) or I enter it manually, When the Tonight tab loads, Then I see a specific outfit recommendation with TOG rating, safety badge (Cold/Ideal), and a contextual safety tip
  • Temperature input supports both a slider and direct number entry, with a °C/°F toggle
  • When I enter a manual temperature, the app still shows the overnight forecast as context but uses my manual value as the primary input
  • Given the temperature is outside safe range (<16°C or >26°C), Then the app shows a safety warning before the clothing recommendation
  • The full flow from opening the app to seeing a result takes fewer than 3 taps and under 10 seconds
  • Each recommended item shows “Tap to add” if not yet in the wardrobe, allowing quick wardrobe building from the Tonight screen
US-002 · Overnight Forecast · Must Have
As a parent who can’t check the room overnight, I want the app to show me the forecasted overnight low temperature so that I dress my child for the coldest point, not just the current temperature.
Acceptance Criteria
  • Given I allow location access or enter my city, Then the app displays: current temperature with weather condition, tonight's forecasted low (e.g., "12AM – 6AM: 17° to 14°"), hourly forecast row, and location (e.g., "Sandton"). Pull down to refresh weather data.
  • The app clearly labels which temperature it used for the recommendation (e.g., “Based on tonight’s expected low of 14°C”)
  • Given a large temperature swing is expected (>5°C drop), Then the app flags this with a notice in the “Based on” section
US-003 · Age-Specific Guidance · Must Have
As a parent of a newborn, I want different clothing recommendations than a parent of a toddler so that the advice is safe and appropriate for my child’s age.
Acceptance Criteria
  • 0–3 month recommendations include swaddle options only (no loose blankets)
  • 3–12 month recommendations include sleep sacks / wearable blankets (no swaddles, no loose blankets)
  • 12+ month recommendations may include blankets, PJ sets, and sleep sacks
  • Each recommendation explains WHY that age group has different rules (e.g., “Swaddles end at ~3 months when baby can roll”)
US-004 · Visual Recommendation · Should Have
As a tired parent at bedtime, I want to see a visual illustration of what to dress your child in so that I can understand the recommendation at a glance without reading paragraphs.
Acceptance Criteria
  • Each recommendation includes an SVG illustration showing the outfit layers (e.g., bodysuit + sleep sack illustrated)
  • The visual adapts per age group (swaddled newborn vs. toddler in PJs)
  • Layering is shown clearly: base layer → mid layer → sleep sack/blanket
US-005 · Morning Sleep Log · Must Have
As a parent the morning after, I want to log how my child slept and whether the clothing was appropriate so that the app learns my child’s patterns and improves recommendations.
Acceptance Criteria
  • Morning screen shows: “Good Morning — How did [baby] sleep last night?”
  • Input 1: Sleep quality (1–5 star rating)
  • Input 2: Outfit feedback (Too Cold / Just Right / Too Warm)
  • Input 3: Night wake-ups counter (0–5+ taps)
  • Input 4: Optional notes (text field for additional context)
  • When parent submits morning feedback, app stores it and shows it in sleep history
US-006 · Insights & Pattern Detection · Should Have
As a parent tracking patterns, I want to see insights about my child’s sleep and outfit effectiveness so that I can adjust clothing choices going forward.
Acceptance Criteria
  • Insights tab shows: average sleep rating, % “just right” outfits, average night wake-ups
  • Pattern detection: e.g., “Kago tends to run warm. Consider going one TOG lighter.”
  • Sleep history shows last 30 days of logged nights with ratings and feedback
  • Given a parent has logged 7+ nights, Then insights appear and patterns are flagged
US-007 · Digital Wardrobe · Must Have
As a parent who owns specific sleepwear, I want to save my child’s clothing items with categories so that I can track what I have and see laundry status.
Acceptance Criteria
  • Wardrobe tab shows items organised by category: Bodysuits, Sleepsuits, Sleep Bags & Suits, Swaddles & Layers, Sleep Layers
  • Each item can be marked as: Available / In Laundry / Clean
  • Parents can add/edit/remove items with warmth labels (Light/Medium/Warm) and TOG ratings
  • “Missing for Tonight” alert shows if recommended items aren’t available, with substitute suggestions
  • Items are saved per child profile (not global)
US-008 · Settings · Should Have
As a parent using the app regularly, I want to customise my preferences including appearance, temperature unit, and child profiles so that the app works the way I need it to.
Acceptance Criteria
  • Settings screen accessible from main navigation tabs
  • Appearance setting allows: Light mode, Dark mode, or Auto (switches to dark mode between 6pm and 7am)
  • Dark mode uses low-contrast, warm colours that don’t disrupt the bedtime environment
  • Temperature unit toggle switches all displayed temperatures between °C and °F
  • Baby management section allows viewing and switching between child profiles
  • Settings are saved and persist across sessions
US-009 · Onboarding · Must Have
As a first-time parent downloading the app, I want a simple 5-step onboarding flow so that I can start getting recommendations quickly without friction.
Acceptance Criteria
  • Step 1: Welcome screen — “Snug Tonight helps you pick the right clothes for your baby based on the temperature.”
  • Step 2: Enable Location (skippable) — Ask for location access for weather data
  • Step 3: Temperature Unit — Choose °C or °F
  • Step 4a: Baby’s Stage — Select age band (Newborn 0–3mo, Infant 3–12mo, Toddler 12+mo)
  • Step 4b: Baby’s Name — Enter baby’s name for personalised recommendations
  • Step 5: Wardrobe — Add baby’s sleepwear items (optional, can skip and add later)
  • After onboarding, the parent is taken directly to the Tonight tab ready to get a recommendation
  • Full onboarding completes in under 2 minutes
  • Parents can skip onboarding and start immediately
  • Login options: Continue with Apple / Google / Email, or Skip for now
US-010 · Pricing & Premium · Should Have
As a parent with multiple children, I want a premium plan that lets me add up to 10 child profiles so that I can track sleep and clothing for each child separately.
Acceptance Criteria
  • Free plan: 1 child profile, tonight’s recommendation, wardrobe tracking, morning log, insights dashboard, dark mode
  • Premium plan: Unlimited child profiles, separate wardrobe per child, sleep history (30-day calendar, coming V1.5), priority support
  • Premium pricing: Monthly or yearly subscription (with savings on annual plan)
  • Settings displays plan status: “Free — 1 child profile included” or “Premium — Unlimited children”
  • Attempting to add a 2nd baby shows upgrade prompt with pricing options
3.4 Core Logic: Temperature → Clothing Engine

The Recommendation Engine

This is the heart of Snug Tonight — the logic that maps room temperature + child's age to a specific outfit. I built this based on paediatric safety guidelines (Lullaby Trust, Red Nose, AAP), TOG rating standards, and established sleep consultant guidance.

Age Band: Newborn (0–3 months) — Swaddle Phase

Room TempTOGWhat Baby WearsSafety Note
Below 16°C / 61°F 3.5 TOG Long-sleeve bodysuit + footed pajamas + 3.5 TOG swaddle ⚠️ Room may be too cold. Consider heating.
16–18°C / 61–64°F 2.5 TOG Long-sleeve bodysuit + 2.5 TOG swaddle
18–20°C / 64–68°F 1.0 TOG Long-sleeve bodysuit + 1.0 TOG swaddle
20–22°C / 68–72°F ✨ 1.0 TOG Short-sleeve bodysuit + 1.0 TOG swaddle ✅ Ideal range
22–24°C / 72–75°F 0.5 TOG Short-sleeve bodysuit + 0.5 TOG swaddle
Above 24°C / 75°F 0.2 TOG Diaper only + 0.2 TOG swaddle (or just a muslin wrap) ⚠️ Overheating risk. Use fan, no swaddle.

Age Band: Infant (3–12 months) — Sleep Sack Phase

Room TempTOGWhat Baby WearsSafety Note
Below 16°C / 61°F 3.5 TOG Long-sleeve bodysuit + footed pajamas + 3.5 TOG sleep sack ⚠️ Room too cold for baby.
16–18°C / 61–64°F 2.5 TOG Long-sleeve bodysuit + 2.5 TOG sleep sack
18–20°C / 64–68°F 1.0–2.5 TOG Long-sleeve bodysuit + 1.0 TOG sleep sack
20–22°C / 68–72°F ✨ 1.0 TOG Short-sleeve bodysuit + 1.0 TOG sleep sack ✅ Ideal range
22–24°C / 72–75°F 0.5 TOG Short-sleeve bodysuit + 0.5 TOG sleep sack
Above 24°C / 75°F 0.2 TOG Diaper + short-sleeve bodysuit only (no sleep sack) ⚠️ Overheating risk. Cool the room.

Age Band: Toddler (12+ months) — Blanket-Safe Phase

Room TempTOG/LayerWhat Baby WearsSafety Note
Below 16°C / 61°F 2.5 TOG or Blanket Long-sleeve PJ top + PJ pants + 2.5 TOG sleep sack or warm PJs + light blanket
16–18°C / 61–64°F 2.5 TOG Long-sleeve PJ top + PJ pants + 2.5 TOG sleep sack or PJs + light blanket
18–20°C / 64–68°F 1.0 TOG Long-sleeve PJ top + PJ pants + 1.0 TOG sleep sack
20–22°C / 68–72°F ✨ 1.0 TOG Short-sleeve PJ top + PJ shorts + 1.0 TOG sleep sack or cotton PJs + light blanket ✅ Ideal range
22–24°C / 72–75°F 0.5 TOG Short-sleeve PJ top + PJ shorts + 0.5 TOG sleep sack or thin blanket
Above 24°C / 75°F Light Short-sleeve PJ top + PJ shorts or just a bodysuit — no blanket ⚠️ Keep room ventilated.
Key Design Rule: When the overnight forecast shows a temperature DROP, the app always recommends for the coldest expected point. Rationale: it's safer to be slightly too warm at 7pm (child self-regulates) than too cold at 3am (disrupts sleep, and parent can't intervene).
3.5 Success Metrics

How I'll Know If It's Working

I needed to define how I'd measure success — not just "does it work" but "are parents actually using it every night?" I set up four types of metrics: a primary metric (the one number that tells me the app is delivering value), input metrics (the things that drive that number), health metrics (things that should stay stable), and watch metrics (things I check to make sure I'm not causing problems).

⭐ Primary Metric
Nightly Active Users (NAU)
Target: 500 NAU within 3 months of launch
The number of unique users who check Snug Tonight at least once per evening (6pm–9pm). This captures the core value: parents using the app as part of their bedtime routine.
📈 Input Metric
Time to Recommendation
Target: <10 seconds
From opening the app to seeing the clothing recommendation. Speed is my #2 product principle.
📈 Input Metric
7-Day Retention
Target: 40%+
% of new users who return within 7 days. High retention means the app has become part of bedtime routine.
📈 Input Metric
Recommendation Completion Rate
Target: 85%+
% of users who start the flow and get to a recommendation. Measures if the UX is too complex or if users drop off.
📈 Input Metric
Morning Log Submission Rate
Target: 40%+
% of parents who log sleep & outfit feedback the morning after. Enables pattern detection and improves recommendations.
🟢 Health Metric
App Load Time
Target: <2 seconds
App must be fast enough for a tired parent on a mobile phone. Anything over 3 seconds = user bounce.
🟢 Health Metric
Error Rate
Target: <1%
% of sessions where the app fails to return a recommendation (API errors, etc.).
🔴 Watch Metric
Safety Warning Dismissal
Watch: <20%
% of users who dismiss overheating/overcooling warnings. If high, warnings may be too aggressive.
3.6 Prioritization Framework

How I Prioritised Features

I used RICE scoring to decide what to build first. RICE stands for Reach, Impact, Confidence, Effort — it gives each feature a score so I'm not just going with my gut. The formula is: Score = (Reach × Impact × Confidence) / Effort. Higher score = build it first.

Feature Priority Reach Impact Confidence Effort RICE
Core temp → clothing engine Must 10 3 100% 2 15.0
Overnight forecast integration Must 10 3 90% 3 9.0
Morning sleep log (stars + outfit + wake-ups + notes) Must 8 3 95% 2 11.4
Digital wardrobe with categories & laundry tracking Must 8 2 95% 2 7.6
SVG outfit illustrations Should 8 2 85% 3 4.5
Pattern detection (e.g., runs warm) Should 6 2 80% 2 4.8
Dark mode with auto-toggle Should 8 2 95% 1 15.2
How I scored these: Reach = how many users out of 10 this feature touches per quarter. Impact = 1–3 (1 = nice to have, 2 = significant, 3 = core value). Confidence = how sure I am it'll work (%). Effort = engineer-weeks to build.
3.7 Product Roadmap

My Roadmap: Now / Next / Later

Instead of a fixed timeline (which always breaks in reality), I organised my features into Now / Next / Later. "Now" is what I'm building in V1. "Next" is what I'm confident I'll build after launch. "Later" is ideas I'm exploring but haven't committed to yet.

🟢 Now — V1 Launch

Core recommendation engineTemperature + age → outfit with safety badge
4-tab navigationTonight, Morning, Wardrobe, Settings
Manual temp input + slider°C/°F toggle, range 10–35°C
Overnight forecast + city searchWeather API via location or city search, showing low temp + time window
Morning logStars + outfit feedback + wake-ups + notes
Digital wardrobe5 categories, warmth labels (Light/Medium/Warm), laundry tracking, substitute suggestions
Insights dashboardAvg rating, % just right, avg wake-ups, pattern detection
SVG illustrationsClothing outfit diagrams
Dark modeAuto-toggle after 6pm
5-step onboardingWelcome, Location, Temp Unit, Baby Stage + Name, Wardrobe
Settings screenTheme, units, child profiles, premium plan display
Multi-child profilesFree: 1 child, Premium: up to 10, per-child wardrobe
"Missing for Tonight" alertsWardrobe gap detection with substitute suggestions

🔵 Next — V1.5+

Premium featuresUnlimited children, priority support
Sleep historyFull 30-day calendar view
Enhanced pattern detection"Best times of night for this TOG"
Temperature historyWeek/month view of temp trends
Share outfit with partner"Tonight's outfit" link

🟣 Later — V2+

Push notifications"Temp dropping tonight"
Smart thermometer syncHatch, Sense-U integration
Caregiver modeShare settings with grandparents/sitters
AI-powered parent chatAsk questions about sleepwear, safety, and sleep training
Community featureParents share what worked
Cloud syncBackup/restore across devices
3.8 Requirements Summary

What I Need It to Do (and How Well)

Functional Requirements (What the App Does)

IDRequirementPriority
FR-01Accept child's age selection across 3 bands (0–3mo, 3–12mo, 12+mo) for recommendationsMust
FR-02Accept room temperature input via manual entry (slider + number)Must
FR-03Support °C and °F with toggleMust
FR-04Fetch overnight low temperature via weather API based on device location or city searchMust
FR-05Generate clothing recommendation based on temp + age using defined logic tableMust
FR-06Display safety badges (Cold/Ideal/Warm) for temperature appropriatenessMust
FR-07Morning log: star rating (1–5), outfit feedback (Too Cold/Just Right/Too Warm), wake-up counter, optional notesMust
FR-08Digital wardrobe with 5 categories (Bodysuits, Sleepsuits, Sleep Bags & Suits, Swaddles & Layers, Sleep Layers) and laundry status trackingMust
FR-09Show SVG illustration of recommended outfit layersShould
FR-10Insights dashboard: avg sleep rating, % just right, avg wake-ups, pattern detectionShould
FR-11Auto-detect evening hours and switch to dark mode (6pm–7am)Should
FR-125-step onboarding flow: Welcome, Location (skippable), Temp Unit, Baby Stage + Name, Wardrobe Setup. Ends with option to add another baby or get started.Must
FR-13Support multiple child profiles (Free: 1, Premium: up to 10 child profiles) with per-child wardrobe and recommendationsMust
FR-14“Missing for Tonight” alert when recommended items aren’t in wardrobe, with substitute suggestionsMust
FR-15City search — type any city worldwide for weather data when location access is deniedShould

Non-Functional Requirements (How Well It Performs)

IDRequirementTarget
NFR-01App launch time<2 seconds on 4G mobile
NFR-02Time from open to first recommendation<10 seconds (3 taps max)
NFR-03PlatformReact Native (iOS / Android)
NFR-04Mobile responsivenessFully functional on screens 320px+
NFR-05AccessibilityWCAG 2.1 AA compliance
NFR-06API uptime (weather)99.5% with graceful fallback to manual input
3.9 Risks & Assumptions

What Could Go Wrong (and How I'd Handle It)

Risk / AssumptionLikelihoodImpactMitigation
Weather API doesn't reflect actual room temp — Outside forecast ≠ nursery temperature Medium High Always offer manual temp input as primary option. Position forecast as "context" not "truth." Encourage parents with thermometers to use manual input.
Parents may over-rely on the app — Following recommendations without checking baby Medium High Include persistent disclaimer: "Always check your baby for signs of overheating or cold. This app provides guidance, not medical advice." Cite sources.
Morning log adoption is low — Parents forget to log feedback Medium Medium Gentle reminders via app, optional notification (v1.5), simple 1-min flow, emphasise benefit ("patterns help recommendations").
Weather API downtime — Free weather APIs can be unreliable Low Medium Graceful fallback: if API fails, prompt user to enter temperature manually. Never show a broken state.
3.10 Stage Summary

What I Built in Stage 3

This stage produced the core documents that define the product. Here's what I created and why each matters:

What I CreatedWhy It Matters
PRD with BackgroundI wrote specs that an engineer could build from — clear enough that someone who's never seen the app could understand what to build
Goals & Non-GoalsI defined what's in scope and what's deliberately out — this shows I can say "no" to features and stay focused
User Stories + Acceptance CriteriaI described every feature from the user's perspective, with testable criteria so I know when it's done
Temperature → Clothing LogicI defined the product logic at the data level — 3 age bands × 6 temperature ranges = specific outfit for every scenario
Primary Metric + FrameworkI set up how I'll measure success, not just track usage — every metric connects back to "are parents actually using this?"
RICE PrioritisationI ranked features using a scoring framework instead of gut feeling — this is how I decided what to build first
Now/Next/Later RoadmapI communicated priority without locking myself into timelines that would break
Requirements (FR + NFR)I wrote both what the app does and how well it needs to perform — bridging business needs and engineering specs
Risk MatrixI thought about what could go wrong before it happened, and planned how I'd handle each scenario
✅ Decision: Move to Stage 4. My PRD is complete. I know exactly what to build, how to measure it, and what order to build it in. Next up: designing the screens.