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.
How answers and shortlists are built
The short answers, shortlists, and FAQs at the top of each guide are generated from the same claim records as the tables, not written separately (see lib/answers.ts). A vendor is named in them only when its own claim supports it:
- A claim that states an absence, such as "No free plan", never counts as having the capability.
- Low-confidence claims appear in the tables, labeled, but are left out of prose answers and lists.
- An integration counts only when the claim names that system: a general "Sage" claim is not counted as Sage Intacct.
- "Not verified in this research" means no medium- or high-confidence public evidence was found. It is a question for the demo, not a finding that the capability is missing.
Automated tests pin each list to the current claims, so a changed claim forces the affected answers to be re-checked before they are published. "Page reviewed" dates record when a page's content last changed; each claim shows its own verification date.
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.