How We Built a Free SEO Audit That Checks 80+ Data Points
TrustGrowth checks 80+ SEO signals across E-E-A-T, technical performance, content quality, and structured data. Here's the architecture, our API integrations, and why we made the technical decisions we did.
TrustGrowth's audit pipeline runs 80+ checks across every visit. Here's how we built it, what we check, and the technical decisions that shaped the product.
What We're Actually Auditing
The 80+ checks are organized into four categories:
E-E-A-T Signals (40+ checks)
Google's quality framework — Experience, Expertise, Authoritativeness, Trustworthiness — maps to real, checkable signals on any website. We check:
- Experience: Original content signals, author attribution, first-person content markers
- Expertise: Author bio presence and quality, content depth indicators, credential signals
- Authoritativeness: Schema markup completeness, social profile linking, content consistency
- Trustworthiness: HTTPS configuration, security headers, legal page presence, contact info
Technical Performance (20+ checks)
- Core Web Vitals from Google's PageSpeed API (real field data where available, lab data fallback)
- Crawlability: robots.txt, sitemap validity, canonical tags, redirect chains
- Mobile usability: viewport, touch targets, font sizes
- Security: SSL configuration, security headers, mixed content
Content Quality (10+ checks)
- Title and meta description optimization
- Heading hierarchy
- Internal linking structure
- Keyword signal coverage
- Content freshness indicators
Structured Data (10+ checks)
- Schema type presence (Organization, WebSite, Article, FAQ, BreadcrumbList)
- Schema validity (no broken markup)
- Rich result eligibility
The Technical Stack
We built TrustGrowth on Rails 8.1 with a deliberate bias toward boring, proven technology:
Audit pipeline architecture:
The audit runs through a handler-based pipeline. Each handler is responsible for one domain (EEAT, technical, content). Handlers are composable — you can add new checks without touching existing ones.
# Each handler follows this pattern
class Handlers::Eeat::CheckAuthorBio < BaseHandler
def call
score = calculate_score
record_signal(:author_bio, score: score, details: details)
end
end
API integrations:
- Google PageSpeed Insights API — Core Web Vitals and performance data
- Google Search Console API — GSC data, keyword rankings, click/impression data
- DataForSEO — supplemental keyword data
We wrap all external API calls with a rate limiter, retry logic with exponential backoff, and an instrumenter that logs everything to the database. If an API is down, we degrade gracefully (skip that check, don't fail the whole audit).
Scoring:
Each signal returns a score from 0-100. Signals are weighted by impact. Category scores are weighted averages. The overall E-E-A-T score rolls up from the four dimension scores.
The Growth Score — our headline metric — pulls from GSC data to compute keyword growth, traffic growth, and baseline progress. This runs weekly after we have enough data snapshots.
Why Free?
We're free to start because we believe getting value quickly is the best way to build trust (no pun intended). The free tier gives you:
- 1 site
- 1 audit
- Full audit report with all 80+ checks
Paid plans unlock daily audits, multiple sites, and the Growth Score tracking over time.
What's Next
The audit pipeline is the foundation. On top of it, we're building:
- AI-assisted content strategy — using your audit results to generate a tailored content plan
- Content calendar — planned posts tied to your keyword targets
- Draft generation — first drafts for content in your calendar
The goal is to close the loop from "here's what's wrong" to "here's what to write" to "here's a draft."
We're building in public. Follow along on Twitter and check the build-in-public posts on this blog.
Know your site's real SEO score
Free GSC-verified audit, E-E-A-T scoring, and AI-powered content strategy.
Get Started Free