Skip to main content
Convenient access. In-person care. No bills. Lower claims.
Longitudinal Evidence Engine · v1.0

Strata

The append-only data spine under every Archer clinic.

Other onsite vendors run a recap. Archer builds the case. Every member action — verification, consent, HRA, visit, lab, prescription, milestone, payout — becomes a structured event in one append-only ledger. Same identity. Same time axis. PHI rejected at the writer, not after audit. After two years of capture, Archer proves with actuarial rigor what the program changed.

// principles

Built on three things every onsite vendor skips.

// principle_01 — latency

Real-time, not retrospective

Brokers see claims data 60–120 days after the visit. Strata captures the visit, the lab, the prescription, the survey, and the cash incentive in real time — and ties them to the same member identity over multi-year horizons.

// principle_02 — privacy

PHI-safe by construction

Names, emails, free-text notes, and merchant strings are structurally blocked at the writer level. Identity flows through foreign keys; values stay clean. Append-only triggers prevent silent edits — research integrity enforced at the database, not by policy.

// principle_03 — causality

Interventional, not observational

Most population-health platforms read claims and infer. Strata records what Archer did — the cash trigger, the clinical milestone, the provider follow-up — alongside the outcome. The difference between correlation and causation in actuarial conversations.

What Strata captures

Structured. Coded. Joinable.

Every event is a contracted JSON payload. Validators run at write-time. Schema-versioned, append-only, indexed three ways for sub-second cohort queries.

research_events · sample row JSONB
{
  "id": "evt_4f1e8…",
  "employer_id": "emp_…",
  "member_id": "elig_…",
  "event_type": "rewards.milestone_completed",
  "schema_version": 1,
  "surface": "rewards",
  "event_at": "2026-05-07T14:32:11Z",
  "source": "elation_webhook",
  "payload": {
    "milestone_slug": "annual_physical",
    "cpt_code": "99396",
    "amount_cents": 5000,
    "provider_id": "prov_…",
    "visit_date": "2026-05-07"
  }
}
What Strata refuses

PHI guard at the writer.

These keys throw at write-time, not after audit. Identity is a foreign key; values stay clean.

first_name last_name email phone address dob ssn name free_text_notes merchant_name provider_name message_body
throw new Error("payload contains banned PHI key")
// architecture

Six surfaces. One spine.

Every business event in the Archer stack also writes to Strata. Same identity, same time axis, same payload contract.

Member portal
Verifications, consents, dependents, language
member.verifiedmember.consent_signedhra.completedmember.dependent_added
Clinical EHR
Visits, labs, prescriptions, screenings
visit.completedlab.orderedlab.result_receivedrx.prescribed
Billing
HSA visit charges, FMV invoices, Section 223
clinic.charge_generatedclinic.charge_paidclinic.charge_voided
Rewards
Card issuance, milestones, transactions
rewards.opted_inrewards.milestone_completedrewards.payout_fundedrewards.card_transaction
Member chat
Member ↔ provider conversations
chat.member_message_sentchat.provider_replied
Operations
Roster changes, terminations, reactivations
admin.member_addedadmin.member_terminatedadmin.csv_uploaded
// registry

Schema-versioned. Auditable.

Every event type is registered with a contract. Payload validators run at write-time and reject anything that doesn't match — including PHI. Below: a slice of what Archer captures across the surfaces above.

module: Member portal 3/4 OBSERVED
LIVE v1
/**
 * @event   "member.verified"
 * @surface "member-portal"
 *
 * Member matched their employer's roster and gained portal access. Includes verification field and source.
 */
register("member.verified")
LIVE v1
/**
 * @event   "member.consent_signed"
 * @surface "member-portal"
 *
 * Member signed an active consent template (HIPAA, telehealth, treatment). Captures template version, not free-text.
 */
register("member.consent_signed")
LIVE v1
/**
 * @event   "hra.completed"
 * @surface "member-portal"
 *
 * Member finished their Health Risk Assessment. Captures completion + question count, not PHI answers.
 */
register("hra.completed")
PENDING v1
/**
 * @event   "member.dependent_added"
 * @surface "member-portal"
 *
 * Member added a spouse or child to their household for clinic eligibility.
 */
register("member.dependent_added")
module: Clinical EHR 1/5 OBSERVED
LIVE v1
/**
 * @event   "visit.completed"
 * @surface "ehr"
 *
 * Provider closed the chart for an encounter (Elation chart-signed webhook). source_external_id = Elation encounter ID.
 */
register("visit.completed")
PENDING v1
/**
 * @event   "visit.scheduled"
 * @surface "ehr"
 *
 * Member booked a visit (Elation booking webhook). source_external_id = Elation appointment ID.
 */
register("visit.scheduled")
PENDING v1
/**
 * @event   "lab.ordered"
 * @surface "ehr"
 *
 * Provider ordered a lab. Captures the order, not the result.
 */
register("lab.ordered")
PENDING v1
/**
 * @event   "lab.result_received"
 * @surface "ehr"
 *
 * Lab result came back. Captures category-level signal (in/out of range), not raw values.
 */
register("lab.result_received")
PENDING v1
/**
 * @event   "rx.prescribed"
 * @surface "ehr"
 *
 * Provider wrote a prescription. RxNorm / NDC code only, no SIG details.
 */
register("rx.prescribed")
module: Billing 2/4 OBSERVED
LIVE v1
/**
 * @event   "clinic.charge_generated"
 * @surface "billing"
 *
 * An HSA member's non-preventive visit triggered a Stripe invoice. Payload includes CPT, amount_cents, charge_id (PHI-safe).
 */
register("clinic.charge_generated")
LIVE v1
/**
 * @event   "clinic.charge_paid"
 * @surface "billing"
 *
 * Member paid an HSA visit-charge invoice (Stripe invoice.paid webhook). amount_cents matches the original charge.
 */
register("clinic.charge_paid")
PENDING v1
/**
 * @event   "clinic.charge_voided"
 * @surface "billing"
 *
 * Stripe invoice was voided (uncollectible, cancelled, etc.).
 */
register("clinic.charge_voided")
PENDING v1
/**
 * @event   "clinic.charge_waived"
 * @surface "billing"
 *
 * Admin manually waived an HSA visit charge (deductible-met override, billing error, etc.).
 */
register("clinic.charge_waived")
module: Rewards 3/4 OBSERVED
LIVE v1
/**
 * @event   "rewards.opted_in"
 * @surface "rewards"
 *
 * Member opted into the rewards program (or was auto-enrolled per employer policy).
 */
register("rewards.opted_in")
LIVE v1
/**
 * @event   "rewards.milestone_completed"
 * @surface "rewards"
 *
 * Clinical milestone hit (annual physical, biometric screening, HRA completion). Triggers a payout downstream.
 */
register("rewards.milestone_completed")
LIVE v1
/**
 * @event   "rewards.payout_funded"
 * @surface "rewards"
 *
 * Cash payout funded onto the member's Stripe Issuing card (or HSA-restricted variant). Includes amount_cents and milestone slug.
 */
register("rewards.payout_funded")
PENDING v1
/**
 * @event   "rewards.card_transaction"
 * @surface "rewards"
 *
 * Stripe Issuing transaction.created webhook. Captures the merchant category (MCC) but not merchant name (PHI-safe).
 */
register("rewards.card_transaction")
module: Member chat 0/2 OBSERVED
PENDING v1
/**
 * @event   "chat.member_message_sent"
 * @surface "spruce"
 *
 * Member sent a message to their care team via Spruce. Captures timestamp + thread_id, not message body.
 */
register("chat.member_message_sent")
PENDING v1
/**
 * @event   "chat.provider_replied"
 * @surface "spruce"
 *
 * Provider replied in the same thread. Same payload contract as member.message_sent.
 */
register("chat.provider_replied")
module: Operations 3/3 OBSERVED
LIVE v1
/**
 * @event   "admin.member_added"
 * @surface "admin"
 *
 * Roster admin added a new eligibility row (CSV upload or manual add).
 */
register("admin.member_added")
LIVE v1
/**
 * @event   "admin.member_terminated"
 * @surface "admin"
 *
 * Member's eligibility was terminated (employment ended or admin off-boarded them).
 */
register("admin.member_terminated")
LIVE v1
/**
 * @event   "admin.csv_uploaded"
 * @surface "admin"
 *
 * Bulk eligibility CSV was committed. Captures row counts, not raw row data.
 */
register("admin.csv_uploaded")

+ dozens more registered. Full schema available on request.

// why this matters

The moat under the clinic.

1

Stop-loss carriers fund the case

Carriers price employer risk on what they can see. Strata hands them an actuarial-grade longitudinal record: every intervention, every outcome, joined to claims. That conversation moves rates.

2

Brokers win renewals

Most onsite reports are PDF screenshots from fragmented systems. Strata-backed reports cite specific events, specific dates, specific dollars — the kind of evidence a broker can hand a CFO during renewal week.

3

Research-grade evidence

Two years of Strata data is the kind of dataset that supports peer-reviewed publication on cash-incentivized primary care. That's a category-defining position no competitor is positioned to take.

4

Capital-efficient defensibility

Most onsite vendors compete on clinic real estate and provider hiring — both expensive and replicable. The longitudinal data spine compounds in value with every member-day captured. It's the asset competitors can't catch up on.

Want the Strata data behind your numbers?

Drop your last 12 months of medical claims and Archer will return a memo modeling the cost-redirection on your specific population — typically inside an hour. Brokers and self-insured employers welcome.

Call Get cost analysis →