The pros, at a glance
Live counts. Refresh on every deploy.
What "verified" actually means
We confirmed the OCILB license number against the Ohio Construction Industry Licensing Board lookup. License is currently active. Number is published on the pro's profile so you can verify yourself in 30 seconds.
We confirmed NAP (name + address + phone) accuracy against multiple public sources (BBB, Yelp, Chamber of Commerce, the pro's own website). License verification is queued — trade-types like concrete, tree-service, and appliance-repair don't have state licensure in Ohio at all, so these stay directory-listed by definition.
Verification freshness
Pros re-verified per month, last 6 months. Quarterly cadence at minimum.
| Month | Pros verified | % of directory |
|---|---|---|
| 2026-05 | 536 | 100% |
Coverage by trade
How many pros we have per trade, and how many have OCILB license verification.
| Trade | Total | OCILB-verified | Notes |
|---|---|---|---|
| plumber | 100 | 89 | OCILB-licensable trade |
| hvac | 97 | 87 | OCILB-licensable trade |
| electrician | 79 | 70 | OCILB-licensable trade |
| appliance repair | 36 | — | Not state-licensed in Ohio |
| gas tech | 21 | — | Not state-licensed in Ohio |
| concrete | 34 | — | Not state-licensed in Ohio |
| roofing | 37 | — | Not state-licensed in Ohio |
| tree service | 36 | — | Not state-licensed in Ohio |
| restoration | 70 | — | Not state-licensed in Ohio |
| tech repair | 55 | — | Not state-licensed in Ohio |
Coverage by city (top 10)
Three audits run before every merge
- 1. NAP audit
Every pro's name, address, phone is checked for format and consistency. State must be OH. ZIP must be a real Toledo or Findlay-area code. Phone must match a 10-digit US format. Tool:
tools/nap-audit.ts. - 2. Geo audit
Every pro's lat/lng must fall inside the NW Ohio bounding box (40.95–41.78°N, -83.95 to -83.35°W). City must match a known metro city. ZIP must be in the city's known ZIP set. Catches Holland, MI mistakes from Holland, OH 43528. Tool:
tools/geo-audit.ts. - 3. Schema audit
Every pro generates valid Schema.org LocalBusiness JSON-LD. Required fields enforced. @type must be a recognized subtype (Plumber, Electrician, HVACBusiness, RoofingContractor, ProfessionalService, etc.). Tool:
tools/validate-schema.ts.
0 issues across 536 pros · all audits last passed during the latest build · re-runs on every commit · merge blocked if any audit fails.
How we make money
Three revenue streams, all clearly labeled. Lines we don't cross are explicit.
- Featured listings
Pros can pay $49–$199/month for a featured slot. Featured pros are flagged "Sponsored" on their card. Always opt-in by the pro, never opt-in by us. Featured status does NOT affect license-verification status — verification is independent.
- Affiliate links + display ads
A small number of affiliate links (e.g., to HomeAdvisor's free quote tool when our verified directory doesn't yet have the pro you need). Every affiliate link is marked
rel="sponsored nofollow"per FTC guidance. Display ads are non-intrusive Google AdSense slots disclosed in the page chrome. - B2B subscriptions (forthcoming)
Realtors, property managers, and HOAs will be able to subscribe to our embeddable widget + bulk cost-data feed. Pricing: $49+/month. Homeowner-side stays free forever.
- No paid lead resale. We don't sell homeowner phone numbers to 5 pros at $20 each. That's the HomeAdvisor model and homeowners hate it.
- No fake reviews or fake "response time" stats. Every review comes from a real public source with attribution. We don't fabricate numbers — including this page.
- No paid placement that isn't disclosed. If a pro is featured, the card says so. If a link is affiliate, the link says so.
- No selling homeowner data. The /recommend-a-pro form, /near-me geolocation, and /save (bookmarks) data stays on your device. We don't have a database of homeowners.
Open data
Everything we publish is also queryable as raw data. Cite freely under CC BY 4.0.
Spot something wrong?
We'd rather you tell us than have you trust the directory less. If a pro's license isn't current, an address is wrong, or a stat looks off — we want to know.