coaindex.
Rules

How the vendor transparency scores are computed

The vendor table is not an opinion ranking. Each vendor is scored by one function against the twelve signals below, from evidence recorded with a URL you can open. This page is the whole rule set, published so you can check our arithmetic and disagree with it specifically.

Methodology v1.0, published 2026-07-21

The twelve signals and their weights

Weights sum to 100. The heavier a signal, the harder it is to fake: a report that resolves on the issuing lab's own portal is worth more than a claim on a product page, because you can check the first one without asking the vendor's permission.

Rubric v1.0
Signal idWhat it meansPoints
coa_thirdpartyShips each vial with a third-party Certificate of Analysis (not in-house only)15
coa_verifiableThe report is independently verifiable by accession or QR on the lab's own site15
coa_lab_namedThe COA names a specific, real, lookup-able independent lab12
coa_lot_matchThe lot or batch on the COA matches the lot format printed on the vial12
coa_hplc_msThe report shows both HPLC purity and mass-spec identity10
coa_prepurchaseThe COA is readable before you pay, not "emailed after purchase"8
purity_realisticPurity figures look realistic (about 98 to 99.x%), not a flawless 100% on everything6
coverage_skuThird-party testing covers the specific SKU, not just one hero product6
identity_realReal, findable business identity (reachable address or support, aged domain)5
npc_disclosedTransparent about net peptide content or salt form5
card_paymentAccepts normal card payment (not crypto or gift-card only)4
ships_domesticShips domestically rather than a mystery international parcel2
Total available100

How a score is produced

Every signal is recorded in one of three states, and each state is a literal value in the data, never a blank:

  • Yes: confirmed on the check date from a source we recorded. Earns the full weight.
  • No: we looked for it and it was not published. Earns nothing.
  • Not checked: we could not resolve it either way, for example because a storefront was account-gated or no vial label was viewable. Earns nothing and implies nothing about the vendor.

The score is the sum of the weights of the signals marked yes, out of 100. There is no curve, no bonus, no penalty, and no editorial adjustment on top.

How confidence is computed

Confidence is the share of the twelve signals we resolved to a yes or a no and recorded a source URL for, expressed as a percentage: checked / 12. A signal with a value but no recorded URL does not count, because you would have to take our word for it.

Confidence is reported next to the score rather than folded into it, on purpose. Mixing them would let a vendor with a gated site look worse than one that published a bad answer, when in fact we simply saw less. A low confidence figure is a statement about our checking, not an accusation about the vendor.

Computed at build time, never hand-adjusted

Scores are not stored anywhere. Every number on this site is recomputed from src/data/vendors.json by scoreVendor() each time the site is built, and rendered into static HTML. There is no admin screen, no override column, and no per-vendor exception. To change a score you have to change the recorded evidence, which is visible on that vendor's page.

Commission is not an input

Disclosure. coaindex is published by Pepora and is a disclosed Pepora affiliate. We earn a commission when someone buys from Pepora Labs with our code. We are not an independent third party and do not present ourselves as one.

Because of that, the scorer is built so commission cannot reach it. scoreVendor(vendor) takes one argument and reads one field from it, the recorded signals map. It receives no affiliate flag, no payout figure, no partner tier, and no options object, so there is no parameter through which commercial interest could tilt a result, and no branch that treats one vendor's id differently from another's.

Pepora Labs is scored by that same function, on the same twelve signals, from evidence recorded the same way. On the current build it scores 72 of 100 at 92% confidence, ranking 16 of 24. Where it fails a signal, the failure is published on its own vendor page with the same evidence links as everyone else.

What the scores do not mean

This is a transparency measure for research-use-only materials. It scores what a vendor publishes and what you can independently verify. It is not a purity test, not a safety assessment, not a quality guarantee, and not medical advice. A high score means the paperwork is checkable, not that any particular vial is good. Nothing referenced on this site is intended for human or veterinary use.

Signals are recorded from what was publicly visible on the stated check date. Sites change, COAs are added, lots roll over, and gated storefronts open and close, so a value can go stale between checks.

How to file a correction

If a recorded value is wrong or has gone stale, tell us what it should be and where it can be seen. The useful form is: the vendor, the signal id from the table above, the value you believe is correct, and a URL that shows it. Vendors are welcome to file on their own behalf; the evidence is judged the same way either way, and paying us does not change a signal.

Corrections are re-checked against the same rubric, applied to the data file, and logged publicly with a date on the corrections page. Re-running the build recomputes every affected score automatically.