Live content-quality dashboard. Refreshed 2026-10-19 07:30 UTC.
Why this page exists. Most "AI marketplace" sites do not publish their own quality metrics. We do, because the catalog only earns trust by surfacing its weak points. This page regenerates every 30 minutes from real audit and health-check output.
What "PASS" actually means. Each check has a specific definition. Fake-proof = no SOC 2 / training-corpus / customer-count claims that are fabricated. Health = all monitored URLs return their expected HTTP status. Em-dash = no Unicode em-dashes or HTML entities in any HTML file. Broken-taglines = no product whose tagline equals its display name.
The score you see on every product card. The Adoptability score (one of the invariants the catalog enforces) is the primary navigation signal. The full operator-honest reader's manual is at /factory/playbooks/reading-adoptability/. Ten-minute read. Four reading modes. Three axes most operators misread.
Want to audit any marketplace, including this one? /factory/playbooks/buyer-audit/ is a 10-check, 30-minute tactical audit. The checks above (fake-proof, em-dash, health) are the live results of running that audit on ourselves.
Each audit is a real Python script in /home/ubuntu/factory/director/. The results above flow from these.
| Audit | Cadence | What it catches |
|---|---|---|
| audit-fakeproof.py | daily 4:30am | Fake-proof claims (SOC 2 cert, customer counts without sources, "trained on" without attribution, vague-corpus claims). Writes /factory/audit-fakeproof.json snapshot. 25 SKIP_CONTEXTS phrases recognize Fermi-projection framing so legitimate financial models do not flag. |
| audit-adoptability-drift.py | every 15 min | Drift between the Adoptability score on the catalog card (adoptability.json) and the score embedded in each product page Product JSON-LD. Writes /factory/adoptability-drift.json snapshot. iter 93 invariant. |
| em-dash-sweep.py | every 15 min | Unicode em-dashes and HTML-entity em-dashes anywhere in the rendered HTML catalog. Strips them automatically. Iter 61 extended to catch — entities. |
| health-check.py | every 10 min | 77 monitored endpoints (homepage, catalog, every transparency surface, every essay, every product sub-page set). Writes /factory/admin/health.json snapshot. |
| palette-audit.py | every 15 min | Products dressed in studio default palette (vs per-product brand brief CSS). Currently 244/244 dressed in studio defaults until brand-applicator runs. |
| adoptability-score.py | every 15 min | Re-scores every product on the 10-axis Adoptability rubric. Validates tagline-not-equals-name and slug-not-equals-name as side checks. |
| audit-hero-polish-drift.py | every 30 min | Compares the polished hero h1 in /home/ubuntu/factory/director/hero-polish/<slug>.json against the actual h1 inside WD_HERO_POLISH_v1 block on /builds/<slug>/. Detects drift caused by regen overwriting polished content. iter 104 invariant. |
| audit-og-coverage.py | every 30 min | Verifies every /builds/<slug>/ page's og:image URL points to a real, non-empty PNG file on disk. Catches the "newly-shipped product references a non-existent OG card" gap. og-meta-injector falls back to _catalog.png when per-product PNG missing. iter 105 invariant. |
| audit-teaser-quality.py | every 30 min | Audits every /factory/dossiers/<slug>/teaser.md (the public preview buyers read before paying $5). Verifies h1 matches product name, tagline present, Adoptability score matches catalog, category present, unlock URL contains the slug, "What you get" bullets >= 5. iter 111 invariant. |
| audit-case-studies-quality.py | every 30 min | Audits every /builds/<slug>/case-studies/ page. Verifies template marker, title-name match, honest-framing markers ("fermi", "no live customers", "honestly", "placeholder"). Catches case-studies pages that drift away from the honest-framing convention. iter 112 invariant. |
| audit-faq-quality.py | every 30 min | Audits every /builds/<slug>/faq/ page. Verifies WD_FAQ_TEMPLATE_v1 marker, title-name match, at least 8 question elements. Catches FAQ pages with empty content or template drift. iter 113 invariant. |
| audit-unlock-content.py | every 30 min | Audits every /factory/unlock/<slug>/ page (the $5 purchase decision moment). Verifies title-name match, visible Adoptability score, $5 price, email-capture form, substantial page size. iter 116 invariant. |
| audit-adopt-content.py | every 30 min | Audits every /factory/adopt/<slug>/ page (the $99-199 buy-the-build moment). Verifies title-name match, $99/$199 price, visible Adoptability score, adopt-tier framing, email-capture form. iter 117 invariant. |
| audit-feedback-content.py | every 30 min | Audits every /factory/feedback/<slug>/ page. Verifies title-name match (with brand-rename support), form + email + textarea elements, product reference in body. iter 119 invariant. |
| audit-pricing-content.py | every 30 min | Audits every /builds/<slug>/pricing/ page. Verifies title-name match (with brand-rename + AI-suffix-stripped support), at least 2 distinct $-amounts, /factory/ CTA, substantial page size. Template-agnostic across 4 historical pricing layouts. iter 121 invariant. |
| audit-vs-content.py | every 30 min | Audits every /builds/<slug>/vs/ comparison page. Accepts BOTH templates: gated honesty (gated marker + /unlock/ CTA) or WD_VS_TEMPLATE_v1 (at least 2 named-incumbent blocks). Plus title-name match, /factory/ CTA, substantial page size. iter 122 invariant. |
| audit-how-it-works-content.py | every 30 min | Audits every /builds/<slug>/how-it-works/ page. Verifies title-name match, at least 3 .section blocks, recognized section keywords (Implementation plan / tech stack / MVP scope / build tasks), /factory/ CTA, substantial page size. iter 122 invariant. |
| audit-sales-kit-content.py | every 30 min | Audits every /builds/<slug>/sales-kit/ index page. Three-pattern accept: gated stub (+ /unlock/ CTA), full kit (5+ .item asset links), or LinkedIn outbound (5+ .message-card blocks). Plus title-name match, factory CTA, page size. iter 123 invariant. |
| audit-skeptic-memos-content.py | every 30 min | Audits every /builds/<slug>/skeptic-memos/ index page. Two-pattern accept: gated stub (+ /unlock/ CTA), or 1+ memo with verdict label. Plus title-name match. iter 123 invariant. |
| audit-cross-surface-name.py | every 30 min | Cross-cutting audit. For each product with a brand brief specifying a non-trivial rename, checks whether ALL 11 buyer-touching surfaces use the brand name OR all use the slug-derived name. Flags split-brain (some surfaces renamed, others not). iter 124 invariant. Detail. |
| audit-bold-density.py | every hour | For each /builds/<slug>/ page, flags pages where >20% of <p> text is wrapped in <strong>/<b>. Excessive bolding reduces effective emphasis. iter 145 invariant. |
| audit-readability-estimate.py | every hour | For each /builds/<slug>/ page, estimates Flesch-Kincaid grade level. Flags pages with grade >14 (graduate-level complexity = too dense for marketing copy). Marketing copy ideal: 8-12. iter 145 invariant. |
| audit-internal-anchors.py | every hour | For each /builds/<slug>/ page, verifies every href="#xyz" link has a matching id="xyz" element. Catches broken in-page jumps. iter 144 invariant. |
| audit-section-landmarks.py | every hour | For each /builds/<slug>/ page, verifies presence of main / nav / footer ARIA landmarks. Screen-reader users jump via landmark shortcuts. iter 144 invariant. |
| audit-paragraph-length.py | every hour | For each /builds/<slug>/ page, flags <p> tags with visible-text exceeding 1000 chars. Walls of text reduce scanability for buyers. iter 143 invariant. |
| audit-list-vs-paragraph.py | every hour | Flags <p> tags containing 5+ inline-numbered items (1., 2., 3., 4., 5.) or 5+ bullet-style sequences. Should use <ul>/<ol> for accessibility + scanability. iter 143 invariant. |
| audit-css-class-conventions.py | every hour | For each /builds/<slug>/ page, flags CSS class names violating kebab-case convention (uppercase letters, digit-prefix, >60 char auto-generated hashes). Catches rogue template imports. iter 142 invariant. |
| audit-link-purpose.py | every hour | For each /builds/<slug>/ page, flags <a> tags with non-descriptive text ("click here", "learn more", "more"). Screen-reader users scanning links hear just the text - it must convey purpose alone. WCAG 2.4.4. iter 141 invariant. |
| audit-keyboard-focus-styles.py | every hour | For each /builds/<slug>/ page, verifies the page CSS declares at least one :focus or :focus-visible rule. Keyboard users need a visible focus indicator. WCAG 2.4.7. iter 141 invariant. |
| audit-utility-link-targets.py | every hour | For each /builds/<slug>/ page, verifies every link in WD_TOP_UTIL_BAR_v1 utility-bar resolves to an existing /factory/ file. Catches typo nav links + removed pages. iter 140 invariant. |
| audit-aria-hidden-decorative.py | every hour | For each /builds/<slug>/ page, flags decorative <svg> elements lacking aria-hidden / aria-label / role=img / inner <title>. Screen readers should skip decorative graphics. WCAG 4.1.2. iter 140 invariant. |
| audit-heading-hierarchy.py | every hour | For each /builds/<slug>/ page, walks heading sequence and flags level-skips (e.g. h2->h4). Honors aria-level overrides. WCAG 1.3.1 + screen-reader navigation invariant. iter 139 invariant. |
| audit-skip-link.py | every hour | For each /builds/<slug>/ page, verifies WCAG 2.4.1 skip-to-content link (class="skip-link" or href="#main"). Keyboard users can bypass top nav. iter 138 invariant. |
| audit-drift-detector.py | every 5 min | Meta-audit. Reads snapshots of 9 drift-prone audits and reports any with issues. Pairs with 7 cron guard-rail injectors (run at :27-:39) for self-healing. Drift detection latency <= 5 min. iter 151 invariant. |
| audit-h1-uniqueness.py | every hour | For each /builds/<slug>/ page, verifies exactly 1 <h1> element. Multiple H1s confuse SEO + screen-reader navigation. iter 137 invariant. |
| audit-button-anchor-consistency.py | every hour | For each /builds/<slug>/ page, flags <div>/<span>/<p> with btn/button/cta-button class - non-semantic fake buttons that fail keyboard activation + screen readers. iter 137 invariant. |
| audit-published-date.py | every hour | For each ship-log iter detail page and each playbook essay, verifies a published date is declared (article:published_time meta, time[datetime], or visible Date: YYYY-MM-DD). Trust + SEO signal. iter 135 invariant. |
| audit-anchor-jump-noise.py | every hour | For each /builds/<slug>/ page, flags <a href="#"> placeholder links (empty-hash CTAs that scroll to top - confusing no-op). Catches unfinished CTAs from hand-crafted pages. iter 134 invariant. |
| audit-cross-surface-back-link.py | every hour | Cross-cutting audit. For each product, verifies every sub-surface (pricing/faq/vs/how-it-works/sales-kit/skeptic-memos/case-studies/unlock/adopt/feedback) links back to /builds/<slug>/. iter 134 invariant. |
| audit-form-labels.py | every hour | For each /unlock/, /adopt/, /feedback/ page, verifies every <input> + <textarea> that expects user input has aria-label, aria-labelledby, OR matching <label for=id>. WCAG 3.3.2 accessibility. iter 133 invariant. |
| audit-cross-surface-utility-bar.py | every hour | Cross-cutting audit. For each product, verifies all 11 per-product surfaces have top-nav (WD_TOP_UTIL_BAR_v1 marker OR wd-utility-bar OR nav.top). Catches surfaces that lost nav during edits. iter 133 invariant. |
| audit-html-lang-attr.py | every hour | For each /builds/<slug>/ index.html, verifies <html lang="en"> declaration. WCAG 3.1.1 accessibility + SEO signal. iter 132 invariant. |
| audit-favicon-coverage.py | every hour | For each /builds/<slug>/, verifies <link rel="icon"> declaration. Prevents browser default /favicon.ico 404 on tab/bookmark display. iter 132 invariant. |
| audit-page-load-size.py | every hour | For each /builds/<slug>/ index.html, flags if file size exceeds 80KB (Lighthouse-aware threshold for fast mobile first-paint). Catches bloat from inline CSS, embedded base64, etc. iter 131 invariant. |
| audit-html-validity-basic.py | every hour | For each /builds/<slug>/ page, checks open vs close tag balance for 20 common tags (div, a, section, etc) PLUS unterminated script/style blocks. Not a full validator - just high-signal mistakes. iter 131 invariant. |
| audit-emoji-presence.py | every hour | Scans all buyer-touching surfaces (builds, pricing, faq, vs, how-it-works, sales-kit, case-studies, skeptic-memos, unlock, adopt, feedback, honest, for, playbooks) for emoji glyphs in user-facing copy. Both literal Unicode emoji and HTML entities (...). Wes feedback: no emojis. iter 130 invariant. |
| audit-cross-surface-tagline.py | every hour | Cross-cutting audit. For each product with a canonical tagline in adoptability.json, verifies the same tagline appears on /pricing/, /vs/, /how-it-works/, /sales-kit/ surfaces. HTML-entity-aware (treats ' as ' before compare). iter 130 invariant. |
| audit-twitter-card.py | every 30 min | Audits every /builds/<slug>/ for twitter:card, twitter:title, twitter:description, twitter:image meta tags. Catches social-share rendering gaps separate from og:* tags (Twitter/X uses twitter:* when present). iter 129 invariant. |
| audit-image-alt.py | every 30 min | Audits every /builds/<slug>/ page for img alt-text coverage. Verifies every <img> tag has alt attribute (accessibility + SEO). iter 128 invariant. |
| audit-image-src-exists.py | every 30 min | Audits every /builds/<slug>/ page for local img src target existence. Verifies every relative or /factory/ image path resolves to a real file on disk. Catches broken hero images, deleted OG paths. iter 128 invariant. |
| audit-internal-links.py | every 30 min | Walks every /builds/<slug>/ page, extracts /factory/ href targets, verifies each maps to an existing file. Catches typo links, references to deleted products, broken cross-links. Avoids HTTP (Caddy fall-through hides broken links from curl). iter 127 invariant. |
| audit-meta-tags-coverage.py | every 30 min | Audits every /builds/<slug>/ page for title, meta description (>=25c), canonical link, all 5 og: tags (title/description/image/url/type), viewport, charset. PLUS brand-name consistency on og:title (catches third-order rename drift). iter 127 invariant. |
| audit-jsonld-coverage.py | every 30 min | Audits JSON-LD on every /builds/<slug>/ page. Verifies parseable, schema.org context, valid @type (Product / AboutPage / TechArticle etc), required fields (name/description/url), AND brand-name consistency between JSON-LD and brand brief (catches second-order rename drift). iter 126 invariant. |
| audit-page-identity.py | every 30 min | Fetches 10 buyer-touching surfaces per slug (/builds/, /pricing/, /faq/, /vs/, /unlock/, /adopt/, /feedback/, /own/, /own/day-one/, /own/operator/) and verifies each response body identifies the right product, not the Caddy fall-through homepage. ~2460 requests per run, ~26s. iter 97, extended iter 98 + 99 + 107 + 110. |
All audits are public: cron status at /cron-status/. Outputs at audit-fakeproof.json and adoptability-drift.json.
18 soft findings across 93 files. These are not violations. The audit flags patterns that could be fake-proof claims (specific conversion percentages, training-corpus references) and we manually verify which are Fermi math or aspirational language in proper context. The catalog convention is that Fermi math is OK if it is clearly framed as a projection. If any of these were unframed customer-result claims, they would be hard findings instead.
Snapshot generated 2026-10-18T11:31:50Z. Updated daily after the 4:30am audit cron.
| Label | File | Phrase |
|---|---|---|
| join-count | _quarantine/2026-05-18/next-unbuilt/ | Join 50+ t |
| join-count | afterhours/ | Join 200+ s |
| cert-claim | builds/after-hours-voice-agent-that-qualifies-freight-inq/ | SOC 2 Type II certified |
| metric-claim | builds/after-hours-voice-agent-that-qualifies-freight-inq/pricing/ | 25-40% conversion |
| count-claim | builds/ai-agent-cost-monitor/financials | 50,000 companies |
| trust-claim | builds/aura-incident-remediation/security | Trusted by S |
| count-claim | builds/auto-generate-polished-saas-demo-videos-from-websi/faq/ | 10,000+ users |
| count-claim | builds/auto-generate-polished-saas-demo-videos-from-websi/financials | 40,000 SaaS companies |
| compliance-claim | builds/bookkeeper-ai/ | SOC 2 Type II compliant |
| star-glyphs | builds/brief-ai/case-studies/ | ★★★★★ |
| join-count | builds/brief-generator-for-independent-consultants/pricing/ | Join 1,200+ i |
| join-count | builds/campus-event-discovery-platform-helping-students-f/pricing/ | Join 8,700+ s |
| count-claim | builds/cdl-enricher/financials | 10,000 companies |
| compliance-claim | builds/claude-chatgpt-perplexity-traffic-analytics/pricing/ | SOC 2 Type II compliant |
| count-claim | builds/claude-prompt-meter/financials | 40,000 teams |