// Pinned horizontal-scroll PRODUCT section (acceler8-style) // Five capability slides, each with its own intuitive animated visual. // Slide becomes "live" when active — animations key off that class. const CAPS = [ { n: '01', name: 'Intake', eyebrow: 'Document intake · Auto-extraction', h: <>Drop a contract.
Watch every field populate., body: 'Upload PDFs, connect cloud storage, or hit the API. Our compliance AI parses entities, dates, parties, and clauses — then indexes them into a structured knowledge base. You move on.', feats: [ 'Reads NDAs, MSAs, SOWs, certificates, and audits out of the box', 'Extracts 47 entity types with compliance-tuned reasoning', '1.2 second median time to indexed and searchable', ], }, { n: '02', name: 'Risk', eyebrow: 'Vendor risk · Composite scoring', h: <>Know which vendors
are a problem first., body: 'Every vendor scored 0–100 across twelve weighted factors — compliance gaps, missing documents, contract value, and renewal posture. Risk impact updates live as documents process.', feats: [ 'Composite scoring across 12 weighted factors', 'AI-driven risk impact detection per vendor', 'Threshold alerts route to chat, email, or webhook', ], }, { n: '03', name: 'Compliance Copilot', eyebrow: 'Compliance Copilot · grounded answers over your corpus', h: <>Ask your compliance
data anything., body: 'Natural-language Q&A grounded in your own documents and a compliance-specific knowledge base. Cites source clauses, understands gaps, and refuses when evidence is thin. No hallucinations.', feats: [ 'Cited answers in 1.4s median', 'Refuses gracefully when sources are thin', 'Saves frequent queries as named reports', ], }, { n: '04', name: 'Workflows', eyebrow: 'Workflows · AI-native pipelines', h: <>Compliance that
runs itself., body: 'Purpose-built workflows handle intake, gap detection, risk scoring, vendor enrichment, reminders, and graph rebuilds. Pipelines that solve for compliance gaps — not generic automation retrofitted.', feats: [ '60+ purpose-built nodes for compliance workflows', 'AI detects compliance gaps and triggers remediation', 'Full audit trail with replay & rollback', ], }, { n: '05', name: 'Graph', eyebrow: 'Knowledge graph · Live connections', h: <>See how
everything connects., body: 'A live knowledge graph linking entities, documents, vendors, and regulations. One vendor failing an audit shows you every contract and jurisdiction it touches — automatically.', feats: [ '447 nodes, 1,128 edges in a typical mid-market portfolio', 'Click any node — see contracts, controls, history', 'Diff over time — what changed since last audit', ], }, ]; // =========================================================================== // VISUAL 1 · INTAKE — scan beam + field highlight + JSON typewriter // =========================================================================== const VisIntake = ({ live }) => { const lits = [1, 4, 6, 8, 10]; const tags = ['Party', 'Date', 'Term', 'Confidentiality', 'Signature']; return (
NDA-0418.PDF · 6 PAGES
NON-DISCLOSURE AGREEMENT
{[100, 92, 70, 96, 80, 88, 94, 70, 90, 84, 76, 90, 72, 88].map((w, i) => { const litI = lits.indexOf(i); const lit = litI > -1; return (
{lit && {tags[litI]}}
); })}
EXTRACTED · AI
{`{
  "entity":     "Harbor Industrial",
  "type":       "NDA",
  "expires":    "2026-09-12",
  "parties":    [2],
  "risk":       "low",
  "confidence": 0.97
}`}
INDEXED · 1.2s
); }; // =========================================================================== // VISUAL 2 · RISK — distribution + animated vendor bars // =========================================================================== const VisRisk = ({ live }) => { const vendors = [ { n: 'BuildRight Co.', s: 91, t: '#5a8470', tag: 'Healthy' }, { n: 'Anchor Materials', s: 86, t: '#5a8470', tag: 'Healthy' }, { n: 'Clearwater Logistics', s: 78, t: '#a8854a', tag: 'Watch' }, { n: 'Meridian Tech', s: 69, t: '#a8854a', tag: 'Watch' }, { n: 'Northgate Holdings', s: 54, t: '#7d2e3a', tag: 'Action' }, { n: 'Summit Partners', s: 42, t: '#7d2e3a', tag: 'Action' }, ]; const dist = [8, 14, 26, 30, 18, 6]; return (
200 Vendors · sorted by risk Q2 2026
{dist.map((h, i) => ( ))}
{vendors.map((v, i) => (
{v.n} {v.tag} {v.s}
))}
); }; // =========================================================================== // VISUAL 3 · COPILOT — Q types → thinking → cited answer reveals // =========================================================================== const VisCopilot = ({ live }) => { const rows = [ { g: 'Missing OSHA cert', e: 'Harbor Industrial', t: '#7d2e3a', l: 'High', src: 'audit-log#412' }, { g: 'Expired DPA', e: 'University Campus', t: '#7d2e3a', l: 'High', src: 'contracts#88' }, { g: 'Workers Comp expires 9d', e: 'Riverside Medical', t: '#a8854a', l: 'Med', src: 'docs#1204' }, ]; return (
You
What are the top compliance gaps across all entities?
ComplyChip is reading 287 documents…
ComplyChip · 1.4s 23 sources cited
Three gaps stand out — two critical, one watchpoint:
{rows.map((r, i) => (
{r.g} {r.e} {r.src} {r.l}
))}
); }; // =========================================================================== // VISUAL 4 · WORKFLOWS — pipeline with traveling data dots // =========================================================================== const VisWorkflow = ({ live }) => { const nodes = [ { x: 195, y: 30, l: 'Ingest', s: 'PDF · Cloud · API', i: 0 }, { x: 65, y: 140, l: 'Extract', s: 'AI parser', i: 1 }, { x: 325, y: 140, l: 'Score', s: 'Composite', i: 2, hot: true }, { x: 65, y: 240, l: 'Notify', s: 'Chat · Email', i: 3 }, { x: 325, y: 240, l: 'Graph', s: 'Vector index', i: 4 }, ]; return (
Pipeline · Workflow engine RUNNING · 28 events/min
{/* Edges */} {/* Traveling data dots — continuous flow */} {/* Nodes */} {nodes.map(n => ( {n.l} {n.s.toUpperCase()} {n.hot && ( )} ))}
); }; // =========================================================================== // VISUAL 5 · GRAPH — edges draw, nodes appear, central halo pulses // =========================================================================== const VisGraph = ({ live }) => { const nodes = [ { x: 250, y: 165, r: 28, c: '#1f3a30', l: 'Harbor Industrial', big: true }, { x: 100, y: 70, r: 14, c: '#14110e', l: 'NDA-0418' }, { x: 400, y: 70, r: 14, c: '#5a8470', l: 'OSHA cert' }, { x: 70, y: 260, r: 14, c: '#7d2e3a', l: 'Audit Q2' }, { x: 430, y: 260, r: 14, c: '#a8854a', l: 'BuildRight' }, { x: 180, y: 30, r: 8, c: '#c5bca5' }, { x: 325, y: 30, r: 8, c: '#c5bca5' }, { x: 35, y: 160, r: 8, c: '#c5bca5' }, { x: 465, y: 160, r: 8, c: '#c5bca5' }, ]; return (
447 nodes · 1,128 edges Centered: Harbor
{nodes.slice(1).map((n, i) => ( ))} {nodes.map((n, i) => ( {n.big && ( <> )} {n.l && ( {n.l} )} ))} {/* Live activity ping — travels along one edge */}
); }; const __visuals = [VisIntake, VisRisk, VisCopilot, VisWorkflow, VisGraph]; // =========================================================================== // PINNED HORIZONTAL-SCROLL SECTION // =========================================================================== const LCapabilities = () => { const wrapRef = React.useRef(null); const trackRef = React.useRef(null); const [active, setActive] = React.useState(0); React.useEffect(() => { let raf = 0; const update = () => { raf = 0; const el = wrapRef.current; if (!el) return; const rect = el.getBoundingClientRect(); const vh = window.innerHeight; const total = rect.height - vh; if (total <= 0) return; const t = Math.max(0, Math.min(1, -rect.top / total)); if (trackRef.current) { const tx = -t * (CAPS.length - 1) * 100; trackRef.current.style.transform = `translate3d(${tx.toFixed(3)}vw, 0, 0)`; } const idx = Math.min(CAPS.length - 1, Math.max(0, Math.round(t * (CAPS.length - 1)))); setActive(idx); }; const onScroll = () => { if (!raf) raf = requestAnimationFrame(update); }; window.addEventListener('scroll', onScroll, { passive: true }); window.addEventListener('resize', onScroll); update(); return () => { window.removeEventListener('scroll', onScroll); window.removeEventListener('resize', onScroll); cancelAnimationFrame(raf); }; }, []); const jumpTo = (i) => { const el = wrapRef.current; if (!el) return; const rect = el.getBoundingClientRect(); const top = window.scrollY + rect.top; const total = el.offsetHeight - window.innerHeight; const targetY = top + total * (i / (CAPS.length - 1)); window.scrollTo({ top: targetY + 8, behavior: 'smooth' }); }; return (
The product · Five moments

Real product,
not promises.

{CAPS.map((c, i) => ( ))}
{CAPS.map((cap, i) => { const Visual = __visuals[i]; return (
{cap.eyebrow}

{cap.h}

{cap.body}

{cap.feats.map(f => (
{f}
))}
See {cap.name.toLowerCase()} in detail
); })}
{String(active + 1).padStart(2, '0')} / {String(CAPS.length).padStart(2, '0')} scroll →
); }; window.LCapabilities = LCapabilities;