| name | journey-baby-monitors |
| description | Maintains BabyPickr baby monitor journey filters, boost scoring, and catalog flags so journey answers rank the right monitor type for each parent situation. Use when adding or editing monitors in data/monitors.ts, lib/filters/monitors.ts, lib/monitorCapability.ts, lib/journeyStorage.ts (monitor paths), journey tests, or when journey combinations return zero or wrong monitors. |
Baby monitor journey filters
Read this skill before changing monitor catalog data or journey filter logic.
Testing (required)
Run tests yourself after any edit here. Do not finish with failing tests or ask the user to run them unless shell is unavailable.
| When | Command |
|---|
| Monitor / journey filter work | npm test -- lib/filters/journey-matrix.test.ts |
| Before done (any related change) | npm test |
Blog monitor guides are covered by lib/blog/blogPages.test.ts in the full suite. Fix failures before marking complete.
Design principle (critical)
Monitors are almost never hard-filtered by journey. Apartment vs house does not remove SKUs — it changes who ranks first. Parents should always see the full catalog unless they use manual filters (budget, Wi‑Fi, video quality).
Exception: manual videoQuality: audio-only on the browse page is user-driven, not journey.
Source of truth (edit in this order)
- Catalog flags —
data/monitors.ts (videoQuality, wifiRequired, isPortable, hasMultiRoom, hasSmartFeatures, batteryLife, range, …)
- Capability helpers —
lib/monitorCapability.ts (monitorHasSoothingFeatures, monitorIsPortableForJourney)
- Journey → filter mapping —
applyJourneySituationsToMonitorFilters in lib/journeyStorage.ts
- Hard filters + sort —
filterMonitors in lib/filters/monitors.ts (budget, connectivity, video quality only)
- Ranking only —
monitorJourneyBoost in lib/journeyStorage.ts
- Banner copy —
journeyExplanationsForCategory("baby-monitors", …)
- Badges —
monitorBadge in lib/journeyBadge.ts
Filter effect types
| Type | Meaning | Example |
|---|
| HARD | Removes products | Manual connectivity: wifi only |
| SORT | Order only | travel-often → priority: battery |
| BOOST | Tie-breaker after primary sort | second-child → multi-room +3 |
| COPY | Banner text only | tall-parent, active-lifestyle |
Journey type × monitor behavior
| Journey type | HARD | SORT | BOOST |
|---|
| first-baby | — | best-match | video (not audio-only) +2 |
| upgrading | — | best-match | hasSmartFeatures +3 |
| second-child | — | best-match | hasMultiRoom +3 |
| gift | — | best-match | mid tier +1 |
first-baby does not hard-drop audio monitors — ranking favors video; audio soothers (VTech DM1411) remain visible.
Situation × monitor behavior
| Situation | HARD | SORT | BOOST |
|---|
| travel-often | — | priority: battery* | portable or 12hrs+ battery +2 |
| city-apartment | — | — | isPortable +1 |
| house-suburbs | — | — | hasMultiRoom +2 |
| compact-car | — | — | portable +2 (via travel pattern) |
| value-matters | — | priority: value | — |
| tall-parent | — | — | unused (copy only) |
| active-lifestyle | — | — | unused |
| newborn-focus | — | — | video +3; soothing copy +2 |
* value-matters overrides battery sort when both selected.
Soothing features (newborn-focus)
monitorHasSoothingFeatures matches bestFor / topFeature for: soother, lullaby, white noise, night light, sound-activated.
When adding a monitor with built-in sounds:
- Include keywords in
bestFor or topFeature (e.g. "built-in soother", "white noise").
- Do not hard-filter audio-only — DM1411 is valid for newborn-focus via soothing boost.
Flag setting guide (new SKU)
| Flag | Set true when… | Journey use |
|---|
isPortable | Rechargeable parent unit or kit you carry room-to-room / travel | travel, city-apartment, compact-car B |
hasMultiRoom | Extra camera sold / split-screen / dual-cam kit | second-child B; house-suburbs B |
hasSmartFeatures | App, AI alerts, sleep analytics, cry detection | upgrading B |
wifiRequired | Needs home Wi‑Fi for core function | manual connectivity filter only |
batteryLife | Use honest tier: 12hrs+, 8-12hrs, under-8hrs, no-battery | travel-often S |
range | long for large homes | house-suburbs B |
videoQuality | audio-only only if no camera | first-baby / newborn-focus ranking |
Plug-in-only Wi‑Fi cams (eufy E30, REOLINK): isPortable: false, batteryLife: no-battery — they rank lower for travel but stay in catalog.
Priority sort order (manual + journey)
In filterMonitors, primary sort runs before journey boost:
priority: value → price ascending
priority: battery → battery tier descending
priority: safety → video + long range (manual filter path; journey does not set this today)
- Else → journey boost, then trust score
Adding a new monitor (checklist)
- Set
videoQuality and connectivity flags from real product behavior.
- Set journey booleans (
isPortable, hasMultiRoom, hasSmartFeatures) — do not copy a similar SKU blindly.
- Write
bestFor / topFeature with journey keywords if applicable (soother, split-screen, app control).
- Spot-check rankings:
first-baby + [] → video monitors above audio-only
second-child + [] → DXR-8 Pro, Babysense dual, HelloBaby multi-cam rise
upgrading + [] → Nanit, Miku, smart Wi‑Fi models rise
travel-often + [] → battery sort; VM819, HelloBaby, portable non-Wi‑Fi rise
newborn-focus + [] → video first; DM1411 still listed (soother boost)
gift + [] → mid-tier gift highlight if isGiftHighlight applies
- Add/adjust tests in
lib/filters/journey-matrix.test.ts if SKU is canonical for a combo.
- Run tests (see Testing above); end with
npm test.
Regression tests to keep green
- Every
JourneyTypeId alone → ≥1 monitor
first-baby → video ranks above audio-only when both exist
travel-often → priority: battery set
newborn-focus → audio soother remains; video ranks above it
value-matters overrides travel-often battery priority
Full combination matrix
See matrix.md.
Registry checklist integration
See registry-checklist skill.
- Slots:
comf-monitor, prem-monitor (not required in minimum tier).
- Browse deep links: comfortable →
budget=mid; premium → budget=premium.
- Profile: house/suburbs may bias long-range; apartment may bias compact/wifi.
- Auto-picks: reuse
filterMonitors + journey boosts.
Related files
- Page wiring:
app/monitors/page.tsx
- Parallel skills:
journey-strollers, journey-car-seats, journey-cribs, journey-high-chairs, registry-checklist