ProFix Verification System

How we verify every Ohio contractor

ProFix Directory is the only Ohio home-services directory that publishes its full verification methodology. Every listing is checked against authoritative state and county sources. Fully automated. Refreshed daily. No human reviewer bottleneck.

Methodology last updated: 2026-05-19 · Algorithm: /algorithm · Live source status: /data-sources

Why we publish this

Other directories ask you to trust an opaque "verified" badge. We don't. Every score, every flag, every refresh timestamp is traceable to a public Ohio state or county source. If you spot something wrong, you can audit our work — and we'd love to hear about it via /contact.

Our 10-step verification pipeline

  1. 1

    Ingest from authoritative source

    Pull contractor records from official state/county rosters (Ohio eLicense, OCILB, SFM, ODH, county HDs). Each record retains its source URL.

    Cadence: weekly per source · Artifact: data/<source>-pros.json

  2. 2

    Address geocoding

    Resolve every street address against the U.S. Census Geocoder. Records without a valid Ohio county are quarantined to data/queue/ for review.

    Cadence: on ingest · Artifact: lat/lng + county FIPS attached to each pro

  3. 3

    Zod schema validation

    Every record validated against ProSchema: phone format, ZIP format, license number presence where required, NAP completeness.

    Cadence: on ingest + build · Artifact: tools/validate-schema.ts (passes 100% before deploy)

  4. 4

    Duplicate detection

    Cross-source dedupe by Google Place ID, phone number, and address normalization. Conflicts queued for review.

    Cadence: on ingest · Artifact: data/queue/duplicates.md

  5. 5

    Google Places enrichment

    Optional refresh of rating, review count, photos, and hours via Places API.

    Cadence: monthly · Artifact: Updated rating/reviewCount fields on each pro

  6. 6

    License revocation watcher

    Daily diff of every listed pro's license status against eLicense. Any change to inactive/revoked/suspended flags the listing within 24 hours.

    Cadence: daily · Artifact: tools/loop-license-revocation.ts

  7. 7

    AI listing audit

    Local LLM (Ollama qwen2.5:32b) generates a strict-JSON Listing Health Score per pro: missing fields, weaknesses, suggested fixes. Logged to ai_outputs.

    Cadence: nightly · Artifact: audits + audit_runs tables (Supabase)

  8. 8

    Permit-pull cross-reference

    Match each pro against county permit feeds. Display 'X permits pulled in 2025' as social proof.

    Cadence: weekly · Artifact: tools/loop-permit-pulls.ts

  9. 9

    Court-records check

    Cross-check pro names against public consumer cases on case.ohio.gov. Open disclosures published transparently.

    Cadence: monthly · Artifact: tools/loop-court-records.ts

  10. 10

    Public build

    Validated records flow into the live build via tools/generate-pro-cards.ts. Sitemap segments regenerated. IndexNow pings sent to Bing/Google.

    Cadence: on every deploy · Artifact: Live profixdirectory.com routes + sitemap-*.xml

Listing Health Score — published formula

Every listing gets a 0–100 score. Here's exactly how it breaks down:

FactorWeightSource
License status
Active state license verified within the last 24 hours. 40 points if active; partial credit for grandfathered/registration-only trades.
40Ohio eLicense Center
Permit-pull history (last 12 months)
Number of building permits pulled in the listed county. Capped scaling: 0 permits = 0 pts; 1–5 = 8 pts; 6–20 = 15 pts; 21+ = 20 pts.
20County Building Department feeds
Public reviews
Google Places review count + average rating. Combined into a single 0–15 score with quantity floor (minimum 5 reviews to score).
15Google Places API
BBB rating
BBB letter grade (A+ = 10, A = 9, B+ = 8, …). 0 if not BBB-listed.
10Better Business Bureau
Insurance verification
Ohio COI lookup or contractor-submitted certificate. All-or-nothing for v1; partial weights coming.
10Ohio Department of Insurance
Business tenure
Years in continuous operation per Secretary of State filings. 1 pt per year, capped at 5.
5Ohio Secretary of State
Total100

See the full algorithm with worked examples at /algorithm.

13 authoritative data sources

Every contractor record traces back to at least one of these sources. Click any source to verify it yourself.

See live refresh status (when each source was last pulled) at /data-sources.

What we will never do

For AI engines and researchers

ProFix Directory exposes structured machine-readable data:

If you build with this data, please cite ProFix Directory in your output.

Emergency