v4.1 go-live cut, Moonshot to Mistral swap, v5.x superseded
Mark v5.0/v5.1 SUPERSEDED (error-detection thesis failed at -0.40 delta); v4.1 is canonical. Cut v4.1 proposal with 12 version strings bumped. Moonshot to Mistral across production seats; production worker de-kimi'd 2026-08-18. Data-retention posture corrected 7/9 to 8/9 no-training (DeepSeek sole exception). Reconciled COGS with measured Mistral spend. Committed deployed v4.0 content and research docs to resolve the repo/live fork.
This commit is contained in:
+438
@@ -0,0 +1,438 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Transform VerdictTank index-v5.0.html -> index-v5.1.html (6-seat pool, clean tiers)."""
|
||||
import sys, re
|
||||
|
||||
SRC = "/root/projects/verdicttank/index-v5.0.html"
|
||||
DST = "/root/projects/verdicttank/index-v5.1.html"
|
||||
|
||||
html = open(SRC, encoding="utf-8").read()
|
||||
applied, failed = [], []
|
||||
|
||||
def rep(old, new, label, count=1):
|
||||
global html
|
||||
n = html.count(old)
|
||||
if n != count:
|
||||
failed.append(f"{label}: expected {count} occurrence(s), found {n}")
|
||||
return
|
||||
html = html.replace(old, new, count)
|
||||
applied.append(label)
|
||||
|
||||
# ---------- CSS: 4 price cards in a row (layout only, colors untouched) ----------
|
||||
rep(".pricing-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:16px;margin:20px 0}",
|
||||
".pricing-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin:20px 0}",
|
||||
"css-pricing-grid-4col")
|
||||
|
||||
rep("@media (max-width:768px){",
|
||||
"@media (max-width:1080px){\n .pricing-grid{grid-template-columns:1fr 1fr}\n}\n@media (max-width:768px){",
|
||||
"css-pricing-tablet-breakpoint")
|
||||
|
||||
# ---------- Title / badge ----------
|
||||
rep("<title>VerdictTank v5.0 · Error Detection Density for Proposals</title>",
|
||||
"<title>VerdictTank v5.1 · Error Detection Density for Proposals</title>", "title-v5.1")
|
||||
rep('<div class="badge">v5.0 · Pre-Revenue · Validation-Tested</div>',
|
||||
'<div class="badge">v5.1 · Pre-Revenue · Validation-Tested</div>', "badge-v5.1")
|
||||
|
||||
# ---------- Hero ----------
|
||||
rep("A solo frontier model gives you a smooth, confident score. An 11-judge panel gives you the",
|
||||
"A solo frontier model gives you a smooth, confident score. A 6-judge panel gives you the",
|
||||
"hero-6-judge")
|
||||
rep("<span><b>Panel:</b> 11 seats · 9 vendors</span>",
|
||||
"<span><b>Panel:</b> 6 seats · 5 vendors</span>", "hero-meta-seats")
|
||||
|
||||
# ---------- Thesis statgrid ----------
|
||||
rep('<div class="stat"><div class="v">11</div><div class="k">Judge seats, 9 vendors</div></div>',
|
||||
'<div class="stat"><div class="v">6</div><div class="k">Judge seats, 5 vendors</div></div>',
|
||||
"statgrid-seats")
|
||||
|
||||
rep("An 11-seat panel of nine different vendors cannot produce that coherence, and the incoherence",
|
||||
"A 6-seat panel of five different vendors cannot produce that coherence, and the incoherence",
|
||||
"thesis-spread-para")
|
||||
|
||||
# ---------- v5 evolution card ----------
|
||||
rep(""" v5 replaces the adversarial pair with an 11-seat specialist panel across nine vendors, and
|
||||
adds a synthesis seat whose only job is to compute panel statistics, flag scores more than
|
||||
1.5 standard deviations from the mean, and reconcile the verdict against the evidence.""",
|
||||
""" v5 replaces the adversarial pair with a 6-seat specialist panel across five vendors, and
|
||||
adds a synthesis seat whose only job is to compute panel statistics, flag scores more than
|
||||
1.5 standard deviations from the mean, and reconcile the verdict against the evidence.""",
|
||||
"evolution-card-v5")
|
||||
|
||||
# ---------- Self-review prose: historical v2.2 run, now consolidated to 6 seats ----------
|
||||
rep(""" That run cost roughly $150 in inference and returned 8 of 11 seats. Two seats were lost to a
|
||||
provider credit wall hit mid-run and one to a model family that could not be dispatched at all.
|
||||
The incomplete panel is why v2.3 of the judge pool spec now requires a pre-flight health gate
|
||||
and a pre-baked failover roster, covered in section 5. The results below are what those 8 seats
|
||||
produced, and we report them at 8 seats rather than extrapolating to 11.""",
|
||||
""" That run executed on the v2.2 roster. It cost roughly $150 in inference across the three
|
||||
proposals and returned 8 reporting seats. Two seats were lost to a provider credit wall hit
|
||||
mid-run, one to a model family that could not be dispatched at all, and a meaningful share of
|
||||
the spend went to retries against models that were already dead. The incomplete panel is why
|
||||
v2.3 of the judge pool spec introduces a pre-flight health gate, a pre-baked failover roster,
|
||||
and a consolidated 6-seat roster, all covered in section 5. The results below are what those
|
||||
8 v2.2 seats actually produced. We report them as measured and do not extrapolate them onto
|
||||
the 6-seat roster.""",
|
||||
"self-review-v2.2-run")
|
||||
|
||||
# ---------- Validation table note ----------
|
||||
rep(""" composition for this run was 8 reporting judges (4 Band A, 4 Band B) out of 11 specified seats,
|
||||
a 73% coverage rate.""",
|
||||
""" composition for this run was 8 reporting judges (4 Band A, 4 Band B) on the v2.2 roster. The
|
||||
v2.3 roster documented in section 5 consolidates to 6 seats.""",
|
||||
"validation-table-note")
|
||||
|
||||
rep("<td>Unanimity across nine vendors on a low score is a far stronger NO GO than one model's low score.</td>",
|
||||
"<td>Unanimity across independent vendors on a low score is a far stronger NO GO than one model's low score.</td>",
|
||||
"unanimity-vendors")
|
||||
|
||||
# ---------- Section 5 heading + lead ----------
|
||||
rep('<h2><span class="n">05</span>Judge Pool v2.3: 11 Seats, 9 Vendors, Zero Double-Ups</h2>',
|
||||
'<h2><span class="n">05</span>Judge Pool v2.3: 6 Seats, 5 Vendors, Zero Double-Ups</h2>',
|
||||
"section5-heading")
|
||||
|
||||
rep(""" The panel that produced the validation data ran at 8 of 11 seats because two seats hit a
|
||||
provider credit wall mid-run and one model family could not be dispatched at all. v2.3 is the
|
||||
spec written in response to that failure. Full detail lives in the
|
||||
<a href="judge-pool-spec.md">judge pool specification v2.3</a>.""",
|
||||
""" The panel that produced the validation data ran 8 reporting seats on the v2.2 roster, after
|
||||
two seats hit a provider credit wall mid-run and one model family could not be dispatched at
|
||||
all. v2.3 is the spec written in response to that failure. It cuts the roster to 6 seats,
|
||||
keeps every distinct question the validation run proved was load-bearing, and drops the
|
||||
redundant generalist cross-checks that contributed correlated opinions rather than new
|
||||
findings. Full detail lives in the
|
||||
<a href="judge-pool-spec.md">judge pool specification v2.3</a>.""",
|
||||
"section5-lead")
|
||||
|
||||
# ---------- Roster table ----------
|
||||
rep(""" <tr><td>0</td><td>Research Agent</td><td>Grok 4.5</td><td>xAI</td><td>No</td></tr>
|
||||
<tr><td>A</td><td>Primary Reviewer</td><td>Claude Opus 5</td><td>Anthropic</td><td>Yes</td></tr>
|
||||
<tr><td>A</td><td>Cross-Check A</td><td>DeepSeek V4 Flash</td><td>DeepSeek</td><td>Yes</td></tr>
|
||||
<tr><td>A</td><td>Cross-Check B</td><td>Gemini Pro Latest</td><td>Google</td><td>Yes</td></tr>
|
||||
<tr><td>A</td><td>Cross-Check C</td><td>DeepSeek V4 Pro</td><td>DeepSeek</td><td>Yes</td></tr>
|
||||
<tr><td>A</td><td>Legal / Regulatory</td><td>Claude Sonnet 5</td><td>Anthropic</td><td>Yes</td></tr>
|
||||
<tr><td>B</td><td>Financial Integrity</td><td>MiniMax-M3</td><td>MiniMax</td><td>Yes</td></tr>
|
||||
<tr><td>B</td><td>Team / Founder</td><td>Claude Fable 5</td><td>Anthropic</td><td>Yes</td></tr>
|
||||
<tr><td>B</td><td>Market Reality</td><td>Qwen3.7 Plus</td><td>Alibaba</td><td>Yes</td></tr>
|
||||
<tr><td>B</td><td>Execution Feasibility</td><td>GPT-5.2 Pro</td><td>OpenAI</td><td>Yes</td></tr>
|
||||
<tr><td>C</td><td>Synthesis & Integrity Gate</td><td>Kimi K2.6</td><td>Moonshot</td><td>No</td></tr>""",
|
||||
""" <tr><td>0</td><td>Research Agent</td><td>Grok 4.5</td><td>xAI</td><td>No</td></tr>
|
||||
<tr><td>A</td><td>Primary Reviewer</td><td>Claude Opus 5</td><td>Anthropic</td><td>Yes</td></tr>
|
||||
<tr><td>A</td><td>Cross-Check</td><td>DeepSeek V4 Pro</td><td>DeepSeek</td><td>Yes</td></tr>
|
||||
<tr><td>A</td><td>Legal + Compliance</td><td>Claude Sonnet 5</td><td>Anthropic</td><td>Yes</td></tr>
|
||||
<tr><td>B</td><td>Financial + Market</td><td>MiniMax-M3</td><td>MiniMax</td><td>Yes</td></tr>
|
||||
<tr><td>C</td><td>Synthesis + Gate</td><td>Kimi K2.6</td><td>Moonshot AI</td><td>No</td></tr>""",
|
||||
"roster-table")
|
||||
|
||||
# ---------- Roster note: concentration ----------
|
||||
rep(""" Nine distinct vendors across eleven seats. Nine distinct scoring models. Zero model double-ups:
|
||||
no single model occupies two scoring seats, which is the constraint that keeps correlated
|
||||
failure out of the panel mean. Maximum vendor concentration is Anthropic at 3 of 11 (27.3%),
|
||||
comfortably inside the 40% ceiling. DeepSeek holds 2 of 11 (18.2%). Every remaining vendor holds
|
||||
exactly one seat.""",
|
||||
""" Five distinct vendors across six seats. Four scoring seats, four distinct scoring models. Zero
|
||||
model double-ups: no single model occupies two scoring seats, which is the constraint that keeps
|
||||
correlated failure out of the panel mean. Maximum vendor concentration is Anthropic at 2 of 6
|
||||
(33%), inside the 40% ceiling. Every other vendor holds exactly one seat. The Research Agent and
|
||||
the Synthesis seat do not score, so the panel mean is computed from four independent specialist
|
||||
verdicts across four vendors.""",
|
||||
"roster-note-concentration")
|
||||
|
||||
# ---------- Pipeline flow box after roster note ----------
|
||||
rep(""" <h3>What changed in v2.3</h3>
|
||||
<div class="defense-grid">""",
|
||||
""" <h3>The 6-seat flow</h3>
|
||||
<div class="arch-box">
|
||||
Research Agent (Grok 4.5, xAI)
|
||||
> Primary Reviewer (Claude Opus 5, Anthropic)
|
||||
> Cross-Check (DeepSeek V4 Pro, DeepSeek)
|
||||
> Legal + Compliance (Claude Sonnet 5, Anthropic)
|
||||
> Financial + Market (MiniMax-M3, MiniMax)
|
||||
> Synthesis + Gate (Kimi K2.6, Moonshot AI)
|
||||
</div>
|
||||
<p class="table-note">
|
||||
The Free tier runs a reduced 4-seat version of this flow: Research Agent, Primary Reviewer,
|
||||
Legal + Compliance, Synthesis + Gate. It drops Cross-Check and Financial + Market. That
|
||||
configuration still catches legal and compliance blockers, which was the single highest-value
|
||||
error class in validation, so a free review proves the concept on the errors that matter most
|
||||
without carrying the full panel cost.
|
||||
</p>
|
||||
|
||||
<h3>What changed in v2.3</h3>
|
||||
<div class="defense-grid">""",
|
||||
"roster-flow-box")
|
||||
|
||||
# ---------- Synthesis gate: eleven opinions ----------
|
||||
rep("Primary Reviewer alone. That gate is what turns eleven opinions into one auditable report.",
|
||||
"Primary Reviewer alone. That gate is what turns four scored opinions into one auditable report.",
|
||||
"synthesis-gate-opinions")
|
||||
|
||||
# ---------- PRICING SECTION: full replacement ----------
|
||||
old_pricing_start = """ <h2><span class="n">07</span>Pricing: Priced Per Error Found, Not Per Point Gained</h2>"""
|
||||
old_pricing_end = """ White-Label at $1,499 makes resellers whole — they re-bill reviews at $200-500 each.
|
||||
</p>
|
||||
</section>"""
|
||||
|
||||
i = html.find(old_pricing_start)
|
||||
j = html.find(old_pricing_end)
|
||||
if i == -1 or j == -1:
|
||||
failed.append("pricing-section: anchors not found")
|
||||
else:
|
||||
new_pricing = """ <h2><span class="n">07</span>Pricing: Priced Per Error Found, Not Per Point Gained</h2>
|
||||
<p class="lead">
|
||||
Four tiers with declared review quantities. No asterisks, no fair-use clauses, no metered
|
||||
surprises. Every tier states exactly how many reviews it includes and exactly what an extra
|
||||
review costs. The pricing logic follows the revised thesis directly: a panel run is worth what a
|
||||
caught error is worth, and a caught error is worth far more than a point of score.
|
||||
</p>
|
||||
|
||||
<div class="pricing-grid">
|
||||
<div class="price-card">
|
||||
<h3 style="margin-top:0">Free</h3>
|
||||
<div class="price">Free</div>
|
||||
<ul>
|
||||
<li>1 review per month</li>
|
||||
<li>4-seat reduced panel</li>
|
||||
<li>Top 3 Fix-It items</li>
|
||||
<li>Panel score and spread</li>
|
||||
<li>Catches legal and compliance blockers</li>
|
||||
</ul>
|
||||
<div class="price-purpose">Purpose: prove it on one document</div>
|
||||
</div>
|
||||
<div class="price-card price-card--featured">
|
||||
<div class="ribbon">Most popular</div>
|
||||
<h3 style="margin-top:0">Pro</h3>
|
||||
<div class="price">$249<span>/mo</span></div>
|
||||
<ul>
|
||||
<li>5 reviews per month</li>
|
||||
<li>Full 6-seat panel</li>
|
||||
<li>Full Fix-It list, ranked</li>
|
||||
<li>Re-score loop with before and after</li>
|
||||
<li>Pre-Review Coach</li>
|
||||
<li>Extra reviews $15 each</li>
|
||||
<li>Annual billing $207/mo</li>
|
||||
</ul>
|
||||
<div class="price-purpose">Purpose: the founder or solo bid writer</div>
|
||||
</div>
|
||||
<div class="price-card">
|
||||
<h3 style="margin-top:0">Enterprise</h3>
|
||||
<div class="price">$799<span>/mo</span></div>
|
||||
<ul>
|
||||
<li>30 reviews per month</li>
|
||||
<li>Full 6-seat panel</li>
|
||||
<li>Full Fix-It list, ranked</li>
|
||||
<li>Re-score loop and Pre-Review Coach</li>
|
||||
<li>Branded white-label</li>
|
||||
<li>Multi-seat workspaces</li>
|
||||
<li>Shared corpus isolation</li>
|
||||
<li>Configurable judge pool</li>
|
||||
<li>Extra reviews $15 each</li>
|
||||
<li>Annual billing $666/mo</li>
|
||||
</ul>
|
||||
<div class="price-purpose">Purpose: proposal teams running color reviews</div>
|
||||
</div>
|
||||
<div class="price-card">
|
||||
<h3 style="margin-top:0">White-Label</h3>
|
||||
<div class="price">$1,499<span>/mo</span></div>
|
||||
<ul>
|
||||
<li>50 reviews per month</li>
|
||||
<li>Configurable panel</li>
|
||||
<li>Full Fix-It list, ranked</li>
|
||||
<li>Re-score loop and Pre-Review Coach</li>
|
||||
<li>White-label on your own domain</li>
|
||||
<li>Multi-seat workspaces</li>
|
||||
<li>Dedicated corpus isolation</li>
|
||||
<li>Full custom judge pool</li>
|
||||
<li>Reseller model: re-bill $200-500 each</li>
|
||||
<li>Extra reviews $10 each</li>
|
||||
<li>Annual billing $1,249/mo</li>
|
||||
</ul>
|
||||
<div class="price-purpose">Purpose: consultancies and platforms reselling review as a service</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<h3>Full tier comparison</h3>
|
||||
<table>
|
||||
<thead>
|
||||
<tr><th style="width:190px"> </th><th>Free</th><th>Pro</th><th>Enterprise</th><th>White-Label</th></tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr><td><strong>Price</strong></td><td>Free</td><td><strong>$249/mo</strong></td><td><strong>$799/mo</strong></td><td><strong>$1,499/mo</strong></td></tr>
|
||||
<tr><td><strong>Reviews per month</strong></td><td>1</td><td>5</td><td>30</td><td>50</td></tr>
|
||||
<tr><td><strong>Overage</strong></td><td class="muted">Not available</td><td>$15/review</td><td>$15/review</td><td>$10/review</td></tr>
|
||||
<tr><td><strong>Panel</strong></td><td>4-seat reduced</td><td>Full 6-seat</td><td>Full 6-seat</td><td>Configurable</td></tr>
|
||||
<tr><td><strong>Fix-Its</strong></td><td>Top 3</td><td>Full, ranked</td><td>Full, ranked</td><td>Full, ranked</td></tr>
|
||||
<tr><td><strong>Re-score loop</strong></td><td class="muted">Not included</td><td>Yes</td><td>Yes</td><td>Yes</td></tr>
|
||||
<tr><td><strong>Pre-Review Coach</strong></td><td class="muted">Not included</td><td>Yes</td><td>Yes</td><td>Yes</td></tr>
|
||||
<tr><td><strong>White-label</strong></td><td class="muted">Not included</td><td class="muted">Not included</td><td>Branded only</td><td>Full domain</td></tr>
|
||||
<tr><td><strong>Workspaces</strong></td><td class="muted">Not included</td><td class="muted">Not included</td><td>Multi-seat</td><td>Multi-seat</td></tr>
|
||||
<tr><td><strong>Corpus isolation</strong></td><td class="muted">Not included</td><td class="muted">Not included</td><td>Shared</td><td>Dedicated</td></tr>
|
||||
<tr><td><strong>Judge pool config</strong></td><td class="muted">Not included</td><td class="muted">Not included</td><td>Yes</td><td>Full custom</td></tr>
|
||||
<tr><td><strong>Reseller model</strong></td><td class="muted">Not included</td><td class="muted">Not included</td><td class="muted">Not included</td><td>Re-bill $200-500/ea</td></tr>
|
||||
<tr><td><strong>Annual billing (16.7% off)</strong></td><td class="muted">Not applicable</td><td>$207/mo</td><td>$666/mo</td><td>$1,249/mo</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p class="table-note">
|
||||
Declared quantities only. When a tier is exhausted the customer either buys overage at the
|
||||
published per-review rate or waits for the next cycle. Nothing is throttled silently and no tier
|
||||
is described as unlimited, because a panel review has a real marginal cost and pretending
|
||||
otherwise is how usage-based products lose money.
|
||||
</p>
|
||||
|
||||
<h3>What a review costs us, and why the panel is affordable</h3>
|
||||
<p>
|
||||
The v2.2 validation run cost approximately $150 in inference for three full proposals across
|
||||
eight reporting seats. That figure includes retries against dead models before the health gate
|
||||
existed, which is exactly the waste v2.3 was written to remove. It is the honest anchor, and it
|
||||
is deliberately the worst number we have.
|
||||
</p>
|
||||
<p>
|
||||
A clean run on the consolidated 6-seat roster, with the pre-flight health gate preventing wasted
|
||||
dispatches and only four seats actually scoring, costs <strong>$5.20 per review</strong>. That is
|
||||
the number every tier below is built on.
|
||||
</p>
|
||||
|
||||
<h3>Unit economics at declared quantities</h3>
|
||||
<table>
|
||||
<thead>
|
||||
<tr><th>Tier</th><th>Reviews included</th><th>COGS at $5.20/review</th><th>Revenue</th><th>Gross margin</th></tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr><td><strong>Pro</strong></td><td>5</td><td>$26</td><td>$249</td><td><strong>90%</strong></td></tr>
|
||||
<tr><td><strong>Enterprise</strong></td><td>30</td><td>$156</td><td>$799</td><td><strong>80%</strong></td></tr>
|
||||
<tr><td><strong>White-Label</strong></td><td>50</td><td>$260</td><td>$1,499</td><td><strong>83%</strong></td></tr>
|
||||
<tr class="comp-table__us"><td><strong>Overage, Pro and Enterprise</strong></td><td><strong>per review</strong></td><td><strong>$5.20</strong></td><td><strong>$15.00</strong></td><td><strong>Roughly 3x COGS</strong></td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p class="table-note">
|
||||
Every declared quantity is margin-positive at full consumption, and so is every overage unit. The
|
||||
$15 overage prices at roughly 3x COGS. The $10 White-Label overage prices at roughly 2x COGS,
|
||||
which is the deliberate discount that makes the reseller math work. There is no consumption
|
||||
pattern inside these tiers that produces a negative unit, which is the whole reason the word
|
||||
unlimited does not appear on this page.
|
||||
</p>
|
||||
<p>
|
||||
The reason a full 6-seat panel fits a $249 tier at five reviews per month is vendor mix and seat
|
||||
discipline. Only the Primary Reviewer runs a premium frontier model. The remaining scoring seats
|
||||
run strong mid-tier models from three different vendors, which is where the error-detection value
|
||||
came from in validation. Cutting the roster from eleven seats to six removed the redundant
|
||||
generalist cross-checks, not the specialists. Panel diversity is cheaper than panel depth, and
|
||||
diversity is what caught the 14.
|
||||
</p>
|
||||
|
||||
<h3>Why the value question is not the score question</h3>
|
||||
<table>
|
||||
<thead><tr><th>Error class</th><th>Real example from validation</th><th>Cost of missing it</th></tr></thead>
|
||||
<tbody>
|
||||
<tr><td>Legal blocker</td><td>Charitable solicitation registration in 40+ states</td><td>$30K to $75K of registration, against $3K to $14K of projected revenue</td></tr>
|
||||
<tr><td>Compliance total</td><td>Full first-year compliance load on the same proposal</td><td>$60K to $150K, exceeding Year-1 revenue by roughly 10x</td></tr>
|
||||
<tr><td>Execution gap</td><td>Contractor budget short by 4x to 7x</td><td>Roughly 800 unbudgeted founder hours</td></tr>
|
||||
<tr><td>Revenue arithmetic</td><td>$2.7M headline against $269K computed from the document's own inputs</td><td>Credibility with any investor who checks the math, which is all of them</td></tr>
|
||||
<tr><td>Competitive blind spot</td><td>A $4M-seed funded direct rival never named in the document</td><td>The first question in the room, unanswered</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p class="table-note">
|
||||
A single caught item in the top two rows pays for a decade of the Pro tier. That is the entire
|
||||
pricing argument, and it does not depend on the panel producing a higher score, which it does
|
||||
not. Note that the two highest-value rows are both legal and compliance findings, which is
|
||||
precisely why the Free tier keeps the Legal + Compliance seat.
|
||||
</p>
|
||||
|
||||
<h3>Positioned against the authoring category</h3>
|
||||
<table>
|
||||
<thead><tr><th>Comparison</th><th>Their price</th><th>VerdictTank</th><th>Multiple</th></tr></thead>
|
||||
<tbody>
|
||||
<tr><td>Pro vs Bidara Starter</td><td>$499/mo</td><td>$249/mo</td><td><strong>2.0x less</strong></td></tr>
|
||||
<tr><td>Pro vs AutoRFP.ai Scale</td><td>$899/mo</td><td>$249/mo</td><td><strong>3.6x less</strong></td></tr>
|
||||
<tr><td>Enterprise vs AutogenAI</td><td>$30K+/yr custom</td><td>$799/mo ($9,588/yr)</td><td><strong>3.1x less annualized</strong></td></tr>
|
||||
<tr><td>Enterprise vs Bidara Starter</td><td>$499/mo</td><td>$799/mo</td><td><strong>1.6x more</strong></td></tr>
|
||||
<tr><td>Enterprise vs AutoRFP.ai Scale</td><td>$899/mo</td><td>$799/mo</td><td><strong>1.1x less</strong></td></tr>
|
||||
<tr><td>White-Label vs AutogenAI</td><td>$30K+/yr custom</td><td>$1,499/mo ($17,988/yr)</td><td><strong>1.7x less annualized</strong></td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>
|
||||
We are not a proposal team in a box. We are one high-value pass in the workflow. A buyer already
|
||||
spending $499 to $899 per month on an authoring tool should be able to add the error-detection
|
||||
layer. Pricing Pro at $249 is below the GC AI critique seat benchmark at $500/mo, and Enterprise
|
||||
at $799 is a peer price to the authoring tools that feed it while landing 3.1x under an
|
||||
enterprise authoring contract on an annualized basis. White-Label at $1,499 makes resellers
|
||||
whole: 50 included reviews re-billed at $200 to $500 each is $10,000 to $25,000 of tenant
|
||||
revenue against a $1,499 cost.
|
||||
</p>
|
||||
</section>"""
|
||||
html = html[:i] + new_pricing + html[j + len(old_pricing_end):]
|
||||
applied.append("pricing-section-full-replacement")
|
||||
|
||||
# ---------- Competitive table: VerdictTank row ----------
|
||||
rep(""" <tr class="comp-table__us"><td><strong>VerdictTank</strong></td><td><strong>Panel error detection</strong></td><td><strong>Free / $249 Pro / $799 Enterprise / $1,499 White-Label</strong></td><td><strong>The only 11-seat, 9-vendor review panel with a published integrity gate</strong></td></tr>""",
|
||||
""" <tr class="comp-table__us"><td><strong>VerdictTank</strong></td><td><strong>Panel error detection</strong></td><td><strong>Free (1/mo) · $249 Pro (5/mo) · $799 Enterprise (30/mo) · $1,499 White-Label (50/mo)</strong></td><td><strong>The only 6-seat, 5-vendor review panel with a published integrity gate and declared review quantities</strong></td></tr>""",
|
||||
"competitive-verdicttank-row")
|
||||
|
||||
rep(""" Nine vendors, health gating, pre-baked failover, no model double-ups, and an integrity gate
|
||||
that challenges its own outliers is not a prompt.""",
|
||||
""" Five vendors, health gating, pre-baked failover, no model double-ups, and an integrity gate
|
||||
that challenges its own outliers is not a prompt.""",
|
||||
"moat-vendors")
|
||||
|
||||
# ---------- Deployment ----------
|
||||
rep("must hold credentials for nine separate model vendors and must run the pre-flight health gate",
|
||||
"must hold credentials for five separate model vendors and must run the pre-flight health gate",
|
||||
"deployment-vendor-creds")
|
||||
|
||||
# ---------- Legal section ----------
|
||||
rep(" from v4.0 and updated for the nine-vendor panel.",
|
||||
" from v4.0 and updated for the five-vendor panel.", "legal-lead-vendors")
|
||||
|
||||
rep("<tr><td>Panel model API calls, all nine vendors</td>",
|
||||
"<tr><td>Panel model API calls, all five vendors</td>", "legal-role-map-vendors")
|
||||
|
||||
rep(""" <strong>The nine-vendor panel raises the sub-processor row from a formality to the primary""",
|
||||
""" <strong>The five-vendor panel raises the sub-processor row from a formality to the primary""",
|
||||
"legal-callout-vendors")
|
||||
|
||||
rep(""" opt-in. Never a silent default, and never for corpus-eligible content. Each of the nine rostered
|
||||
vendors is audited against this clause before it is eligible for a seat, and the audit is""",
|
||||
""" opt-in. Never a silent default, and never for corpus-eligible content. Each of the five rostered
|
||||
vendors is audited against this clause before it is eligible for a seat, and the audit is""",
|
||||
"legal-training-guard-vendors")
|
||||
|
||||
rep("credentials for all nine model vendors, white-label tenant segments.",
|
||||
"credentials for all five model vendors, white-label tenant segments.", "legal-ir-vendors")
|
||||
|
||||
rep(""" The Free, Pro and Enterprise tiers require Terms of Service, Privacy Policy and the AI Disclaimer
|
||||
at minimum before any paid launch.""",
|
||||
""" The Free, Pro, Enterprise and White-Label tiers all require Terms of Service, Privacy Policy and
|
||||
the AI Disclaimer at minimum before any paid launch. White-Label additionally requires an
|
||||
executed DPA as a hard provisioning gate.""",
|
||||
"legal-mvl-tiers")
|
||||
|
||||
rep(""" <li><strong>Degraded-mode behavior:</strong> a panel that ran short of its full eleven seats is flagged visibly with the seat count and which roles failed over. We never silently substitute a provider without disclosure. The 2026-08-12 run is reported at 8 of 11 seats throughout this document for exactly that reason.</li>""",
|
||||
""" <li><strong>Degraded-mode behavior:</strong> a panel that ran short of its full six seats is flagged visibly with the seat count and which roles failed over. We never silently substitute a provider without disclosure. The 2026-08-12 validation run is reported throughout this document at the 8 reporting seats it actually produced on the v2.2 roster, for exactly that reason.</li>""",
|
||||
"legal-degraded-mode")
|
||||
|
||||
# ---------- Footer ----------
|
||||
rep(""" VerdictTank v5.0 · <a href="https://verdicttank.com">verdicttank.com</a> ·
|
||||
<a href="architecture.html">Technical Architecture</a> ·
|
||||
<a href="judge-pool-spec.md">Judge Pool Spec v2.3</a> ·
|
||||
<a href="index-v4.0.html">Prior version (v4.0)</a><br>""",
|
||||
""" VerdictTank v5.1 · <a href="https://verdicttank.com">verdicttank.com</a> ·
|
||||
<a href="architecture.html">Technical Architecture</a> ·
|
||||
<a href="judge-pool-spec.md">Judge Pool Spec v2.3</a> ·
|
||||
<a href="index-v5.0.html">Prior version (v5.0)</a><br>""",
|
||||
"footer-v5.1")
|
||||
|
||||
rep(""" Every score, delta, spread and error count on this page comes from that run. Nothing is projected.""",
|
||||
""" Every score, delta, spread and error count on this page comes from that run. Nothing is projected.
|
||||
Panel roster is 6 seats across 5 vendors. All pricing tiers carry declared review quantities and
|
||||
published overage rates.""",
|
||||
"footer-note")
|
||||
|
||||
open(DST, "w", encoding="utf-8").write(html)
|
||||
|
||||
print(f"Applied {len(applied)} replacements")
|
||||
for a in applied:
|
||||
print(f" OK {a}")
|
||||
if failed:
|
||||
print(f"\nFAILED {len(failed)}:")
|
||||
for f in failed:
|
||||
print(f" FAIL {f}")
|
||||
sys.exit(1)
|
||||
print("\nAll replacements applied cleanly.")
|
||||
Reference in New Issue
Block a user