Urja
Features Articles Privacy Support
← All articles

Building a health assistant where AI can only explain

7 min read · from the team building Urja

Language models are good at explaining things and bad at not making things up. For a health app, that's a serious problem: an assistant that confidently states the wrong resting heart rate, or invents an HRV trend, is worse than no assistant at all. Here's the design principle we built Urja around — the model is never allowed to be the source of a number.

Deterministic engines own every value

Every number Urja shows — your readiness score, its components, lab marker values, trends — is computed by plain, testable, deterministic code. Not by a model. Those engines are the single source of truth. The score is a fixed function of your inputs: give it the same HRV, resting heart rate, and sleep, and it returns the same result every time, and you can tap the ring to see exactly how it was derived.

The model explains; it does not calculate

Ask Urja, the on-device assistant, runs on Apple's on-device foundation model on supported iPhones. It's given the numbers the deterministic engines already produced and is asked to explain and contextualize them — not to compute anything. The distinction matters: "explain this HRV trend in plain language" is a job models do well; "what is my HRV trend" is a job we never hand to a model.

A numeric-consistency guard around generated prose

Even a well-prompted model can drift, so the model only appears where you explicitly invite it. The Morning Briefing is fully deterministic — no model touches it. Apple Intelligence enters in exactly two user-initiated places: when you send a question in Ask Urja (opening the screen generates nothing), and when you tap "Summarize with Apple Intelligence" inside the plan review. That review summary passes through a strict per-fact numeric-consistency check: if the generated prose disagrees with the deterministic values it's supposed to describe, the summary is rejected in favor of text that matches the real numbers. Ask Urja, in turn, is constrained to read-only deterministic tools and instructed never to invent values. The model gets to improve the wording; it does not get to change the facts.

A complete experience with no AI at all

Apple Intelligence isn't available on every device, and features can be turned off. So the non-AI path isn't a degraded fallback — it's the foundation. On any supported device, Urja shows its full deterministic Morning Briefing and readiness experience; the conversational layer is an enhancement on top. If the model is unavailable, you lose the chat, not your numbers or your guidance.

Why this also helps privacy

Because the model runs on the iPhone and the numbers come from on-device engines, Urja needs no account and sends no health data to its own servers. Keeping computation deterministic and local isn't only about trust in the numbers — it's what lets the whole app stay private by design. Even our marketing site runs no analytics or tracking scripts.

The takeaway for anyone building with LLMs

The pattern generalizes beyond health: let deterministic code own the facts, let the model own the language, and — wherever generated prose restates specific numbers, as Urja's review summaries do — put a validator between them so that text can't silently contradict ground truth. Where a validator isn't practical, constrain the model to read-only tools and instruct it never to invent values, as Ask Urja does. It's less magical than "the AI does everything," and far more trustworthy.

An assistant that explains your numbers — and can't rewrite them

Urja's scores are deterministic and inspectable; the on-device model only helps explain them. Join the beta →

Ask Urja requires an Apple Intelligence-capable iPhone with Apple Intelligence enabled; other supported devices show the deterministic experience. Educational wellness information only — not a diagnosis or medical advice. Discuss lab results, supplements, and treatment changes with a qualified clinician.

© 2026 Urja
Privacy Support Contact