thumbgate 1.34.3 → 1.37.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.agents/skills/cyberstrike-compare-not-clone/SKILL.md +36 -0
- package/.agents/skills/gitlab-sandbox-allowlist-not-trust/SKILL.md +77 -0
- package/.agents/skills/jit-harness-compare-not-clone/SKILL.md +34 -0
- package/.agents/skills/openui-catalog-compose-honesty/SKILL.md +64 -0
- package/.agents/skills/zvec-grep-compare-not-clone/SKILL.md +34 -0
- package/.claude-plugin/plugin.json +1 -1
- package/.well-known/llms.txt +1 -0
- package/.well-known/mcp/server-card.json +1 -1
- package/CONTRIBUTING.md +95 -0
- package/README.md +195 -632
- package/THIRD_PARTY_NOTICES.md +89 -0
- package/adapters/claude/.mcp.json +2 -2
- package/adapters/forge/forge.yaml +3 -3
- package/adapters/future-agi/.mcp.json +8 -0
- package/adapters/future-agi/FUTURE_AGI.md +23 -0
- package/adapters/future-agi/config.toml +3 -0
- package/adapters/future-agi/future-agi-bridge.js +9 -0
- package/adapters/future-agi/opencode.json +8 -0
- package/adapters/herdr/herdr-plugin.toml +18 -0
- package/adapters/mcp/server-stdio.js +238 -25
- package/adapters/opencode/opencode.json +1 -1
- package/adapters/workos/WORKOS.md +52 -0
- package/bin/cli.js +373 -5
- package/bin/futureagi-bridge +9 -0
- package/config/gate-templates.json +653 -4
- package/config/gates/actor-critic-audit.json +34 -0
- package/config/gates/default.json +21 -2
- package/config/gates/five-walls-governance.json +34 -0
- package/config/gates/future-agi-guardrails.json +34 -0
- package/config/gates/radware-threat-defense-2026.json +61 -0
- package/config/gates/simatree-data-governance.json +33 -0
- package/config/mcp-allowlists.json +4 -0
- package/config/merge-quality-checks.json +10 -1
- package/config/model-candidates.json +382 -24
- package/config/model-tiers.json +18 -0
- package/config/post-deploy-marketing-pages.json +10 -0
- package/config/progressive/01-wire-only.json +11 -0
- package/config/progressive/02-dashboard-empty-ok.json +10 -0
- package/config/progressive/03-one-lesson.json +10 -0
- package/config/progressive/04-warn-fires.json +11 -0
- package/config/progressive/05-strict-optional.json +11 -0
- package/config/progressive/README.md +15 -0
- package/config/schemas/broker-execution-receipt.schema.json +139 -0
- package/config/schemas/provider-execution-attestation-v1.schema.json +58 -0
- package/conformance/provider-attestation/vectors.json +320 -0
- package/docs/specs/provider-execution-attestation-v1.md +69 -0
- package/openapi/openapi.yaml +15 -0
- package/package.json +401 -147
- package/public/about.html +2 -2
- package/public/ai-malpractice-prevention.html +7 -7
- package/public/blog/a-10-dollar-vps-is-not-a-computer.html +143 -0
- package/public/blog/a-receipt-is-not-world-state.html +388 -0
- package/public/blog/git-at-agent-scale.html +374 -0
- package/public/blog/no-llm-in-the-gate.html +133 -0
- package/public/blog.html +80 -0
- package/public/case-studies.html +16 -1
- package/public/compare.html +28 -0
- package/public/diagnostic.html +216 -7
- package/public/docs/connectors.html +39 -0
- package/public/federal.html +2 -2
- package/public/founders.html +639 -0
- package/public/index.html +87 -9
- package/public/install.html +8 -8
- package/public/learn.html +39 -0
- package/public/numbers.html +2 -2
- package/public/peter.html +310 -0
- package/public/platform-partners.html +119 -0
- package/public/pricing.html +24 -3
- package/public/privacy.html +117 -0
- package/public/pro.html +17 -0
- package/public/support.html +62 -0
- package/public/terms.html +130 -0
- package/public/third-party-notices.html +95 -0
- package/public/yt.html +351 -0
- package/scripts/action-receipts.js +133 -3
- package/scripts/adaptive-governance-arena.js +349 -0
- package/scripts/admin-override.js +205 -0
- package/scripts/agent-action-inventory.js +869 -0
- package/scripts/agent-audit-trace.js +42 -2
- package/scripts/agent-egress-policy.js +1117 -0
- package/scripts/agent-memory-lifecycle.js +141 -2
- package/scripts/agent-operations-planner.js +441 -1
- package/scripts/agent-readiness.js +68 -0
- package/scripts/agent-security-central.js +647 -0
- package/scripts/allowlist-bridge-honesty.js +417 -0
- package/scripts/async-job-runner.js +102 -11
- package/scripts/audit-trail.js +212 -0
- package/scripts/auto-promote-gates.js +178 -27
- package/scripts/billing.js +1 -1
- package/scripts/broker-execution-receipts.js +719 -0
- package/scripts/budget-aware-gates-proof.js +423 -0
- package/scripts/claude-feedback-sync.js +29 -3
- package/scripts/claw-harness-production.js +237 -0
- package/scripts/cli-progress.js +111 -0
- package/scripts/cli-schema.js +163 -1
- package/scripts/codex-runbook-flywheel.js +318 -0
- package/scripts/context-footprint.js +186 -0
- package/scripts/contextfs.js +143 -61
- package/scripts/dashboard-limits.js +27 -0
- package/scripts/dashboard.js +279 -9
- package/scripts/deepseek-v4-runtime-guardrails.js +72 -6
- package/scripts/docker-sandbox-planner.js +18 -0
- package/scripts/double-blind-eval-protocol.js +252 -0
- package/scripts/edotenv-rl-gateway.js +259 -0
- package/scripts/ensure-production-search-corpus.js +162 -0
- package/scripts/eval-holdout.js +311 -0
- package/scripts/feedback-aggregate.js +21 -2
- package/scripts/feedback-loop.js +87 -5
- package/scripts/feedback-quality.js +9 -0
- package/scripts/file-ledger-lock.js +4 -1
- package/scripts/financial-control-plane.js +41 -1
- package/scripts/find-dormant-requires.js +118 -0
- package/scripts/fs-utils.js +84 -8
- package/scripts/gate-stats.js +2 -2
- package/scripts/gates-engine.js +859 -58
- package/scripts/generate-case-study-outreach.js +24 -15
- package/scripts/git-at-scale.js +628 -0
- package/scripts/governance-conflict-audit.js +1650 -0
- package/scripts/governance-difficulty-curriculum.js +328 -0
- package/scripts/graphrag-retrieval.js +275 -0
- package/scripts/gurobi-optimizer.js +324 -0
- package/scripts/gurobi_optimizer.py +485 -0
- package/scripts/harness-selector.js +82 -1
- package/scripts/hidden-entry-points.js +284 -0
- package/scripts/human-escalation.js +199 -1
- package/scripts/hybrid-feedback-context.js +152 -19
- package/scripts/intent-governed-execution.js +602 -0
- package/scripts/intervention-policy.js +123 -20
- package/scripts/jit-harness-compose.js +628 -0
- package/scripts/jsonl-watcher.js +10 -0
- package/scripts/lesson-embedding-index.js +95 -12
- package/scripts/lesson-retrieval.js +105 -19
- package/scripts/local-model-profile.js +19 -2
- package/scripts/mailer/resend-mailer.js +1 -1
- package/scripts/matryoshka-embedding.js +235 -0
- package/scripts/mcp-oauth.js +42 -4
- package/scripts/mcp-session-handles.js +1016 -0
- package/scripts/mcp-wiring-doctor.js +314 -0
- package/scripts/memory-firewall.js +115 -2
- package/scripts/memory-scope-readiness.js +299 -0
- package/scripts/memory-vs-rag-route.js +161 -0
- package/scripts/model-tier-router.js +148 -21
- package/scripts/nvidia-specdecode-al-doctor.js +536 -0
- package/scripts/openui-catalog-compose-honesty.js +593 -0
- package/scripts/operational-integrity.js +19 -1
- package/scripts/override-audit.js +213 -0
- package/scripts/package-manager-honesty-doctor.js +458 -0
- package/scripts/pr-manager.js +63 -1
- package/scripts/prove-herdr-adapter.js +52 -0
- package/scripts/prove-memory-pyramid-and-symbolic-canvas.js +95 -0
- package/scripts/prove-workos.js +73 -0
- package/scripts/provider-attestation-conformance.js +192 -0
- package/scripts/provider-receipt-contract.js +136 -0
- package/scripts/qwen38-max-cost-optimizer.js +401 -0
- package/scripts/radware-threat-defense.js +280 -0
- package/scripts/rag-embedding-identity.js +221 -0
- package/scripts/rag-precision-guardrails.js +112 -2
- package/scripts/remote-feedback-capture.js +159 -0
- package/scripts/research-agent-harness.js +256 -0
- package/scripts/rsi-safety-hillclimb.js +200 -0
- package/scripts/rule-sprawl.js +188 -0
- package/scripts/schedule-manager.js +147 -0
- package/scripts/self-heal.js +8 -0
- package/scripts/session-lease.js +415 -0
- package/scripts/simatree-data-governance.js +347 -0
- package/scripts/slo-alert-engine.js +172 -7
- package/scripts/solver-parity.js +539 -0
- package/scripts/stealth-memory-injection-gate.js +333 -0
- package/scripts/switchyard-router.js +366 -0
- package/scripts/telemetry-analytics.js +84 -27
- package/scripts/temporal-decay-weighting.js +138 -0
- package/scripts/test-all.js +165 -0
- package/scripts/token-savings.js +42 -0
- package/scripts/tool-kpi-tracker.js +108 -5
- package/scripts/tool-registry.js +193 -5
- package/scripts/universal-claim-evaluator.js +14 -2
- package/scripts/vector-store.js +279 -9
- package/scripts/workflow-notebook.js +391 -0
- package/scripts/workflow-sentinel.js +111 -12
- package/scripts/workos-production-guard.js +260 -0
- package/scripts/workspace-search-route.js +515 -0
- package/server.json +2 -2
- package/src/agent-identity-boundary.js +76 -0
- package/src/agent-retrieval-cache.js +155 -0
- package/src/alert-noise-ledger.js +502 -0
- package/src/api/server.js +802 -185
- package/src/git-fast-cache.js +220 -0
- package/src/git-wal-sync.js +156 -0
- package/src/hash-anchored-edit.js +82 -0
- package/src/hermes-platform-protocol.js +475 -0
- package/src/hermes-sync-plane.js +241 -0
- package/src/index.js +30 -1
- package/src/iso42001-compliance-guard.js +97 -0
- package/src/latency-budget.js +244 -0
- package/src/mcp-writeguard.js +316 -0
- package/src/miminions-adapter.js +106 -0
- package/src/pipeline-compass.js +104 -0
- package/src/ppl-alert-pipeline.js +284 -0
- package/src/rendezvous-router.js +90 -0
- package/src/security-questionnaire.js +195 -0
|
@@ -0,0 +1,639 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
6
|
+
<title>ThumbGate for Founders — Stop Agent Mistakes Before They Cost | $499 Diagnostic</title>
|
|
7
|
+
<meta name="description" content="You didn't hire AI agents to babysit them. Turn one repeated agent failure into a proved gate in two business days. $499 managed diagnostic. Refund if not a fit.">
|
|
8
|
+
<link rel="canonical" href="__APP_ORIGIN__/founders">
|
|
9
|
+
<link rel="alternate" type="text/markdown" title="ThumbGate LLM context" href="__APP_ORIGIN__/llm-context.md">
|
|
10
|
+
<meta property="og:title" content="ThumbGate for Founders — $499 Diagnostic Gate">
|
|
11
|
+
<meta property="og:description" content="Scale agent impact without the babysitting. One workflow, one gate, proof in two business days.">
|
|
12
|
+
<meta property="og:url" content="__APP_ORIGIN__/founders">
|
|
13
|
+
<meta property="og:type" content="website">
|
|
14
|
+
<style>
|
|
15
|
+
:root {
|
|
16
|
+
color-scheme: light;
|
|
17
|
+
--ink: #0f1412;
|
|
18
|
+
--muted: #5a6660;
|
|
19
|
+
--paper: #f4f1e8;
|
|
20
|
+
--card: #fffdf8;
|
|
21
|
+
--line: #d6d1c4;
|
|
22
|
+
--green: #006e52;
|
|
23
|
+
--green2: #004c3a;
|
|
24
|
+
--cyan: #0aa3b8;
|
|
25
|
+
--red: #a72f2f;
|
|
26
|
+
}
|
|
27
|
+
* { box-sizing: border-box; }
|
|
28
|
+
body {
|
|
29
|
+
margin: 0;
|
|
30
|
+
color: var(--ink);
|
|
31
|
+
background: var(--paper);
|
|
32
|
+
font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
|
|
33
|
+
line-height: 1.55;
|
|
34
|
+
}
|
|
35
|
+
a { color: inherit; }
|
|
36
|
+
.shell { width: min(1100px, calc(100% - 36px)); margin: 0 auto; }
|
|
37
|
+
header {
|
|
38
|
+
position: sticky;
|
|
39
|
+
top: 0;
|
|
40
|
+
z-index: 20;
|
|
41
|
+
border-bottom: 1px solid var(--line);
|
|
42
|
+
background: rgba(244, 241, 232, .94);
|
|
43
|
+
backdrop-filter: blur(8px);
|
|
44
|
+
}
|
|
45
|
+
.nav {
|
|
46
|
+
min-height: 68px;
|
|
47
|
+
display: flex;
|
|
48
|
+
align-items: center;
|
|
49
|
+
justify-content: space-between;
|
|
50
|
+
gap: 16px;
|
|
51
|
+
}
|
|
52
|
+
.brand { font-weight: 900; letter-spacing: -.03em; text-decoration: none; font-size: 1.2rem; }
|
|
53
|
+
.nav-actions { display: flex; gap: 10px; align-items: center; flex-wrap: wrap; }
|
|
54
|
+
.btn {
|
|
55
|
+
display: inline-flex;
|
|
56
|
+
align-items: center;
|
|
57
|
+
justify-content: center;
|
|
58
|
+
min-height: 44px;
|
|
59
|
+
padding: 0 16px;
|
|
60
|
+
border-radius: 10px;
|
|
61
|
+
border: 1px solid var(--green);
|
|
62
|
+
text-decoration: none;
|
|
63
|
+
font-weight: 800;
|
|
64
|
+
cursor: pointer;
|
|
65
|
+
font: inherit;
|
|
66
|
+
background: transparent;
|
|
67
|
+
color: var(--green);
|
|
68
|
+
}
|
|
69
|
+
.btn.primary {
|
|
70
|
+
background: var(--green);
|
|
71
|
+
color: #fff;
|
|
72
|
+
border-color: var(--green);
|
|
73
|
+
}
|
|
74
|
+
.btn.primary:hover { background: var(--green2); }
|
|
75
|
+
.hero {
|
|
76
|
+
display: grid;
|
|
77
|
+
grid-template-columns: minmax(0, 1.1fr) minmax(300px, .9fr);
|
|
78
|
+
gap: 28px;
|
|
79
|
+
padding: 56px 0 28px;
|
|
80
|
+
align-items: start;
|
|
81
|
+
}
|
|
82
|
+
.eyebrow {
|
|
83
|
+
color: var(--green);
|
|
84
|
+
font-size: .75rem;
|
|
85
|
+
font-weight: 850;
|
|
86
|
+
letter-spacing: .12em;
|
|
87
|
+
text-transform: uppercase;
|
|
88
|
+
}
|
|
89
|
+
h1 {
|
|
90
|
+
margin: 12px 0 16px;
|
|
91
|
+
font-size: clamp(2.4rem, 5.5vw, 4.4rem);
|
|
92
|
+
line-height: .96;
|
|
93
|
+
letter-spacing: -.04em;
|
|
94
|
+
}
|
|
95
|
+
.lede { margin: 0 0 22px; color: var(--muted); font-size: 1.12rem; max-width: 36rem; }
|
|
96
|
+
.trust {
|
|
97
|
+
display: flex;
|
|
98
|
+
flex-wrap: wrap;
|
|
99
|
+
gap: 10px;
|
|
100
|
+
margin: 18px 0 0;
|
|
101
|
+
color: var(--muted);
|
|
102
|
+
font-size: .88rem;
|
|
103
|
+
}
|
|
104
|
+
.trust span {
|
|
105
|
+
border: 1px solid var(--line);
|
|
106
|
+
background: var(--card);
|
|
107
|
+
border-radius: 999px;
|
|
108
|
+
padding: 6px 12px;
|
|
109
|
+
}
|
|
110
|
+
.card {
|
|
111
|
+
border: 1px solid var(--line);
|
|
112
|
+
border-radius: 16px;
|
|
113
|
+
background: var(--card);
|
|
114
|
+
box-shadow: 0 18px 48px rgba(20, 30, 25, .08);
|
|
115
|
+
padding: 24px;
|
|
116
|
+
}
|
|
117
|
+
.price {
|
|
118
|
+
margin: 6px 0 4px;
|
|
119
|
+
font-size: 3rem;
|
|
120
|
+
font-weight: 900;
|
|
121
|
+
letter-spacing: -.04em;
|
|
122
|
+
color: var(--green);
|
|
123
|
+
}
|
|
124
|
+
.price-note { margin: 0 0 16px; color: var(--muted); }
|
|
125
|
+
label { display: block; margin: 0 0 6px; font-size: .86rem; font-weight: 800; }
|
|
126
|
+
input[type=email] {
|
|
127
|
+
width: 100%;
|
|
128
|
+
border: 1px solid #aaa89f;
|
|
129
|
+
border-radius: 9px;
|
|
130
|
+
padding: 12px 13px;
|
|
131
|
+
font: inherit;
|
|
132
|
+
background: #fff;
|
|
133
|
+
}
|
|
134
|
+
.btn.block { width: 100%; margin-top: 10px; }
|
|
135
|
+
.fine { margin: 10px 0 0; color: var(--muted); font-size: .8rem; }
|
|
136
|
+
.checks { margin: 14px 0 0; padding: 0; list-style: none; }
|
|
137
|
+
.checks li {
|
|
138
|
+
position: relative;
|
|
139
|
+
padding: 6px 0 6px 22px;
|
|
140
|
+
color: var(--muted);
|
|
141
|
+
font-size: .92rem;
|
|
142
|
+
}
|
|
143
|
+
.checks li::before {
|
|
144
|
+
content: "✓";
|
|
145
|
+
position: absolute;
|
|
146
|
+
left: 0;
|
|
147
|
+
color: var(--green);
|
|
148
|
+
font-weight: 900;
|
|
149
|
+
}
|
|
150
|
+
section { padding: 52px 0; border-top: 1px solid var(--line); }
|
|
151
|
+
h2 {
|
|
152
|
+
margin: 0 0 12px;
|
|
153
|
+
font-size: clamp(1.7rem, 3.2vw, 2.5rem);
|
|
154
|
+
letter-spacing: -.03em;
|
|
155
|
+
}
|
|
156
|
+
.section-lede { margin: 0 0 22px; color: var(--muted); max-width: 40rem; }
|
|
157
|
+
.pain-grid, .steps, .feature-grid {
|
|
158
|
+
display: grid;
|
|
159
|
+
grid-template-columns: repeat(3, minmax(0, 1fr));
|
|
160
|
+
gap: 14px;
|
|
161
|
+
}
|
|
162
|
+
.pain, .step, .feature {
|
|
163
|
+
border: 1px solid var(--line);
|
|
164
|
+
border-radius: 14px;
|
|
165
|
+
background: var(--card);
|
|
166
|
+
padding: 20px;
|
|
167
|
+
}
|
|
168
|
+
.pain h3, .step h3, .feature h3 { margin: 0 0 8px; font-size: 1.05rem; }
|
|
169
|
+
.pain p, .step p, .feature p { margin: 0; color: var(--muted); font-size: .93rem; }
|
|
170
|
+
.step-num { color: var(--green); font-weight: 900; font-size: .85rem; letter-spacing: .08em; }
|
|
171
|
+
table.compare {
|
|
172
|
+
width: 100%;
|
|
173
|
+
border-collapse: collapse;
|
|
174
|
+
font-size: .9rem;
|
|
175
|
+
min-width: 640px;
|
|
176
|
+
background: var(--card);
|
|
177
|
+
}
|
|
178
|
+
table.compare th, table.compare td {
|
|
179
|
+
padding: 12px 14px;
|
|
180
|
+
border-bottom: 1px solid var(--line);
|
|
181
|
+
text-align: left;
|
|
182
|
+
vertical-align: top;
|
|
183
|
+
}
|
|
184
|
+
table.compare th { background: #efece3; }
|
|
185
|
+
table.compare td:last-child { font-weight: 800; color: var(--green); }
|
|
186
|
+
.table-wrap {
|
|
187
|
+
overflow-x: auto;
|
|
188
|
+
border: 1px solid var(--line);
|
|
189
|
+
border-radius: 14px;
|
|
190
|
+
}
|
|
191
|
+
.faq-item { border-bottom: 1px solid var(--line); }
|
|
192
|
+
.faq-q {
|
|
193
|
+
width: 100%;
|
|
194
|
+
border: 0;
|
|
195
|
+
background: transparent;
|
|
196
|
+
text-align: left;
|
|
197
|
+
padding: 16px 0;
|
|
198
|
+
font: inherit;
|
|
199
|
+
font-weight: 800;
|
|
200
|
+
cursor: pointer;
|
|
201
|
+
}
|
|
202
|
+
.faq-a { display: none; padding: 0 0 16px; color: var(--muted); }
|
|
203
|
+
.faq-item.open .faq-a { display: block; }
|
|
204
|
+
.cta-band {
|
|
205
|
+
margin: 20px 0 0;
|
|
206
|
+
padding: 28px;
|
|
207
|
+
border-radius: 16px;
|
|
208
|
+
background: #e8f3ee;
|
|
209
|
+
border: 1px solid #b9d8c8;
|
|
210
|
+
display: flex;
|
|
211
|
+
flex-wrap: wrap;
|
|
212
|
+
gap: 14px;
|
|
213
|
+
align-items: center;
|
|
214
|
+
justify-content: space-between;
|
|
215
|
+
}
|
|
216
|
+
.cta-band h2 { margin: 0; font-size: 1.5rem; }
|
|
217
|
+
.cta-band p { margin: 6px 0 0; color: var(--muted); }
|
|
218
|
+
footer {
|
|
219
|
+
border-top: 1px solid var(--line);
|
|
220
|
+
padding: 28px 0 40px;
|
|
221
|
+
color: var(--muted);
|
|
222
|
+
font-size: .85rem;
|
|
223
|
+
}
|
|
224
|
+
.footer-inner { display: flex; justify-content: space-between; gap: 16px; flex-wrap: wrap; }
|
|
225
|
+
@media (max-width: 860px) {
|
|
226
|
+
.hero, .pain-grid, .steps, .feature-grid { grid-template-columns: 1fr; }
|
|
227
|
+
h1 { font-size: 2.3rem; }
|
|
228
|
+
}
|
|
229
|
+
</style>
|
|
230
|
+
<script type="application/ld+json">
|
|
231
|
+
{
|
|
232
|
+
"@context": "https://schema.org",
|
|
233
|
+
"@graph": [
|
|
234
|
+
{
|
|
235
|
+
"@type": "SoftwareApplication",
|
|
236
|
+
"name": "ThumbGate",
|
|
237
|
+
"applicationCategory": "DeveloperApplication",
|
|
238
|
+
"operatingSystem": "Cross-platform",
|
|
239
|
+
"url": "__APP_ORIGIN__/",
|
|
240
|
+
"offers": {
|
|
241
|
+
"@type": "Offer",
|
|
242
|
+
"name": "Managed workflow diagnostic",
|
|
243
|
+
"price": "__SPRINT_DIAGNOSTIC_PRICE_DOLLARS__",
|
|
244
|
+
"priceCurrency": "USD",
|
|
245
|
+
"url": "__APP_ORIGIN__/founders",
|
|
246
|
+
"availability": "https://schema.org/InStock"
|
|
247
|
+
}
|
|
248
|
+
},
|
|
249
|
+
{
|
|
250
|
+
"@type": "Service",
|
|
251
|
+
"name": "ThumbGate Managed Workflow Diagnostic",
|
|
252
|
+
"description": "Managed implementation that turns one repeated AI-agent failure into a configured pre-action gate with regression and rollout proof.",
|
|
253
|
+
"provider": { "@type": "Organization", "name": "ThumbGate", "url": "__APP_ORIGIN__/" },
|
|
254
|
+
"offers": {
|
|
255
|
+
"@type": "Offer",
|
|
256
|
+
"name": "Managed workflow diagnostic",
|
|
257
|
+
"price": "__SPRINT_DIAGNOSTIC_PRICE_DOLLARS__",
|
|
258
|
+
"priceCurrency": "USD",
|
|
259
|
+
"url": "__APP_ORIGIN__/founders",
|
|
260
|
+
"availability": "https://schema.org/InStock"
|
|
261
|
+
}
|
|
262
|
+
},
|
|
263
|
+
{
|
|
264
|
+
"@type": "FAQPage",
|
|
265
|
+
"mainEntity": [
|
|
266
|
+
{
|
|
267
|
+
"@type": "Question",
|
|
268
|
+
"name": "How fast can I get started?",
|
|
269
|
+
"acceptedAnswer": {
|
|
270
|
+
"@type": "Answer",
|
|
271
|
+
"text": "Buy or submit fit check today. Managed delivery is two business days after access and the agreed workflow materials are available. Free local evaluate is minutes via npx thumbgate init."
|
|
272
|
+
}
|
|
273
|
+
},
|
|
274
|
+
{
|
|
275
|
+
"@type": "Question",
|
|
276
|
+
"name": "What if the workflow is not a fit?",
|
|
277
|
+
"acceptedAnswer": {
|
|
278
|
+
"@type": "Answer",
|
|
279
|
+
"text": "If the repeated failure cannot be reduced to one supported ThumbGate gate, the managed diagnostic order is refunded. We do not silently expand into open consulting."
|
|
280
|
+
}
|
|
281
|
+
},
|
|
282
|
+
{
|
|
283
|
+
"@type": "Question",
|
|
284
|
+
"name": "Is this a long-term contract?",
|
|
285
|
+
"acceptedAnswer": {
|
|
286
|
+
"@type": "Answer",
|
|
287
|
+
"text": "No. The diagnostic is one-time. Pro is monthly and cancels anytime. Multi-workflow or enterprise scope is separate after proof."
|
|
288
|
+
}
|
|
289
|
+
},
|
|
290
|
+
{
|
|
291
|
+
"@type": "Question",
|
|
292
|
+
"name": "How is this different from Upwork or hiring an ops person?",
|
|
293
|
+
"acceptedAnswer": {
|
|
294
|
+
"@type": "Answer",
|
|
295
|
+
"text": "Marketplaces give you a human. ThumbGate hardens the agents already in your stack with a pre-action gate, regression proof, and a written fence. Humans stay for exceptions; the repeat failure does not."
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
]
|
|
299
|
+
}
|
|
300
|
+
]
|
|
301
|
+
}
|
|
302
|
+
</script>
|
|
303
|
+
</head>
|
|
304
|
+
<body>
|
|
305
|
+
<header>
|
|
306
|
+
<div class="shell nav">
|
|
307
|
+
<a class="brand" href="/">ThumbGate</a>
|
|
308
|
+
<div class="nav-actions">
|
|
309
|
+
<a class="btn" href="/pricing">Pricing</a>
|
|
310
|
+
<a class="btn primary" href="#buy" data-revenue-cta data-cta-id="founders_nav_buy" data-cta-placement="nav">Get started · $__SPRINT_DIAGNOSTIC_PRICE_DOLLARS__</a>
|
|
311
|
+
</div>
|
|
312
|
+
</div>
|
|
313
|
+
</header>
|
|
314
|
+
|
|
315
|
+
<main class="shell">
|
|
316
|
+
<div class="hero">
|
|
317
|
+
<div>
|
|
318
|
+
<div class="eyebrow">For founders running AI agents in production</div>
|
|
319
|
+
<h1>Scale agent impact.<br>Stop babysitting the failures.</h1>
|
|
320
|
+
<p class="lede">You have agents running lead gen, content, sales follow-up, and ops. One of them keeps doing the same wrong thing — the outbound that should never have sent, the write that should never have landed, the deploy, the charge — and you are the one who catches it. That is not delegation, that is a second job. Your agent team needs a firewall: one check that fires before the tool call, so you can hand work off the way a CEO does instead of reading every diff.</p>
|
|
321
|
+
<div class="trust" aria-label="Proof points">
|
|
322
|
+
<span>Local-first PreToolUse gates</span>
|
|
323
|
+
<span>Fixed $__SPRINT_DIAGNOSTIC_PRICE_DOLLARS__ diagnostic</span>
|
|
324
|
+
<span>Two business days after access</span>
|
|
325
|
+
<span>Refund if not a supported fit</span>
|
|
326
|
+
</div>
|
|
327
|
+
</div>
|
|
328
|
+
|
|
329
|
+
<aside class="card" id="buy" data-founders-offer>
|
|
330
|
+
<div class="eyebrow">Cash path · recommended</div>
|
|
331
|
+
<div class="price">$__SPRINT_DIAGNOSTIC_PRICE_DOLLARS__</div>
|
|
332
|
+
<p class="price-note">One-time managed diagnostic. One supported local workflow. No subscription required.</p>
|
|
333
|
+
<form action="/go/diagnostic-pay" method="POST" data-founders-pay-form>
|
|
334
|
+
<label for="founders-email">Work email for the receipt</label>
|
|
335
|
+
<input id="founders-email" type="email" name="customer_email" autocomplete="email" required placeholder="you@company.com">
|
|
336
|
+
<input type="hidden" name="plan_id" value="sprint_diagnostic">
|
|
337
|
+
<input type="hidden" name="utm_source" value="founders">
|
|
338
|
+
<input type="hidden" name="utm_medium" value="direct_checkout">
|
|
339
|
+
<input type="hidden" name="utm_campaign" value="oceans_inspired_conversion">
|
|
340
|
+
<input type="hidden" name="utm_content" value="hero_paid_diagnostic">
|
|
341
|
+
<input type="hidden" name="cta_id" value="founders_hero_paid">
|
|
342
|
+
<input type="hidden" name="cta_placement" value="hero">
|
|
343
|
+
<input type="hidden" name="landing_path" value="/founders">
|
|
344
|
+
<button class="btn primary block" type="submit" data-revenue-cta data-cta-id="founders_hero_paid" data-cta-placement="hero">Gate my worst agent failure · $__SPRINT_DIAGNOSTIC_PRICE_DOLLARS__</button>
|
|
345
|
+
</form>
|
|
346
|
+
<ul class="checks">
|
|
347
|
+
<li>One configured local gate for the agreed failure</li>
|
|
348
|
+
<li>Regression test + rollout and rollback proof</li>
|
|
349
|
+
<li>60-minute working review included</li>
|
|
350
|
+
<li>If it is not a supported fit, we refund</li>
|
|
351
|
+
</ul>
|
|
352
|
+
<p class="fine" data-founders-payment-hint>No Stripe session until you submit. Secure checkout. Fit boundary is explicit.</p>
|
|
353
|
+
<a class="fine" style="display:block;margin-top:12px;text-align:center;" href="/diagnostic#intake" data-revenue-cta data-cta-id="founders_hero_fit" data-cta-placement="hero">Not sure it fits? Send us the failure first</a>
|
|
354
|
+
</aside>
|
|
355
|
+
</div>
|
|
356
|
+
|
|
357
|
+
<section id="pain">
|
|
358
|
+
<div class="eyebrow">Why founders buy this</div>
|
|
359
|
+
<h2>You didn't hire AI agents to manage damage control.</h2>
|
|
360
|
+
<p class="section-lede">The cost is rarely the one bad run. It is the review loop you now own: every send, write, deploy, and charge gets a human read before it ships, and that human is you.</p>
|
|
361
|
+
<div class="pain-grid">
|
|
362
|
+
<article class="pain">
|
|
363
|
+
<h3>Drowning in repeat agent failures</h3>
|
|
364
|
+
<p>The same bad write, PR, deploy, or outbound keeps happening. Every incident burns founder or senior engineer hours.</p>
|
|
365
|
+
</article>
|
|
366
|
+
<article class="pain">
|
|
367
|
+
<h3>Tried prompts and docs — still drifts</h3>
|
|
368
|
+
<p>CLAUDE.md and Cursor rules help until the agent looks competent and skips them. You need a check before the tool call.</p>
|
|
369
|
+
</article>
|
|
370
|
+
<article class="pain">
|
|
371
|
+
<h3>US platform hire is slow and expensive</h3>
|
|
372
|
+
<p>Fully loaded platform or GRC work takes weeks and often ships dashboards instead of a gate on the exact failure.</p>
|
|
373
|
+
</article>
|
|
374
|
+
</div>
|
|
375
|
+
</section>
|
|
376
|
+
|
|
377
|
+
<section id="fit">
|
|
378
|
+
<div class="eyebrow">Before you pay</div>
|
|
379
|
+
<h2>Who this is for, and who it is not for.</h2>
|
|
380
|
+
<p class="section-lede">We would rather lose the order than take one we cannot close in two business days.</p>
|
|
381
|
+
<div class="pain-grid">
|
|
382
|
+
<article class="pain">
|
|
383
|
+
<h3>This is for you if</h3>
|
|
384
|
+
<ul class="checks">
|
|
385
|
+
<li>Your agents take real actions — outbound, publishing, code writes, deploys, spend</li>
|
|
386
|
+
<li>One specific failure has happened more than once and you can name it</li>
|
|
387
|
+
<li>You or a senior engineer are currently the safety net</li>
|
|
388
|
+
<li>The agents run on a supported local path you can give us access to</li>
|
|
389
|
+
<li>You want the rule enforced before the tool call, not caught in review</li>
|
|
390
|
+
</ul>
|
|
391
|
+
</article>
|
|
392
|
+
<article class="pain">
|
|
393
|
+
<h3>This is not for you if</h3>
|
|
394
|
+
<ul style="margin:14px 0 0; padding-left:20px; color:var(--muted); font-size:.92rem;">
|
|
395
|
+
<li>You want a general audit of everything your agents do</li>
|
|
396
|
+
<li>The failure is a one-off you cannot describe as a repeatable pattern</li>
|
|
397
|
+
<li>You need SOC 2, HIPAA, or any compliance certification — this is not that</li>
|
|
398
|
+
<li>You need rollout across several systems or teams in this engagement</li>
|
|
399
|
+
<li>You are trying to hire a person; this hardens the agents you already run</li>
|
|
400
|
+
</ul>
|
|
401
|
+
</article>
|
|
402
|
+
<article class="pain">
|
|
403
|
+
<h3>Not sure yet?</h3>
|
|
404
|
+
<p>Run the free local evaluate first. <code>npx thumbgate init</code> takes minutes, runs on your machine, and needs no card, no account, and no access to your repo. If it shows you the failure at the tool call, the managed diagnostic is just us doing the rest for you.</p>
|
|
405
|
+
<p style="margin-top:10px;"><a href="#buy" data-revenue-cta data-cta-id="founders_fit_buy" data-cta-placement="fit_section"><strong>Or skip ahead and gate my worst failure · $__SPRINT_DIAGNOSTIC_PRICE_DOLLARS__</strong></a></p>
|
|
406
|
+
</article>
|
|
407
|
+
</div>
|
|
408
|
+
</section>
|
|
409
|
+
|
|
410
|
+
<section id="process">
|
|
411
|
+
<div class="eyebrow">From first call to proved gate</div>
|
|
412
|
+
<h2>Two business days after access — not a multi-month program.</h2>
|
|
413
|
+
<p class="section-lede">We will tell you if ThumbGate is the wrong fit. No silent conversion into open-ended consulting.</p>
|
|
414
|
+
<div class="steps">
|
|
415
|
+
<article class="step">
|
|
416
|
+
<div class="step-num">01 · 15–60 MIN</div>
|
|
417
|
+
<h3>Discovery / fit</h3>
|
|
418
|
+
<p>Share the repeated failure. We map the tool call boundary. If it cannot become one supported gate, we say so — and refund if you already paid.</p>
|
|
419
|
+
</article>
|
|
420
|
+
<article class="step">
|
|
421
|
+
<div class="step-num">02 · SAME ENGAGEMENT</div>
|
|
422
|
+
<h3>We install the gate</h3>
|
|
423
|
+
<p>Configure ALLOW / WARN / DENY for the agreed workflow on your supported local agent path.</p>
|
|
424
|
+
</article>
|
|
425
|
+
<article class="step">
|
|
426
|
+
<div class="step-num">03 · TWO BUSINESS DAYS</div>
|
|
427
|
+
<h3>Proof handoff</h3>
|
|
428
|
+
<p>Regression test plus written rollout and rollback evidence so the next similar action is caught before execution.</p>
|
|
429
|
+
</article>
|
|
430
|
+
</div>
|
|
431
|
+
</section>
|
|
432
|
+
|
|
433
|
+
<section id="what-you-get">
|
|
434
|
+
<div class="eyebrow">What you walk away with</div>
|
|
435
|
+
<h2>Four things exist when we are done that do not exist today.</h2>
|
|
436
|
+
<p class="section-lede">Deliverables, not features. Path to Pro ($19/mo) or multi-workflow scope opens after proof, not before.</p>
|
|
437
|
+
<div class="feature-grid">
|
|
438
|
+
<article class="feature">
|
|
439
|
+
<h3>The failure can no longer execute</h3>
|
|
440
|
+
<p>One configured ALLOW / WARN / DENY gate on the agreed workflow, firing before the agent writes, sends, deploys, or spends — not in the postmortem.</p>
|
|
441
|
+
</article>
|
|
442
|
+
<article class="feature">
|
|
443
|
+
<h3>Proof that it holds</h3>
|
|
444
|
+
<p>A regression test that replays the failure and shows it blocked, plus written rollout and rollback steps you can hand to whoever is on call.</p>
|
|
445
|
+
</article>
|
|
446
|
+
<article class="feature">
|
|
447
|
+
<h3>A written fence</h3>
|
|
448
|
+
<p>Exactly what the gate covers and what it does not, so nobody on your team assumes coverage that is not there.</p>
|
|
449
|
+
</article>
|
|
450
|
+
<article class="feature">
|
|
451
|
+
<h3>A rule that outlives the session</h3>
|
|
452
|
+
<p>Thumbs-down and lessons promote into rules the agent cannot casually skip, so the next similar action is caught without you watching.</p>
|
|
453
|
+
</article>
|
|
454
|
+
</div>
|
|
455
|
+
<p class="fine">Not included at $__SPRINT_DIAGNOSTIC_PRICE_DOLLARS__: multi-system implementation, compliance certification, or guaranteed savings.</p>
|
|
456
|
+
</section>
|
|
457
|
+
|
|
458
|
+
<section id="compare">
|
|
459
|
+
<div class="eyebrow">How it stacks up</div>
|
|
460
|
+
<h2>What the alternatives actually cost you.</h2>
|
|
461
|
+
<p class="section-lede">Ranges below are market ballparks for orientation, not quotes. The ThumbGate column is the offer on this page, at the price on this page.</p>
|
|
462
|
+
<div class="table-wrap">
|
|
463
|
+
<table class="compare">
|
|
464
|
+
<thead>
|
|
465
|
+
<tr>
|
|
466
|
+
<th></th>
|
|
467
|
+
<th>DIY prompts / CLAUDE.md</th>
|
|
468
|
+
<th>US platform hire</th>
|
|
469
|
+
<th>Typical VA / freelance ops</th>
|
|
470
|
+
<th>ThumbGate diagnostic</th>
|
|
471
|
+
</tr>
|
|
472
|
+
</thead>
|
|
473
|
+
<tbody>
|
|
474
|
+
<tr>
|
|
475
|
+
<td>Cash outlay</td>
|
|
476
|
+
<td>Model + review time</td>
|
|
477
|
+
<td>$5.5k–7k+/mo loaded</td>
|
|
478
|
+
<td>$2.5k–5k/mo varies</td>
|
|
479
|
+
<td>$__SPRINT_DIAGNOSTIC_PRICE_DOLLARS__ once</td>
|
|
480
|
+
</tr>
|
|
481
|
+
<tr>
|
|
482
|
+
<td>Time to first hard gate</td>
|
|
483
|
+
<td>Manual upkeep</td>
|
|
484
|
+
<td>Weeks–months</td>
|
|
485
|
+
<td>1–5 weeks, high churn</td>
|
|
486
|
+
<td>Minutes free / 2 business days managed</td>
|
|
487
|
+
</tr>
|
|
488
|
+
<tr>
|
|
489
|
+
<td>When agent “looks competent”</td>
|
|
490
|
+
<td>Prompt may be skipped</td>
|
|
491
|
+
<td>Custom glue</td>
|
|
492
|
+
<td>Human judgment only</td>
|
|
493
|
+
<td>Configured gate at tool call</td>
|
|
494
|
+
</tr>
|
|
495
|
+
<tr>
|
|
496
|
+
<td>If it is the wrong fit</td>
|
|
497
|
+
<td>You keep thrashing</td>
|
|
498
|
+
<td>Costly to reverse</td>
|
|
499
|
+
<td>Restart search</td>
|
|
500
|
+
<td>Refund boundary written up front</td>
|
|
501
|
+
</tr>
|
|
502
|
+
</tbody>
|
|
503
|
+
</table>
|
|
504
|
+
</div>
|
|
505
|
+
</section>
|
|
506
|
+
|
|
507
|
+
<section id="faq">
|
|
508
|
+
<div class="eyebrow">Questions before you pay</div>
|
|
509
|
+
<h2>Objections we hear from founders</h2>
|
|
510
|
+
<div class="faq">
|
|
511
|
+
<div class="faq-item">
|
|
512
|
+
<button class="faq-q" type="button" aria-expanded="false">How fast can I get started?</button>
|
|
513
|
+
<div class="faq-a">Buy or submit fit check today. Managed delivery is two business days after access and the agreed workflow materials are available. Free local evaluate is minutes: <code>npx thumbgate init</code>.</div>
|
|
514
|
+
</div>
|
|
515
|
+
<div class="faq-item">
|
|
516
|
+
<button class="faq-q" type="button" aria-expanded="false">What if the workflow is not a fit?</button>
|
|
517
|
+
<div class="faq-a">If the repeated failure cannot be reduced to one supported ThumbGate gate, the $__SPRINT_DIAGNOSTIC_PRICE_DOLLARS__ order is refunded. We do not silently expand into open consulting.</div>
|
|
518
|
+
</div>
|
|
519
|
+
<div class="faq-item">
|
|
520
|
+
<button class="faq-q" type="button" aria-expanded="false">Is this a long-term contract?</button>
|
|
521
|
+
<div class="faq-a">No. The diagnostic is one-time. Pro is $19/mo and cancels anytime. Multi-workflow or enterprise scope is separate after proof.</div>
|
|
522
|
+
</div>
|
|
523
|
+
<div class="faq-item">
|
|
524
|
+
<button class="faq-q" type="button" aria-expanded="false">How is this different from Upwork or hiring an ops person?</button>
|
|
525
|
+
<div class="faq-a">Marketplaces give you a human and a prayer. ThumbGate hardens the agents already in your stack with a pre-action gate, regression proof, and a written fence. Humans stay in the loop for exceptions; the repeat failure does not.</div>
|
|
526
|
+
</div>
|
|
527
|
+
</div>
|
|
528
|
+
<div class="cta-band">
|
|
529
|
+
<div>
|
|
530
|
+
<h2>Two paths from here.</h2>
|
|
531
|
+
<p><strong>Path one:</strong> nothing changes. The same failure runs again next week and you catch it — or you don't, and a customer does.<br>
|
|
532
|
+
<strong>Path two:</strong> you name the failure today, and in two business days it is a gate with a regression test behind it and a fence written down.</p>
|
|
533
|
+
<p class="fine">Fixed $__SPRINT_DIAGNOSTIC_PRICE_DOLLARS__, one time · refunded if it is not a supported fit · gates run locally on your machine</p>
|
|
534
|
+
</div>
|
|
535
|
+
<div class="nav-actions" style="flex-direction:column; align-items:stretch;">
|
|
536
|
+
<a class="btn primary" href="#buy" data-revenue-cta data-cta-id="founders_bottom_buy" data-cta-placement="bottom_band">Gate my worst agent failure · $__SPRINT_DIAGNOSTIC_PRICE_DOLLARS__</a>
|
|
537
|
+
<a class="btn" href="/checkout/pro?utm_source=founders&utm_medium=bottom_band&utm_campaign=oceans_inspired_conversion&cta_id=founders_bottom_pro&plan_id=pro" data-offer-link data-cta-id="founders_bottom_pro" data-plan-id="pro">Start Pro · $19/mo</a>
|
|
538
|
+
</div>
|
|
539
|
+
</div>
|
|
540
|
+
</section>
|
|
541
|
+
</main>
|
|
542
|
+
|
|
543
|
+
<footer>
|
|
544
|
+
<div class="shell footer-inner">
|
|
545
|
+
<span>ThumbGate · Local-first agent governance. Not a talent marketplace; no affiliation with Oceans Talent.</span>
|
|
546
|
+
<div>
|
|
547
|
+
<a href="/diagnostic">Diagnostic</a> ·
|
|
548
|
+
<a href="/pricing">Pricing</a> ·
|
|
549
|
+
<a href="__VERIFICATION_URL__">Proof</a> ·
|
|
550
|
+
<a href="/llm-context.md">LLM context</a>
|
|
551
|
+
</div>
|
|
552
|
+
</div>
|
|
553
|
+
</footer>
|
|
554
|
+
|
|
555
|
+
<script>
|
|
556
|
+
'use strict';
|
|
557
|
+
document.querySelectorAll('.faq-q').forEach((button) => {
|
|
558
|
+
button.addEventListener('click', () => {
|
|
559
|
+
const item = button.closest('.faq-item');
|
|
560
|
+
const open = item.classList.toggle('open');
|
|
561
|
+
button.setAttribute('aria-expanded', open ? 'true' : 'false');
|
|
562
|
+
});
|
|
563
|
+
});
|
|
564
|
+
|
|
565
|
+
(function () {
|
|
566
|
+
const search = new URLSearchParams(window.location.search);
|
|
567
|
+
const paidForm = document.querySelector('[data-founders-pay-form]');
|
|
568
|
+
const inboundSource = search.get('utm_source') || search.get('source');
|
|
569
|
+
const isAiventyxTraffic = String(inboundSource || '').trim().toLowerCase() === 'aiventyx';
|
|
570
|
+
if (paidForm && isAiventyxTraffic) {
|
|
571
|
+
paidForm.remove();
|
|
572
|
+
const paymentHint = document.querySelector('[data-founders-payment-hint]');
|
|
573
|
+
if (paymentHint) {
|
|
574
|
+
paymentHint.textContent = 'The Aiventyx payment path is paused while seller fees and downstream obligations remain unverified. Use Check workflow fit first without entering a marketplace payment or revenue-share commitment.';
|
|
575
|
+
}
|
|
576
|
+
} else if (paidForm) {
|
|
577
|
+
const passthrough = /^(utm_(source|medium|campaign|content|term)|source|acquisition_id|visitor_id|session_id|visitor_session_id|install_id|trace_id|creator|community|post_id|comment_id|campaign_variant|offer_code|referrer_host)$/i;
|
|
578
|
+
for (const [key, value] of search.entries()) {
|
|
579
|
+
if (!passthrough.test(key) || !value.trim()) continue;
|
|
580
|
+
let input = paidForm.querySelector(`input[name="${CSS.escape(key)}"]`);
|
|
581
|
+
if (!input) {
|
|
582
|
+
input = document.createElement('input');
|
|
583
|
+
input.type = 'hidden';
|
|
584
|
+
input.name = key;
|
|
585
|
+
paidForm.appendChild(input);
|
|
586
|
+
}
|
|
587
|
+
input.value = value.trim();
|
|
588
|
+
}
|
|
589
|
+
if (inboundSource && inboundSource.trim()) {
|
|
590
|
+
const sourceInput = paidForm.querySelector('input[name="utm_source"]');
|
|
591
|
+
if (sourceInput) sourceInput.value = inboundSource.trim();
|
|
592
|
+
}
|
|
593
|
+
}
|
|
594
|
+
|
|
595
|
+
function privacySignalOptOut() {
|
|
596
|
+
try {
|
|
597
|
+
return navigator.globalPrivacyControl === true
|
|
598
|
+
|| navigator.doNotTrack === '1'
|
|
599
|
+
|| window.doNotTrack === '1';
|
|
600
|
+
} catch (_) {
|
|
601
|
+
return false;
|
|
602
|
+
}
|
|
603
|
+
}
|
|
604
|
+
|
|
605
|
+
function telemetry(eventName, props) {
|
|
606
|
+
if (privacySignalOptOut()) return;
|
|
607
|
+
try {
|
|
608
|
+
navigator.sendBeacon && navigator.sendBeacon('/v1/telemetry/ping', JSON.stringify({
|
|
609
|
+
event: eventName,
|
|
610
|
+
page: '/founders',
|
|
611
|
+
source: 'founders_page',
|
|
612
|
+
props
|
|
613
|
+
}));
|
|
614
|
+
} catch (_) {}
|
|
615
|
+
}
|
|
616
|
+
|
|
617
|
+
document.addEventListener('click', function (event) {
|
|
618
|
+
const cta = event.target.closest('[data-revenue-cta], [data-offer-link]');
|
|
619
|
+
if (!cta) return;
|
|
620
|
+
telemetry('founders_cta_click', {
|
|
621
|
+
ctaId: cta.getAttribute('data-cta-id') || '',
|
|
622
|
+
ctaPlacement: cta.getAttribute('data-cta-placement') || '',
|
|
623
|
+
planId: cta.getAttribute('data-plan-id') || 'sprint_diagnostic'
|
|
624
|
+
});
|
|
625
|
+
});
|
|
626
|
+
|
|
627
|
+
if (paidForm) {
|
|
628
|
+
paidForm.addEventListener('submit', function () {
|
|
629
|
+
telemetry('founders_checkout_submit', {
|
|
630
|
+
ctaId: 'founders_hero_paid',
|
|
631
|
+
ctaPlacement: 'hero',
|
|
632
|
+
planId: 'sprint_diagnostic'
|
|
633
|
+
});
|
|
634
|
+
});
|
|
635
|
+
}
|
|
636
|
+
})();
|
|
637
|
+
</script>
|
|
638
|
+
</body>
|
|
639
|
+
</html>
|