Search visibility & growth — local-service trades

Own the search results your next customer is already typing.

GrowthOS tracks every keyword and map-pack position you compete for, finds the businesses searching for what you sell, and runs the outreach you approve — reporting confirmed revenue and inferred revenue in separate columns, always.

No card required · Rank baseline in 4 minutes · 1,180 tracked keywords per org

SERVOSA PLUMBING — AUSTIN, TXTRACKING

Organic impressions

12 months+318% YoY

Map pack — “emergency plumber austin”

1Servosa Plumbing▲ 6
2Barton Creek Plumbing Co.▼ 1
3All-Hours Drain & Sewer● 0
4Lone Star Rooter▼ 2

Position verified 14 min ago · 3 competitors watched

1,180 keywords tracked4.2M local searches indexed92% of sends approved first pass$0 inferred revenue counted as real
The gap

The demand already exists. You just aren’t in the frame when it fires.

Local-service buying is a same-day decision made on a search results page. GrowthOS measures the distance between the searches happening in your service area and the ones you actually show up for.

76%

of local searches end in a call within 24 hours

Rank is not vanity for a trade business. It is the queue you are standing in when the water heater fails.

3

listings get 88% of map-pack clicks

Position four is the first page of nothing. GrowthOS treats top-three as the only target worth reporting.

41%

of your tracked keywords have no page behind them

Every uncovered term is scored by search volume and close rate, then queued for the content engine.

Share of voice — Austin metro, plumbing

Servosa Plumbing34.1%
Barton Creek Plumbing Co.26.8%
All-Hours Drain & Sewer19.4%
Lone Star Rooter11.2%
Everyone else8.5%

Weighted by keyword volume × position CTR curve · refreshed daily

The console

One surface: what you rank for, who is searching, what it earned.

Rankings without revenue is a report. Revenue without evidence is a guess. The console keeps both on the same screen, and shows the math behind every number on it.

Compounding: content published vs. inbound booked

+$14.6k confirmed

Each published page is joined to the jobs it sourced. Attribution is tagged direct, assisted, inferred, or unknown — and only direct and assisted roll into confirmed revenue.

Growth score
62.4weighted, 5 inputs

Pipeline health, engagement, momentum, confirmed-revenue-vs-spend, and data quality — each shown with the exact formula that produced it.

Pipeline
48Found
31Qualified
17Engaged
6Booked
4Won

Fourteen guarded stages from discovered to won. Every move records who, why, and with what evidence — manual overrides allowed, and permanently stamped as overrides.

Why this lead scored 83
fit 0.92 × 0.30 27.6 verified intent 0.88 × 0.25 22.0 verified timing 0.79 × 0.20 15.8 verified budget 0.71 × 0.15 10.7 inferred engage 0.73 × 0.10 7.3 verified ───────────────────────────── total 83.4 model v4.2

No black-box number. Click any score and the weights, evidence, and model version that produced it are on screen.

Waiting on you
1approval queued
0sent unapproved

Bulk outreach is drafted, batched, and parked until a human admin clears it — and never the person who requested it.

Process

Four steps, in order, and you are the gate on the last one.

STEP 01

Baseline

Connect your site, listing, and billing history. GrowthOS crawls what you rank for today and builds a provenanced profile of what you sell and who buys it.

STEP 02

Cover the gap

Uncovered keywords are scored by volume and close rate, then turned into briefs and pages that target the searches worth winning.

STEP 03

Reach out

Prospects who match your best customers are found, deduplicated against your book, and scored with a factor model you can audit line by line.

STEP 04

Approve, then track

Nothing sends without a human decision on record. Replies, jobs, and revenue flow back to the console — confirmed and inferred, never blended.

Why owners keep it

Everything a growth team does — audited, tireless, yours.

Rank

Position tracking that names the competitor

Daily map-pack and organic positions for every term in your service area, with the three rivals moving against you called out by name.

Content

A content engine pointed at revenue

Briefs are ranked by search volume multiplied by your own close rate on that job type — not by what is easiest to write.

Discovery

Prospects that look like your best customers

Continuous discovery across plumbing, HVAC, electrical, and roofing — enriched with licensing, reviews, and firmographics, kept fresh automatically.

Provenance

Every fact carries a source

Source, confidence level, and verification status on each learned fact. Conflicting facts are surfaced for a decision, never silently overwritten.

Control

Suppression, quiet hours, rate limits

An opt-out hits your tenant's suppression list instantly across channels. Blocked sends are logged, not silently dropped.

Isolation

Your data is your data

Row-level organization scoping on every query. A cross-tenant access attempt reads as 404 — indistinguishable from an org that does not exist.

Pricing

Trust is not an upsell.

Both tiers include human-in-the-loop approvals, the full audit trail, and honest revenue reporting.

Scale
Custom
  • Unlimited keywords, locations, and seats
  • Multi-brand roll-up reporting
  • Priority onboarding and migration
  • Custom integrations and data residency
Talk to us
Questions

The parts people ask about twice.

Will GrowthOS send messages without my approval?

No. Bulk outreach is blocked until a human admin approves an auditable request — and the requester can never approve their own batch. That rule is enforced in code and covered by tests, not just policy.

How fast do rankings actually move?

Map-pack positions respond in days once listing data and review velocity are corrected. Organic terms behind new pages typically take six to twelve weeks. The console shows the baseline it started from, so the claim is checkable.

How is the lead score calculated?

A weighted sum of named components — fit, intent, engagement, timing, budget — stored with its weights, evidence, confidence, and the weight-model version used. Recalculations append to history, so you can always see what the score was and why.

Do you count estimated revenue as real revenue?

Never. Attribution is tagged direct, assisted, inferred, or unknown. Confirmed figures include only direct and assisted; inferred estimates sit in their own column, labeled as estimates.

What happens when someone opts out?

The contact lands on your suppression list immediately, across every channel. Every future send is checked against that list before it reaches a transport, and blocked sends are logged rather than silently dropped.

Get a baseline

See exactly where you rank today. Then watch it move.

Four minutes to a keyword and map-pack baseline for your service area. No card, no call, no obligation to keep it.