Skadi Partner API Console

Sample documents

Skadi's document system renders 10 document types from a single component library. Every render goes through /api/render-pdf — server-side headless Chromium with self-hosted Source Serif 4, oxblood single-accent palette, and PDF/UA-friendly tagging.

The same TSX components also drive the in-app live preview that underwriters see while editing — what's described below is exactly what your insured receives.

The 10 document types

Quote

For: Broker → Insured / Risk Manager

The summary doc you share with the insured. Modern Minimal cover hero (insured name + policy period + total premium + OUR LAYER) followed by Polished Classic detail (Items I–VIII, Schedule of Underlying with NAIC# and claims-made flags, premium decomposition, forms list with title + form# + edition).

  • Two-tier: Modern Minimal cover + Polished Classic detail
  • Tower diagram alongside the limits table (never replacing it)
  • "OUR LAYER" callout with state-disclosure block
  • 30-day validity; trailing UW CTA

Binder

For: Broker → Insured (post-bind confirmation)

Confirms coverage is in force pending policy issuance. Includes the full operative bind statement (8 elements per Couch §40 + Lopez/Ahmed line of cases) on the detail page — not just the headline. Subjectivities surface as "Conditions Precedent" with explicit "BIND IS CONDITIONAL" framing.

  • "BIND IS CONDITIONAL" notice + 8-element operative bind block
  • NAIC# rendered alongside carrier identification
  • Subjectivities with status pills + due-by dates
  • Typeset signature block with e-sign timestamp

Premium Indication

For: Broker (pre-quote, non-binding)

Pre-quote price guidance. Stamped INDICATION; no rate/mil column; non-binding fine-print disclosure block calling out 10-day validity and subject-to-full-UW caveat. Cannot be bound from this document.

  • INDICATION watermark (warning amber, -12° rotation)
  • No rate/mil column; simplified premium summary
  • 10-day validity stamped; bind explicitly disclaimed
  • Non-binding fine-print block at footer

Watermark: INDICATION

Declarations Page

For: Insured / Counsel / Auditor (legal core of policy)

Items I–VIII per compliance lock-in. Producer / Surplus-Lines Broker, Retained Limit / SIR, Audit Period, and Service of Suit explicit. Schedule of Underlying with mandatory columns: Carrier · NAIC# · Policy# · Period · Coverage · Per-Occ · Aggregate · Attachment · SIR · ★ claims-made flag.

  • Items I–VIII (not VI — compliance flagged six as light)
  • "OUR LAYER" leading row (replaces ambiguous dotted-line)
  • State-disclosure block at prescribed font size (CA 12pt, FL 14pt)
  • "Limits table controls" disclaimer alongside tower diagram

Amended Declarations

For: Issued for every endorsement that modifies the dec

Per-endorsement replacement of the dec page. Adds a "supersedes prior declarations as of [effective date]" header + endorsement summary panel (sequence, category, premium change, new total premium, pro-rata factor). Composes the standard DeclarationsPage so layout stays in lockstep.

  • "Supersedes prior declarations" effective-date callout
  • Endorsement summary panel (sequence, category, deltas)
  • Same Items I–VIII shell as the base dec

Redline Declarations

For: Broker → Insured (renewal / substantive endorsement)

Diff between prior period and current. Strikethrough + insertion markers on every changed field (named insured, address, period, NAICS, our layer, total premium, producer). Default-on — most legacy carriers cannot ship this because their PAS cannot reconstruct historical state cleanly. Skadi can: every transaction snapshots the full policy state.

  • Diff against prior period — strikethrough + highlight
  • RENEWAL DRAFT watermark
  • Default-on
  • Powered by per-transaction policy snapshots

Watermark: RENEWAL DRAFT

Historical (As-of-Date) Declarations

For: Claims adjuster (post-FNOL coverage reconstruction)

Reconstructs the dec page as of any historical transaction sequence. Watermarked SPECIMEN with a prominent "HISTORICAL RECONSTRUCTION — NOT AUTHORITATIVE" banner. Powered by policy_state_at(policy_id, sequence) RPC.

  • SPECIMEN watermark + HISTORICAL RECONSTRUCTION banner
  • Filename prefix: Skadi_HistoricalDec_…
  • For claims-adjuster post-FNOL workflow only
  • Not for distribution to insured / broker

Watermark: SPECIMEN

Full Policy Package

For: Insured (issuance)

Cover + Declarations + every endorsement / coverage part / schedule / notice rendered from the form_templates JSONB. Forms with title + form# + edition (form# alone is dangerous at claim time per compliance review).

  • Cover + Dec + N forms in a single PDF
  • Form titles + numbers + editions all surfaced
  • BlockRenderer schema unchanged across the migration

Renewal Comparison (Side-by-side)

For: Broker → Insured (renewal default)

Two-column "Expiring | Renewal" rendering — Chubb / Travelers' standard for 15 years. Changed cells highlighted with oxblood-soft background. Print-readable at 600dpi (where strikethrough fails). Includes optional underwriter-narrative block ("From your underwriter") explaining what changed and why.

  • Two-column "Expiring | Renewal" comparison — default for renewals
  • Optional underwriter-narrative block from the renewing UW
  • Replaces strikethrough as default; Redline remains as alternate

Watermark: RENEWAL DRAFT

Loss Position (companion)

For: Receiving broker (transfer-at-renewal) · claims adjuster

Pairs with Historical Dec at the same transaction sequence. Loss summary (open/closed/reopened counts + paid/case/IBNR/incurred totals) + per-claim detail + optional exposure history. Eliminates the manual-Guidewire-screenshot workflow at transfer.

  • Pairs with Historical Dec on the same transaction sequence
  • Per-claim detail with paid · case · IBNR · incurred
  • Optional exposure history surface (payroll/revenue/fleet over time)

Watermark: SPECIMEN

Live preview

Authenticated underwriters can browse all document types in the in-app preview at /admin/document-preview. Each variant is rendered with a sample-data fixture (Acme Manufacturing, $4M xs $1M layer, NAICS 561) and is configurable across all seven jurisdictions and eight watermark states.

Watermark vocabulary

WatermarkStateColor cue
DRAFTPre-issuance UW work productNeutral ink
SPECIMENSample documents (never bindable)Accent oxblood
QUOTEDTerms offered, not yet boundAccent oxblood
BOUNDCoverage in force (archival copies)Accent oxblood
INDICATIONNon-binding premium estimateWarning amber
EXPIREDCoverage period ended without renewalWarning amber
VOIDCancelled / never on riskWarning amber
RENEWAL DRAFTPre-issuance renewal work productWarning amber

Compliance lock-ins

Every issued document carries the state-prescribed surplus-lines disclosure at the prescribed font size. CA 12pt bold (CIC §1764.1), FL 14pt bold first-page (F.S. 626.924), NY Reg 41 Part 27.5, TX 28 TAC §15.2, plus generic fallback for other jurisdictions. The full per-state matrix lives in src/documents/components/StateDisclosureBlock.tsx.

Architecture

Server-side render pipeline: SPA hook → POST /api/render-pdf (Vercel Function, Node 22, Fluid Compute) → SSR via React 19 renderToStaticMarkup → headless Chromium (@sparticuz/chromium-min + playwright-core) → pdf-lib metadata normalization (deterministic /CreationDate + /ID derived from a SHA-256 of the input) → application/pdf binary with content-disposition friendly filename (e.g., Skadi_Quote_QU-2026-12345_Acme-Manufacturing.pdf).

Embedded JSON sidecar

Every rendered PDF carries a structured-JSON file attached via the PDF 1.7 EmbeddedFile API. The sidecar's contentHash matches the PDF's /ID array, so the binding between the PDF and its structured payload is cryptographically verifiable. Read the sidecar with any standards-compliant PDF tool (Adobe, Foxit, pdf-lib); your ingest tooling can ignore the rendered PDF entirely and consume the structured representation directly.

Partner endpoint POST /api/partner/quote-pdf

Partner-API endpoint authenticated with HMAC-SHA256 (X-API-Key + X-Timestamp + X-Signature) — same pattern the Edge Functions use. Content-negotiated by Accept header:

Full contract: the API reference documents both endpoints, including the content-negotiation matrix and error catalog.

Want sample PDFs?

Reach out to partner-eng@skadispecialty.com with your evaluation context. We'll generate a sample binder + dec page for your house template (NAICS, layer geometry, jurisdiction) — usually same-day during evaluation.