Source integrity for AI output

Decide on what happened.
Not on the AI's version of it.

Wherever AI turns a source into an output, meaning can drift. Plumb reads the output against the source and shows you exactly what changed, before anyone acts on it.

See it on your own output
Scroll

Different industries. Same failure pattern.

Plumb does not care what the workflow is called. Insurance claim. Clinical handoff. Customer escalation. Legal review. Underwriting note. Support summary.

The pattern is the same. A source says one thing. An AI output says something close enough to sound right. But the meaning moved.

For executives it becomes hidden risk.
For AI leaders it becomes the reason pilots don't safely scale.
For managers it becomes rework, escalation, and quality control problems.
For the person doing the work it becomes the missed detail that changes the decision.

Three examples. Three different workflows. The same underlying failure.

An insurance claim
Source

Water damage extends to the subfloor and load-bearing wall. Structural assessment required before repair.

AI Output

Water damage noted to flooring. Recommend repair.

Missed The structural finding, likely the costliest part of the claim, never made it into the summary.
A clinical handoff
Source

Patient stable. Penicillin allergy, confirmed reaction on file.

AI Output

Patient stable and cleared for a standard antibiotic course.

Invented The source never cleared the patient for antibiotics. The output dropped the allergy and jumped to a conclusion it could not support.
A customer escalation
Source

Your update broke my checkout. I have lost two days of orders and I am ready to cancel.

AI Output

Customer reports friction with the checkout flow after the update.

Changed A cancellation risk and lost revenue were softened into "friction."

Plumb finds these movements before they become decisions.

What the source said. Before anyone acts on what the AI produced.

Plumb reads the source and the output and tells you exactly where they diverge.

Held Faithfully reflected
Changed Softened, strengthened, reframed
Missed In the source, absent from the output
Invented No source evidence found
Live product Plumb in action

The output isn't wrong. It just stopped matching the source.

Teams adopt AI for the speed, and the speed is real. But every time it turns a source into an output, the meaning can move, and the output reads clean either way. The more of your decisions run on those outputs, the more of them sit on a version of the source that quietly shifted.

Grounding tells the model what to look at. It does not check what the model did with it. Plumb is the layer that checks, reading the source and the output against each other and telling you where they diverge.

01

The meaning shifted

The output reflected the source but softened a commitment, dropped a condition, or reframed the conclusion. Nothing was invented. Something changed.

02

The signal went quiet

A risk, a constraint, a flag. It was in the source. It never reached the output, and the output doesn't tell you it's gone.

03

The conclusion outran the source

The recommendation sounds grounded. What the source actually supported didn't get you there. The inference filled the space the source left open.

04

It looked complete

Beginning, middle, end. Feels reviewed. Half the source is missing and nothing in the output signals it.

One call at the end of the workflow you already run.

No new process. No new interface. Plumb reads your source and your output and tells you where they diverge.

Step 01

Your source goes in

The material the AI was working from. Tickets, claims, notes, contracts, retrieved context, workflow outputs. Whatever the source set was.

Step 02

Your AI output goes in

The summary, brief, assessment, or recommendation, exactly as generated.

Step 03

Plumb shows you what changed

What held. What drifted. What was dropped. What has no source behind it. Before anyone acts on it.

Plumb sits at the end of what you already run. It doesn't touch the generation pipeline. It doesn't change how your team works. It compares the source and the output and tells you where they diverge.

Your material

Plumb sees less than you'd think.

What it sees

Only the two things you send it: the source and the output. Not your systems, your databases, or your prompts.

Where it sits

Outside how the output gets made. It reads after the fact and never changes your pipeline.

What it returns

The findings, and nothing else. Your material stays yours.

Your name is on the call. Plumb tells you the read behind it held.

Plumb is for teams using AI to turn their own information into the reads they decide on. Wherever a stream of source material gets summarized by AI before someone acts on it, and the gap between what the AI produced and what the source said has consequences.

The workflows differ. The problem doesn't.

The person who acts on the read
Director · Principal · Operations · Claims · Clinical

You're not reading every output line by line. You don't have the time. But the call is yours, and it travels with you when the read was wrong.

Plumb is how you know the output held before you act on it. Not because it looks right. Because it checked out.

The person who built the workflow
Operations Lead · AI Lead · Head of Technology

You know the output depends on things that can quietly go wrong. Right now nothing catches it before it leaves.

Plumb is that layer. One integration at the tail end of what you already run.

Any workflow where an AI output feeds a decision with real consequences.

See what your AI outputs actually said.

15 minutes. We run Plumb against a real output, yours or one of ours, and show you exactly what it finds. No deck. No pitch. Just the product working.

See it on your own output 15 min · No commitment · See it work first
The Demo
15 minutes. We run Plumb against a real output. You see what it finds.
The Pilot
30 days. One workflow. Fixed fee. Credit applied on conversion.
The Ask
Nothing until you've seen it work on your own material.
font-size: 15px; font-weight: 500; color: var(--text); text-decoration: none; letter-spacing: -0.02em; display: flex; align-items: center; gap: 9px; } .nav-mark { height: 28px; width: auto; flex-shrink: 0; } .hero-mark { height: 60px; width: auto; display: block; margin: 0 auto 28px; opacity: 0; animation: fade-up 0.8s ease forwards; } .footer-mark { height: 26px; width: auto; opacity: 0.6; flex-shrink: 0; } .section-mark { display: flex; align-items: center; justify-content: center; gap: 22px; max-width: 1200px; margin: 0 auto; padding: 8px 48px; } .section-mark::before, .section-mark::after { content: ''; height: 1px; width: 60px; background: var(--border-light); } .section-mark svg { height: 24px; width: auto; opacity: 0.55; } .nav-tagline { font-family: var(--mono); font-size: 10px; font-weight: 400; color: var(--text-tertiary); letter-spacing: 0.04em; position: relative; top: -1px; } .nav-tagline::before { content: '·'; margin-right: 10px; color: var(--border); } .nav-links { display: flex; align-items: center; gap: 40px; } .nav-link { font-family: var(--sans); font-size: 14px; font-weight: 400; color: var(--text-secondary); text-decoration: none; transition: color 0.2s; } .nav-link:hover { color: var(--text); } .nav-cta { display: inline-flex; align-items: center; gap: 8px; background: var(--accent); color: #fff; font-family: var(--sans); font-size: 13.5px; font-weight: 500; padding: 9px 20px; border-radius: 4px; text-decoration: none; transition: background 0.2s, transform 0.15s; letter-spacing: 0.01em; } .nav-cta:hover { background: #b07610; transform: translateY(-1px); } /* ─── HERO ─── */ #hero { min-height: 100vh; display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; padding: 120px 48px 80px; position: relative; overflow: hidden; } .hero-grain { position: absolute; inset: 0; background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)' opacity='0.03'/%3E%3C/svg%3E"); pointer-events: none; opacity: 0.4; } .hero-label { font-family: var(--mono); font-size: 11px; font-weight: 500; letter-spacing: 0.12em; text-transform: uppercase; color: var(--accent); margin-bottom: 32px; opacity: 0; animation: fade-up 0.7s ease 0.1s forwards; } .hero-eyebrow { font-family: var(--mono); font-size: 11px; letter-spacing: 0.18em; text-transform: uppercase; color: var(--accent); margin-bottom: 24px; opacity: 0; animation: fade-up 0.8s ease 0.1s forwards; } .hero-headline { font-family: var(--serif); font-size: clamp(42px, 6vw, 80px); font-weight: 400; line-height: 1.08; letter-spacing: -0.02em; color: var(--text); max-width: 820px; margin-bottom: 28px; opacity: 0; animation: fade-up 0.8s ease 0.25s forwards; } .hero-headline em { font-style: italic; color: var(--accent); } .hero-sub { font-family: var(--sans); font-size: 18px; font-weight: 300; line-height: 1.65; color: var(--text-secondary); max-width: 540px; margin-bottom: 48px; opacity: 0; animation: fade-up 0.8s ease 0.4s forwards; } .hero-actions { display: flex; align-items: center; gap: 20px; opacity: 0; animation: fade-up 0.8s ease 0.55s forwards; } .btn-primary { display: inline-flex; align-items: center; gap: 10px; background: var(--accent); color: #fff; font-family: var(--sans); font-size: 15px; font-weight: 500; padding: 14px 28px; border-radius: 4px; text-decoration: none; transition: background 0.2s, transform 0.15s, box-shadow 0.2s; box-shadow: 0 4px 20px rgba(196, 133, 12, 0.25); } .btn-primary:hover { background: #b07610; transform: translateY(-2px); box-shadow: 0 8px 32px rgba(196, 133, 12, 0.35); } .btn-arrow { display: inline-block; transition: transform 0.2s; } .btn-primary:hover .btn-arrow { transform: translateX(3px); } .btn-ghost { font-family: var(--sans); font-size: 14px; font-weight: 400; color: var(--text-secondary); text-decoration: none; border-bottom: 1px solid var(--border); padding-bottom: 2px; transition: color 0.2s, border-color 0.2s; } .btn-ghost:hover { color: var(--text); border-color: var(--text-secondary); } .hero-scroll { position: absolute; bottom: 40px; left: 50%; transform: translateX(-50%); display: flex; flex-direction: column; align-items: center; gap: 8px; opacity: 0; animation: fade-up 0.8s ease 1s forwards; } .hero-scroll-line { width: 1px; height: 40px; background: linear-gradient(to bottom, var(--border), transparent); animation: scroll-pulse 2s ease-in-out infinite; } .hero-scroll-label { font-family: var(--mono); font-size: 9px; letter-spacing: 0.1em; text-transform: uppercase; color: var(--text-tertiary); } /* ─── TRUST STRIP ─── */ .trust-strip { border-top: 1px solid var(--border-light); border-bottom: 1px solid var(--border-light); padding: 18px 48px; display: flex; align-items: center; justify-content: center; gap: 12px; background: var(--card); opacity: 0; transform: translateY(20px); } .trust-strip.visible { opacity: 1; transform: none; transition: opacity 0.6s ease, transform 0.6s ease; } .trust-strip-label { font-family: var(--mono); font-size: 10px; letter-spacing: 0.1em; text-transform: uppercase; color: var(--text-tertiary); } .trust-divider { width: 1px; height: 16px; background: var(--border); } .trust-stat { font-family: var(--sans); font-size: 13px; font-weight: 400; color: var(--text-secondary); } .trust-stat strong { font-weight: 600; color: var(--text); } /* ─── SECTION BASE ─── */ section { padding: 100px 48px; max-width: 1200px; margin: 0 auto; } .section-label { font-family: var(--mono); font-size: 10px; letter-spacing: 0.14em; text-transform: uppercase; color: var(--accent); margin-bottom: 20px; display: block; } .reveal { opacity: 0; transform: translateY(28px); transition: opacity 0.7s ease, transform 0.7s ease; } .reveal.visible { opacity: 1; transform: none; } /* ─── PROBLEM SECTION ─── */ #problem { max-width: 1200px; margin: 0 auto; padding: 100px 48px; } .problem-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 80px; align-items: start; } .problem-left h2 { font-family: var(--serif); font-size: clamp(32px, 4vw, 52px); font-weight: 400; line-height: 1.12; letter-spacing: -0.02em; margin-bottom: 28px; } .problem-left p { font-size: 16px; font-weight: 300; line-height: 1.75; color: var(--text-secondary); margin-bottom: 20px; } .problem-left p strong { color: var(--text); font-weight: 500; } .problem-right { padding-top: 8px; } .failure-mode { padding: 22px 0; border-bottom: 1px solid var(--border-light); display: grid; grid-template-columns: 28px 1fr; gap: 16px; align-items: start; opacity: 0; transform: translateX(16px); transition: opacity 0.5s ease, transform 0.5s ease; } .failure-mode.visible { opacity: 1; transform: none; } .failure-mode:first-child { border-top: 1px solid var(--border-light); } .failure-number { font-family: var(--mono); font-size: 10px; font-weight: 500; color: var(--text-tertiary); padding-top: 3px; letter-spacing: 0.05em; } .failure-content h4 { font-family: var(--sans); font-size: 15px; font-weight: 500; color: var(--text); margin-bottom: 6px; } .failure-content p { font-size: 14px; font-weight: 300; line-height: 1.6; color: var(--text-secondary); } /* ─── PROOF CARD ─── */ .proof-card { background: var(--card); } .proof-block { display: grid; grid-template-columns: 1fr 1fr; gap: 0; border: 1px solid var(--border-light); border-radius: 4px; overflow: hidden; margin-bottom: 16px; } .proof-col { padding: 16px 16px; } .proof-col:first-child { border-right: 1px solid var(--border-light); background: var(--bg); } .proof-col:last-child { background: rgba(196, 133, 12, 0.03); } .proof-col-label { font-family: var(--mono); font-size: 9px; font-weight: 500; letter-spacing: 0.1em; text-transform: uppercase; margin-bottom: 10px; } .proof-col-label.source { color: var(--text-tertiary); } .proof-col-label.output { color: var(--accent); } .proof-text { font-size: 12.5px; font-weight: 300; line-height: 1.65; color: var(--text-secondary); } .proof-text strong { color: var(--text); font-weight: 500; } .proof-changed { background: var(--accent-bg); color: var(--accent); font-weight: 500; padding: 1px 3px; border-radius: 2px; } .proof-finding { display: flex; align-items: flex-start; gap: 10px; padding: 12px 14px; background: var(--accent-bg-subtle); border: 1px solid rgba(196, 133, 12, 0.1); border-radius: 4px; } .proof-finding-dot { width: 7px; height: 7px; border-radius: 50%; margin-top: 3px; flex-shrink: 0; } .proof-finding-dot.amber { background: var(--accent); } .proof-finding-dot.red { background: var(--red); } .proof-finding-dot.blue { background: var(--blue); } .proof-finding-dot.green { background: var(--green); } .impact-levels { display: grid; grid-template-columns: repeat(2, 1fr); gap: 1px; background: var(--border-light); border: 1px solid var(--border-light); border-radius: 4px; overflow: hidden; max-width: 760px; margin-bottom: 48px; } .impact-level { background: var(--card); padding: 20px 22px; } .impact-role { font-family: var(--mono); font-size: 10px; letter-spacing: 0.12em; text-transform: uppercase; color: var(--accent); display: block; margin-bottom: 8px; } .impact-text { font-family: var(--sans); font-size: 14px; font-weight: 300; line-height: 1.55; color: var(--text-secondary); } .stakes-intro { font-family: var(--sans); font-size: 16px; font-weight: 300; line-height: 1.7; color: var(--text-secondary); max-width: 600px; margin-bottom: 16px; } .stakes-lead { font-family: var(--sans); font-size: 15px; font-weight: 500; line-height: 1.6; color: var(--text); margin-bottom: 28px; } .stakes-closer { font-family: var(--serif); font-size: clamp(20px, 2vw, 26px); font-weight: 400; line-height: 1.3; letter-spacing: -0.01em; color: var(--text); margin-top: 40px; } .proof-finding-body { display: flex; flex-direction: column; gap: 3px; } .proof-finding-tag { font-family: var(--mono); font-size: 9px; font-weight: 500; letter-spacing: 0.1em; text-transform: uppercase; color: var(--accent); } .proof-finding-desc { font-size: 12.5px; font-weight: 300; line-height: 1.5; color: var(--text-secondary); } /* ─── END PROOF CARD ─── */ #stakes { background: var(--bg-warm); border-top: 1px solid var(--border-light); border-bottom: 1px solid var(--border-light); max-width: 100%; padding: 100px 48px; } #stakes .inner { max-width: 1200px; margin: 0 auto; } .stakes-header { max-width: 580px; margin-bottom: 64px; } .stakes-header h2 { font-family: var(--serif); font-size: clamp(30px, 3.5vw, 46px); font-weight: 400; line-height: 1.15; letter-spacing: -0.02em; margin-bottom: 20px; } .stakes-header p { font-size: 16px; font-weight: 300; line-height: 1.7; color: var(--text-secondary); } .scenario-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 2px; } .scenario-card { background: var(--card); padding: 32px 28px; position: relative; opacity: 0; transform: translateY(20px); transition: opacity 0.6s ease, transform 0.6s ease; } .scenario-card.visible { opacity: 1; transform: none; } .scenario-card::before { content: ''; position: absolute; top: 0; left: 0; right: 0; height: 2px; background: var(--border-light); transition: background 0.3s; } .scenario-card:hover::before { background: var(--accent); } .scenario-type { font-family: var(--mono); font-size: 9px; letter-spacing: 0.12em; text-transform: uppercase; color: var(--text-tertiary); margin-bottom: 20px; display: block; } .scenario-situation { font-family: var(--sans); font-size: 15px; font-weight: 400; line-height: 1.6; color: var(--text); margin-bottom: 20px; } .scenario-divider { height: 1px; background: var(--border-light); margin-bottom: 20px; } .scenario-consequence { font-size: 13.5px; font-weight: 300; line-height: 1.6; color: var(--text-secondary); } .scenario-consequence strong { color: var(--red); font-weight: 500; } /* ─── PRODUCT SECTION ─── */ #product { max-width: 1200px; margin: 0 auto; padding: 100px 48px; } .product-intro { max-width: 640px; margin-bottom: 48px; } .product-intro h2 { font-family: var(--serif); font-size: clamp(30px, 3.5vw, 46px); font-weight: 400; line-height: 1.15; letter-spacing: -0.02em; margin-bottom: 16px; } .product-intro p { font-size: 16px; font-weight: 300; line-height: 1.75; color: var(--text-secondary); } /* Returns bar */ .product-returns-bar { display: flex; align-items: center; gap: 0; border: 1px solid var(--border-light); border-radius: 6px; overflow: hidden; margin-bottom: 40px; background: var(--card); } .return-pill { display: flex; align-items: center; gap: 10px; padding: 14px 24px; flex: 1; border-right: 1px solid var(--border-light); } .return-pill:last-child { border-right: none; } .return-pill-divider { display: none; } .return-dot-sm { width: 8px; height: 8px; border-radius: 50%; flex-shrink: 0; } .return-dot-sm.green { background: var(--green); } .return-dot-sm.amber { background: var(--accent); } .return-dot-sm.red { background: var(--red); } .return-dot-sm.blue { background: var(--blue); } .return-pill-label { font-size: 13px; font-weight: 500; color: var(--text); } .return-pill-desc { font-size: 12px; font-weight: 300; color: var(--text-tertiary); } /* Brief embed wrapper */ .brief-embed-wrapper { border: 1px solid var(--border); border-radius: 8px; overflow: hidden; box-shadow: 0 8px 48px rgba(0,0,0,0.07), 0 2px 8px rgba(0,0,0,0.04); } .brief-embed-header { display: flex; align-items: center; justify-content: space-between; padding: 12px 20px; background: var(--dark); border-bottom: 1px solid rgba(255,255,255,0.06); } .brief-embed-left { display: flex; align-items: center; gap: 12px; } .brief-embed-label { font-family: var(--mono); font-size: 9px; font-weight: 500; letter-spacing: 0.1em; text-transform: uppercase; color: var(--accent); background: rgba(196, 133, 12, 0.12); padding: 3px 8px; border-radius: 2px; border: 1px solid rgba(196, 133, 12, 0.2); } .brief-embed-title { font-family: var(--mono); font-size: 11px; color: rgba(255,255,255,0.35); letter-spacing: 0.02em; } .brief-embed-toggle { display: flex; align-items: center; gap: 7px; background: rgba(255,255,255,0.06); border: 1px solid rgba(255,255,255,0.1); border-radius: 3px; padding: 5px 12px; cursor: pointer; font-family: var(--mono); font-size: 10px; color: rgba(255,255,255,0.4); letter-spacing: 0.04em; transition: all 0.2s; } .brief-embed-toggle:hover { background: rgba(255,255,255,0.1); color: rgba(255,255,255,0.7); } .embed-toggle-dot { width: 6px; height: 6px; border-radius: 50%; background: var(--accent); animation: pulse-dot 2s ease-in-out infinite; } /* Brief + Panel container */ .brief-panel-container { display: flex; background: var(--bg); min-height: 520px; max-height: 600px; overflow: hidden; } /* Brief column */ .ep-brief-col { flex: 1; min-width: 0; padding: 32px 36px; overflow-y: auto; border-right: 1px solid var(--border-light); transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1); } .ep-brief-col::-webkit-scrollbar { width: 4px; } .ep-brief-col::-webkit-scrollbar-track { background: transparent; } .ep-brief-col::-webkit-scrollbar-thumb { background: var(--border); border-radius: 2px; } .ep-brief-header { margin-bottom: 32px; padding-bottom: 24px; border-bottom: 1px solid var(--border); } .ep-date { font-family: var(--mono); font-size: 10px; letter-spacing: 0.08em; text-transform: uppercase; color: var(--text-tertiary); margin-bottom: 8px; } .ep-title { font-family: var(--serif); font-size: 26px; font-weight: 400; line-height: 1.2; margin-bottom: 5px; color: var(--text); } .ep-sub { font-size: 13px; color: var(--text-secondary); font-weight: 300; } .ep-client { margin-bottom: 28px; padding-bottom: 28px; border-bottom: 1px solid var(--border-light); } .ep-client-last { margin-bottom: 0; padding-bottom: 0; border-bottom: none; } .ep-client-header { display: flex; align-items: baseline; gap: 10px; margin-bottom: 12px; padding-bottom: 8px; border-bottom: 1px solid var(--border-light); } .ep-client-name { font-family: var(--serif); font-size: 17px; font-weight: 400; color: var(--text); } .ep-client-tag { font-family: var(--mono); font-size: 9px; letter-spacing: 0.06em; text-transform: uppercase; color: var(--text-tertiary); background: var(--border-light); padding: 2px 7px; border-radius: 3px; } .ep-section-label { font-family: var(--mono); font-size: 9px; letter-spacing: 0.08em; text-transform: uppercase; color: var(--text-tertiary); margin-bottom: 7px; margin-top: 12px; } .ep-section-label:first-of-type { margin-top: 0; } .ep-p { font-size: 13px; line-height: 1.7; color: var(--text); font-weight: 300; margin-bottom: 0; } /* Plumb panel */ .ep-panel { width: 340px; flex-shrink: 0; background: var(--card); display: flex; flex-direction: column; border-left: 1px solid var(--border); transform: translateX(0); transition: width 0.4s cubic-bezier(0.4, 0, 0.2, 1), transform 0.4s cubic-bezier(0.4, 0, 0.2, 1), opacity 0.3s ease; } .ep-panel.hidden { width: 0; transform: translateX(100%); opacity: 0; overflow: hidden; } .ep-panel-header { padding: 20px 20px 16px; border-bottom: 1px solid var(--border); flex-shrink: 0; } .ep-panel-brand { font-family: var(--mono); font-size: 9px; letter-spacing: 0.12em; text-transform: uppercase; color: var(--text-tertiary); margin-bottom: 6px; } .ep-panel-title { font-family: var(--serif); font-size: 20px; font-weight: 400; color: var(--text); margin-bottom: 10px; } .ep-panel-summary { display: flex; gap: 14px; } .ep-stat { display: flex; align-items: center; gap: 5px; font-family: var(--mono); font-size: 11px; } .ep-stat-dot { width: 7px; height: 7px; border-radius: 50%; flex-shrink: 0; } .ep-stat-dot.green { background: var(--green); } .ep-stat-dot.amber { background: var(--accent); } .ep-stat-dot.blue { background: var(--blue); } .ep-stat-dot.red { background: var(--red); } .ep-stat-num { font-weight: 500; color: var(--text); } .ep-stat-label { color: var(--text-tertiary); } .ep-panel-body { flex: 1; overflow-y: auto; padding: 16px 20px 24px; } .ep-panel-body::-webkit-scrollbar { width: 4px; } .ep-panel-body::-webkit-scrollbar-track { background: transparent; } .ep-panel-body::-webkit-scrollbar-thumb { background: var(--border); border-radius: 2px; } .ep-finding-group { margin-bottom: 22px; } .ep-group-header { display: flex; align-items: center; gap: 7px; margin-bottom: 10px; padding-bottom: 7px; border-bottom: 1px solid var(--border-light); } .ep-group-dot { width: 7px; height: 7px; border-radius: 50%; flex-shrink: 0; } .ep-group-dot.amber { background: var(--accent); } .ep-group-dot.blue { background: var(--blue); } .ep-group-dot.red { background: var(--red); } .ep-group-label { font-family: var(--mono); font-size: 9px; letter-spacing: 0.08em; text-transform: uppercase; color: var(--text-tertiary); } .ep-group-count { font-family: var(--mono); font-size: 9px; color: var(--text-tertiary); margin-left: auto; } .ep-finding-card { padding: 12px 14px; border-radius: 6px; margin-bottom: 8px; transition: transform 0.15s, box-shadow 0.15s; cursor: default; } .ep-finding-card:last-child { margin-bottom: 0; } .ep-finding-card:hover { transform: translateY(-1px); box-shadow: 0 2px 8px rgba(0,0,0,0.05); } .ep-finding-card.drift { background: rgba(196, 133, 12, 0.05); border: 1px solid rgba(196, 133, 12, 0.12); } .ep-finding-card.omission { background: rgba(40, 116, 166, 0.05); border: 1px solid rgba(40, 116, 166, 0.12); } .ep-finding-card.unsupported { background: rgba(192, 57, 43, 0.05); border: 1px solid rgba(192, 57, 43, 0.12); } .ep-finding-client { font-family: var(--mono); font-size: 9px; letter-spacing: 0.06em; text-transform: uppercase; margin-bottom: 5px; } .ep-finding-card.drift .ep-finding-client { color: var(--accent); } .ep-finding-card.omission .ep-finding-client { color: var(--blue); } .ep-finding-card.unsupported .ep-finding-client { color: var(--red); } .ep-finding-claim { font-size: 12.5px; line-height: 1.5; color: var(--text); font-weight: 400; margin-bottom: 7px; } .ep-finding-evidence { font-size: 11.5px; line-height: 1.55; color: var(--text-secondary); padding-top: 7px; border-top: 1px solid rgba(0,0,0,0.05); font-style: italic; } .ep-finding-evidence em { font-style: normal; font-weight: 500; color: var(--text); } .ep-finding-source { font-family: var(--mono); font-size: 9px; color: var(--text-tertiary); margin-top: 5px; font-style: normal; letter-spacing: 0.03em; } .ep-panel-footer { padding: 12px 20px; border-top: 1px solid var(--border); flex-shrink: 0; } .ep-verified-row { display: flex; align-items: center; gap: 8px; } .ep-verified-icon { width: 15px; height: 15px; border-radius: 50%; background: var(--green); display: flex; align-items: center; justify-content: center; color: #fff; font-size: 9px; font-weight: 700; flex-shrink: 0; } .ep-verified-text { font-size: 12px; color: var(--text-secondary); font-weight: 300; } .ep-verified-text strong { color: var(--text); font-weight: 500; } /* ─── END PRODUCT SECTION ─── */ #trust { max-width: 1200px; margin: 0 auto; padding: 100px 48px; } #trust h2 { font-family: var(--serif); font-size: clamp(28px, 3vw, 40px); font-weight: 400; line-height: 1.15; letter-spacing: -0.02em; color: var(--text); margin-bottom: 48px; max-width: 640px; } .trust-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 2px; } .trust-item { background: var(--card); padding: 28px 26px; } .trust-item h4 { font-family: var(--mono); font-size: 10px; letter-spacing: 0.12em; text-transform: uppercase; color: var(--accent); margin-bottom: 12px; } .trust-item p { font-family: var(--sans); font-size: 14px; font-weight: 300; line-height: 1.6; color: var(--text-secondary); } /* ─── HOW IT WORKS ─── */ #how { background: var(--dark); max-width: 100%; padding: 100px 48px; } #how .inner { max-width: 1200px; margin: 0 auto; } #how .section-label { color: rgba(196, 133, 12, 0.8); } #how h2 { font-family: var(--serif); font-size: clamp(30px, 3.5vw, 46px); font-weight: 400; line-height: 1.15; letter-spacing: -0.02em; color: #fff; margin-bottom: 16px; } #how .how-sub { font-size: 16px; font-weight: 300; color: rgba(255,255,255,0.5); margin-bottom: 72px; max-width: 480px; } .steps { display: grid; grid-template-columns: repeat(3, 1fr); gap: 2px; margin-bottom: 56px; } .step { padding: 36px 32px; background: var(--dark-secondary); position: relative; opacity: 0; transform: translateY(20px); transition: opacity 0.6s ease, transform 0.6s ease; } .step.visible { opacity: 1; transform: none; } .step-number { font-family: var(--mono); font-size: 10px; font-weight: 500; letter-spacing: 0.1em; color: var(--accent); margin-bottom: 24px; display: block; } .step h3 { font-family: var(--serif); font-size: 22px; font-weight: 400; color: #fff; margin-bottom: 14px; line-height: 1.25; } .step p { font-size: 14px; font-weight: 300; line-height: 1.7; color: rgba(255,255,255,0.5); } .step-connector { position: absolute; top: 50%; right: -14px; transform: translateY(-50%); color: rgba(255,255,255,0.15); font-size: 18px; z-index: 1; } .how-note { display: flex; align-items: center; gap: 16px; padding: 20px 24px; background: rgba(196, 133, 12, 0.06); border: 1px solid rgba(196, 133, 12, 0.15); border-radius: 4px; opacity: 0; transform: translateY(16px); transition: opacity 0.6s ease 0.4s, transform 0.6s ease 0.4s; } .how-note.visible { opacity: 1; transform: none; } .how-note-icon { font-size: 16px; flex-shrink: 0; } .how-note-text { font-size: 14px; font-weight: 300; color: rgba(255,255,255,0.6); line-height: 1.6; } .how-note-text strong { color: rgba(255,255,255,0.85); font-weight: 500; } /* ─── WHO IT'S FOR ─── */ #who { max-width: 1200px; margin: 0 auto; padding: 100px 48px; } .who-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 80px; align-items: start; } .who-left h2 { font-family: var(--serif); font-size: clamp(30px, 3.5vw, 46px); font-weight: 400; line-height: 1.15; letter-spacing: -0.02em; margin-bottom: 24px; } .who-left p { font-size: 16px; font-weight: 300; line-height: 1.75; color: var(--text-secondary); margin-bottom: 20px; } .who-left p strong { color: var(--text); font-weight: 500; } .who-right { display: flex; flex-direction: column; gap: 3px; } .who-card { padding: 24px 24px; background: var(--card); border: 1px solid var(--border-light); display: flex; flex-direction: column; opacity: 0; transform: translateX(16px); transition: opacity 0.5s ease, transform 0.5s ease; } .who-card.visible { opacity: 1; transform: none; } .who-card:hover { border-color: var(--border); background: #fdfdfc; } .who-card-large { padding: 28px 28px; flex-direction: column; gap: 0; } .who-card-header { margin-bottom: 16px; padding-bottom: 16px; border-bottom: 1px solid var(--border-light); } .who-reader-label { font-family: var(--sans); font-size: 15px; font-weight: 500; color: var(--text); margin-bottom: 4px; } .who-reader-role { font-family: var(--mono); font-size: 10px; letter-spacing: 0.08em; color: var(--accent); text-transform: uppercase; } .who-card-body p { font-size: 14px; font-weight: 300; line-height: 1.7; color: var(--text-secondary); margin-bottom: 10px; } .who-card-body p:last-child { margin-bottom: 0; } .who-card-body p strong { color: var(--text); font-weight: 500; } .who-card-scope { padding: 18px 28px; border: 1px solid var(--border-light); background: var(--bg-warm); display: block; } .who-scope-text { font-family: var(--mono); font-size: 10.5px; letter-spacing: 0.04em; color: var(--text-tertiary); line-height: 1.8; } /* ─── END WHO CARD STYLES ─── */ /* ─── CLOSE / CTA ─── */ #close { background: var(--dark); max-width: 100%; padding: 120px 48px; text-align: center; position: relative; overflow: hidden; } #close::before { content: ''; position: absolute; top: 0; left: 50%; transform: translateX(-50%); width: 1px; height: 80px; background: linear-gradient(to bottom, transparent, rgba(196, 133, 12, 0.3)); } .close-inner { max-width: 600px; margin: 0 auto; } .close-inner .section-label { color: rgba(196, 133, 12, 0.7); justify-content: center; } #close h2 { font-family: var(--serif); font-size: clamp(34px, 4.5vw, 58px); font-weight: 400; line-height: 1.1; letter-spacing: -0.02em; color: #fff; margin-bottom: 24px; } #close h2 em { font-style: italic; color: var(--accent); } #close p { font-size: 16px; font-weight: 300; line-height: 1.75; color: rgba(255,255,255,0.5); margin-bottom: 48px; } .close-actions { display: flex; flex-direction: column; align-items: center; gap: 16px; } .btn-primary-dark { display: inline-flex; align-items: center; gap: 10px; background: var(--accent); color: #fff; font-family: var(--sans); font-size: 16px; font-weight: 500; padding: 16px 36px; border-radius: 4px; text-decoration: none; transition: background 0.2s, transform 0.15s, box-shadow 0.2s; box-shadow: 0 4px 24px rgba(196, 133, 12, 0.3); } .btn-primary-dark:hover { background: #b07610; transform: translateY(-2px); box-shadow: 0 8px 40px rgba(196, 133, 12, 0.45); } .demo-note { font-family: var(--mono); font-size: 10px; letter-spacing: 0.08em; color: rgba(255,255,255,0.25); text-transform: uppercase; } .pilot-details { margin-top: 48px; padding-top: 48px; border-top: 1px solid rgba(255,255,255,0.06); display: grid; grid-template-columns: repeat(3, 1fr); gap: 24px; text-align: left; } .pilot-detail-item { opacity: 0; transform: translateY(12px); transition: opacity 0.5s ease, transform 0.5s ease; } .pilot-detail-item.visible { opacity: 1; transform: none; } .pilot-detail-label { font-family: var(--mono); font-size: 9px; letter-spacing: 0.12em; text-transform: uppercase; color: rgba(196, 133, 12, 0.5); margin-bottom: 8px; } .pilot-detail-value { font-size: 14px; font-weight: 300; color: rgba(255,255,255,0.5); line-height: 1.5; } /* ─── FOOTER ─── */ footer { background: var(--dark); border-top: 1px solid rgba(255,255,255,0.05); padding: 32px 48px; display: flex; align-items: center; justify-content: space-between; } .footer-brand { display: flex; align-items: center; gap: 9px; } .footer-logo { font-family: var(--mono); font-size: 13px; font-weight: 500; color: rgba(255,255,255,0.55); text-decoration: none; } .footer-tagline { font-family: var(--mono); font-size: 10px; font-weight: 400; color: rgba(255,255,255,0.15); letter-spacing: 0.04em; } .footer-tagline::before { content: '·'; margin-right: 10px; color: rgba(255,255,255,0.1); } .footer-copy { font-family: var(--mono); font-size: 10px; color: rgba(255,255,255,0.2); letter-spacing: 0.05em; } .footer-links { display: flex; gap: 24px; } .footer-link { font-size: 13px; font-weight: 300; color: rgba(255,255,255,0.25); text-decoration: none; transition: color 0.2s; } .footer-link:hover { color: rgba(255,255,255,0.5); } /* ─── ANIMATIONS ─── */ @keyframes fade-up { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: translateY(0); } } @keyframes shimmer { 0% { background-position: 200% 0; } 100% { background-position: -200% 0; } } @keyframes shimmer-amber { 0% { background-position: 200% 0; } 100% { background-position: -200% 0; } } @keyframes scroll-pulse { 0%, 100% { opacity: 0.3; } 50% { opacity: 0.8; } } @keyframes finding-pulse { 0%, 100% { opacity: 0.7; } 50% { opacity: 1; } } @keyframes blink { 0%, 100% { opacity: 1; } 50% { opacity: 0; } } /* ─── RESPONSIVE ─── */ @media (max-width: 900px) { nav { padding: 0 24px; } .nav-link { display: none; } .nav-tagline { display: none; } section, #stakes, #how, #who, #product, #problem, #close { padding: 72px 24px; } #hero { padding: 100px 24px 72px; } .problem-grid, .who-grid { grid-template-columns: 1fr; gap: 48px; } .scenario-grid { grid-template-columns: 1fr; gap: 2px; } .impact-levels { grid-template-columns: 1fr; } .trust-grid { grid-template-columns: 1fr; } .steps { grid-template-columns: 1fr; gap: 2px; } .step-connector { display: none; } .pilot-details { grid-template-columns: 1fr; gap: 20px; } footer { flex-direction: column; gap: 16px; text-align: center; } .product-returns-bar { flex-direction: column; } .return-pill { border-right: none; border-bottom: 1px solid var(--border-light); } .return-pill:last-child { border-bottom: none; } .return-pill-desc { display: none; } .brief-panel-container { flex-direction: column; max-height: none; } .ep-brief-col { border-right: none; border-bottom: 1px solid var(--border-light); padding: 24px; } .ep-panel { width: 100%; transform: none; } .ep-panel.hidden { width: 100%; height: 0; padding: 0; overflow: hidden; } .brief-embed-title { display: none; } }
Source integrity for AI output

Decide on what happened.
Not on the AI's version of it.

Wherever AI turns a source into an output, meaning can drift. Plumb reads the output against the source and shows you exactly what changed, before anyone acts on it.

See it on your own output
Scroll

Different industries. Same failure pattern.

Plumb does not care what the workflow is called. Insurance claim. Clinical handoff. Customer escalation. Legal review. Underwriting note. Support summary.

The pattern is the same. A source says one thing. An AI output says something close enough to sound right. But the meaning moved.

For executives it becomes hidden risk.
For AI leaders it becomes the reason pilots don't safely scale.
For managers it becomes rework, escalation, and quality control problems.
For the person doing the work it becomes the missed detail that changes the decision.

Three examples. Three different workflows. The same underlying failure.

An insurance claim
Source

Water damage extends to the subfloor and load-bearing wall. Structural assessment required before repair.

AI Output

Water damage noted to flooring. Recommend repair.

Missed The structural finding, likely the costliest part of the claim, never made it into the summary.
A clinical handoff
Source

Patient stable. Penicillin allergy, confirmed reaction on file.

AI Output

Patient stable and cleared for a standard antibiotic course.

Invented The source never cleared the patient for antibiotics. The output dropped the allergy and jumped to a conclusion it could not support.
A customer escalation
Source

Your update broke my checkout. I have lost two days of orders and I am ready to cancel.

AI Output

Customer reports friction with the checkout flow after the update.

Changed A cancellation risk and lost revenue were softened into "friction."

Plumb finds these movements before they become decisions.

What the source said. Before anyone acts on what the AI produced.

Plumb reads the source and the output and tells you exactly where they diverge.

Held Faithfully reflected
Changed Softened, strengthened, reframed
Missed In the source, absent from the output
Invented No source evidence found
Live product Plumb in action

The output isn't wrong. It just stopped matching the source.

Teams adopt AI for the speed, and the speed is real. But every time it turns a source into an output, the meaning can move, and the output reads clean either way. The more of your decisions run on those outputs, the more of them sit on a version of the source that quietly shifted.

Grounding tells the model what to look at. It does not check what the model did with it. Plumb is the layer that checks, reading the source and the output against each other and telling you where they diverge.

01

The meaning shifted

The output reflected the source but softened a commitment, dropped a condition, or reframed the conclusion. Nothing was invented. Something changed.

02

The signal went quiet

A risk, a constraint, a flag. It was in the source. It never reached the output, and the output doesn't tell you it's gone.

03

The conclusion outran the source

The recommendation sounds grounded. What the source actually supported didn't get you there. The inference filled the space the source left open.

04

It looked complete

Beginning, middle, end. Feels reviewed. Half the source is missing and nothing in the output signals it.

One call at the end of the workflow you already run.

No new process. No new interface. Plumb reads your source and your output and tells you where they diverge.

Step 01

Your source goes in

The material the AI was working from. Tickets, claims, notes, contracts, retrieved context, workflow outputs. Whatever the source set was.

Step 02

Your AI output goes in

The summary, brief, assessment, or recommendation, exactly as generated.

Step 03

Plumb shows you what changed

What held. What drifted. What was dropped. What has no source behind it. Before anyone acts on it.

Plumb sits at the end of what you already run. It doesn't touch the generation pipeline. It doesn't change how your team works. It compares the source and the output and tells you where they diverge.

Your material

Plumb sees less than you'd think.

What it sees

Only the two things you send it: the source and the output. Not your systems, your databases, or your prompts.

Where it sits

Outside how the output gets made. It reads after the fact and never changes your pipeline.

What it returns

The findings, and nothing else. Your material stays yours.

Your name is on the call. Plumb tells you the read behind it held.

Plumb is for teams using AI to turn their own information into the reads they decide on. Wherever a stream of source material gets summarized by AI before someone acts on it, and the gap between what the AI produced and what the source said has consequences.

The workflows differ. The problem doesn't.

The person who acts on the read
Director · Principal · Operations · Claims · Clinical

You're not reading every output line by line. You don't have the time. But the call is yours, and it travels with you when the read was wrong.

Plumb is how you know the output held before you act on it. Not because it looks right. Because it checked out.

The person who built the workflow
Operations Lead · AI Lead · Head of Technology

You know the output depends on things that can quietly go wrong. Right now nothing catches it before it leaves.

Plumb is that layer. One integration at the tail end of what you already run.

Any workflow where an AI output feeds a decision with real consequences.

See what your AI outputs actually said.

15 minutes. We run Plumb against a real output, yours or one of ours, and show you exactly what it finds. No deck. No pitch. Just the product working.

See it on your own output 15 min · No commitment · See it work first
The Demo
15 minutes. We run Plumb against a real output. You see what it finds.
The Pilot
30 days. One workflow. Fixed fee. Credit applied on conversion.
The Ask
Nothing until you've seen it work on your own material.