Demo · For platforms
Watch a ben-admin platform pipe enrollment events from their event bus into Velora — the customer never knows EDI exists. They just see 'sent · accepted · active'.
01 · Webhook contract
Your platform writes the enrollment to your DB. You fire a webhook to Velora with the canonical record shape. Velora becomes a webhook subscriber on your event bus — same shape you'd send to your analytics pipeline or your CRM.
# Your platform fires this on enrollment.finalized POST https://velora-edi.vercel.app/api/v1/webhooks/inbound X-Velora-Tenant-Id: tnt_3f2a91c8 X-Velora-Signature: sha256=4a7c... Content-Type: application/json { "event": "enrollment.finalized", "event_id": "evt_8f4a2b1c", "timestamp": "2026-05-01T18:23:14Z", "data": { "member_id": "acme-emp-7741", "employer_id": "acme-corp-001", "effective_date": "2026-06-01", "plans": [...] } } # Velora response HTTP/1.1 202 Accepted X-Velora-Job-Id: job_2c9e4f8a
What just happened
Your platform fired a standard webhook. Velora HMAC-verifies the signature, queues an EDI generation job, returns a job ID. The whole exchange takes ~40ms — fits inside your existing event-bus reliability envelope.
02 · Multi-tenant isolation
Each of your customers (employers, agencies, TPAs) gets a Velora tenant. Their data never crosses into another tenant — row-level security enforced at the DB. Per-tenant API keys, per-tenant rate limits, per-tenant Sentry projects, per-tenant impersonation gating with 15-minute countdown.
# /platform/tenants — your customer roster on Velora TENANT ID EMPLOYER CARRIERS STATUS ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ tnt_3f2a91c8 Acme Corp 4 active tnt_8b1d44e2 Pinnacle Health 7 active tnt_a92c0f17 Riverstone TPA 12 active tnt_1e8f3a44 Mercy Network 3 onboarding tnt_5c7b29d1 Northstar Benefits 9 active # Cross-tenant query attempt... $ SELECT * FROM enrollments WHERE member_id = 'acme-emp-7741' -- ran with tenant context: tnt_8b1d44e2 (Pinnacle) 0 rows # RLS blocked — Acme's data is invisible to Pinnacle's session
What just happened
Postgres row-level security rejected the cross-tenant query at the DB layer — not at the application layer. Even if your platform had a bug that mis-routed a query, the DB would refuse to return rows from another tenant.
03 · Acks back to your bus
Carrier sends a 999 acknowledgment. Velora parses it, normalizes it, fires a webhook back to your platform. Your bus picks it up like any other event. Your customer-facing UI surfaces it as 'sent · accepted · active' — no EDI vocabulary leaks into your product.
# Velora fires this back when ack arrives POST https://your-platform.com/webhooks/velora X-Velora-Signature: sha256=8e3d... Content-Type: application/json { "event": "transmission.acknowledged", "event_id": "evt_4c91f2a8", "job_id": "job_2c9e4f8a", "member_id": "acme-emp-7741", "carrier": "AETNA", "status": "accepted", "normalized": "active", "raw_999": "ISA*00*...", "ai_explanation": null } # Your customer UI Maria Chen · Aetna HSA-PPO 2K ● active · effective 2026-06-01
What just happened
A 30-segment X12 999 acknowledgment landed on Velora's SFTP endpoint, got parsed, got normalized to a single `status: accepted`, and got webhooked to your platform. Your customer's UI updated from 'pending' to 'active'. They never see EDI.
04 · Embed AI + voice
Embed the voice widget with your tenant's API key. Customer asks 'why did this enrollment fail?' inside your UI — agent reads the rejection, explains it, offers to retry. The widget is unbranded by default; per-tenant persona configuration lets you brand it as your own.
# In your customer-facing app import { VeloraVoiceWidget } from '@velora/voice-widget'; export default function EnrollmentDetailPage({ tenantId, memberId }) { return ( < <YourEnrollmentDetail memberId={memberId} /> <VeloraVoiceWidget publicKey={process.env.NEXT_PUBLIC_VELORA_VOICE_KEY} tenantId={tenantId} context={{ memberId, page: 'enrollment-detail' }} persona={'your-product-name'} /> < ); } # Customer presses the voice button... YOU Why is Maria's vision coverage still pending? AGENT VSP's 999 ack came back partial — they need a vision benefit group code that wasn't in the original record. Velora flagged it for review. Want me to ask the employer's admin to provide it?
What just happened
Three lines of JSX added a voice agent to your enrollment-detail page. The agent has tenant context, page context, and your product persona. Every question the customer asks is logged against your tenant audit — same trail as the API.
Self-serve signup, or talk to us about your specific timeline and integration shape.