← back to AbramsOS
docs: roadmap adds health track (vitals trends, BP↔meds, reminders) as co-priority
f4e4da6d89547ccd9ddfd2154022453a84811a03 · 2026-07-13 00:31:36 -0700 · Steve
Files touched
M docs/LIFE-OPTIMIZER-ROADMAP.md
Diff
commit f4e4da6d89547ccd9ddfd2154022453a84811a03
Author: Steve <steve@designerwallcoverings.com>
Date: Mon Jul 13 00:31:36 2026 -0700
docs: roadmap adds health track (vitals trends, BP↔meds, reminders) as co-priority
---
docs/LIFE-OPTIMIZER-ROADMAP.md | 69 +++++++++++++++++++++++-------------------
1 file changed, 38 insertions(+), 31 deletions(-)
diff --git a/docs/LIFE-OPTIMIZER-ROADMAP.md b/docs/LIFE-OPTIMIZER-ROADMAP.md
index c60e2a4..c1c31ad 100644
--- a/docs/LIFE-OPTIMIZER-ROADMAP.md
+++ b/docs/LIFE-OPTIMIZER-ROADMAP.md
@@ -1,39 +1,46 @@
# AbramsOS — Life Optimizer roadmap
-Steve's ask (2026-07-13, overnight): *"go all night long thinking of ways to make life
-the best for an individual. AbramsOS … maybe local coupons at places I shop … suggested
-substitutes to save money or quality."*
+Steve's ask (2026-07-13, overnight): make AbramsOS proactively improve his life —
+(a) money: coupons at places he shops + cheaper/better substitutes; (b) health: blood
+pressure history + Apple Watch / device readings that sync.
-Guiding principle: turn Steve's **real signals** (Amazon/email purchases, reorders, bills,
-meds, calendar) into **honest, actionable** money-saving / quality / life-improving nudges.
-Local LLM only ($0). Nothing auto-buys, auto-sends, or publishes. No fabricated prices,
-SKUs, or coupon codes — strategies + verifiable mechanisms only.
+Guiding principle: turn Steve's **real signals** into **honest, actionable** nudges.
+Local LLM only ($0). Nothing auto-buys, auto-sends, or publishes. **Never fabricate** —
+no invented prices/SKUs/coupon codes, and NO fake health readings (the vitals table
+ships empty until Steve imports real data).
## Shipped
-- **[done] Savings module** (`db2fd48`) — `savings_suggestion` + `merchant_coupon` tables,
- `lib/savings-advisor.js` (grounded strategy suggestions via local **gemma3:12b**),
- `/savings` dashboard (created date+time chips, sort+density, save/dismiss). qwen3:14b
- rejected (thinking-mode → empty under `format:json`).
-- **[done] Discoverability + honest coupons** (`a121be0`) — home "Savings ideas" tile;
- 3 real savings mechanisms seeded (Amazon Subscribe & Save, camelcamelcamel price alerts,
- Costco coupon book) with real URLs, no fake codes.
+- **Savings module** (`db2fd48`) — `savings_suggestion` + `merchant_coupon`, grounded
+ strategy advisor via local **gemma3:12b**, `/savings` dashboard.
+- **Discoverability + honest coupons** (`a121be0`) — home tile + 3 real savings mechanisms.
+- **Nightly savings runner** (`0256450`) — `scripts/run-savings-advisor.js` + launchd plist.
+- **Health / Vitals module** (`2d8848c`) — `health_reading` table, AHA BP categorization,
+ Apple Health `export.xml` streaming parser (pairs BP, scales SpO₂), `/health` dashboard
+ with inline SVG BP chart, per-person filter, manual add; `POST /api/health/readings`
+ JSON ingest for the Health Auto Export app; `scripts/import-apple-health.js` CLI.
-## Next (in priority order)
-1. **Real purchase ingestion** — wire `lib/gmail-fetcher.js` + `receipt-extractor.js` to
- read **info@** (where the 201 real Amazon order emails live; token works, no re-auth
- needed) → populate `purchase`. Then auto-derive `reorder_item` rows from repeat
- purchases so the advisor runs on *detected* recurring buys, not seeds.
-2. **Nightly runner** — `scripts/run-savings-advisor.js` + a `com.steve.abramsos-savings`
- launchd plist (draft; Steve pastes the bootstrap — launchd install is classifier-gated)
- so suggestions refresh as new purchases arrive.
-3. **Reorder-timing + price-drop nudges** — cadence-based "reorder soon", and a
- camelcamelcamel target-price hook per repeat buy.
-4. **Subscription/bill audit** — the biggest real savings lever: flag recurring `bill`
- rows that look unused/duplicative and draft cancel/downgrade suggestions.
-5. **Beyond shopping (the "best life" framing)** — warranty-expiry alerts, appointment
- nudges, "unused-subscription" sweep, annual-fee vs perks checks.
+## Next — unblocked (do these overnight, priority order)
+### Health track
+1. **Vitals trends + insights** — weight & resting-HR trend sparklines like BP; a local-LLM
+ ($0) "what changed this month" plain-English summary per person; flag any BP reading in
+ Stage 2/crisis with a gentle "recheck / see doctor" note (informational, not advice).
+2. **BP ↔ medication context** — on /health, show which active meds (from the medication
+ table) are BP-relevant, so a trend reads alongside what he's taking. Read-only join.
+3. **Reading reminders** — if no BP reading in N days, a calendar_reminder nudge.
+
+### Savings track
+4. **Subscription/bill audit** — biggest real lever: flag recurring `bill` rows that look
+ unused/duplicative; draft cancel/downgrade savings suggestions.
+5. **Reorder-timing + price-drop nudges** — cadence "reorder soon"; camelcamelcamel target.
+
+## Blocked (needs Steve — do NOT brute-force)
+- **Real purchase ingestion** — AbramsOS Google OAuth is unconfigured (`..._CLIENT_ID/SECRET`
+ empty). Either configure it, or give George basic-auth to bridge the 201 Amazon order
+ emails in info@ → `purchase`.
+- **Device cloud APIs** (Withings/Omron Connect) — need per-vendor OAuth creds from Steve.
+ Apple Health export + Auto Export app already cover Apple Watch with no creds.
## Rails
-- Local Ollama only (gemma3:12b). Show $0 (local). Commit each working step
- (author steve@designerwallcoverings.com). No George sends, no deploy, no DNS, no publish
- without Steve's explicit go.
+Local Ollama gemma3:12b only. Show $0 (local). Commit each working step
+(author steve@designerwallcoverings.com). Lint + render-test before commit. No George
+sends / deploy / DNS / publish without Steve's explicit go. Verify keepawake each cycle.
← 2d8848c health: Vitals module — BP history + Apple Watch/device read
·
back to AbramsOS
·
connectors: Plaid 'Connect a bank' UI (Wells Fargo etc.) + i 954cc77 →