stemedb/applications/pitch/index.html
jordan 157dbbb9eb feat: Complete Aphoria Phase 8-9 + UAT suite (90/90 tests passing)
## Phase 8: Enterprise Extractor Improvements 
- 14 security extractors (TLS, JWT, SQL injection, XSS, etc.)
- 10 framework-specific extractors (Spring, Django, Rails, etc.)
- Config file security detection (YAML, TOML)

## Phase 9: Autonomous Extractor Generation 
- Shadow mode executor with TP/FP tracking
- Graduation pipeline with confidence thresholds
- Auto-rollback on regression detection
- Cross-project pattern syncing

## UAT Suite Complete (14 scripts, 90 tests)
- test-core-detection.sh (6 tests)
- test-declarative-extractors.sh (5 tests)
- test-domain-frameworks.sh (5 tests)
- test-domain-unreal.sh (3 tests)
- test-llm-extraction.sh (6 tests)
- test-eval-harness.sh (5 tests)
- test-cross-language.sh (3 tests)
- test-precommit-performance.sh (4 tests)
- test-output-formats.sh (8 tests)
- test-drift-detection.sh (6 tests)
- test-exit-codes.sh (12 tests)
+ 3 more scripts

## Other Changes
- Updated roadmap to mark Phase 8-9 complete
- Added .gitignore entries for build artifacts
- Updated pre-commit: 800 line limit, exclude tests/data/cmd

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-06 22:50:55 -07:00

337 lines
12 KiB
HTML

<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>StemeDB - Assertions with Provenance</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/reveal.js@5.1.0/dist/reset.css">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/reveal.js@5.1.0/dist/reveal.css">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/reveal.js@5.1.0/dist/theme/night.css">
<style>
:root {
--r-background-color: #0f0f14;
--r-main-color: #e4e4e7;
--r-heading-color: #a1a1aa;
--r-link-color: #60a5fa;
--r-selection-background-color: #27272a;
--r-main-font-size: 32px;
}
.reveal {
font-size: var(--r-main-font-size);
}
.reveal h1 {
font-size: 2.2em;
font-weight: 500;
color: #fafafa;
text-transform: none;
letter-spacing: -0.02em;
}
.reveal h2 {
font-size: 1.6em;
font-weight: 500;
color: #fafafa;
text-transform: none;
letter-spacing: -0.01em;
margin-bottom: 0.8em;
}
.reveal h3 {
font-size: 1.2em;
font-weight: 500;
color: #a1a1aa;
text-transform: none;
}
.reveal p {
font-size: 0.95em;
line-height: 1.5;
color: #d4d4d8;
}
.reveal .highlight {
color: #fbbf24;
}
.reveal .muted {
color: #71717a;
}
.reveal .negative {
color: #f87171;
}
.reveal .positive {
color: #4ade80;
}
.reveal ul {
list-style: none;
padding: 0;
margin: 0;
}
.reveal ul li {
margin: 0.6em 0;
padding-left: 1.2em;
position: relative;
font-size: 0.9em;
color: #d4d4d8;
}
.reveal ul li::before {
content: "—";
position: absolute;
left: 0;
color: #52525b;
}
.reveal .stat-block {
background: linear-gradient(135deg, #18181b 0%, #1f1f23 100%);
border: 1px solid #27272a;
padding: 1.2em 1.6em;
border-radius: 8px;
margin: 1.2em 0;
text-align: left;
}
.reveal .stat-block .number {
font-size: 2em;
font-weight: 600;
color: #fbbf24;
display: block;
margin-bottom: 0.2em;
}
.reveal .stat-block .label {
font-size: 0.8em;
color: #a1a1aa;
}
.reveal .demo-preview {
background: #18181b;
border: 1px solid #27272a;
border-radius: 8px;
padding: 1.5em;
text-align: left;
margin-top: 1em;
}
.reveal .demo-preview code {
font-family: "SF Mono", "Fira Code", monospace;
font-size: 0.75em;
color: #60a5fa;
background: transparent;
}
.reveal .query-preview {
font-family: "SF Mono", "Fira Code", monospace;
font-size: 0.7em;
color: #a1a1aa;
background: #0f0f14;
padding: 0.8em 1em;
border-radius: 4px;
border-left: 3px solid #3b82f6;
margin: 0.8em 0;
}
.reveal blockquote {
background: transparent;
border: none;
font-style: normal;
padding: 0;
margin: 1.5em 0;
font-size: 0.85em;
color: #a1a1aa;
}
.reveal .capabilities-grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 1em;
margin-top: 1em;
}
.reveal .capability-card {
background: #18181b;
border: 1px solid #27272a;
border-radius: 6px;
padding: 1em;
text-align: left;
}
.reveal .capability-card h4 {
font-size: 0.8em;
font-weight: 600;
color: #fafafa;
margin: 0 0 0.4em 0;
}
.reveal .capability-card p {
font-size: 0.65em;
color: #a1a1aa;
margin: 0;
line-height: 1.4;
}
.reveal .footer {
position: fixed;
bottom: 1em;
left: 1em;
font-size: 0.4em;
color: #52525b;
}
.reveal .transition-slide h2 {
font-size: 1.4em;
color: #a1a1aa;
font-weight: 400;
}
</style>
</head>
<body>
<div class="reveal">
<div class="slides">
<!-- Slide 1: The Problem (Lead with data) -->
<section>
<h2>In 2024, <span class="highlight">79%</span> of FDA Warning Letters<br>cited data integrity failures</h2>
<div class="stat-block">
<span class="number">85%</span>
<span class="label">of safety and efficacy issues in Complete Response Letters<br>are never disclosed by companies.</span>
</div>
<p class="fragment fade-up muted" style="font-size: 0.8em; margin-top: 1.5em;">
With AI making more decisions, the audit trail matters more than ever.
</p>
<aside class="notes">
79% stat: FY2024 FDA Form 483 analysis - most common deficiency is lack of audit trails.
85% stat: 2015 BMJ cross-sectional study on CRL disclosure gaps.
Example: Feb 2025 Warning Letter to Exer Labs for AI diagnostic without QMS (inspection Oct 2024).
</aside>
</section>
<!-- Slide 2: Why This Happens -->
<section>
<h2>Why this keeps happening</h2>
<ul>
<li class="fragment">Your data warehouse stores the <span class="highlight">current answer</span>. Sources disagree.</li>
<li class="fragment">When a study is retracted, <span class="negative">which decisions did it affect?</span></li>
<li class="fragment">AI recommended X. <span class="negative">Can you reconstruct why?</span></li>
</ul>
<p class="fragment muted" style="font-size: 0.75em; margin-top: 1.5em;">
"Black box" is a documented rejection reason. Traditional databases overwrite history.
</p>
<aside class="notes">
These aren't hypotheticals. The retraction question is what kills you in audits.
"Can you reconstruct why" is the question every CMO dreads.
510(k) submissions have grown to 1,000+ pages - FDA explicitly rejects "black box" AI.
</aside>
</section>
<!-- Slide 3: Introducing StemeDB -->
<section>
<h1 style="font-size: 2.8em; font-weight: 600; letter-spacing: -0.03em;">StemeDB</h1>
<p style="font-size: 1em; color: #a1a1aa; margin-top: 0.5em;">
A knowledge graph that stores claims, not facts.
</p>
<p class="fragment muted" style="font-size: 0.75em; margin-top: 2em;">
Append-only. Auditable. Built for regulated industries.
</p>
<aside class="notes">
Quick intro - don't linger here. The next slide explains the approach.
"Steme" from episteme (Greek for knowledge).
</aside>
</section>
<!-- Slide 4: The Approach -->
<section>
<h2>Every claim has a source</h2>
<p style="margin-bottom: 1em;">
StemeDB stores <span class="highlight">assertions with provenance</span>, not overwritten facts.
</p>
<ul>
<li class="fragment">When sources disagree, <span class="positive">you see the disagreement</span></li>
<li class="fragment">When a source is retracted, <span class="positive">you know what's affected in seconds</span></li>
<li class="fragment">History is preserved. Nothing gets silently overwritten.</li>
</ul>
<aside class="notes">
This is the key insight. Version control for knowledge.
Don't say "Git for Truth" - just describe the behavior.
</aside>
</section>
<!-- Slide 4: Capabilities -->
<section>
<h2>What this enables</h2>
<div class="capabilities-grid">
<div class="capability-card">
<h4>Conflict Visibility</h4>
<p>See when sources disagree. Confidence scores show you how much.</p>
</div>
<div class="capability-card">
<h4>Cascade Invalidation</h4>
<p>Retract a source. See every downstream decision affected.</p>
</div>
<div class="capability-card">
<h4>Complete Audit Trail</h4>
<p>Every query logged with provenance. Export for regulators.</p>
</div>
</div>
<p class="fragment muted" style="font-size: 0.7em; margin-top: 1.2em;">
Time-travel queries: "What did we believe on January 1st?"
</p>
<aside class="notes">
Keep this brief. The demo will prove these claims.
Time-travel is the differentiator from every data warehouse.
</aside>
</section>
<!-- Slide 5: Demo Preview -->
<section class="transition-slide">
<h2>Here's what it looks like</h2>
<p class="muted" style="font-size: 0.7em; margin-bottom: 0.8em;">
FDA guidance now requires audit trails for all AI-enabled devices. This is what compliance looks like.
</p>
<div class="demo-preview">
<p style="font-size: 0.75em; color: #a1a1aa; margin: 0 0 0.8em 0;">Query:</p>
<div class="query-preview">
subject: <span style="color: #fbbf24;">semaglutide:gastroparesis_risk</span><br>
predicate: <span style="color: #fbbf24;">risk_level</span>
</div>
<p style="font-size: 0.7em; color: #71717a; margin: 0.8em 0 0 0;">
FDA labels say low incidence. Patient reports say otherwise.<br>
Watch how StemeDB surfaces that conflict.
</p>
</div>
<aside class="notes">
"FDA has authorized over 1,200 AI-enabled devices. All require audit trails."
"I'm going to run this exact query live. Watch what happens when sources disagree."
Then switch to dashboard tab. Query should already be typed in.
</aside>
</section>
<!-- Slide 6: Q&A (return here after demo) -->
<section>
<h2>Questions</h2>
<div style="margin-top: 1.5em; text-align: left;">
<p class="muted" style="font-size: 0.7em; margin-bottom: 0.8em;">What you saw:</p>
<ul style="font-size: 0.75em;">
<li><span class="highlight">Conflict visibility</span> — FDA vs patient reports, with confidence scores</li>
<li><span class="highlight">Cascade invalidation</span> — Source retraction, instant impact assessment</li>
<li><span class="highlight">Audit trail</span> — Every query logged, export-ready</li>
<li><span class="highlight">Time-travel</span> — Point-in-time queries</li>
<li><span class="highlight">Trust & Safety</span> — Quarantine queue, circuit breakers</li>
</ul>
</div>
<aside class="notes">
Be ready for:
- "What's the latency?" → 340ms on 2.3M assertions
- "SOC 2?" → In progress, not yet certified
- "How do I get my data out?" → Standard export formats
- "Who else uses this?" → Be honest about stage
</aside>
</section>
</div>
<div class="footer">
StemeDB
</div>
</div>
<script src="https://cdn.jsdelivr.net/npm/reveal.js@5.1.0/dist/reveal.js"></script>
<script src="https://cdn.jsdelivr.net/npm/reveal.js@5.1.0/plugin/notes/notes.js"></script>
<script>
Reveal.initialize({
hash: true,
slideNumber: false,
controls: false,
progress: false,
transition: 'none',
transitionSpeed: 'fast',
plugins: [ RevealNotes ],
width: 1280,
height: 720,
margin: 0.1
});
</script>
</body>
</html>