thumbgate 1.28.4 → 1.29.2
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/.claude/commands/dashboard.md +11 -1
- package/.claude/commands/thumbgate-dashboard.md +23 -8
- package/.claude-plugin/plugin.json +1 -1
- package/.well-known/llms.txt +18 -10
- package/.well-known/mcp/server-card.json +1 -1
- package/README.md +66 -3
- package/adapters/claude/.mcp.json +2 -2
- package/adapters/forge/forge.yaml +3 -3
- package/adapters/mcp/server-stdio.js +88 -2
- package/adapters/opencode/opencode.json +1 -1
- package/bin/cli.js +8 -8
- package/bin/postinstall.js +4 -13
- package/commands/dashboard.md +11 -1
- package/commands/thumbgate-dashboard.md +23 -8
- package/config/agent-outcome-monitor-thresholds.json +63 -0
- package/config/evals/agent-outcomes-baseline.json +17 -0
- package/config/evals/agent-outcomes-golden.json +412 -0
- package/config/evals/prompt-eval-baseline.json +23 -0
- package/config/github-about.json +5 -4
- package/config/post-deploy-marketing-pages.json +6 -6
- package/config/schemas/task-outcome-receipt.schema.json +296 -0
- package/docs/integrations/grafana/README.md +109 -0
- package/docs/integrations/grafana/thumbgate-revenue-evidence-dashboard.json +1930 -0
- package/openapi/openapi.yaml +475 -5
- package/package.json +75 -22
- package/public/agent-manager.html +10 -11
- package/public/agents-cost-savings.html +2 -2
- package/public/assets/brand/thumbgate-logo-transparent.svg +6 -11
- package/public/assets/brand/thumbgate-mark-inline-v3.svg +11 -10
- package/public/assets/brand/thumbgate-mark.svg +10 -11
- package/public/blog/inside-your-boundary.html +114 -0
- package/public/blog/process-over-outcome-gates.html +119 -0
- package/public/blog.html +296 -402
- package/public/brand/thumbgate-mark.svg +5 -9
- package/public/codex-enterprise.html +2 -2
- package/public/compare.html +12 -3
- package/public/diagnostic.html +79 -29
- package/public/guide.html +4 -4
- package/public/index.html +1090 -2098
- package/public/install.html +3 -3
- package/public/js/buyer-intent.js +33 -18
- package/public/numbers.html +2 -2
- package/public/pricing.html +268 -408
- package/public/pro.html +4 -4
- package/scripts/agent-outcome-eval.js +130 -0
- package/scripts/agent-outcome-monitor.js +261 -0
- package/scripts/agent-reasoning-traces.js +8 -9
- package/scripts/async-job-runner.js +107 -13
- package/scripts/billing.js +456 -126
- package/scripts/buyer-paths.js +102 -0
- package/scripts/cli-feedback.js +2 -2
- package/scripts/commercial-offer.js +18 -10
- package/scripts/durability/step.js +121 -12
- package/scripts/external-customer-audit.js +881 -0
- package/scripts/feedback-loop.js +26 -0
- package/scripts/gates-engine.js +554 -19
- package/scripts/grafana-revenue-evidence.js +856 -0
- package/scripts/human-escalation.js +265 -0
- package/scripts/hybrid-feedback-context.js +93 -50
- package/scripts/jsonl-window.js +89 -0
- package/scripts/judge-reward-function.js +30 -18
- package/scripts/lesson-embedding-index.js +3 -7
- package/scripts/meta-agent-loop.js +20 -2
- package/scripts/observability-env.js +139 -0
- package/scripts/observability-setup.js +55 -0
- package/scripts/plausible-domain-config.js +4 -0
- package/scripts/prompt-eval.js +81 -4
- package/scripts/provider-live-evidence.js +1290 -0
- package/scripts/provider-payment-reconciler.js +442 -0
- package/scripts/provider-revenue-evidence.js +249 -0
- package/scripts/rate-limiter.js +1 -5
- package/scripts/revenue-action-eligibility.js +414 -0
- package/scripts/revenue-evidence-remediation.js +694 -0
- package/scripts/revenue-offer-system.js +709 -0
- package/scripts/sales-pipeline.js +1117 -0
- package/scripts/schedule-manager.js +249 -0
- package/scripts/seo-gsd.js +8 -4
- package/scripts/stripe-credentials.js +37 -0
- package/scripts/stripe-revenue-catalog-audit.js +363 -0
- package/scripts/stripe-revenue-catalog.js +164 -0
- package/scripts/task-outcomes.js +425 -0
- package/scripts/telemetry-analytics.js +23 -3
- package/scripts/tool-contract-validator.js +287 -59
- package/scripts/tool-registry.js +143 -0
- package/scripts/vector-store.js +83 -7
- package/scripts/workflow-intake-queue.js +483 -0
- package/src/api/server.js +647 -118
package/public/pricing.html
CHANGED
|
@@ -1,429 +1,289 @@
|
|
|
1
|
-
<!
|
|
1
|
+
<!doctype html>
|
|
2
2
|
<html lang="en">
|
|
3
3
|
<head>
|
|
4
|
-
<meta charset="
|
|
5
|
-
<meta name="viewport" content="width=device-width, initial-scale=1
|
|
6
|
-
|
|
7
|
-
<
|
|
8
|
-
<
|
|
9
|
-
<
|
|
10
|
-
<meta property="og:
|
|
11
|
-
<meta property="og:
|
|
12
|
-
<meta property="og:url" content="__APP_ORIGIN__/pricing">
|
|
13
|
-
<meta property="og:
|
|
14
|
-
<
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
4
|
+
<meta charset="utf-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
6
|
+
<title>Pricing — Enforcement that pays for itself | ThumbGate</title>
|
|
7
|
+
<meta name="description" content="ThumbGate vs DIY prompts, platform hire, or GRC suite. Free evaluate, Pro $19/mo, $499 Diagnostic gate. Countable units that convert.">
|
|
8
|
+
<link rel="canonical" href="__APP_ORIGIN__/pricing">
|
|
9
|
+
<link rel="alternate" type="text/markdown" title="ThumbGate LLM context" href="__APP_ORIGIN__/llm-context.md">
|
|
10
|
+
<meta property="og:title" content="ThumbGate Pricing — $499 Diagnostic · Pro $19/mo">
|
|
11
|
+
<meta property="og:description" content="Stop AI agent mistakes before they cost you. Dual path: $499 diagnostic gate or $19/mo Pro.">
|
|
12
|
+
<meta property="og:url" content="__APP_ORIGIN__/pricing">
|
|
13
|
+
<meta property="og:type" content="product">
|
|
14
|
+
<style>
|
|
15
|
+
:root { --ink:#171d1a; --muted:#5b6761; --paper:#f5f2e9; --card:#fffdf8; --line:#d8d4c8; --green:#006e52; --green2:#004c3a; --red:#a72f2f; }
|
|
16
|
+
* { box-sizing:border-box; }
|
|
17
|
+
body { margin:0; color:var(--ink); background:var(--paper); font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif; line-height:1.55; }
|
|
18
|
+
a { color:inherit; }
|
|
19
|
+
.shell { width:min(1080px,calc(100% - 40px)); margin:0 auto; }
|
|
20
|
+
nav { border-bottom:1px solid var(--line); background:rgba(245,242,233,.95); }
|
|
21
|
+
.nav-inner { min-height:70px; display:flex; align-items:center; justify-content:space-between; gap:24px; }
|
|
22
|
+
.brand { text-decoration:none; font-weight:850; letter-spacing:-.03em; font-size:1.25rem; }
|
|
23
|
+
.nav-links { display:flex; align-items:center; gap:18px; color:var(--muted); font-size:.92rem; }
|
|
24
|
+
.nav-buy,.button { display:inline-flex; justify-content:center; align-items:center; border:0; border-radius:10px; background:var(--green); color:#fff; padding:12px 18px; font:inherit; font-weight:800; text-decoration:none; cursor:pointer; }
|
|
25
|
+
.nav-buy:hover,.button:hover { background:var(--green2); }
|
|
26
|
+
.nav-pro { display:inline-flex; justify-content:center; align-items:center; border:0; border-radius:10px; background:var(--green); color:#fff; padding:12px 18px; font:inherit; font-weight:800; text-decoration:none; }
|
|
27
|
+
.nav-enterprise { display:inline-flex; justify-content:center; align-items:center; border:1px solid var(--green); border-radius:10px; color:var(--green); padding:10px 14px; font:inherit; font-weight:800; text-decoration:none; background:transparent; }
|
|
28
|
+
main { padding:70px 0 84px; }
|
|
29
|
+
.hero { display:grid; grid-template-columns:minmax(0,1.05fr) minmax(300px,.95fr); gap:28px; align-items:start; }
|
|
30
|
+
.offer-grid { display:grid; grid-template-columns:1fr 1fr; gap:18px; }
|
|
31
|
+
.pro-card { border:1px solid var(--line); border-radius:18px; background:var(--card); box-shadow:0 18px 50px rgba(38,45,41,.09); padding:30px; }
|
|
32
|
+
.pro-card .price { color:var(--green); }
|
|
33
|
+
@media (max-width:900px) { .offer-grid { grid-template-columns:1fr; } }
|
|
34
|
+
.eyebrow { color:var(--green); font-size:.76rem; font-weight:850; letter-spacing:.14em; text-transform:uppercase; }
|
|
35
|
+
h1 { max-width:760px; margin:14px 0 18px; font-size:clamp(2.5rem,6vw,5.15rem); line-height:.96; letter-spacing:-.055em; }
|
|
36
|
+
.lede { max-width:660px; margin:0 0 28px; color:var(--muted); font-size:1.13rem; }
|
|
37
|
+
.outcome { display:grid; gap:12px; margin-top:34px; }
|
|
38
|
+
.outcome-row { display:flex; gap:13px; align-items:flex-start; }
|
|
39
|
+
.tick { width:24px; height:24px; flex:0 0 24px; display:grid; place-items:center; border-radius:50%; background:#dcebe4; color:var(--green); font-weight:900; }
|
|
40
|
+
.card { border:1px solid var(--line); border-radius:18px; background:var(--card); box-shadow:0 18px 50px rgba(38,45,41,.09); padding:30px; }
|
|
41
|
+
.price { margin:8px 0 4px; font-size:3.4rem; line-height:1; font-weight:900; letter-spacing:-.055em; }
|
|
42
|
+
.price-note { margin:0 0 22px; color:var(--muted); }
|
|
43
|
+
label { display:block; margin-bottom:7px; font-size:.88rem; font-weight:800; }
|
|
44
|
+
input[type=email] { width:100%; border:1px solid #aaa89f; border-radius:9px; background:#fff; padding:13px 14px; font:inherit; }
|
|
45
|
+
.button { width:100%; margin-top:11px; }
|
|
46
|
+
.fine { margin:12px 0 0; color:var(--muted); font-size:.79rem; }
|
|
47
|
+
.boundary { margin-top:18px; padding:14px 16px; border-left:4px solid var(--red); background:#fff5f2; color:#63332d; font-size:.9rem; }
|
|
48
|
+
section { padding-top:76px; }
|
|
49
|
+
h2 { margin:0 0 14px; font-size:clamp(1.8rem,3.5vw,2.8rem); letter-spacing:-.035em; }
|
|
50
|
+
.section-lede { max-width:680px; color:var(--muted); }
|
|
51
|
+
.steps { display:grid; grid-template-columns:repeat(3,1fr); gap:14px; margin-top:28px; }
|
|
52
|
+
.step { border:1px solid var(--line); border-radius:14px; background:var(--card); padding:22px; }
|
|
53
|
+
.step-num { color:var(--green); font-weight:900; }
|
|
54
|
+
.step h3 { margin:8px 0 6px; font-size:1.08rem; }
|
|
55
|
+
.step p { margin:0; color:var(--muted); font-size:.92rem; }
|
|
56
|
+
.fit { display:grid; grid-template-columns:1fr 1fr; gap:18px; margin-top:28px; }
|
|
57
|
+
.fit-card { border-top:3px solid var(--green); background:var(--card); padding:22px; }
|
|
58
|
+
.fit-card h3 { margin:0 0 8px; }
|
|
59
|
+
.fit-card p { margin:0; color:var(--muted); }
|
|
60
|
+
.faq { border-top:1px solid var(--line); }
|
|
61
|
+
.faq-item { border-bottom:1px solid var(--line); }
|
|
62
|
+
.faq-q { width:100%; border:0; background:transparent; padding:18px 0; color:var(--ink); font:inherit; font-weight:800; text-align:left; cursor:pointer; }
|
|
63
|
+
.faq-a { display:none; padding:0 0 18px; color:var(--muted); }
|
|
64
|
+
.faq-item.open .faq-a { display:block; }
|
|
65
|
+
footer { border-top:1px solid var(--line); padding:28px 0; color:var(--muted); font-size:.85rem; }
|
|
66
|
+
.footer-inner { display:flex; justify-content:space-between; gap:24px; }
|
|
67
|
+
.footer-links { display:flex; gap:18px; }
|
|
68
|
+
@media (max-width:820px) { .hero,.steps,.fit { grid-template-columns:1fr; } .hero { gap:34px; } .nav-links a:not(.nav-buy) { display:none; } }
|
|
69
|
+
</style>
|
|
70
|
+
<script type="application/ld+json">
|
|
71
|
+
{
|
|
72
|
+
"@context": "https://schema.org",
|
|
73
|
+
"@type": "Service",
|
|
74
|
+
"name": "ThumbGate Enterprise Workflow Gate",
|
|
75
|
+
"description": "A bounded implementation for one supported local AI-agent workflow: review, configured pre-action gate, regression test, and rollout and rollback proof.",
|
|
76
|
+
"provider": { "@type": "Organization", "name": "ThumbGate", "url": "__APP_ORIGIN__/" },
|
|
77
|
+
"offers": {
|
|
78
|
+
"@type": "Offer",
|
|
79
|
+
"price": "499",
|
|
80
|
+
"priceCurrency": "USD",
|
|
81
|
+
"url": "__APP_ORIGIN__/pricing#buy",
|
|
82
|
+
"availability": "https://schema.org/InStock"
|
|
56
83
|
}
|
|
57
|
-
fetch('/v1/telemetry/ping', {
|
|
58
|
-
method: 'POST',
|
|
59
|
-
headers: { 'content-type': 'application/json' },
|
|
60
|
-
body,
|
|
61
|
-
keepalive: true
|
|
62
|
-
}).catch(function(){});
|
|
63
|
-
};
|
|
64
|
-
document.addEventListener('DOMContentLoaded', function() {
|
|
65
|
-
trackPricingTelemetry('pricing_page_view', { serverTelemetryCaptured });
|
|
66
|
-
document.querySelectorAll('[data-pricing-cta]').forEach(function(link) {
|
|
67
|
-
link.addEventListener('click', function() {
|
|
68
|
-
trackPricingTelemetry('pricing_cta_click', {
|
|
69
|
-
ctaId: link.getAttribute('data-cta-id') || null,
|
|
70
|
-
ctaPlacement: link.getAttribute('data-cta-placement') || 'pricing',
|
|
71
|
-
tier: link.getAttribute('data-tier') || null,
|
|
72
|
-
planId: link.getAttribute('data-plan-id') || null,
|
|
73
|
-
billingCycle: link.getAttribute('data-billing-cycle') || null,
|
|
74
|
-
price: link.getAttribute('data-price') || null,
|
|
75
|
-
href: link.getAttribute('href') || null
|
|
76
|
-
});
|
|
77
|
-
});
|
|
78
|
-
});
|
|
79
|
-
});
|
|
80
|
-
</script>
|
|
81
|
-
|
|
82
|
-
<script type="application/ld+json">
|
|
83
|
-
{
|
|
84
|
-
"@context": "https://schema.org",
|
|
85
|
-
"@type": "SoftwareApplication",
|
|
86
|
-
"name": "ThumbGate",
|
|
87
|
-
"applicationCategory": "DeveloperApplication",
|
|
88
|
-
"operatingSystem": "Cross-platform, Node.js >=18.18.0",
|
|
89
|
-
"url": "__APP_ORIGIN__/pricing",
|
|
90
|
-
"offers": [
|
|
91
|
-
{ "@type": "Offer", "name": "ThumbGate CLI (Free)", "price": "0", "priceCurrency": "USD" },
|
|
92
|
-
{ "@type": "Offer", "name": "Workflow Hardening Diagnostic", "price": "__SPRINT_DIAGNOSTIC_PRICE_DOLLARS__", "priceCurrency": "USD", "url": "__APP_ORIGIN__/go/diagnostic" },
|
|
93
|
-
{ "@type": "Offer", "name": "Workflow Hardening Sprint", "price": "__WORKFLOW_SPRINT_PRICE_DOLLARS__", "priceCurrency": "USD", "url": "__APP_ORIGIN__/go/sprint" },
|
|
94
|
-
{ "@type": "Offer", "name": "ThumbGate Pro Monthly", "price": "__PRO_PRICE_DOLLARS__", "priceCurrency": "USD", "url": "__APP_ORIGIN__/checkout/pro?confirm=1&plan_id=pro&billing_cycle=monthly&landing_path=%2Fpricing" },
|
|
95
|
-
{ "@type": "Offer", "name": "ThumbGate Pro Annual", "price": "149", "priceCurrency": "USD", "url": "__APP_ORIGIN__/checkout/pro?confirm=1&plan_id=pro&billing_cycle=annual&landing_path=%2Fpricing" },
|
|
96
|
-
{ "@type": "Offer", "name": "ThumbGate Enterprise", "priceCurrency": "USD", "url": "__APP_ORIGIN__/#workflow-sprint-intake" }
|
|
97
|
-
]
|
|
98
|
-
}
|
|
99
|
-
</script>
|
|
100
|
-
|
|
101
|
-
<script type="application/ld+json">
|
|
102
|
-
{
|
|
103
|
-
"@context": "https://schema.org",
|
|
104
|
-
"@type": "FAQPage",
|
|
105
|
-
"mainEntity": [
|
|
106
|
-
{ "@type": "Question", "name": "What does Pro add over the free CLI?", "acceptedAnswer": { "@type": "Answer", "text": "Free gives you 2 captures/day and 3 active rules, running on your machine. Pro removes solo caps and adds personal recall, dashboard proof, managed adapters, and DPO export. Enterprise adds shared hosted lessons and org visibility." } },
|
|
107
|
-
{ "@type": "Question", "name": "Does ThumbGate send my code to the cloud?", "acceptedAnswer": { "@type": "Answer", "text": "No. The CLI is local-first — no source code leaves your machine. Pro adds personal proof and exports; Enterprise adds shared hosted lessons and org dashboards." } },
|
|
108
|
-
{ "@type": "Question", "name": "When should I pick Enterprise over Pro?", "acceptedAnswer": { "@type": "Answer", "text": "When one engineer's correction should protect the whole team. Enterprise shares the lesson database across the org so a fix in one repo prevents the same mistake in every repo." } },
|
|
109
|
-
{ "@type": "Question", "name": "Can I cancel anytime?", "acceptedAnswer": { "@type": "Answer", "text": "Yes. Pro and Enterprise are month-to-month with a 7-day refund window on the first charge. Cancel from the billing portal and your subscription ends at the period close." } }
|
|
110
|
-
]
|
|
111
|
-
}
|
|
112
|
-
</script>
|
|
113
|
-
|
|
114
|
-
<style>
|
|
115
|
-
*, *::before, *::after { box-sizing: border-box; }
|
|
116
|
-
|
|
117
|
-
:root {
|
|
118
|
-
--bg: #0a0a0b;
|
|
119
|
-
--bg-raised: #111113;
|
|
120
|
-
--bg-card: #161618;
|
|
121
|
-
--border: #232327;
|
|
122
|
-
--text: #ececf1;
|
|
123
|
-
--text-muted: #9a9aa6;
|
|
124
|
-
--text-dim: #6b6b78;
|
|
125
|
-
--cyan: #22d3ee;
|
|
126
|
-
--cyan-dim: rgba(34, 211, 238, 0.12);
|
|
127
|
-
--cyan-glow: rgba(34, 211, 238, 0.22);
|
|
128
|
-
--green: #4ade80;
|
|
129
|
-
--green-dim: rgba(74, 222, 128, 0.12);
|
|
130
|
-
--font: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Inter', Roboto, sans-serif;
|
|
131
|
-
--mono: 'SF Mono', 'Cascadia Code', 'JetBrains Mono', 'Fira Code', Consolas, monospace;
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
html { scroll-behavior: smooth; }
|
|
135
|
-
body {
|
|
136
|
-
margin: 0;
|
|
137
|
-
font-family: var(--font);
|
|
138
|
-
background:
|
|
139
|
-
radial-gradient(circle at top, rgba(34, 211, 238, 0.16) 0%, rgba(34, 211, 238, 0) 28%),
|
|
140
|
-
linear-gradient(180deg, #0a0a0b 0%, #0d1016 48%, #0a0a0b 100%);
|
|
141
|
-
color: var(--text);
|
|
142
|
-
line-height: 1.6;
|
|
143
|
-
-webkit-font-smoothing: antialiased;
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
a { color: inherit; }
|
|
147
|
-
.container { max-width: 1080px; margin: 0 auto; padding: 0 24px; }
|
|
148
|
-
|
|
149
|
-
/* NAV */
|
|
150
|
-
nav {
|
|
151
|
-
position: sticky; top: 0; z-index: 50;
|
|
152
|
-
backdrop-filter: blur(12px);
|
|
153
|
-
background: rgba(10, 10, 11, 0.86);
|
|
154
|
-
border-bottom: 1px solid rgba(35, 35, 39, 0.92);
|
|
155
84
|
}
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
.price-card.money .tier { color: var(--green, #4ade80); }
|
|
174
|
-
.btn-money {
|
|
175
|
-
display: block; width: 100%; text-align: center; padding: 12px 16px; border-radius: 8px;
|
|
176
|
-
background: var(--green, #4ade80); color: #06120a; font-weight: 800; text-decoration: none;
|
|
177
|
-
}
|
|
178
|
-
|
|
179
|
-
/* CARDS */
|
|
180
|
-
.price-card {
|
|
181
|
-
background: var(--bg-card); border: 1px solid var(--border); border-radius: 12px;
|
|
182
|
-
padding: 32px 28px; display: flex; flex-direction: column;
|
|
183
|
-
}
|
|
184
|
-
.price-card.highlight {
|
|
185
|
-
border-color: var(--cyan);
|
|
186
|
-
box-shadow: 0 0 40px var(--cyan-dim), inset 0 1px 0 rgba(34, 211, 238, 0.15);
|
|
187
|
-
position: relative;
|
|
188
|
-
}
|
|
189
|
-
|
|
190
|
-
.tier { font-size: 13px; text-transform: uppercase; letter-spacing: 0.08em; color: var(--text-muted); font-weight: 600; margin-bottom: 8px; }
|
|
191
|
-
.price-card.highlight .tier { color: var(--cyan); }
|
|
192
|
-
|
|
193
|
-
.price { font-size: 40px; font-weight: 700; letter-spacing: -0.03em; margin-bottom: 4px; }
|
|
194
|
-
.price span { font-size: 16px; color: var(--text-dim); }
|
|
195
|
-
.price-sub { font-size: 13px; color: var(--text-muted); margin-bottom: 24px; line-height: 1.55; }
|
|
196
|
-
|
|
197
|
-
.price-card ul { list-style: none; padding: 0; margin: 0 0 28px; }
|
|
198
|
-
.price-card li { font-size: 14px; color: var(--text-muted); padding: 6px 0; display: flex; align-items: flex-start; gap: 8px; }
|
|
199
|
-
.price-card li::before { content: "\2713"; color: var(--cyan); font-weight: 700; flex-shrink: 0; }
|
|
200
|
-
|
|
201
|
-
/* BUTTONS */
|
|
202
|
-
.btn-install {
|
|
203
|
-
display: block; text-align: center; padding: 12px; border: 1px solid var(--border);
|
|
204
|
-
border-radius: 8px; color: var(--text); text-decoration: none; font-size: 14px; font-weight: 500;
|
|
205
|
-
transition: border-color 0.15s; margin-top: auto;
|
|
206
|
-
}
|
|
207
|
-
.btn-install:hover { border-color: var(--text-muted); }
|
|
208
|
-
|
|
209
|
-
.btn-pro {
|
|
210
|
-
display: block; text-align: center; padding: 12px;
|
|
211
|
-
background: var(--cyan); color: var(--bg); border-radius: 8px;
|
|
212
|
-
text-decoration: none; font-size: 14px; font-weight: 600; transition: opacity 0.15s;
|
|
213
|
-
margin-top: auto;
|
|
214
|
-
}
|
|
215
|
-
.btn-pro:hover { opacity: 0.85; }
|
|
216
|
-
|
|
217
|
-
.btn-team {
|
|
218
|
-
display: block; text-align: center; padding: 12px;
|
|
219
|
-
background: rgba(74, 222, 128, 0.14); color: var(--green);
|
|
220
|
-
border: 1px solid rgba(74, 222, 128, 0.4); border-radius: 8px;
|
|
221
|
-
text-decoration: none; font-size: 14px; font-weight: 600;
|
|
222
|
-
transition: border-color 0.15s, transform 0.15s; margin-top: auto;
|
|
223
|
-
}
|
|
224
|
-
.btn-team:hover { border-color: var(--green); transform: translateY(-1px); }
|
|
225
|
-
|
|
226
|
-
.btn-sub { font-size: 11px; color: var(--text-muted); margin-top: 8px; text-align: center; }
|
|
227
|
-
|
|
228
|
-
/* FAQ */
|
|
229
|
-
.faq { padding: 48px 0; }
|
|
230
|
-
.faq h2 { text-align: center; font-size: 24px; margin-bottom: 24px; }
|
|
231
|
-
.faq-list { max-width: 640px; margin: 0 auto; }
|
|
232
|
-
.faq-item { border-bottom: 1px solid var(--border); }
|
|
233
|
-
.faq-q {
|
|
234
|
-
padding: 20px 0; font-size: 15px; font-weight: 600; cursor: pointer;
|
|
235
|
-
display: flex; justify-content: space-between; align-items: center;
|
|
85
|
+
</script>
|
|
86
|
+
<script type="application/ld+json">
|
|
87
|
+
{
|
|
88
|
+
"@context": "https://schema.org",
|
|
89
|
+
"@type": "FAQPage",
|
|
90
|
+
"mainEntity": [
|
|
91
|
+
{
|
|
92
|
+
"@type": "Question",
|
|
93
|
+
"name": "What does the $499 managed gate include?",
|
|
94
|
+
"acceptedAnswer": { "@type": "Answer", "text": "A 60-minute workflow review, one configured local pre-action gate, one regression test, and rollout and rollback proof within two business days for one supported workflow." }
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
"@type": "Question",
|
|
98
|
+
"name": "What happens if the workflow is not a fit?",
|
|
99
|
+
"acceptedAnswer": { "@type": "Answer", "text": "If the failure cannot be reduced to a supported ThumbGate gate, the payment is refunded instead of turning into an open-ended consulting upsell." }
|
|
100
|
+
}
|
|
101
|
+
]
|
|
236
102
|
}
|
|
237
|
-
|
|
238
|
-
.faq-item.open .faq-q::after { transform: rotate(45deg); }
|
|
239
|
-
.faq-a { font-size: 14px; color: var(--text-muted); line-height: 1.65; padding-bottom: 20px; display: none; }
|
|
240
|
-
.faq-item.open .faq-a { display: block; }
|
|
241
|
-
|
|
242
|
-
/* FOOTER */
|
|
243
|
-
footer { border-top: 1px solid var(--border); padding: 32px 0; margin-top: 48px; }
|
|
244
|
-
footer .container { display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 12px; }
|
|
245
|
-
.footer-links { display: flex; gap: 20px; }
|
|
246
|
-
.footer-links a { color: var(--text-muted); text-decoration: none; font-size: 13px; transition: color 0.15s; }
|
|
247
|
-
.footer-links a:hover { color: var(--text); }
|
|
248
|
-
.footer-copy { font-size: 12px; color: var(--text-muted); }
|
|
249
|
-
</style>
|
|
250
|
-
<script>
|
|
251
|
-
!function(t,e){var o,n,p,r;e.__SV||(window.posthog=e,e._i=[],e.init=function(i,s,a){function g(t,e){var o=e.split(".");2==o.length&&(t=t[o[0]],e=o[1]),t[e]=function(){t.push([e].concat(Array.prototype.slice.call(arguments,0)))}}(p=t.createElement("script")).type="text/javascript",p.crossOrigin="anonymous",p.async=!0,p.src=s.api_host.replace("/ingest","")+ "/static/array.js",(r=t.getElementsByTagName("script")[0]).parentNode.insertBefore(p,r);var u=e;for(void 0!==a?u=e[a]=[]:a="posthog",u.people=u.people||[],u.toString=function(t){var e="posthog";return"posthog"!==a&&(e+="."+a),t||(e+=" (stub)"),e},u.people.toString=function(){return u.toString(1)+".people (stub)"},o="init capture register register_once unregister opt_out_capturing has_opted_out_capturing opt_in_capturing reset isFeatureEnabled onFeatureFlags getFeatureFlag getFeatureFlagPayload reloadFeatureFlags group identify setPersonProperties setPersonPropertiesForFlags".split(" "),n=0;n<o.length;n++)g(u,o[n]);e._i.push([i,s,a])},e.__SV=1)}(document,window.posthog||[]);
|
|
252
|
-
posthog.init('__POSTHOG_API_KEY__', {
|
|
253
|
-
api_host: '/ingest',
|
|
254
|
-
ui_host: 'https://us.posthog.com',
|
|
255
|
-
person_profiles: 'identified_only',
|
|
256
|
-
});
|
|
257
|
-
posthog.capture('$pageview');
|
|
258
|
-
</script>
|
|
103
|
+
</script>
|
|
259
104
|
</head>
|
|
260
105
|
<body>
|
|
261
|
-
|
|
262
|
-
<nav>
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
<a href="/dashboard">Dashboard</a>
|
|
270
|
-
<a class="nav-cta" href="/go/diagnostic?utm_source=pricing&utm_medium=nav&utm_campaign=money_today&cta_id=pricing_nav_diagnostic&cta_placement=nav&plan_id=sprint_diagnostic" data-pricing-cta data-cta-id="pricing_nav_diagnostic" data-cta-placement="nav" data-tier="service" data-plan-id="sprint_diagnostic" data-price="__SPRINT_DIAGNOSTIC_PRICE_DOLLARS__">Pay $__SPRINT_DIAGNOSTIC_PRICE_DOLLARS__ diagnostic</a>
|
|
271
|
-
</div>
|
|
272
|
-
</div>
|
|
273
|
-
</nav>
|
|
274
|
-
|
|
275
|
-
<section class="pricing-hero">
|
|
276
|
-
<div class="container">
|
|
277
|
-
<h1>Stop paying for the same AI mistake twice.</h1>
|
|
278
|
-
<p class="lede">Paid services first: harden one AI-agent workflow with a <strong>$__SPRINT_DIAGNOSTIC_PRICE_DOLLARS__ diagnostic</strong> or <strong>$__WORKFLOW_SPRINT_PRICE_DOLLARS__ sprint</strong>. Free CLI forever. Pro is the solo self-serve lane. Enterprise is intake after proof.</p>
|
|
279
|
-
</div>
|
|
280
|
-
</section>
|
|
281
|
-
|
|
282
|
-
<section class="container">
|
|
283
|
-
<div class="pricing-grid">
|
|
284
|
-
|
|
285
|
-
<div class="price-card money highlight" id="diagnostic">
|
|
286
|
-
<div class="tier">Diagnostic</div>
|
|
287
|
-
<div class="price">$__SPRINT_DIAGNOSTIC_PRICE_DOLLARS__</div>
|
|
288
|
-
<div class="price-sub"><strong>Fastest path to cash + proof.</strong> Map one repeated agent failure: block / warn / human-review split and a shippable proof checklist. Credited toward the sprint when you continue.</div>
|
|
289
|
-
<ul>
|
|
290
|
-
<li>One workflow, one owner, one failure pattern</li>
|
|
291
|
-
<li>Gate split + proof checklist deliverable</li>
|
|
292
|
-
<li>Stripe checkout — pay today</li>
|
|
293
|
-
<li>Credit toward $__WORKFLOW_SPRINT_PRICE_DOLLARS__ sprint when implementation follows</li>
|
|
294
|
-
</ul>
|
|
295
|
-
<a class="btn-money" href="/go/diagnostic?utm_source=pricing&utm_medium=hero_card&utm_campaign=money_today&cta_id=pricing_diagnostic&cta_placement=pricing&plan_id=sprint_diagnostic" data-pricing-cta data-cta-id="pricing_diagnostic" data-cta-placement="pricing" data-tier="service" data-plan-id="sprint_diagnostic" data-price="__SPRINT_DIAGNOSTIC_PRICE_DOLLARS__" onclick="try{posthog.capture('pricing_cta_click',{cta:'pay_diagnostic',tier:'service',placement:'pricing_page',price:__SPRINT_DIAGNOSTIC_PRICE_DOLLARS__})}catch(_){};try{plausible('pricing_cta_click',{props:{cta:'pay_diagnostic',tier:'service'}})}catch(_){}">Pay $__SPRINT_DIAGNOSTIC_PRICE_DOLLARS__ diagnostic</a>
|
|
296
|
-
<p class="btn-sub"><a href="/diagnostic" style="color:var(--cyan);text-decoration:none;font-weight:600;">Or open the diagnostic page →</a></p>
|
|
297
|
-
</div>
|
|
298
|
-
|
|
299
|
-
<div class="price-card money" id="sprint">
|
|
300
|
-
<div class="tier">Workflow Hardening Sprint</div>
|
|
301
|
-
<div class="price">$__WORKFLOW_SPRINT_PRICE_DOLLARS__</div>
|
|
302
|
-
<div class="price-sub"><strong>Primary commercial motion.</strong> Wire gates for one workflow, promote prevention rules, deliver verification evidence and a rollout checklist.</div>
|
|
303
|
-
<ul>
|
|
304
|
-
<li>Workflow map + approval boundaries</li>
|
|
305
|
-
<li>Memory / gate wiring plan</li>
|
|
306
|
-
<li>Proof pack for the next production-facing iteration</li>
|
|
307
|
-
<li>Expands into Enterprise when shared lessons matter</li>
|
|
308
|
-
</ul>
|
|
309
|
-
<a class="btn-money" href="/go/sprint?utm_source=pricing&utm_medium=hero_card&utm_campaign=money_today&cta_id=pricing_sprint&cta_placement=pricing&plan_id=workflow_sprint" data-pricing-cta data-cta-id="pricing_sprint" data-cta-placement="pricing" data-tier="service" data-plan-id="workflow_sprint" data-price="__WORKFLOW_SPRINT_PRICE_DOLLARS__" onclick="try{posthog.capture('pricing_cta_click',{cta:'pay_sprint',tier:'service',placement:'pricing_page',price:__WORKFLOW_SPRINT_PRICE_DOLLARS__})}catch(_){};try{plausible('pricing_cta_click',{props:{cta:'pay_sprint',tier:'service'}})}catch(_){}">Pay $__WORKFLOW_SPRINT_PRICE_DOLLARS__ sprint</a>
|
|
310
|
-
<p class="btn-sub"><a href="/?utm_source=pricing&utm_medium=sprint_intake#workflow-sprint-intake" style="color:var(--cyan);text-decoration:none;font-weight:600;">Need fit review first? Send the workflow →</a></p>
|
|
311
|
-
</div>
|
|
312
|
-
|
|
313
|
-
<div class="price-card">
|
|
314
|
-
<div class="tier" style="color:var(--cyan);">Free</div>
|
|
315
|
-
<div class="price">$0</div>
|
|
316
|
-
<div class="price-sub">Catch repeated mistakes daily. Forever free for solo devs.</div>
|
|
317
|
-
<ul>
|
|
318
|
-
<li>2 feedback captures/day (10 total) — enough to see the value</li>
|
|
319
|
-
<li>Up to 3 active prevention rules</li>
|
|
320
|
-
<li>All MCP integrations (Claude Code, Cursor, Codex, Gemini, Amp, Cline, OpenCode)</li>
|
|
321
|
-
<li>PreToolUse hook flags and logs risky calls — hard-blocks secret exfiltration and guardrail-tampering by default; rm -rf, force-push, and supply-chain warn by default and hard-block in strict mode</li>
|
|
322
|
-
<li>Runs 100% local — no account, no signup, no data leaves your machine</li>
|
|
323
|
-
</ul>
|
|
324
|
-
<a class="btn-install" href="/go/install?utm_source=pricing&utm_medium=free_card&cta_id=pricing_install_free&cta_placement=free_card" data-pricing-cta data-cta-id="pricing_install_free" data-cta-placement="free_card" data-tier="free" data-plan-id="free" data-price="0" onclick="try{posthog.capture('pricing_cta_click',{cta:'install_free',tier:'free',placement:'pricing_page'})}catch(_){};try{plausible('pricing_cta_click',{props:{cta:'install_free',tier:'free'}})}catch(_){}">Install free</a>
|
|
325
|
-
</div>
|
|
326
|
-
|
|
327
|
-
<div class="price-card" id="pro">
|
|
328
|
-
<div class="tier">Pro</div>
|
|
329
|
-
<div class="price">$19<span>/mo</span></div>
|
|
330
|
-
<div class="price-sub">
|
|
331
|
-
<strong>Solo self-serve side lane.</strong> After one real caught repeat: personal dashboard, recall, exports, managed adapters. Shared hosted lessons are Enterprise.
|
|
106
|
+
<nav>
|
|
107
|
+
<div class="shell nav-inner">
|
|
108
|
+
<a class="brand" href="/">ThumbGate</a>
|
|
109
|
+
<div class="nav-links">
|
|
110
|
+
<a href="/guide">Technical setup</a>
|
|
111
|
+
<a href="https://github.com/IgorGanapolsky/ThumbGate/blob/main/docs/VERIFICATION_EVIDENCE.md" target="_blank" rel="noopener">Proof</a>
|
|
112
|
+
<a class="nav-enterprise" href="#enterprise-gate" data-offer-link data-cta-id="pricing_nav_buy">Get Started · $499</a>
|
|
113
|
+
<a class="nav-pro" href="/checkout/pro?utm_source=pricing&utm_medium=nav&utm_campaign=rally_style_gtm&cta_id=pricing_nav_pro&plan_id=pro" data-offer-link data-cta-id="pricing_nav_pro">Pro · $19/mo</a>
|
|
332
114
|
</div>
|
|
333
|
-
<ul>
|
|
334
|
-
<li><strong>Personal lesson recall</strong> — search and reuse your own corrections across sessions</li>
|
|
335
|
-
<li><strong>Managed adapter matrix</strong> — we track runtime changes in Claude Code, Cursor, Codex, Gemini, Amp, Cline, OpenCode so you don't</li>
|
|
336
|
-
<li><strong>Personal dashboard</strong> — see every flagged and blocked action and every rule that fired</li>
|
|
337
|
-
<li><strong>Unlimited prevention rules</strong> — free caps at 3 auto-promoted rules</li>
|
|
338
|
-
<li><strong>DPO + HuggingFace export</strong> — training data from your real corrections</li>
|
|
339
|
-
<li><strong>Auto-connect</strong> — new agent surfaces appear automatically after setup</li>
|
|
340
|
-
<li>7-day refund window. Cancel anytime.</li>
|
|
341
|
-
</ul>
|
|
342
|
-
<a class="btn-pro" href="/checkout/pro?confirm=1&utm_source=pricing&utm_medium=hero_card&utm_campaign=pricing_page&cta_id=pricing_pro&cta_placement=pricing&plan_id=pro&billing_cycle=monthly&landing_path=%2Fpricing" data-pricing-cta data-cta-id="pricing_pro" data-cta-placement="pricing" data-tier="pro" data-plan-id="pro" data-billing-cycle="monthly" data-price="19" onclick="try{posthog.capture('pricing_cta_click',{cta:'start_pro',tier:'pro',placement:'pricing_page',price:19})}catch(_){};try{plausible('pricing_cta_click',{props:{cta:'start_pro',tier:'pro'}})}catch(_){}">Start Pro — $19/mo</a>
|
|
343
|
-
<p class="btn-sub">or <a href="/checkout/pro?confirm=1&utm_source=pricing&utm_medium=hero_card_annual&utm_campaign=pricing_page&cta_id=pricing_pro_annual&cta_placement=pricing&plan_id=pro&billing_cycle=annual&landing_path=%2Fpricing" data-pricing-cta data-cta-id="pricing_pro_annual" data-cta-placement="pricing" data-tier="pro" data-plan-id="pro" data-billing-cycle="annual" data-price="149" onclick="try{posthog.capture('pricing_cta_click',{cta:'start_pro_annual',tier:'pro',placement:'pricing_page',price:149})}catch(_){};try{plausible('pricing_cta_click',{props:{cta:'start_pro_annual',tier:'pro'}})}catch(_){}" style="color:var(--cyan);text-decoration:none;font-weight:600;">$149/year (save 35%) →</a></p>
|
|
344
115
|
</div>
|
|
116
|
+
</nav>
|
|
117
|
+
|
|
118
|
+
<main class="shell">
|
|
119
|
+
<div class="hero">
|
|
120
|
+
<div>
|
|
121
|
+
<div class="eyebrow">Enforcement that pays for itself</div>
|
|
122
|
+
<h1>Stop paying for the same AI mistake twice.</h1>
|
|
123
|
+
<p class="lede"><strong>Get Started</strong> with a <strong>$499 Diagnostic</strong> (one hard gate + proof) or self-serve <strong>Pro at $19/mo</strong>. Free local evaluate stays free. Countable units — not vibes.</p>
|
|
124
|
+
<div class="outcome">
|
|
125
|
+
<div class="outcome-row"><span class="tick">✓</span><span><strong>Diagnostic ($499 one-time):</strong> one failure mapped, gate configured, regression + rollout proof.</span></div>
|
|
126
|
+
<div class="outcome-row"><span class="tick">✓</span><span><strong>Pro ($19/mo or $149/yr):</strong> self-serve dashboard, recall, adapter coverage, DPO export.</span></div>
|
|
127
|
+
<div class="outcome-row"><span class="tick">✓</span><span>Free local evaluate: <code>npx thumbgate init</code> — first hard gate usually minutes after install.</span></div>
|
|
128
|
+
</div>
|
|
129
|
+
</div>
|
|
345
130
|
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
131
|
+
<div class="offer-grid" id="buy">
|
|
132
|
+
<aside class="card" id="enterprise-gate" style="border-color:var(--green);box-shadow:0 18px 50px rgba(0,110,82,.12);">
|
|
133
|
+
<div class="eyebrow">Cash path · recommended</div>
|
|
134
|
+
<div class="price">$499</div>
|
|
135
|
+
<p class="price-note">Diagnostic gate. Fixed price. One supported local workflow. No subscription.</p>
|
|
136
|
+
<form action="/go/diagnostic-pay" method="POST" data-primary-checkout>
|
|
137
|
+
<label for="pricing-email">Work email for the receipt and scheduling</label>
|
|
138
|
+
<input id="pricing-email" name="customer_email" type="email" autocomplete="email" placeholder="you@company.com" required>
|
|
139
|
+
<input type="hidden" name="plan_id" value="sprint_diagnostic">
|
|
140
|
+
<input type="hidden" name="utm_source" value="pricing">
|
|
141
|
+
<input type="hidden" name="utm_medium" value="direct_checkout">
|
|
142
|
+
<input type="hidden" name="utm_campaign" value="rally_style_gtm">
|
|
143
|
+
<input type="hidden" name="cta_id" value="pricing_managed_gate_buy">
|
|
144
|
+
<input type="hidden" name="cta_placement" value="pricing">
|
|
145
|
+
<input type="hidden" name="landing_path" value="/pricing">
|
|
146
|
+
<button class="button" type="submit">Get Started — $499 Diagnostic</button>
|
|
147
|
+
</form>
|
|
148
|
+
<p class="fine">Secure payment. We reply with scheduling and the workflow checklist.</p>
|
|
149
|
+
<div class="boundary">Detected secret exfiltration and gate-process bypass attempts deny by default. Other destructive actions warn by default and deny when strict enforcement is enabled.</div>
|
|
150
|
+
</aside>
|
|
151
|
+
<aside class="pro-card" id="pro" aria-label="ThumbGate Pro">
|
|
152
|
+
<div class="eyebrow">Self-serve</div>
|
|
153
|
+
<div class="price">$19<span style="font-size:1rem;font-weight:700">/mo</span></div>
|
|
154
|
+
<p class="price-note">Or $149/yr. Individual operators. Cancel anytime.</p>
|
|
155
|
+
<a class="button" href="/checkout/pro?utm_source=pricing&utm_medium=card&utm_campaign=rally_style_gtm&cta_id=pricing_pro_buy&plan_id=pro" data-offer-link data-cta-id="pricing_pro_buy" style="width:100%;box-sizing:border-box">Start Pro — $19/mo</a>
|
|
156
|
+
<p class="fine">Hosted checkout. Free local evaluate remains free after you subscribe.</p>
|
|
157
|
+
</aside>
|
|
158
|
+
</div>
|
|
362
159
|
</div>
|
|
363
160
|
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
<
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
161
|
+
<section>
|
|
162
|
+
<div class="eyebrow">How ThumbGate stacks up</div>
|
|
163
|
+
<h2>Make the alternative look expensive.</h2>
|
|
164
|
+
<p class="section-lede">Same move as high-converting SaaS pricing: DIY prompts cost nothing and stop nothing; platform hire and GRC suites cost months.</p>
|
|
165
|
+
<div style="overflow-x:auto;margin-top:22px;border:1px solid var(--line);border-radius:14px;background:var(--card);">
|
|
166
|
+
<table style="width:100%;border-collapse:collapse;font-size:.92rem;min-width:620px;">
|
|
167
|
+
<thead>
|
|
168
|
+
<tr style="text-align:left;background:#efece3;">
|
|
169
|
+
<th style="padding:12px 14px;border-bottom:1px solid var(--line);"></th>
|
|
170
|
+
<th style="padding:12px 14px;border-bottom:1px solid var(--line);">DIY / CLAUDE.md</th>
|
|
171
|
+
<th style="padding:12px 14px;border-bottom:1px solid var(--line);">Platform hire</th>
|
|
172
|
+
<th style="padding:12px 14px;border-bottom:1px solid var(--line);">GRC suite</th>
|
|
173
|
+
<th style="padding:12px 14px;border-bottom:1px solid var(--line);color:var(--green);">ThumbGate</th>
|
|
174
|
+
</tr>
|
|
175
|
+
</thead>
|
|
176
|
+
<tbody>
|
|
177
|
+
<tr>
|
|
178
|
+
<td style="padding:12px 14px;border-bottom:1px solid var(--line);color:var(--muted);">Monthly cost</td>
|
|
179
|
+
<td style="padding:12px 14px;border-bottom:1px solid var(--line);">$0</td>
|
|
180
|
+
<td style="padding:12px 14px;border-bottom:1px solid var(--line);">$15k+ loaded</td>
|
|
181
|
+
<td style="padding:12px 14px;border-bottom:1px solid var(--line);">$$$$</td>
|
|
182
|
+
<td style="padding:12px 14px;border-bottom:1px solid var(--line);font-weight:800;color:var(--green);">$0–$19 · $499 once</td>
|
|
183
|
+
</tr>
|
|
184
|
+
<tr>
|
|
185
|
+
<td style="padding:12px 14px;border-bottom:1px solid var(--line);color:var(--muted);">Time to first gate</td>
|
|
186
|
+
<td style="padding:12px 14px;border-bottom:1px solid var(--line);">Never reliable</td>
|
|
187
|
+
<td style="padding:12px 14px;border-bottom:1px solid var(--line);">Weeks</td>
|
|
188
|
+
<td style="padding:12px 14px;border-bottom:1px solid var(--line);">Months</td>
|
|
189
|
+
<td style="padding:12px 14px;border-bottom:1px solid var(--line);font-weight:800;">Minutes after install / 2 business days managed</td>
|
|
190
|
+
</tr>
|
|
191
|
+
<tr>
|
|
192
|
+
<td style="padding:12px 14px;color:var(--muted);">When agent “looks competent”</td>
|
|
193
|
+
<td style="padding:12px 14px;">Ignores the prompt</td>
|
|
194
|
+
<td style="padding:12px 14px;">Custom glue</td>
|
|
195
|
+
<td style="padding:12px 14px;">Gateway only</td>
|
|
196
|
+
<td style="padding:12px 14px;font-weight:800;">Hard block at tool call</td>
|
|
197
|
+
</tr>
|
|
198
|
+
</tbody>
|
|
199
|
+
</table>
|
|
380
200
|
</div>
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
201
|
+
</section>
|
|
202
|
+
|
|
203
|
+
<section>
|
|
204
|
+
<div class="eyebrow">Delivery</div>
|
|
205
|
+
<h2>A bounded implementation, not a strategy deck.</h2>
|
|
206
|
+
<p class="section-lede">The goal is one working enforcement boundary with a test that proves the original mistake cannot silently recur.</p>
|
|
207
|
+
<div class="steps">
|
|
208
|
+
<div class="step"><span class="step-num">01</span><h3>Review the failure</h3><p>Reproduce the risky action and identify the exact point where an external check can intervene.</p></div>
|
|
209
|
+
<div class="step"><span class="step-num">02</span><h3>Install the gate</h3><p>Configure ALLOW, WARN, or DENY behavior for the supported local agent workflow.</p></div>
|
|
210
|
+
<div class="step"><span class="step-num">03</span><h3>Prove the boundary</h3><p>Add a regression test and hand back rollout and rollback evidence.</p></div>
|
|
384
211
|
</div>
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
212
|
+
</section>
|
|
213
|
+
|
|
214
|
+
<section>
|
|
215
|
+
<div class="eyebrow">Fit</div>
|
|
216
|
+
<h2>Know the boundary before you pay.</h2>
|
|
217
|
+
<div class="fit">
|
|
218
|
+
<div class="fit-card"><h3>Good fit</h3><p>A repeated, concrete agent action with a known command, tool call, destination, repository, or resource boundary.</p></div>
|
|
219
|
+
<div class="fit-card"><h3>Enterprise boundary</h3><p>The $499 offer covers one workflow. Org-wide hosted policy, SSO, a hosted audit dashboard, 24/7 incident response, and multi-workflow rollout require separate scope. Hosted Enterprise capabilities are not generally available.</p></div>
|
|
388
220
|
</div>
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
221
|
+
</section>
|
|
222
|
+
|
|
223
|
+
<section>
|
|
224
|
+
<div class="eyebrow">Questions</div>
|
|
225
|
+
<h2>Before checkout</h2>
|
|
226
|
+
<div class="faq">
|
|
227
|
+
<div class="faq-item"><button class="faq-q" type="button" aria-expanded="false">What does the $499 managed gate include?</button><div class="faq-a">A 60-minute workflow review, one configured local pre-action gate, one regression test, and rollout and rollback proof within two business days for one supported workflow.</div></div>
|
|
228
|
+
<div class="faq-item"><button class="faq-q" type="button" aria-expanded="false">What happens if the workflow is not a fit?</button><div class="faq-a">If the failure cannot be reduced to a supported ThumbGate gate, the payment is refunded instead of turning into an open-ended consulting upsell.</div></div>
|
|
392
229
|
</div>
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
<div class="faq-a">Yes. Pro and Enterprise are month-to-month with a 7-day refund window on the first charge. Cancel from the billing portal and your subscription ends at the period close.</div>
|
|
396
|
-
</div>
|
|
397
|
-
<div class="faq-item">
|
|
398
|
-
<div class="faq-q">What happens if I stop paying?</div>
|
|
399
|
-
<div class="faq-a">You keep the free CLI, capped at 3 active rules and 2 captures/day. Existing rules and captures stay on your machine. You lose the personal dashboard, managed adapters, exports, and higher limits. Shared hosted lessons and org dashboards are Enterprise.</div>
|
|
400
|
-
</div>
|
|
401
|
-
</div>
|
|
402
|
-
</div>
|
|
403
|
-
</section>
|
|
230
|
+
</section>
|
|
231
|
+
</main>
|
|
404
232
|
|
|
405
|
-
<footer>
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
<a href="/">
|
|
409
|
-
<a href="/guide">Guide</a>
|
|
410
|
-
<a href="/support">Support</a>
|
|
411
|
-
<a href="/privacy">Privacy</a>
|
|
412
|
-
<a href="/terms">Terms</a>
|
|
233
|
+
<footer>
|
|
234
|
+
<div class="shell footer-inner">
|
|
235
|
+
<span>ThumbGate · Managed AI-agent enforcement</span>
|
|
236
|
+
<div class="footer-links"><a href="/support">Support</a><a href="/terms">Terms</a><a href="/llm-context.md">LLM context</a></div>
|
|
413
237
|
</div>
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
238
|
+
</footer>
|
|
239
|
+
|
|
240
|
+
<script>
|
|
241
|
+
'use strict';
|
|
242
|
+
window.plausible = window.plausible || function () {
|
|
243
|
+
(window.plausible.q = window.plausible.q || []).push(arguments);
|
|
244
|
+
};
|
|
245
|
+
|
|
246
|
+
function sendFirstPartyTelemetry(eventName, props) {
|
|
247
|
+
const payload = JSON.stringify({ event: eventName, page: '/pricing', source: 'pricing', props: props || {} });
|
|
248
|
+
try {
|
|
249
|
+
if (navigator.sendBeacon) {
|
|
250
|
+
navigator.sendBeacon('/v1/telemetry/ping', new Blob([payload], { type: 'application/json' }));
|
|
251
|
+
return;
|
|
252
|
+
}
|
|
253
|
+
fetch('/v1/telemetry/ping', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: payload, keepalive: true }).catch(function () {});
|
|
254
|
+
} catch (_) {}
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
function offerProps(ctaId, placement) {
|
|
258
|
+
return { ctaId: ctaId, ctaPlacement: placement, planId: 'sprint_diagnostic', value: 499, currency: 'USD' };
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
document.querySelectorAll('[data-offer-link]').forEach(function (link) {
|
|
262
|
+
link.addEventListener('click', function () {
|
|
263
|
+
const props = offerProps(link.dataset.ctaId || 'pricing_anchor', 'pricing_anchor');
|
|
264
|
+
window.plausible('pricing_cta_click', { props: props });
|
|
265
|
+
sendFirstPartyTelemetry('cta_click', props);
|
|
266
|
+
});
|
|
267
|
+
});
|
|
268
|
+
|
|
269
|
+
const checkoutForm = document.querySelector('[data-primary-checkout]');
|
|
270
|
+
if (checkoutForm) {
|
|
271
|
+
checkoutForm.addEventListener('submit', function () {
|
|
272
|
+
const props = offerProps('pricing_managed_gate_buy', 'pricing');
|
|
273
|
+
window.plausible('checkout_start', { props: props });
|
|
274
|
+
sendFirstPartyTelemetry('checkout_start', props);
|
|
275
|
+
});
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
document.querySelectorAll('.faq-q').forEach(function (button) {
|
|
279
|
+
button.addEventListener('click', function () {
|
|
280
|
+
const item = button.closest('.faq-item');
|
|
281
|
+
const open = item.classList.toggle('open');
|
|
282
|
+
button.setAttribute('aria-expanded', String(open));
|
|
283
|
+
});
|
|
284
|
+
});
|
|
417
285
|
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
q.addEventListener('click', function() {
|
|
421
|
-
this.parentElement.classList.toggle('open');
|
|
422
|
-
});
|
|
423
|
-
});
|
|
424
|
-
</script>
|
|
425
|
-
<script>
|
|
426
|
-
window.plausible = window.plausible || function() { (window.plausible.q = window.plausible.q || []).push(arguments) };
|
|
427
|
-
</script>
|
|
286
|
+
sendFirstPartyTelemetry('pricing_page_view', { landingPath: '/pricing' });
|
|
287
|
+
</script>
|
|
428
288
|
</body>
|
|
429
289
|
</html>
|