Methodology
We organize buyer questions before products: workflow needs, system requirements, implementation constraints, then product evidence. Unknown data remains explicitly UNKNOWN rather than being treated as a negative ("no") or silently omitted.
Source and freshness policy
Every factual product field carries a source URL, a source title, a first-party/independent flag, a confidence level, and a dateVerified. Pricing claims are treated as stale after 90 days, integration claims after 180 days, and security/compliance claims after 365 days (see FRESHNESS_DAYS in lib/products.ts). Unpublished pricing is recorded as unknown, never estimated.
Calculator formulas
The three calculators compute deterministic arithmetic on the numbers you enter — they never assume a vendor's marketing savings percentage.
- Current cost per invoice = (AP staff hours per month × fully loaded hourly cost + other monthly AP costs) ÷ monthly invoice volume.
- Estimated automated cost per invoice = (software monthly fee + per-invoice fee × monthly invoice volume + residual staff hours × hourly cost) ÷ monthly invoice volume.
- Modeled ROI / break-even: modeled monthly savings = (current cost per invoice − automated cost per invoice) × monthly invoice volume; break-even months = one-time implementation cost ÷ modeled monthly savings (only shown when that savings figure is positive).
See lib/calculators.ts for the exact implementation.
Finder scoring
The AP software finder (lib/finder.ts) scores a product only on the specific requirements you select. A verified claim scores one point; an unverified (unknown) claim scores zero points — never a negative — because absence of evidence is not evidence of absence. Affiliate and referral economics are never read by the scoring function.
500-invoice benchmark framework
We intend to process the same 500 messy invoices through each participating platform and record test protocol, environment, evaluator, date, exceptions, and raw results. The schema for this exists today in lib/benchmark.ts: fifteen scored dimensions (header extraction accuracy, line-item accuracy, vendor identification, duplicate detection, tax handling, GL coding accuracy, 2-way and 3-way matching accuracy, exception handling, approval routing correctness, ERP synchronization success, human corrections required, processing time, cost per invoice observed in testing, and setup effort), plus a run record (invoice-set version, invoice count, test date, evaluator, methodology link, participating products, and test environment).
No benchmark testing has occurred. benchmarkRuns and benchmarkResults are empty arrays, and scripts/data-health.ts fails the build if any result is ever added without complete provenance (test date, evaluator, methodology URL, and invoice-set version) or if any run does not cover the full 500-invoice set. No benchmark result is published until genuine testing occurs.
Affiliate and referral economics
Every product record includes an affiliateProgram field with affectsRecommendationScoring: false enforced by both a test and a data-health check. Monetization status is recorded for transparency on each product profile, but it is never read by the finder, the comparison pages, or any recommendation logic on this site.