Vendors Pricing Pulse Methodology Calculator
AI DIRECTORY / METHODOLOGY
No black boxes · No pay-to-rank

How We Score & What We Share

Developers are right to distrust directories. So here is the entire machine: the exact scoring formula with its weights, how every price is collected and logged, and how to verify any number yourself without trusting us.

1 · The 12-signal BizOps Score

Every open-source tool is scored 0–100 from twelve public GitHub & package-registry signals. Nothing self-reported, nothing editorial.

score = min(100, round(100 × Σ wᵢ · sᵢ) + security_bonus)

sᵢ = signal normalised to 0–1  ·  wᵢ = category weight (Σwᵢ = 1)
security_bonus = +5 if ≥ 2 verified security-patching commits in the window
SignalMeasuresNormalisationBase wAI/ML w
commit_recencyDays since last commitdecay curve.20.18
starsTotal starsmin-max across batch.13.15
fork_velocityForks, last 30dmin-max across batch.11.08
issue_responseAvg hrs to first responsedecay curve.10.06
bus_factorTop-contributor share1 − clamp(share−0.2, 0, 0.8)/0.8.08.01
ci_statusCI passing on default branch1.0 pass / 0.3 fail.07.07
contributorsDistinct contributorsmin-max across batch.07.04
pr_merge_rateMerged / opened PRsrate curve.07.04
pkg_downloadsRegistry downloadsmin-max of log1p.05.12
has_testsTest suite present1.0 yes / 0.2 no.05.08
branch_protectionProtected default branch1.0 yes / 0.3 no.04.01
release_recencyDays since last releasedecay curve.03.16

Weights are re-normalised to sum to 1 per category (the AI/ML column shows why: shipping cadence and adoption matter more there than bus factor). Trend badges: rising / falling = ±3 points vs the previous run; scores recompute on every scrape, never by hand.

2 · How prices are collected

Weekly, from public pricing pages only, with robots.txt honoured and a 3-second crawl delay. Each record carries its collection method so you can weigh it:

source.methodMeaning
directPlain fetch of the public page
proxy_renderJS-rendered via a scraping API (Cloudflare-fronted SPAs)
playwright_semanticHeadless browser; anchors on the text "per 1M tokens" and climbs to the nearest $-block — survives CSS redesigns
ai_web_searchStructured LLM web-search fallback (flagged, never silent)
waybackInternet Archive snapshot — archive timestamp preserved
manualHuman override of last resort (flagged)

Tracked consumption vectors

input / output / cache-read / cache-write $ per 1M tokens · context windows · vector storage $/GB-mo · $/1M vector dimensions · read/write QPS · tool-call token overhead · GPU $/hr · seat pricing — plus free-tier allowances (monthly credit $, free tokens, free requests/day, rate-limit RPM, free storage GB), because a quietly shrinking free tier is the earliest signal of market tightening.

3 · Verify it yourself — don't take our word for it

record_sha256 = SHA-256( canonical_json(metrics) + "\n" + source_url + "\n" + raw_excerpt )

The hash seals both the numbers and the raw source text they were extracted from — a value cannot be disputed without breaking the excerpt. Records chain per vendor via prev_record_sha256 (first link: genesis:<slug>); backfilled archive records are re-chained chronologically and keep their provenance. A second, whole-file seal (/ledger.json, hash-chained) sits on top of the dataset.

Reproduce a hash yourself

curl -s https://bizopstool.com/ai/pricing_history_ai.json | python3 -c " import json,sys,hashlib t=[x for x in json.load(sys.stdin)['tools'] if x['slug']=='pinecone'][0] s=t['snapshots'][-1] p=json.dumps(s['metrics'],sort_keys=True,separators=(',',':'))+'\n'+s['source_url']+'\n' print('published:',s['record_sha256'][:16],'… (recompute with raw_excerpt from the full export)')"

The public window omits raw_excerpt for size; full exports (Pro) include every field needed for byte-exact recomputation. Chain checks: GET /api/notary/verify?slug=<vendor>.

4 · Independence & corrections

Vendors cannot pay to change a score, a price record, or a position. There are no sponsored rankings and no paid listings. Some outbound links are affiliate links (marked rel="sponsored"); they earn us a commission and have zero write-access to the data — the ledger would show the mismatch anyway.

Corrections policy: if we mis-parse a price, the fix is appended as a new hash-logged record with source.method preserved — history is never rewritten, because a ledger that can be edited is not a ledger. Report errors: hello@bizopstool.com.

Compare Vendors Calculate Costs View the Public Ledger
Calculate Costs