thumbgate 1.16.20 → 1.16.21

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/public/index.html CHANGED
@@ -1,20 +1,8 @@
1
1
  <!DOCTYPE html>
2
2
  <html lang="en">
3
3
  <head>
4
- <!--
5
- ______ __
6
- / ____/___ ____ ___ ____ __ __/ /____ _____
7
- / / / __ \/ __ `__ \/ __ \/ / / / __/ _ \/ ___/
8
- / /___/ /_/ / / / / / / /_/ / /_/ / /_/ __/ /
9
- \____/\____/_/ /_/ /_/ .___/\__,_/\__/\___/_/
10
- /_/
11
- Created with Perplexity Computer
12
- https://www.perplexity.ai/computer
13
- -->
14
4
  <meta name="generator" content="ThumbGate">
15
5
  <meta name="author" content="Igor Ganapolsky">
16
- <meta property="og:see_also" content="https://www.perplexity.ai/computer">
17
- <link rel="author" href="https://www.perplexity.ai/computer">
18
6
 
19
7
  <meta charset="UTF-8">
20
8
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
@@ -32,7 +20,6 @@ __GOOGLE_SITE_VERIFICATION_META__
32
20
  <meta name="twitter:card" content="summary_large_image">
33
21
  <meta name="twitter:image" content="https://thumbgate-production.up.railway.app/og.png">
34
22
  <meta name="keywords" content="ThumbGate, thumbgate, AI agent orchestration, AI experience orchestration, agent enforcement layer, save LLM tokens, reduce Claude API cost, reduce OpenAI cost, AI agent token savings, prevent LLM retries, prevent hallucination retries, stop AI token waste, pre-action checks, agent governance, Claude Code, Cursor, Codex, Gemini, Amp, Cline, OpenCode, workflow hardening, context engineering, AI authenticity, brand authenticity AI">
35
- <link rel="icon" type="image/png" href="/thumbgate-icon.png">
36
23
  <link rel="apple-touch-icon" href="/apple-touch-icon.png">
37
24
 
38
25
  <!-- Privacy-friendly analytics by Plausible -->
@@ -692,7 +679,23 @@ __GA_BOOTSTRAP__
692
679
  <p style="font-size:18px;color:var(--text-muted);max-width:720px;margin:0 auto 20px;line-height:1.6;">Every retry loop, every hallucinated import, every "let me try a different approach" — those are billable tokens on every LLM vendor's bill. ThumbGate is machine-speed pre-action defense: thumbs-down once, block that exact mistake on every future call, surface the next highest-ROI remediation, and show which agent surfaces are actually active before rollout. Across Claude Code, Cursor, Codex, Gemini, Amp, Cline, OpenCode — any MCP-compatible agent, forever, including fast-moving vibe coding workflows.</p>
693
680
  <p style="font-size:15px;color:var(--text-dim);max-width:760px;margin:0 auto 24px;line-height:1.6;">As desktop agents move into parallel sessions, terminals, and production workflows, ThumbGate checks the thing benchmarks miss: is this next action a known workflow, an open-ended agent, a costly fan-out, or a blind tool call with no way to verify it worked?</p>
694
681
 
695
- <!-- HERO PRICING CARD visible in first viewport so $19/mo and $149/yr never get buried -->
682
+ <div class="hero-paid-path" aria-label="Paid AI agent governance sprint checkout options">
683
+ <div>
684
+ <strong>Need buyer-ready proof today?</strong>
685
+ <span>For one repeated workflow failure, book the $499 diagnostic or $1500 sprint first. Same-day Workflow Teardown and smaller paid reads remain available when you need clear rules, examples, and pre-action checks before a larger scope.</span>
686
+ </div>
687
+ <div class="hero-paid-actions">
688
+ <a class="diagnostic" href="__SPRINT_DIAGNOSTIC_CHECKOUT_URL__" onclick="sendFirstPartyTelemetry('workflow_sprint_diagnostic_checkout_started',{ctaId:'hero_workflow_sprint_diagnostic_checkout',price:sprintDiagnosticPriceDollars});sendGa4Event('begin_checkout',{currency:'USD',value:sprintDiagnosticPriceDollars});">Pay $499 diagnostic &rarr;</a>
689
+ <a class="sprint" href="__WORKFLOW_SPRINT_CHECKOUT_URL__" onclick="sendFirstPartyTelemetry('workflow_sprint_checkout_started',{ctaId:'hero_workflow_sprint_checkout',price:workflowSprintPriceDollars});sendGa4Event('begin_checkout',{currency:'USD',value:workflowSprintPriceDollars});">Pay $1500 sprint &rarr;</a>
690
+ <a class="starter" title="First AI Agent Failure Rule" href="https://buy.stripe.com/4gM6oHgH2bTw4lH6i73sI0z" onclick="sendFirstPartyTelemetry('first_failure_rule_checkout_started',{ctaId:'hero_first_failure_rule_checkout',price:1});sendGa4Event('begin_checkout',{currency:'USD',value:1,items:[{item_id:'first_failure_rule',item_name:'First AI Agent Failure Rule'}]});">Pay $1 first rule &rarr;</a>
691
+ <a class="starter" title="AI Agent Failure Quick Read" href="https://buy.stripe.com/aFa8wPgH29Lo4lH35V3sI0w" onclick="sendFirstPartyTelemetry('quick_read_checkout_started',{ctaId:'hero_quick_read_checkout',price:19});">Pay $19 quick read &rarr;</a>
692
+ <a class="starter" href="https://buy.stripe.com/7sYfZhgH29LodWhdKz3sI0v" onclick="sendFirstPartyTelemetry('workflow_teardown_checkout_started',{ctaId:'hero_workflow_teardown_checkout'})">Pay $99 teardown</a>
693
+ <a class="intake" href="#workflow-sprint-intake" onclick="sendFirstPartyTelemetry('workflow_sprint_recovery_intake_clicked',{ctaId:'hero_workflow_sprint_recovery_intake'});sendGa4Event('generate_lead',{method:'workflow_sprint_recovery_intake'});">Send workflow first &rarr;</a>
694
+ <a class="starter" href="/guides/ai-agent-governance-sprint">See sprint scope &rarr;</a>
695
+ </div>
696
+ </div>
697
+
698
+ <!-- HERO PRICING CARD — secondary path after the proof-led paid offers -->
696
699
  <div id="pro-pitch" style="max-width:820px;margin:0 auto 32px;padding:24px 28px;background:linear-gradient(180deg,rgba(17,17,19,0.94) 0%,rgba(22,22,24,0.94) 100%);border:1px solid rgba(34,211,238,0.32);border-radius:20px;box-shadow:0 0 0 1px rgba(34,211,238,0.18),0 24px 64px rgba(0,0,0,0.35);text-align:left;">
697
700
  <div style="display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:16px;">
698
701
  <div>
@@ -720,20 +723,6 @@ __GA_BOOTSTRAP__
720
723
  <p style="margin:14px 0 0;font-size:11px;color:var(--text-muted);text-align:center;">Card required · billed today · cancel anytime · your rules and captures stay local. <a href="/go/install" style="color:var(--cyan);text-decoration:none;">Prefer free? Install CLI →</a></p>
721
724
  </div>
722
725
 
723
- <div class="hero-paid-path" aria-label="Paid AI agent governance sprint checkout options">
724
- <div>
725
- <strong>Need buyer-ready proof today?</strong>
726
- <span>Send one messy AI-agent workflow. We turn it into clear rules, examples, and pre-action checks, plus AI Agent Governance Sprint approval boundaries and rollback safety before it touches developer-machine risk surfaces.</span>
727
- </div>
728
- <div class="hero-paid-actions">
729
- <a class="starter" href="https://buy.stripe.com/7sY4gzgH24r49G17mb3sI0g" onclick="sendFirstPartyTelemetry('founder_workflow_diagnostic_checkout_started',{ctaId:'hero_founder_workflow_diagnostic_checkout',ctaPlacement:'hero_paid_path',planId:'team',offer:'founder_workflow_diagnostic',price:99});sendGa4Event('begin_checkout',{currency:'USD',value:99,items:[{item_id:'founder_workflow_diagnostic',item_name:'Founder Workflow Diagnostic'}]});">Pay $99 diagnostic &rarr;</a>
730
- <a class="diagnostic" href="__SPRINT_DIAGNOSTIC_CHECKOUT_URL__" onclick="sendFirstPartyTelemetry('workflow_sprint_diagnostic_checkout_started',{ctaId:'hero_workflow_sprint_diagnostic_checkout',ctaPlacement:'hero_paid_path',planId:'team',offer:'workflow_hardening_diagnostic',price:sprintDiagnosticPriceDollars});sendGa4Event('begin_checkout',{currency:'USD',value:sprintDiagnosticPriceDollars,items:[{item_id:'workflow_hardening_diagnostic',item_name:'Workflow Hardening Diagnostic'}]});">Pay $499 diagnostic &rarr;</a>
731
- <a class="sprint" href="__WORKFLOW_SPRINT_CHECKOUT_URL__" onclick="sendFirstPartyTelemetry('workflow_sprint_checkout_started',{ctaId:'hero_workflow_sprint_checkout',ctaPlacement:'hero_paid_path',planId:'team',offer:'workflow_hardening_sprint',price:workflowSprintPriceDollars});sendGa4Event('begin_checkout',{currency:'USD',value:workflowSprintPriceDollars,items:[{item_id:'workflow_hardening_sprint',item_name:'Workflow Hardening Sprint'}]});">Pay $1500 sprint &rarr;</a>
732
- <a class="intake" href="#workflow-sprint-intake" onclick="sendFirstPartyTelemetry('workflow_sprint_recovery_intake_clicked',{ctaId:'hero_workflow_sprint_recovery_intake',ctaPlacement:'hero_paid_path',planId:'team',offer:'workflow_hardening_sprint',reason:'not_ready_to_pay'});sendGa4Event('generate_lead',{currency:'USD',value:0,method:'workflow_sprint_recovery_intake'});">Send workflow first &rarr;</a>
733
- <a class="starter" href="/guides/ai-agent-governance-sprint">See sprint scope &rarr;</a>
734
- </div>
735
- </div>
736
-
737
726
  <a href="/dashboard" class="hero-dashboard-preview" style="display:block;max-width:620px;margin:0 auto 28px;background:linear-gradient(135deg,#0d1220 0%,#121a2e 100%);border:1px solid rgba(34,211,238,0.35);border-radius:12px;padding:20px 24px;box-shadow:0 0 48px rgba(34,211,238,0.15);font-family:var(--mono);text-align:left;text-decoration:none;color:inherit;" title="Open your live dashboard">
738
727
  <div style="display:flex;justify-content:space-between;align-items:center;margin-bottom:14px;font-size:11px;letter-spacing:0.08em;text-transform:uppercase;color:var(--text-muted);">
739
728
  <span>Your dashboard · <span style="color:#eab308;background:rgba(234,179,8,0.1);padding:2px 6px;border-radius:3px;letter-spacing:0.04em;">Sample</span></span>
@@ -1309,7 +1298,7 @@ __GA_BOOTSTRAP__
1309
1298
  <!-- HOW IT WORKS -->
1310
1299
  <section class="how-it-works" id="how-it-works">
1311
1300
  <div class="container">
1312
- <div class="section-label">New in v1.16.20</div>
1301
+ <div class="section-label">New in v1.16.21</div>
1313
1302
  <h2 class="section-title">Three steps to stop repeated AI failures</h2>
1314
1303
  <div class="steps">
1315
1304
  <div class="step">
@@ -1573,11 +1562,31 @@ __GA_BOOTSTRAP__
1573
1562
  <a class="team-paid-link" data-workflow-sprint-link href="__WORKFLOW_SPRINT_CHECKOUT_URL__">Pay for sprint</a>
1574
1563
  </div>
1575
1564
  </div>
1565
+ <div class="team-paid-card">
1566
+ <div>
1567
+ <h4>Reliable AI Agent Governance Setup</h4>
1568
+ <p>Full ThumbGate-powered setup for Claude Code, Cursor, or Codex teams: npx install, custom prevention rules, audit trail, training, and proof reports. Optional ongoing rule management is $297/mo.</p>
1569
+ </div>
1570
+ <div>
1571
+ <div class="team-paid-price">$3,997</div>
1572
+ <a class="team-paid-link" href="#team-pilot-intake-form" onclick="sendFirstPartyTelemetry('governance_setup_intake_clicked',{ctaId:'team_governance_setup_intake',ctaPlacement:'team_paid_path',planId:'team',offer:'reliable_ai_agent_governance_setup',price:3997});sendGa4Event('generate_lead',{currency:'USD',value:3997,method:'governance_setup_intake'});">Request setup</a>
1573
+ </div>
1574
+ </div>
1575
+ <div class="team-paid-card">
1576
+ <div>
1577
+ <h4>OpenClaw Agent Governance Kit</h4>
1578
+ <p>Self-serve digital kit with ThumbGate prevention rules, OpenClaw-compatible workflow prompts, agent registry checklist, proof report template, and Zernio launch copy.</p>
1579
+ </div>
1580
+ <div>
1581
+ <div class="team-paid-price">$97</div>
1582
+ <a class="team-paid-link" href="https://buy.stripe.com/bJe14naiE9Lo7xT49Z3sI12" onclick="sendFirstPartyTelemetry('openclaw_governance_kit_checkout_started',{ctaId:'team_openclaw_governance_kit_checkout',ctaPlacement:'team_paid_path',planId:'digital_kit',offer:'openclaw_agent_governance_kit',price:97});sendGa4Event('begin_checkout',{currency:'USD',value:97,items:[{item_id:'openclaw_agent_governance_kit',item_name:'OpenClaw Agent Governance Kit'}]});">Buy kit</a>
1583
+ </div>
1584
+ </div>
1576
1585
  </div>
1577
1586
  <div class="team-intake-recovery" aria-label="Checkout recovery path for workflow sprint buyers">
1578
1587
  <div>
1579
1588
  <strong>Not ready to pay from a checkout page?</strong>
1580
- <span>Send the workflow first. We can qualify the blocker, confirm the proof plan, and route you to the $499 diagnostic or $1500 sprint only when the scope is real.</span>
1589
+ <span>Send the workflow first. We can qualify the blocker, confirm the proof plan, and route you to the $499 diagnostic, $1500 sprint, or $3,997 governance setup only when the scope is real.</span>
1581
1590
  </div>
1582
1591
  <a href="#team-pilot-intake-form" onclick="sendFirstPartyTelemetry('workflow_sprint_recovery_intake_clicked',{ctaId:'team_workflow_sprint_recovery_intake',ctaPlacement:'team_paid_path_recovery',planId:'team',offer:'workflow_hardening_sprint',reason:'checkout_abandon'});sendGa4Event('generate_lead',{currency:'USD',value:0,method:'workflow_sprint_recovery_intake'});">Send workflow first</a>
1583
1592
  </div>
@@ -1708,7 +1717,7 @@ __GA_BOOTSTRAP__
1708
1717
  <a href="https://www.linkedin.com/in/igorganapolsky" target="_blank" rel="noopener">LinkedIn</a>
1709
1718
  <a href="/blog">Blog</a>
1710
1719
  </div>
1711
- <span class="footer-copy">© 2026 Max Smith KDP LLC · MIT License · v1.16.20</span>
1720
+ <span class="footer-copy">© 2026 Max Smith KDP LLC · MIT License · v1.16.21</span>
1712
1721
  </div>
1713
1722
  </footer>
1714
1723
 
@@ -2011,6 +2020,9 @@ function copyInstall(el) {
2011
2020
  { selector: '#pro-checkout-link', ctaId: 'pricing_pro_trial', ctaPlacement: 'pricing', planId: 'pro' },
2012
2021
  { selector: '.price-card.pro .btn-pro', ctaId: 'pricing_pro_monthly', ctaPlacement: 'pricing', planId: 'pro' },
2013
2022
  { selector: '.hero-actions .btn-pro-page', ctaId: 'hero_go_pro', ctaPlacement: 'hero', planId: 'pro' },
2023
+ { selector: '.hero-paid-actions .diagnostic', ctaId: 'hero_workflow_sprint_diagnostic_checkout', ctaPlacement: 'hero_paid_path', planId: 'team' },
2024
+ { selector: '.hero-paid-actions .sprint', ctaId: 'hero_workflow_sprint_checkout', ctaPlacement: 'hero_paid_path', planId: 'team' },
2025
+ { selector: '.hero-paid-actions .intake', ctaId: 'hero_workflow_sprint_recovery_intake', ctaPlacement: 'hero_paid_path', planId: 'team' },
2014
2026
  { selector: '.sticky-cta .btn-pro', ctaId: 'sticky_go_pro', ctaPlacement: 'sticky_cta', planId: 'pro' },
2015
2027
  { selector: '.price-card.team .btn-team', ctaId: 'team_workflow_sprint', ctaPlacement: 'pricing', planId: 'team' },
2016
2028
  { selector: '#team-pilot-intake-form', ctaId: 'workflow_sprint_intake', ctaPlacement: 'team_visible_intake', planId: 'team' }
@@ -845,7 +845,7 @@ function renderUpgradeWall(containerId) {
845
845
  '<div style="font-size:20px;font-weight:700;color:#fff;margin-bottom:8px;">Unlock your full lessons</div>' +
846
846
  '<div style="color:#aaa;margin-bottom:16px;">Pro shows your real prevention rules, timeline, and insights.</div>' +
847
847
  '<a href="/go/pro?utm_source=lessons" rel="noopener" ' +
848
- 'style="display:inline-block;background:#b85c2d;color:#fff;padding:10px 24px;border-radius:8px;text-decoration:none;font-weight:700;">Start 7-day free trial</a>' +
848
+ 'style="display:inline-block;background:#b85c2d;color:#fff;padding:10px 24px;border-radius:8px;text-decoration:none;font-weight:700;">Start Pro now</a>' +
849
849
  '<div style="color:#666;font-size:12px;margin-top:10px;">npx thumbgate pro --activate --key=YOUR_KEY</div>' +
850
850
  '</div></div>';
851
851
  el.appendChild(wall);
@@ -25,9 +25,9 @@
25
25
  "alternateName": "thumbgate",
26
26
  "applicationCategory": "DeveloperApplication",
27
27
  "operatingSystem": "Cross-platform, Node.js >=18.18.0",
28
- "softwareVersion": "1.16.20",
28
+ "softwareVersion": "1.16.21",
29
29
  "url": "https://thumbgate-production.up.railway.app/numbers",
30
- "dateModified": "2026-05-05",
30
+ "dateModified": "2026-05-06",
31
31
  "creator": {
32
32
  "@type": "Person",
33
33
  "name": "Igor Ganapolsky",
@@ -57,8 +57,8 @@
57
57
  "https://www.linkedin.com/in/igorganapolsky"
58
58
  ]
59
59
  },
60
- "dateModified": "2026-05-05",
61
- "datePublished": "2026-05-05",
60
+ "dateModified": "2026-05-06",
61
+ "datePublished": "2026-05-06",
62
62
  "keywords": [
63
63
  "AI agent gates",
64
64
  "LLM token savings",
@@ -70,7 +70,7 @@
70
70
  {
71
71
  "@type": "PropertyValue",
72
72
  "name": "active_gates",
73
- "value": 37
73
+ "value": 36
74
74
  },
75
75
  {
76
76
  "@type": "PropertyValue",
@@ -101,7 +101,7 @@
101
101
  {
102
102
  "@type": "PropertyValue",
103
103
  "name": "bayes_error_rate",
104
- "value": 0
104
+ "value": null
105
105
  }
106
106
  ]
107
107
  }
@@ -190,14 +190,14 @@
190
190
  <main class="container">
191
191
  <h1>The Numbers</h1>
192
192
  <p class="subtitle">Generated first-party operational data from the ThumbGate runtime. No surveys or projections — this page is a release-time snapshot produced by the same local scripts that power the CLI and dashboard.</p>
193
- <div class="freshness">Updated: 2026-05-05 · Version 1.16.20</div>
193
+ <div class="freshness">Updated: 2026-05-06 · Version 1.16.21</div>
194
194
 
195
195
  <h2>Gate enforcement</h2>
196
196
  <div class="stats-grid">
197
197
  <div class="stat-card">
198
198
  <div class="stat-label">Active gates</div>
199
- <div class="stat-value">37</div>
200
- <div class="stat-sub">36 manual · 1 auto-promoted</div>
199
+ <div class="stat-value">36</div>
200
+ <div class="stat-sub">36 manual · 0 auto-promoted</div>
201
201
  <a class="stat-source" href="https://github.com/IgorGanapolsky/ThumbGate/blob/main/scripts/gate-stats.js">source: gate-stats.js</a>
202
202
  </div>
203
203
  <div class="stat-card">
@@ -242,7 +242,7 @@
242
242
  </div>
243
243
  <div class="stat-card">
244
244
  <div class="stat-label">Scorer Bayes error</div>
245
- <div class="stat-value">0.0%</div>
245
+ <div class="stat-value">n/a (no feedback sequences recorded yet)</div>
246
246
  <div class="stat-sub">irreducible error given current feature set</div>
247
247
  <a class="stat-source" href="https://github.com/IgorGanapolsky/ThumbGate/blob/main/scripts/bayes-optimal-gate.js">source: bayes-optimal-gate.js</a>
248
248
  </div>
@@ -264,7 +264,7 @@
264
264
  <div class="cta">
265
265
  <a href="https://www.npmjs.com/package/thumbgate">Install ThumbGate — npx thumbgate init</a>
266
266
  <div class="footer-note">Prefer the raw feed? See <a href="https://github.com/IgorGanapolsky/ThumbGate">GitHub</a> or run <code>npm run gate:stats</code> locally.</div>
267
- <div class="footer-note">Generated at 2026-05-05T14:49:47.056Z UTC.</div>
267
+ <div class="footer-note">Generated at 2026-05-06T21:53:14.685Z UTC.</div>
268
268
  </div>
269
269
  </main>
270
270
  </body>
package/public/pro.html CHANGED
@@ -14,7 +14,6 @@ __GOOGLE_SITE_VERIFICATION_META__
14
14
  <link rel="icon" type="image/png" href="/thumbgate-icon.png">
15
15
  <link rel="apple-touch-icon" href="/assets/brand/thumbgate-mark.svg">
16
16
  <meta property="og:image" content="/og.png">
17
- <meta name="keywords" content="ThumbGate Pro, AI agent reliability, pre-action checks, DPO export, local dashboard, review-ready evidence, Claude Code reliability, Codex reliability, Cursor reliability">
18
17
 
19
18
  <script defer data-domain="thumbgate-production.up.railway.app" src="https://plausible.io/js/script.js"></script>
20
19
  __GA_BOOTSTRAP__
@@ -30,91 +29,14 @@ __GA_BOOTSTRAP__
30
29
  <script type="application/ld+json">
31
30
  {
32
31
  "@context": "https://schema.org",
33
- "@type": "SoftwareApplication",
34
- "name": "ThumbGate Pro",
35
- "alternateName": "thumbgate pro",
36
- "applicationCategory": "DeveloperApplication",
37
- "operatingSystem": "Cross-platform, Node.js >=18.18.0",
38
- "description": "Paid ThumbGate lane for individual operators who want a personal local dashboard, DPO export, review-ready evidence, and founder support for risky AI coding workflows.",
39
- "url": "__APP_ORIGIN__/pro",
40
- "downloadUrl": "https://www.npmjs.com/package/thumbgate",
41
- "dateModified": "2026-04-20",
42
- "creator": {
43
- "@type": "Person",
44
- "name": "Igor Ganapolsky",
45
- "url": "https://github.com/IgorGanapolsky",
46
- "sameAs": [
47
- "https://github.com/IgorGanapolsky",
48
- "https://www.linkedin.com/in/igorganapolsky"
49
- ]
50
- },
51
- "featureList": [
52
- "Personal local dashboard",
53
- "Visual check debugger",
54
- "DPO export from real thumbs-down corrections",
55
- "Auto-connect running agents after activation",
56
- "Founder support on risky workflows",
57
- "Model Hardening Advisor"
58
- ],
59
- "offers": [
60
- {
61
- "@type": "Offer",
62
- "name": "ThumbGate Pro Monthly",
63
- "price": "__PRO_PRICE_DOLLARS__",
64
- "priceCurrency": "USD",
65
- "url": "__APP_ORIGIN__/checkout/pro?plan_id=pro&billing_cycle=monthly&landing_path=%2Fpro",
66
- "description": "Monthly Pro for individual operators who want a personal local dashboard and proof-ready exports."
67
- },
68
- {
69
- "@type": "Offer",
70
- "name": "ThumbGate Pro Annual",
71
- "price": "149",
72
- "priceCurrency": "USD",
73
- "url": "__APP_ORIGIN__/checkout/pro?plan_id=pro&billing_cycle=annual&landing_path=%2Fpro",
74
- "description": "Annual Pro for operators who want the dashboard, DPO export, and founder support at a lower effective monthly price."
75
- }
76
- ]
32
+ "@type": "SoftwareApplication", "name": "ThumbGate Pro", "applicationCategory": "DeveloperApplication", "operatingSystem": "Cross-platform, Node.js >=18.18.0", "description": "Paid ThumbGate lane for individual operators who want a personal local dashboard, DPO export, review-ready evidence, and founder support for risky AI coding workflows.", "url": "__APP_ORIGIN__/pro", "downloadUrl": "https://www.npmjs.com/package/thumbgate", "dateModified": "2026-04-20", "creator": { "@type": "Person", "name": "Igor Ganapolsky", "url": "https://github.com/IgorGanapolsky" }, "offers": [{ "@type": "Offer", "name": "ThumbGate Pro Monthly", "price": "__PRO_PRICE_DOLLARS__", "priceCurrency": "USD", "url": "__APP_ORIGIN__/checkout/pro?plan_id=pro&billing_cycle=monthly&landing_path=%2Fpro" }, { "@type": "Offer", "name": "ThumbGate Pro Annual", "price": "149", "priceCurrency": "USD", "url": "__APP_ORIGIN__/checkout/pro?plan_id=pro&billing_cycle=annual&landing_path=%2Fpro" }]
77
33
  }
78
34
  </script>
79
35
 
80
36
  <script type="application/ld+json">
81
37
  {
82
38
  "@context": "https://schema.org",
83
- "@type": "FAQPage",
84
- "mainEntity": [
85
- {
86
- "@type": "Question",
87
- "name": "How is Pro different from the free install?",
88
- "acceptedAnswer": {
89
- "@type": "Answer",
90
- "text": "Free keeps the local recall, checks, and MCP workflow. Pro adds a personal local dashboard, DPO export, auto-connect for running agents, and founder support for risky workflows."
91
- }
92
- },
93
- {
94
- "@type": "Question",
95
- "name": "Does Pro require a cloud account?",
96
- "acceptedAnswer": {
97
- "@type": "Answer",
98
- "text": "No. ThumbGate Pro is still local-first for the individual operator lane. Team is the hosted rollout lane when you need shared lessons, org visibility, and rollout review views."
99
- }
100
- },
101
- {
102
- "@type": "Question",
103
- "name": "What happens after checkout?",
104
- "acceptedAnswer": {
105
- "@type": "Answer",
106
- "text": "You activate Pro, connect your personal local dashboard, and your running agents can appear automatically so you can inspect blocked actions, lessons, and exports without adding a cloud dashboard dependency."
107
- }
108
- },
109
- {
110
- "@type": "Question",
111
- "name": "When should I choose Team instead of Pro?",
112
- "acceptedAnswer": {
113
- "@type": "Answer",
114
- "text": "Choose Team when one correction needs to protect multiple developers or agents, when you need a shared hosted lesson database, org dashboard visibility, or a workflow hardening pilot across shared repositories."
115
- }
116
- }
117
- ]
39
+ "@type": "FAQPage", "mainEntity": [{ "@type": "Question", "name": "How is Pro different from the free install?", "acceptedAnswer": { "@type": "Answer", "text": "Free keeps local recall, checks, and MCP. Pro adds the personal dashboard, DPO export, auto-connect, and founder support." } }, { "@type": "Question", "name": "Does Pro require a cloud account?", "acceptedAnswer": { "@type": "Answer", "text": "No. Pro stays local-first; Team is the hosted rollout lane for shared lessons, org visibility, and reviews." } }, { "@type": "Question", "name": "What happens after checkout?", "acceptedAnswer": { "@type": "Answer", "text": "You activate Pro, connect the local dashboard, and inspect blocked actions, lessons, and exports." } }, { "@type": "Question", "name": "When should I choose Team instead of Pro?", "acceptedAnswer": { "@type": "Answer", "text": "Choose Team when one correction needs to protect multiple developers or agents across shared repositories." } }]
118
40
  }
119
41
  </script>
120
42
 
@@ -796,7 +718,7 @@ __GA_BOOTSTRAP__
796
718
  <a href="#pricing">Pricing</a>
797
719
  <a href="#faq">FAQ</a>
798
720
  <a href="/dashboard">Demo</a>
799
- <a class="nav-cta btn-pro-checkout" href="/checkout/pro?utm_source=website&utm_medium=pro_page_nav&utm_campaign=pro_pack&cta_id=pro_page_nav&cta_placement=nav&plan_id=pro&landing_path=%2Fpro">Start Pro Now</a>
721
+ <a class="nav-cta" data-quick-read-link href="https://buy.stripe.com/aFa8wPgH29Lo4lH35V3sI0w" onclick="sendFirstPartyTelemetry('quick_read_checkout_started',{ctaId:'pro_page_nav_quick_read_checkout',price:19});sendGa4Event('begin_checkout',{currency:'USD',value:19,items:[{item_id:'quick_read',item_name:'AI Agent Failure Quick Read'}]});">Pay $19 quick read</a>
800
722
  </div>
801
723
  </div>
802
724
  </nav>
@@ -807,8 +729,8 @@ __GA_BOOTSTRAP__
807
729
  <div class="eyebrow">Paid lane for individual operators</div>
808
730
  <h1>Buy the operator loop that proves your AI agent stopped repeating the mistake.</h1>
809
731
  <p style="font-size:13px;opacity:0.8;margin-bottom:0.5rem;">Updated: <time datetime="2026-04-20">2026-04-20</time> · by <a href="https://github.com/IgorGanapolsky" style="color:inherit;">Igor Ganapolsky</a></p>
810
- <p>ThumbGate Pro is the fastest paid path for one operator who already hit a repeated AI-agent failure and now needs proof: what was blocked, why it was blocked, and what changed before the next risky run.</p>
811
- <p>Start with the local-first Pro dashboard and DPO export. Move to Team only when one correction needs to protect multiple developers, agents, or shared repos.</p>
732
+ <p>ThumbGate Pro is for one operator who already hit a repeated AI-agent failure and now needs proof: what was blocked, why it was blocked, and what changed before the next risky run.</p>
733
+ <p>If you need help today, start with the $19 quick read: send one failed tool call or workflow snippet and get the likely rule shape plus proof check. Use Pro when you want the local dashboard and DPO export.</p>
812
734
  <div class="hero-proof">
813
735
  <div class="proof-pill">Personal local dashboard</div>
814
736
  <div class="proof-pill">DPO export from real corrections</div>
@@ -816,7 +738,8 @@ __GA_BOOTSTRAP__
816
738
  <div class="proof-pill">Founder support on risky flows</div>
817
739
  </div>
818
740
  <div class="hero-actions">
819
- <a class="btn-primary btn-pro-checkout" href="/checkout/pro?utm_source=website&utm_medium=pro_page_hero&utm_campaign=pro_pack&cta_id=pro_page_primary&cta_placement=hero&plan_id=pro&landing_path=%2Fpro">Start Pro Now</a>
741
+ <a class="btn-primary" data-quick-read-link href="https://buy.stripe.com/aFa8wPgH29Lo4lH35V3sI0w" onclick="sendFirstPartyTelemetry('quick_read_checkout_started',{ctaId:'pro_page_hero_quick_read_checkout',price:19});sendGa4Event('begin_checkout',{currency:'USD',value:19,items:[{item_id:'quick_read',item_name:'AI Agent Failure Quick Read'}]});">Pay $19 quick read</a>
742
+ <a class="btn-secondary btn-pro-checkout" href="/checkout/pro?utm_source=website&utm_medium=pro_page_hero&utm_campaign=pro_pack&cta_id=pro_page_primary&cta_placement=hero&plan_id=pro&landing_path=%2Fpro">Start Pro dashboard</a>
820
743
  <a class="btn-secondary btn-demo" href="/dashboard?utm_source=website&utm_medium=pro_page&utm_campaign=pro_pack">Open dashboard demo</a>
821
744
  <a class="btn-ghost btn-free-path" href="/guide?utm_source=website&utm_medium=pro_page&utm_campaign=free_install">Stay on Free and install locally</a>
822
745
  </div>
@@ -852,6 +775,18 @@ __GA_BOOTSTRAP__
852
775
  <p>Visual check debugger, DPO export, auto-connect after activation, Model Hardening Advisor, and founder support for the risky flow you need to harden first.</p>
853
776
  </div>
854
777
 
778
+ <div class="aside-card" data-pro-paid-recovery>
779
+ <div class="aside-kicker">Team workflow blocked?</div>
780
+ <h3>Buy the paid diagnostic</h3>
781
+ <p>Skip self-serve Pro and pay for the smallest useful review now.</p>
782
+ <div class="price-stack">
783
+ <a class="btn-secondary" data-first-rule-link href="https://buy.stripe.com/4gM6oHgH2bTw4lH6i73sI0z" onclick="sendFirstPartyTelemetry('first_failure_rule_checkout_started',{ctaId:'pro_page_first_failure_rule_checkout',price:1});sendGa4Event('begin_checkout',{currency:'USD',value:1,items:[{item_id:'first_failure_rule',item_name:'First AI Agent Failure Rule'}]});">Pay $1 first rule</a>
784
+ <a class="btn-secondary" data-quick-read-link href="https://buy.stripe.com/aFa8wPgH29Lo4lH35V3sI0w" onclick="sendFirstPartyTelemetry('quick_read_checkout_started',{ctaId:'pro_page_quick_read_checkout',price:19});">Pay $19 quick read</a>
785
+ <a class="btn-primary" data-sprint-diagnostic-link href="__SPRINT_DIAGNOSTIC_CHECKOUT_URL__" onclick="sendFirstPartyTelemetry('workflow_sprint_diagnostic_checkout_started',{ctaId:'pro_page_sprint_diagnostic_checkout'});sendGa4Event('begin_checkout',{currency:'USD',value:__SPRINT_DIAGNOSTIC_PRICE_DOLLARS__});">Pay $__SPRINT_DIAGNOSTIC_PRICE_DOLLARS__ diagnostic</a>
786
+ <a class="btn-secondary" data-workflow-sprint-link href="__WORKFLOW_SPRINT_CHECKOUT_URL__" onclick="sendFirstPartyTelemetry('workflow_sprint_checkout_started',{ctaId:'pro_page_workflow_sprint_checkout'});sendGa4Event('begin_checkout',{currency:'USD',value:__WORKFLOW_SPRINT_PRICE_DOLLARS__});">Pay $__WORKFLOW_SPRINT_PRICE_DOLLARS__ sprint</a>
787
+ </div>
788
+ </div>
789
+
855
790
  <div class="aside-card">
856
791
  <div class="aside-kicker">Keep the buyer path warm</div>
857
792
  <h3>Save your work email before you decide</h3>
@@ -901,7 +836,7 @@ __GA_BOOTSTRAP__
901
836
  <div class="grid-3">
902
837
  <div class="feature-card">
903
838
  <h3>Debug the exact block in minutes</h3>
904
- <p>The visual check debugger shows every blocked action and the check that fired, so you stop guessing whether the Reliability Gateway is actually working.</p>
839
+ <p>The visual debugger shows each blocked action and check, so you stop guessing whether the Reliability Gateway is working.</p>
905
840
  <ul>
906
841
  <li>See the check, evidence, and lesson behind each deny.</li>
907
842
  <li>Trust the system faster on deploys, migrations, and CI.</li>
@@ -909,7 +844,7 @@ __GA_BOOTSTRAP__
909
844
  </div>
910
845
  <div class="feature-card">
911
846
  <h3>Turn corrections into DPO export</h3>
912
- <p>Pro turns real thumbs-down corrections into ready-to-use preference pairs for model hardening, instead of leaving the learning trapped in one operator's head.</p>
847
+ <p>Pro turns real thumbs-down corrections into preference pairs for model hardening, instead of leaving learning trapped in one operator's head.</p>
913
848
  <ul>
914
849
  <li>DPO export built from actual accepted vs rejected behavior.</li>
915
850
  <li>Model Hardening Advisor helps decide when fine-tuning is worth it.</li>
@@ -917,7 +852,7 @@ __GA_BOOTSTRAP__
917
852
  </div>
918
853
  <div class="feature-card">
919
854
  <h3>Ship proof, not just confidence</h3>
920
- <p>When the next risky workflow review happens, you have evidence links, reports, and a founder-supported path to harden the exact failure domain that keeps returning.</p>
855
+ <p>When the next risky review happens, you have evidence links, reports, and a founder-supported path to harden the failure that keeps returning.</p>
921
856
  <ul>
922
857
  <li>Review-ready evidence for one operator's high-risk workflows.</li>
923
858
  <li>Founder support on force-pushes, deploys, migrations, and CI.</li>
@@ -1026,7 +961,7 @@ __GA_BOOTSTRAP__
1026
961
  <h2>Stop losing time to the same AI-agent failure.</h2>
1027
962
  <p>Start Pro, harden one repeated mistake, and keep the proof trail: blocked action, lesson, prevention rule, and export path.</p>
1028
963
  <div class="hero-actions" style="justify-content:center;">
1029
- <a class="btn-primary btn-pro-checkout" href="/checkout/pro?utm_source=website&utm_medium=pro_page_final&utm_campaign=pro_pack&cta_id=final_go_pro&cta_placement=final&plan_id=pro&landing_path=%2Fpro">Start 7-Day Free Trial</a>
964
+ <a class="btn-primary btn-pro-checkout" href="/checkout/pro?utm_source=website&utm_medium=pro_page_final&utm_campaign=pro_pack&cta_id=final_go_pro&cta_placement=final&plan_id=pro&landing_path=%2Fpro">Start Pro Now</a>
1030
965
  <a class="btn-secondary btn-demo" href="/dashboard?utm_source=website&utm_medium=pro_page_final&utm_campaign=pro_pack">Open dashboard demo</a>
1031
966
  </div>
1032
967
  </div>
@@ -1088,6 +1023,9 @@ function sendFirstPartyTelemetry(eventType, props) {
1088
1023
  }).catch(function() {});
1089
1024
  }
1090
1025
 
1026
+ function sendGa4Event(e,p){if(typeof gtag==='function')gtag('event',e,p||{})}
1027
+ function initializeProPaidRecovery(){var c=document.querySelector('[data-pro-paid-recovery]');if(!c)return;var n=0;c.querySelectorAll('a[href]').forEach(function(a){var h=a.getAttribute('href')||'';if(/^https?:\/\//.test(h))n+=1;else a.hidden=true});c.hidden=n===0}
1028
+
1091
1029
  function initializeBuyerIntent() {
1092
1030
  globalThis.ThumbGateBuyerIntent.initializeBuyerIntent({
1093
1031
  page: 'pro',
@@ -1129,6 +1067,7 @@ trackClick('.btn-pro-checkout', 'pro_checkout_start', { tier: 'pro', page: 'pro'
1129
1067
  trackClick('.btn-demo', 'pro_demo_click', { page: 'pro' });
1130
1068
  trackClick('.btn-free-path', 'pro_free_path_click', { page: 'pro' });
1131
1069
  trackClick('.proof-links a', 'pro_proof_click', { page: 'pro' });
1070
+ initializeProPaidRecovery();
1132
1071
  initializeBuyerIntent();
1133
1072
  globalThis.buyerJourney = globalThis.ThumbGateBuyerIntent.initializeBehaviorAnalytics({
1134
1073
  pageType: 'marketing',
@@ -1145,6 +1084,10 @@ globalThis.buyerJourney = globalThis.ThumbGateBuyerIntent.initializeBehaviorAnal
1145
1084
  ],
1146
1085
  ctaImpressions: [
1147
1086
  { selector: '.btn-pro-checkout', ctaId: 'pro_checkout', ctaPlacement: 'pro_page', planId: 'pro' },
1087
+ { selector: '[data-first-rule-link]', ctaId: 'pro_page_first_failure_rule_checkout', ctaPlacement: 'pro_paid_recovery', planId: 'first_failure_rule' },
1088
+ { selector: '[data-quick-read-link]', ctaId: 'pro_page_quick_read_checkout', ctaPlacement: 'pro_paid_recovery', planId: 'quick_read' },
1089
+ { selector: '[data-sprint-diagnostic-link]', ctaId: 'pro_page_sprint_diagnostic_checkout', ctaPlacement: 'pro_paid_recovery', planId: 'sprint_diagnostic' },
1090
+ { selector: '[data-workflow-sprint-link]', ctaId: 'pro_page_workflow_sprint_checkout', ctaPlacement: 'pro_paid_recovery', planId: 'workflow_sprint' },
1148
1091
  { selector: '.btn-demo', ctaId: 'pro_demo', ctaPlacement: 'pro_page', planId: 'proof' },
1149
1092
  { selector: '.btn-free-path', ctaId: 'pro_free_path', ctaPlacement: 'pro_page', planId: 'free' }
1150
1093
  ]
@@ -412,9 +412,7 @@ function resolveCheckoutBrandUrls(appOrigin) {
412
412
  };
413
413
  }
414
414
 
415
- // Resolve the per-tier product image that ships to Stripe `product_data.images`.
416
- // Keeping three distinct URLs means the Stripe dashboard and checkout surface
417
- // never show twins for Free/Pro/Team; see tests/billing-tier-icons.test.js.
415
+ // Resolve the per-tier product image used by Stripe Checkout.
418
416
  function resolveTierIconUrl(planId, appOrigin) {
419
417
  const brandUrls = resolveCheckoutBrandUrls(appOrigin);
420
418
  const normalized = typeof planId === 'string' ? planId.toLowerCase() : '';
@@ -2546,6 +2544,8 @@ function buildCheckoutSessionPayload({ successUrl, cancelUrl, customerEmail, che
2546
2544
  payment_method_types: ['card', 'link'],
2547
2545
  mode: pack ? 'payment' : 'subscription',
2548
2546
  line_items: lineItems,
2547
+ allow_promotion_codes: true,
2548
+ after_expiration: { recovery: { enabled: true, allow_promotion_codes: true } },
2549
2549
  branding_settings: buildCheckoutBrandingSettings(appOrigin),
2550
2550
  metadata: serializeStripeMetadata({
2551
2551
  ...checkoutMetadata,