Personal project · Active

Private health domain

Health Intelligence

Turning private health evidence into reproducible understanding, without asking a model to decide what the numbers mean.

Health Intelligence is the Health domain of AlanOS. It compares current evidence with my personal history, makes missing or ambiguous data visible, and produces briefings whose statements can be traced back through the calculations that support them.

The working system is deliberately model-disabled. Deterministic code owns measurements, periods, baselines, comparisons, citations, and safety. Optional narration remains blocked; the useful product already exists without it.

Health systemsDeterministic pipelinesPersonal baselinesEvidence lineage

Why I built it

Health data is plentiful but fragmented. Individual metrics can be easy to collect and surprisingly hard to interpret: devices overlap, evidence goes missing, timezones shift, and a change can look important only because the comparison is poor.

I wanted something quieter than another dashboard. The useful question was not “what did the device record?” but “what changed relative to my own history, how complete is the evidence, and what can I responsibly say about it?”

The evidence path

The collector owns the original evidence. Health Intelligence owns the bounded interpretation and the artefacts produced from it.

What exists today

The deterministic V1 is released and operates locally. Broader longitudinal intelligence is still developing around that working path.

A read-only evidence boundary
HealthKit and Eufy evidence stays in dedicated upstream collectors. Health Intelligence reads a rebuildable PostgreSQL projection; it does not mutate the vault or become a second evidence store.
Deterministic weekly briefings
The released V1 calculates features, coverage, comparisons, and notable changes for sleep, resting heart rate, heart-rate variability, steps, and exercise. The same evidence pack renders stable JSON and human-readable Markdown.
Daily state and planning
Current command-line capabilities calculate a daily state against 28-day personal baselines, maintain explicit personal goals, and compile a bounded daily plan without turning the result into a universal health score.
Reproducible private sessions
Successful runs produce content-addressed manifests, briefing artefacts, evidence packs, lineage, and a compact health-state view. Atomic persistence keeps incomplete runs from replacing the latest complete result.
Scheduled local operation
A private macOS schedule runs the weekly briefing after evidence collection. Its operational status contains timestamps and success or failure only—never health values, credentials, or internal errors.

One capability, end to end

From a completed health week to a supported briefing

Each stage narrows uncertainty before the system produces owner-facing language.

  1. 01

    Select two bounded periods

    The service uses complete Monday-to-Monday health weeks in the declared local timezone.

  2. 02

    Read current evidence

    A read-only adapter fetches only the observations required for the current and reference periods.

  3. 03

    Calculate features and coverage

    Code owns units, joins, source reconciliation, missingness, comparisons, baselines, and confidence.

  4. 04

    Build the evidence pack

    Every supported fact carries its period, policy version, evidence references, limitations, and lineage.

  5. 05

    Render and preserve

    The validated pack becomes canonical JSON, deterministic Markdown, and an immutable private session.

Safety is an engineering boundary

Health language can become unsafe long before a system makes an explicit diagnosis. A rounded number, reversed comparison, or confident sentence over sparse evidence can still mislead.

Prompts are guidance, not enforcement. Health Intelligence keeps safety in schemas, evidence packs, deterministic validators, and conservative failure behaviour.

  1. 01

    Unknown stays unknown

    Missing or ambiguous evidence is never converted into zero, reassurance, concern, or a health judgement.

  2. 02

    Association is not causation

    The system may describe signals that coincided, but it does not turn an observed relationship into a causal claim.

  3. 03

    Every material statement is traceable

    A claim must identify its supporting fact, period, coverage, confidence, algorithm, and limitations.

  4. 04

    The boundary remains non-clinical

    The product supports personal wellness understanding. It does not diagnose, prescribe, monitor emergencies, or replace professional care.

The domain relationship

AlanOS defines the shared exterior; Health Intelligence owns the health interior. Its domain manifest declares external raw evidence, a confidential default visibility, current command-line capabilities, and a planned local Model Context Protocol surface.

Career Intelligence proved the domain pattern first, but Health does not reuse its schemas or knowledge. The two projects share contract language and privacy principles while keeping their data, policies, and capabilities independent.

Where it goes next

Read-only Model Context Protocol access is planned after the command-line boundary. Experiments and broader longitudinal capabilities are also planned; open-ended analysis and generated analysis code remain deferred.

Provider-neutral narration schemas and validators exist, but no model provider is configured or enabled. Narration should remain optional: if it fails validation, the deterministic evidence pack and briefing must remain complete and useful.

Technologies

Core
TypeScript, Node.js, Zod, Temporal, decimal.js
Evidence
PostgreSQL read models, HealthKit, Eufy, versioned schemas
Quality
Vitest, synthetic fixtures, question benchmarks, safety audits
Operation
Command-line interface, content-addressed sessions, macOS LaunchAgent

The goal is not to make health data sound certain. It is to preserve enough evidence, context, and restraint that a useful statement can also explain why it deserves to be trusted.