AI in getbased — what’s powered, what isn’t
This page is the canonical map of where AI runs in the app. Three sections:- Light & Sun verdicts — ten per-state and per-event surfaces inside the Light & Sun lens. Some run automatically; individual Sun and device-session interpretations are deliberately on-demand.
- AI elsewhere in the app — the chat panel, Interpretive Lens, context-card dots, PDF + photo import, EMF interpretation, and others.
- What is NOT AI — the deterministic-math layer (channel doses, %MED, IU yields, trend alerts, PhenoAge, calculated markers). Big section because the math is auditable and reproducible — those numbers are NOT generated by an LLM.
This page maps where AI runs. The system prompt catalog documents the exact or parameterized instruction contract, source, parser, and review concerns for each surface.
Light & Sun verdict shape
Every Light & Sun verdict has the same shape:- A colored dot — green / yellow / red / gray (more on these below)
- A tip — one sentence (≤14–18 words) summarizing the verdict
- A detail — 1–4 sentences of context citing your specific numbers and the biology behind them
- A refresh button (↻) — re-runs the analysis with a fresh API call
Where verdicts appear
Automatic surfaces use input fingerprints so unchanged data does not repeatedly spend tokens. Individual Sun-session and light-device-session interpretations are manual because the automatic Today and weekly summaries already cover those records.Automatic event and setup verdicts
- Light Tool measurement — fires for a saved Lux Meter, Flicker Detector, CCT Meter, Spectrum Classifier, Sleep Darkness, or Glass Transmission reading. Aggregate audit rows and brightness-proxy records are excluded. The verdict lives below the reading row in the room panel.
- Audit verdict — fires when you save a Light Audit (a frozen snapshot of your environment). Appears at the top of the audit detail. A small colored dot also appears in the audit card header for at-a-glance status across multiple audits.
- Onboarding plan — fires when you complete the Light & Sun setup card (skin type, eyewear, home lighting, Ott burden audit). Generates a personalized starting plan with three concrete first-week actions. Appears below the saved-setup chips.
On-demand session verdicts
- Sun session row — runs only when the user requests an interpretation in the completed session detail. Today and weekly synthesis already cover the broader pattern.
- Light-device-session row — runs only when requested for a completed panel, SAD lamp, dawn simulator, UVB/UVA, or targeted PBM session.
Per-state verdicts (fire on render when you have enough data)
These surfaces don’t have a clean “I’m done” trigger — the user is editing chip-pickers, adding rooms, the daily rollup shifts as new sessions land. Pre-2026-05-08 they had a manual Analyze button to avoid burning API calls during edit sessions; the per-render auto-fire now uses a fingerprint of the underlying state plus a per-tab-session guard so it fires once per meaningful state shift, not on every keystroke.- Light Today daily hero (+ dashboard chip) — fires the first time you visit the Light & Sun page each day, and re-fires when the cache is stale. Synthesizes your day’s full picture (sun + devices + tools + environment + recent biomarker context) into a single verdict at the top of the page. The same verdict appears as a compact chip on the dashboard’s Light Today strip.
- Light Environment room — auto-fires when a room has a primary source set OR at least one measurement. Empty rooms skip auto-fire so a freshly-added blank room doesn’t burn an API call before you finish editing. Lives inside the room’s expanded body.
- Per-screen — auto-fires when a device type is set (default ‘phone’). Lives inside the expanded screen card.
- Indoor-burden summary — auto-fires when you have at least one room or screen mapped. Lives at the top of the Light Environment block (above the audit list).
- Channel-mix synthesis — auto-fires when at least one channel has non-zero exposure in the rolling 7 days. Brand-new users with no logs skip until they have data worth interpreting. Lives in the “Your light, by what it does” section.
Caching and force-refresh
Every verdict is cached against a fingerprint of the underlying data. Ordinary render paths reuse an unchanged valid verdict without a fresh API call. The refresh button (↻) deliberately bypasses that cache and requests a new verdict even when the fingerprint is unchanged. When the data has changed (you edited a room, logged a new session, completed a measurement), the fingerprint mismatch invalidates the cache. The next render shows a “refresh AI verdict — your setup changed” CTA.Cross-device sync
Verdicts live on the same row as the data they describe — sun-session verdicts on the session row, room verdicts on the room row, and so on. They sync to your other devices via the same per-row CRDT path the rest of your data uses. Latency is typically sub-10 seconds (the engine pushes immediately after writing, skipping the usual debounce).What if the verdict seems wrong?
The AI is reasoning over your inputs, including measurement context. A few common failure modes worth knowing about:- Camera placement and source: camera-derived lux, CCT, RGB/spectrum, darkness, flicker, and glass-transmission results are screening proxies, not calibrated dose measurements. A one-point lux calibration stays approximate and source-specific. Follow each tool’s aiming guide and use the appropriate dedicated meter before a strong conclusion.
- Cached vs current: if you edited a room recently and the verdict still references old numbers, the fingerprint should have invalidated and the CTA should say “your setup changed”. Click ↻ to regenerate.
- Brand-name endorsement: the AI is instructed to never name specific brand products, only categories (“DC-dimmable LED”, “incandescent or halogen”). If a verdict mentions a specific product brand, that’s a regression — please open an issue.
Hardware advice
Seven verdict prompts share a load-bearing hardware block. A camera-banding result cannot identify flicker frequency, modulation depth, or health risk. Advice starts with comparisons—full versus reduced brightness, bypassed versus engaged dimming, or a different known fixture—and recommends product specifications or a purpose-built flicker meter before a strong conclusion. The prompt does not assume that any LED, smart bulb, dimmer, incandescent, or halogen source is flicker-free, does not name brands, and explicitly forbids open-flame recommendations.Provider requirements
Verdicts require an AI provider configured in Settings → AI. Supported providers: OpenRouter, PPQ, Routstr, Venice, Local AI (Ollama / LM Studio / Jan / Unsloth Studio / compatible endpoints), and Custom. Provider pricing and actual token use vary by prompt, context, model, and retry behavior. A downloaded model running on the user’s own hardware has no provider fee; remote or cloud-tagged Local AI models may charge.Disabling verdicts
If you want to keep your AI provider configured for the chat panel and Interpretive Lens but pause the per-row verdicts (e.g., during a budget-sensitive month):AI elsewhere in the app
The ten Light & Sun verdicts above are one corner of the app’s AI surface. Below are every place AI runs in the rest of the app. All require a configured provider in Settings → AI.Text-generation surfaces
Vision-AI surfaces (image-in)
What is NOT AI (so you can trust the numbers)
A lot of the app is deterministic math, not AI inference. If you see a number on a chart or a tier on a pill, it came from one of these:What runs on-device vs cloud
CLI-backed features useai-feature-routing.js and the capability-aware execution route instead of bypassing the selected assistant through a direct-provider call. Local CLI agents receive the same enabled context plus scoped getbased tools; personal gateways receive context but are text-chat only. Image support does not imply audio support, and automatic voice remains on-device for CLI chat. See CLI agent providers for the dispatch and approval contract.
Caching + privacy notes
- Every per-row verdict caches against a fingerprint of the underlying data. If nothing’s changed, the cached verdict is returned without a fresh API call.
- Import model-test records stay device-local and are stripped from sync payloads because timing, loaded state, and hardware metadata do not transfer meaningfully. See AI model testing internals.
- The chat panel pulls from
buildLabContext()— the assembled section block filtered by Manage → Context → Data sources (contextSourceSettings). Those switches gate Insight Context Cards, Supplements & Medications, Blood marker results, per-specialty lab groups, Genome tiers, Light & Sun, Meals & Nutrition, and Wearable recovery context for in-app AI, score context, and source-driven warnings. - Interpretive Lens and Knowledge Base live in the Answer grounding panel, separate from data-source gates. Agent Access is separate again: the browser pushes an encrypted gateway summary only after Settings → Agent Access is enabled, and that push calls
buildLabContext({ skipGroupFilter: true, ignoreContextToggles: true })so external agents do not inherit the in-app Data sources switches. - Custom-marker creation, manual-value entry, sidebar edits, and chip-picker changes do NOT trigger AI calls — they update local data, AI sees them on the next chat turn or the next per-state verdict render.
Related guides
- Sun Sessions — how outdoor light sessions work
- Light Environment — rooms + screens + audits
- Light Tools — the measurement tool ecosystem
- AI Providers — how to configure a provider
- AI Chat — the chat panel that complements the per-row verdicts
- Meals & Nutrition — meal analysis, reviewed storage, trends, benchmarks, and AI context boundaries
- Supplements and medications — therapy lifecycle, reviewed product import, quality evidence, and AI boundaries