Methodology v1 · August 2026 · every change is public
How Bowlmark scores pet food
Every score is computed by a fixed, versioned method — the same label always produces the same score, and every point can be traced to a reason you can read. No editor's mood, no sponsorship, no AI improvisation.
Two numbers, never blended
Universal Score
Product quality on its own terms, per species — identical for every visitor. Comparisons stay fair: dry against dry, wet against wet, treats against treats, all on a dry-matter basis.
Fit for your pet
A personal overlay on top of the Universal Score: allergies, life stage, weight goals and conditions, each adjustment shown with its reason. Universal never moves because of your pet; Fit never pretends to be universal.
The four pillars
The Universal Score weighs four reads of the label. Veterinary advisors tune the thresholds and rules; the weights are versioned and published — these are v1.
- 35%
Nutritional adequacy
Does the label meet recognized nutrient profiles for the species and life stage — protein and fat floors on a dry-matter basis, adequacy statements, taurine for cats. Missing fundamentals cost the most points anywhere in the method.
- 35%
Ingredient quality
Named animal proteins up top earn points; unnamed "meat" and "animal fat" lose them. Ingredient splitting — one base ingredient listed as three fractions to sink it down the panel — is detected and deducted.
- 20%
Additives & processing
Flagged preservatives and colors deduct by severity, with sources cited — up to critical flags like propylene glycol in cat food. Gentler preservation earns a little back.
- 10%
Transparency
Publishing calories, naming the manufacturing country, substantiating with feeding trials — brands that show more earn more, because you can verify more.
Recent recalls subtract on top: an FDA recall on the product within 24 months costs more than one at brand level, and resolved history stays visible either way.
The bands
- Excellent86–100
- Good61–85
- Mediocre36–60
- Poor0–35
Confidence, stated plainly
- A — a complete, verified label: full ingredient list, full guaranteed analysis, moisture, calories, adequacy.
- B — complete enough, but something's assumed or unverified: a single contribution, assumed moisture, estimated calories (always flagged as estimated).
- C — ingredients or the analysis are missing, so there is no number. The page shows what we did find, and asks for the label.
Below the data floor there is no score — not a cautious one, not an estimated one, none. We never fake precision.
What never touches a score
- Money. No brand can pay for a score, a rank, or a placement — there is no product for sale that affects the catalog.
- AI. Models help read label photos into structured text; the score itself is deterministic math over that text. AI never invents, adjusts, or estimates a number.
- Engagement. Scores exist to be right, not to be clicked. Nothing in the method optimizes for attention.
Versioned like it matters
Configs and weights carry versions, and every score stores the version that produced it. When advisors tune the method, affected scores are recomputed in the open — a public changelog entry says what changed and why, and old scores stay queryable. History is never silently rewritten.
See it on a real label
The founding shelf is open — every product page shows exactly what the engine reads: the ingredient panel as printed, the analysis on a dry-matter basis, and the adequacy statement.
Browse a label