Insight and report prompts
These prompts generate short interpretations or structured classifications from already prepared data. They do not replace deterministic calculations, reference ranges, or the user’s original records.At a glance
insight.report-summary
Source: REPORT_AI_SUMMARY_PROMPT
Current report-overview system prompt
Current report-overview system prompt
insight.focus-card
Source: js/focus-card.ts
Current dashboard focus-card system prompt
Current dashboard focus-card system prompt
insight.context-dots
Source: buildHealthDotsPrompt()
The system prompt is rendered only for stale profile-area keys. This template replaces the generated JSON key object with one placeholder and otherwise preserves the application wording:
Review watchpoints
The dot contract compresses complex, self-reported health context into a traffic-light color. Evaluations should check cultural assumptions, moralizing language, disability/chronic-condition bias, body-size bias, and whether “supports health” implies causality.insight.marker-description
Source: fetchCustomMarkerDescription()
{marker name} ({unit}). This prompt does not receive profile context. The cached description is explanatory prose, not a reference range.
insight.biology-score
Source: js/biology-score-ai.ts
The current system instruction requires JSON with independently written summary and explanation fields. The summary aims for 180–240 characters, never exceeds 280, uses complete sentences, and forbids ellipses, Markdown and repeated numeric scores. The fuller explanation aims for 90–150 words under Main signal, Context and Next check.
The request supplies deterministic core shares, contributions, range labels, marker values, dates, specimen, optional evidence and interpretation limits. With comparison scope, one answer must remain true across the supplied date/range views and label view-specific claims. The model must not recalculate the score, invent thresholds, diagnose or prescribe. Marker labels and notes are untrusted data.
A shared pass returns one object per requested score ID and splits large payloads into bounded batches. Validation rejects incomplete summaries and permits a bounded repair attempt. Results save with material fingerprints and comparison coverage in profile data; they are not just transient text on the card. See Biology Scores internals.
insight.biology-context
Source: generateBiologyScoreContextReview()
This is the clearest prompt-injection boundary in the current catalog. It should be used as a reference pattern, while remembering that delimiters alone do not enforce trust.
insight.supplement-impact
Source: js/supplement-impact.ts
The system prompt is rendered with the names of supplements in the current batch. {names} expands to their comma-separated quoted names:
Review watchpoints
- Before/after association does not establish that the supplement caused a change.
- “Beneficial” and “concerning” depend on supplied ranges and context; a color can overstate certainty.
- Supplement names become dynamic JSON keys and need adversarial tests for quotes, braces, duplicates, and instruction-like names.
insight.emf
Source: js/emf-interpretation.ts
System instruction
System instruction
Single-assessment task
Single-assessment task
Before/after task
Before/after task
Shared review concerns
- Short summaries can hide uncertainty or conflicting data.
- Traffic-light outputs are easy to understand but can turn an ambiguous association into a perceived grade.
- A deterministic range or score must remain the source of any threshold stated to the model.
- Cached AI text can outlive the exact model version; fingerprints cover input changes, not provider behavior changes.
- Health goals can help prioritize but must not turn a desired outcome into evidence that a condition exists.
Focused verification
Relevant suites include:tests/report-export-html-runtime.test.tstests/playwright/context-coverage-batch.spec.tstests/test-biology-scores.tstests/sync-biology-context.test.tstests/test-supplement-impact.tstests/test-emf.ts