Employer experience
- Bolto creates the employer group and syncs the census from Check.
- Later, when the employer opens the Prescience offer in Bolto, Bolto’s frontend asks Bolto’s backend for an embed session.
- Bolto’s backend creates the short-lived session with Prescience and returns
the response’s
urlto Bolto’s frontend. - Bolto renders that URL as the iframe
src. The iframe shows animated, company-specific modeling while Prescience compares the group against current local market plans. - The iframe reveals Prescience Diamond with modeled employer cost, annual savings, benefits, network, and the comparison benchmark.
- The employer clicks Start employer setup, verifies a work email with a six-digit code, and clicks Open my workspace.
- Prescience creates hosted onboarding and opens a one-use authenticated handoff in a new tab. The employer’s company and census are already loaded.
1. Create the group and census
Use the normal group and census sync endpoints. Include dependents when Check has them. Those submitted households will drive the model. If Bolto does not yet have dependent elections, Prescience uses a stable, normalized small-group household mix and discloses that assumption in the quote. Final pricing, eligibility, and plan documents are confirmed during underwriting and onboarding.PUT /groups/{groupId}/census. A successful
census sync starts the market comparison. Bolto does not need to orchestrate a
separate sweep call.
The census response contains only census acceptance counts and row errors. It
does not contain an iframe URL and it does not open an iframe. Store the
returned groupId; Bolto uses it later when an employer opens the offer.
2. Mint the iframe URL from Bolto’s backend
Response (201)
url and expiresAt to its own
frontend, which renders the URL. The raw token does not need to be returned as
a separate browser field because it is already contained in url.
3. Render it in Bolto
The browser should ask Bolto’s own backend for the session URL, then set it as the iframesrc.
Bolto backend
Bolto frontend
- Use the full content width and at least
900pxof height on desktop. - Give the iframe a dedicated route or full-width drawer, not a small modal.
- On mobile, use the full viewport width and allow vertical scrolling.
- If the session expires, request a new session from Bolto’s backend and
replace
src. - Do not overlay Bolto controls on the iframe’s call-to-action or email fields.
Do not create the embed session inside the census-sync handler. Census sync
and employer entry are separate operations. An embed session can be created
while modeling is still running; the iframe will show live progress and reveal
the plan when it is ready.
What the iframe calls
These endpoints use the embed token internally. Bolto does not need to call them itself.
The iframe polls only while a market sweep is active. It shows a recoverable
error instead of spinning forever if the sweep or estimate fails.
Framing allowlist
Send Prescience every origin that will frame the integration, including exact staging, preview, and production origins. Prescience ops saves these on the Bolto partner record. An origin includes the scheme and hostname, for example:Content-Security-Policy
frame-ancestors directive. An unlisted origin is rejected before any employer
data renders. https://internal.getprescience.com is separately allowed for
Prescience’s own QA page.
Bolto acceptance test
Run this sequence with a sandbox key and a synthetic employer of at least 10 employees:1
Authenticate and create the employer
Call
GET /ping, create a test group with a valid benefits contact, then
PUT /census. Confirm every accepted employee is returned by GET /census.2
Open the offer from Bolto
Mint an embed session on Bolto’s server and open it from the exact staging
origin that will ship. Confirm the API key never appears in browser source,
network requests, logs, or the iframe URL.
3
Watch the model complete
Confirm the loading experience names the company, shows employee and location
counts, animates real progress, and transitions to the plan without a manual
refresh. Confirm failures produce retry and support actions.
4
Validate the offer
Confirm the modeled monthly cost, covered lives, benchmark, savings, network,
and benefits match the quote response. Confirm the preliminary underwriting
disclaimer is visible. Reload and confirm the model remains stable for the same
stored census and market-rate snapshot.
5
Test the employer handoff
Click Start employer setup. Confirm a personal-domain email is rejected.
Use the group contact or another address on the company domain, enter the
six-digit code, and click Open my workspace. Confirm a new tab opens
directly to the employer workspace with the correct company and census.
6
Test expiration and replay protection
Try the handoff URL a second time and confirm it no longer creates a session.
Let an embed session expire, then confirm Bolto can mint and load a replacement.
7
Verify reconciliation and webhooks
Confirm
enrollment.created is received and signature verification passes.
Then read GET /groups/{groupId}/account and GET /groups/{groupId}/members to
confirm the same employer and roster are visible to Bolto.Go-live checklist
- Prescience has Bolto’s staging and production iframe origins.
- Bolto has separate sandbox and production secrets.
- Bolto completed the acceptance test above with synthetic data.
- Bolto registered and tested its webhook endpoint.
- Prescience enabled live mode after compliance approval.
- Bolto swaps only the secret at launch. The endpoint and payload shapes stay the same.