AI tool directory freshness audit: what 100 listings reveal
A reproducible audit of 100 published AI tool listings, with a row-level dataset measuring update age, structured pricing coverage, verification state and data-quality limits.
An AI tools directory can look complete while still leaving its most decision-critical facts hard to trust. A listing may have a polished description and a vendor link, yet give no structured price, no explicit verification state and no clue about which field was checked when. OpenTools audited a balanced sample of 100 published, non-NSFW listings to measure that gap in its own directory rather than pretending it exists only on competitors’ sites.
The result is a dated baseline, not a scorecard designed to flatter OpenTools. Only 2 of the 100 sampled records had a last_updated date within the previous 90 days. Another 79 were between 91 and 365 days old, and 19 were more than a year old. Structured pricing data was absent from 38 records, while 99 did not have the public verified field set to true. At the same time, all 100 records had a vendor URL and populated descriptive copy, features and FAQs. The complete CSV lets readers inspect every row behind those numbers, while the method file defines what each field does and does not establish.
What this audit measured#
The starting population was the OpenTools public category inventory, which reported 199 nonempty categories and 7,704 category assignments when the snapshot was taken on September 21, 2026. The ten largest categories were AI Assistant, Content Creation, Education, Image Generation, Conversational AI, Image Editing, Video Editing, Productivity, E-commerce and Website Builder. The audit gave each of those categories ten records so that the largest category could not overwhelm the result.
Within each category, OpenTools requested the first ten alphabetical records from the public tools API, restricted to published, non-NSFW and non-archived entries. The same query was repeated for the other nine category slugs. The resulting sample contained 100 unique tool slugs.
This design makes the comparison easy to reproduce, but it carries an important limit: it is a balanced category sample, not a random or prevalence-weighted sample of the whole directory. The figures describe these 100 records. They should not be multiplied into claims about all 7,704 category assignments, because a record can appear in only one sampled stratum and the ten categories were deliberately weighted equally.
Update age shows why a timestamp needs a definition#
Every sampled record contained last_updated, but presence alone did not make the field recent. The audit calculated age against September 21, 2026 UTC: 2 records were 90 days old or newer, 79 were 91–365 days old, and 19 were older than 365 days. Readers can reproduce each calculation from the timestamp and age_days_at_2026_09_21 columns in the frozen dataset.
That calculation does not prove that a listing was inaccurate. It also does not prove that every claim was verified on the recorded date. last_updated can move when any part of a record changes, so it is weaker than a field-level observation date. A directory that wants readers to rely on pricing, availability or platform support needs to distinguish “the record changed” from “this specific fact was checked against this source.”
For that reason, future editions should prefer separate observation fields for volatile facts: a pricing check date for plan data, an availability check date for the vendor destination, and a source-backed verification date for important capability claims. The generic update timestamp still helps with operations, but it should not carry more meaning than the underlying data model supports.
Structured pricing was the largest visible completeness gap#
Sixty-two sampled records had either a populated pricingModel or at least one structured item in pricing_plans; 38 had neither. The audit labels that condition pricing_data_present=false. It does not label the tool free, paid or unavailable, because the absence of a price field cannot answer those questions.
That distinction matters in any AI tool directory. “No structured pricing data” and “free” are different states. A product may require a quote, offer a trial, charge by usage, bundle access into a larger plan or simply have an unresearched price. Collapsing those cases into a free/paid badge creates a confident answer from missing evidence.
A stronger pricing record needs at least a source URL, observed date, currency, billing interval, unit or seat basis, and a clear unknown state when the vendor does not publish a comparable number. The row-level sample exposes which listings need that work without asserting that the missing records share one business model.
The verification flag is sparse, but it is not a verdict#
One record in the sample had verified=true; 99 did not. The dataset preserves that public boolean exactly. It does not rename the 99 records “false” or “inaccurate,” because a boolean with no public verification event, method or expiry date cannot establish why it was unset.
This is the sharpest lesson from the audit. A trustworthy directory needs a verification event that a reader can interpret: what was checked, which primary source or test supported it, when the check occurred, who or what owns the next recheck, and what expiry rule applies. A badge without those details is difficult to compare across records and easy to outlive its evidence.
OpenTools therefore treats the sparse flag as an internal data-quality target rather than a public accusation about the sampled vendors. Future audits can measure whether field-level provenance and explicit observation dates improve, while retaining the original September snapshot for comparison.
The sample also shows a usable foundation#
The audit was not uniformly negative. All 100 records had a vendor URL, and all 100 had populated descriptive copy, features and FAQs. Those fields give the directory a broad base for discovery and reader orientation. They also reveal why completeness and verification need separate measures: a record can be detailed enough to browse while still lacking the evidence needed for a price-sensitive decision.
Vendor URL presence is likewise only a first gate. This edition did not classify redirects, destination ownership, accessibility, robots behavior or whether the linked page was the best primary source for a particular claim. The field means a URL was present in the public record. It does not mean the destination was tested or that it supported every sentence in the listing.
A practical freshness model for AI directories#
The next useful step is not to erase every older record. It is to assign volatility and evidence requirements to individual facts. A stable company name may need a long review window, while a price, model availability or platform integration may deserve a much shorter one. Every important claim can then carry six pieces of operational metadata: the fact, its source, the observation date, a freshness deadline, the owner and the current verification state.
That structure supports honest unknowns. When a price cannot be established, the directory can say so without turning absence into “free.” When a capability source is old, the record can retain the historical observation while flagging it for recheck. When a vendor URL works but does not document the specific claim, the source relationship can stay incomplete instead of being inferred.
It also makes future audits more useful. A quarterly report can compare changes in the same definitions: the share of sampled records with current pricing evidence, field-level observation dates and unexpired verification events. The September 2026 edition establishes the baseline; it does not claim that a quarterly cadence is already funded or that one sample proves a trend.
Download, reproduce and cite the snapshot#
The CSV dataset contains the sampled category, alphabetical position, slug, record-update timestamp, calculated age, public verification flag, vendor URL presence, structured-pricing presence and other field-completeness indicators. Its SHA-256 is c7e5012a70d6d53a2abf15d7509845f4810f6963c99fbecaa4f9d2f4e7b5e24d. The original chart has SHA-256 d23aee2148bcc58b0031121e4b8f2eeb2d9197f4825db7b4a5db91d8d49df623.
To reproduce the sample, follow the category list and exact query template in the README. Because the live directory can change after the snapshot, a later API response may not match the frozen CSV; that difference is the point of retaining dated artifacts and hashes.
When citing the findings, identify this as the “OpenTools balanced 100-record sample, observed September 21, 2026.” The safest headline figures are 2 records updated within 90 days, 38 without structured pricing data and 99 without verified=true. Each phrase retains the field definition and avoids turning a bounded audit into a claim about every AI tool directory or every OpenTools listing.