Causality APIs 29: The Marketplace Enrollment That Should Not Have Happened

Rocket Vector rocket logo on a dark branded background.

A consumer opens the Marketplace portal and finds a plan change they do not recognize. Maybe an agent helped. Maybe the income estimate was wrong. Maybe a notice was missed. The result is not just an administrative error. It can create subsidy exposure, tax risk, premium confusion, and disruption when coverage is corrected.

Share: Marketplace integrity is not just catching bad enrollments. The same controls can affect consumer confusion, subsidy exposure, and coverage disruption. #Causality #Healthcare #HealthInsurance

Synthetic teaching model

This article uses a synthetic teaching model. It is not clinical, operational, actuarial, legal, compliance, or policy advice. The sources below justify why some variables belong in the model. The probabilities are invented so the reasoning path is easy to inspect.

The Problem Is Not Always One Thing

Marketplace integrity has two audiences at once: the public program that must prevent improper payments, and the consumer who needs clear coverage. A control that catches bad enrollment can still confuse a legitimate consumer if notices, confirmations, and redeterminations do not land cleanly.

Why The Obvious Explanation Can Mislead

The obvious answer is fraud. Sometimes that is right, but it is not the only story. A consumer may be confused because notices were weak, a plan change was not confirmed, income data did not match, or an agent channel created risk. A model helps keep improper enrollment and consumer disruption in the same picture.

Plain-language modeling note

A Bayesian belief network, or BBN, is a graph for asking conditional questions. Each node is a condition, each arrow says one condition informs another, and each probability is explicit. You do not need to know the SDK to read the graph: the SDK code is only there when we need a repeatable action query.

The Question For This Example

This example asks how improper-enrollment-or-disruption risk changes after observing channel and notice problems, and what changes if consumer-facing confirmation and agent oversight are set to stronger states.

The target outcome is ImproperEnrollmentOrDisruption, which means improper enrollment or disruption in this teaching model.

A Small Model Of The Situation

The model is synthetic and intentionally small. It does not model actual Marketplace eligibility law, tax reconciliation, plan-specific billing, broker compensation, or consumer-level decisions.

The graph has 16 nodes:

  • BrokerChannelRisk: Broker channel risk (low / high)
  • IdentityProofingStrength: Identity proofing strength (strong / weak)
  • IncomeAttestationAccuracy: Income attestation accuracy (accurate / inaccurate)
  • DataSourceMatch: Data source match (yes / no)
  • SEPVerificationStrength: SEP verification strength (strong / weak)
  • APTCReconciliationHistory: APTC reconciliation history (complete / missing)
  • ConsumerNoticeDelivery: Consumer notice delivery (good / poor)
  • PlanChangeConfirmation: Plan change confirmation (complete / missing)
  • PremiumPaymentStatus: Premium payment status (complete / missing)
  • AgentOversight: Agent oversight (strong / weak)
  • MarketplaceIntegrityCheck: Marketplace integrity check (strong / weak)
  • EligibilityRedetermination: Eligibility redetermination (complete / missing)
  • ConsumerConfusion: Consumer confusion (low / high)
  • SubsidyExposure: Subsidy exposure (low / high)
  • CoverageDisruptionRisk: Coverage disruption risk (low / high)
  • ImproperEnrollmentOrDisruption: Improper enrollment or disruption (no / yes)

Marketplace Enrollment Integrity BBN graph with source-informed healthcare variables and synthetic probabilities.

What Is Sourced And What Is Synthetic

CMS Marketplace integrity materials support including income verification, SEP verification, APTC reconciliation, improper enrollments, agent oversight, consumer accountability, and notice-related disruption. The numeric probabilities are invented.

Income and eligibility checks
CMS’s Marketplace Integrity and Affordability rule supports including income verification, data matching, and eligibility redetermination pathways.
APTC reconciliation
CMS materials support including reconciliation history and subsidy exposure in a Marketplace integrity model.
Consumer confirmation and oversight
CMS materials support including consumer awareness, unauthorized enrollments, and agent or broker oversight as mechanisms.

Boundary of the evidence

The sources support the general mechanisms in the graph. They do not estimate this article’s node states, thresholds, or conditional probability values. Those are synthetic teaching values.

The Query The Graph Cannot Show By Itself

The visual graph is the best way to inspect the structure. The code-backed query is there for a narrower reason: we want to separate what is learned by observing a messy case from what changes if one condition is set differently.

Using the Darkstar Python SDK, a subscribed SDK user can load the same BBN JSON, ask for the target probability after evidence is entered, then run the action query by setting a node before querying again. The download includes this as illustrative SDK code, while the standalone query_example.py reproduces the article numbers without shipping the SDK.

import json

from darkstar import DiscreteModel

TARGET = "ImproperEnrollmentOrDisruption"
OBSERVED_EVIDENCE = {
    "BrokerChannelRisk": "high",
    "ConsumerNoticeDelivery": "poor",
    "PlanChangeConfirmation": "missing",
    "IncomeAttestationAccuracy": "inaccurate"
}
INTERVENTION_CONTEXT = {
    "BrokerChannelRisk": "high",
    "IncomeAttestationAccuracy": "inaccurate"
}
INTERVENTION = {
    "ConsumerNoticeDelivery": "good",
    "PlanChangeConfirmation": "complete",
    "AgentOversight": "strong"
}


def probability_after_observing(model, evidence):
    query = {"nodes": [TARGET], "evidence": evidence}
    result = json.loads(model.pquery(json.dumps(query)))
    return result[TARGET]["yes"]


def probability_after_setting(model, setting, evidence):
    changed_model = model.intervene(json.dumps(setting))
    return probability_after_observing(changed_model, evidence)


with DiscreteModel(model_json) as model:
    observed = probability_after_observing(model, OBSERVED_EVIDENCE)
    acted = probability_after_setting(model, INTERVENTION, INTERVENTION_CONTEXT)

That is the article’s main modeling distinction. Observing a pattern is not the same as setting one part of the system differently.

The standalone query code gives this synthetic result:

Baseline improper enrollment or disruption: 26.9%
Observed scenario (risky channel with weak consumer confirmation): 48.6%
Action scenario (better notices, confirmation, and agent oversight): 31.3%
Same context with the action left unfavorable: 58.5%
Synthetic reduction versus the observed scenario: 17.3 percentage points

What We Learn By Observing The Situation

The observed scenario sets:

  • Broker channel risk = high
  • Consumer notice delivery = poor
  • Plan change confirmation = missing
  • Income attestation accuracy = inaccurate

The observed scenario sets high broker-channel risk, poor notice delivery, missing plan-change confirmation, and inaccurate income attestation. In the synthetic model, those facts lift the target because they can affect both subsidy exposure and coverage disruption.

Reasoning comparison for Marketplace Enrollment Integrity BBN.

What Changes If We Set One Condition Differently

The action scenario sets:

  • Consumer notice delivery = good
  • Plan change confirmation = complete
  • Agent oversight = strong

The action query strengthens notice delivery, plan-change confirmation, and agent oversight. It does not assume the income attestation becomes correct by itself. That matters because some risk remains in the eligibility and subsidy path.

What This Example Cannot Prove

This example cannot decide whether an enrollment was improper, whether a consumer owes money, or how CMS should implement a Marketplace rule. It is a teaching model about why integrity and consumer experience should be reasoned about together.

Try this in the shared model

Open the companion model, change one upstream condition at a time, and watch the target probability move. Start with the observed scenario above, then reset one condition that looks actionable. The point is to compare stories, not to treat the toy probabilities as a forecast.

Try The Model

Open the companion Darkstar model: Open Marketplace Enrollment Integrity BBN

Change IncomeAttestationAccuracy to accurate but leave notices poor. Then make notices good while income remains inaccurate. The model lets you compare a data problem with a communication problem.

Download the teaching package: Marketplace Enrollment Integrity BBN ZIP

The teaching ZIP includes only synthetic assets. It excludes consumer data, Marketplace records, broker information, SDK packages, internal APIs, and chart-generation code.

Sources

  1. CMS 2025 Marketplace Integrity and Affordability Final Rule
  2. CMS Marketplace
  3. CMS Actions to Protect Consumers and Strengthen Exchange Program Integrity

Leave a Reply

Discover more from Blogs

Subscribe now to keep reading and get access to the full archive.

Continue reading