For local and multi-location businesses
Be findable in every market you serve.
You do not need another dashboard telling you traffic is down. You need to know which pages are broken, which searches you nearly rank for, which locations are behind, and what to do about it first. Localense answers that from your own data and shows its working.
- 14-day trial, no card
- Read-only Google connection
- No invented traffic estimates

How it starts
Three steps to a list you can actually work through.
No strategy workshop, no import of somebody else's benchmark. Localense reads what is already happening on your site and in your search data, then ranks what to change.
Step 1: Connect and describe the business
A short wizard captures your services, service areas and locations, then you authorize Search Console and Analytics with your own Google account. Localense backfills 16 months of daily search data on connect.
Step 2: Crawl the site
The crawler walks your site the way a search engine does, respecting robots rules, and evaluates 32 audit rules. Pages that only render with JavaScript get a second pass in a real browser so they are judged on what a visitor sees.
Step 3: Work the queue
Findings from the audit, your search data, competitor pages, your profile checklist and AI answers become one scored list. Each item states the recommended action and the success metric that would prove it worked.
| Query | Clicks | Impressions | CTR | Avg pos | Δ clicks |
|---|---|---|---|---|---|
| composite decking installer/services/composite-decking/ | 34 | 6.2 | |||
| deck builder near me/ | 27 | 7.4 | |||
| composite deck builder/services/composite-decking/ | 19 | 7.8 | |||
| trex deck installation/services/composite-decking/ | 12 | 9.4 | |||
| screened porch contractor/services/screened-porches/ | 8 | 11.9 |
GSCSearch Console · last 28 days · synced 2h ago
The demand you already have
The cheapest growth is the searches you nearly win.
Before chasing new keywords, look at the ones where you already appear on page two. Almost There lists every query averaging position 4 to 15 with at least 50 impressions, mapped to the page that ranks for it.
Six more views sit beside it: winning, declining, new, lost, low CTR and top. Each definition is printed rather than implied, so declining means clicks fell at least 25 percent and at least 5 clicks, not whatever the tool felt like that week.
Everything filters by date range, query, page, device, country and by the services and locations you mapped, and the CSV export takes exactly the same parameters as the screen.
The site itself
Find the quiet breakages before a customer does.
A local site rarely fails loudly. It fails as a dead service page, a location page missing its business schema, a phone number nowhere in the markup, a redirect chain that eats every link you earned.
32 rules, plain language
Status codes, redirects, broken internal links, indexability, canonicals, titles, descriptions, headings, thin and duplicate content, image alt text, JSON-LD validity, LocalBusiness schema, phone presence, mixed content and HTTP pages.
CRAWLA score you can check
The health score prints its own formula, the weight of each severity and the exact deduction each issue caused. It is deterministic arithmetic, not an AI guess or a traffic estimate.
CRAWLThe affected URLs, kept
Every finding lists the pages it hits and always reports the true total, so you can hand a developer a list rather than a diagnosis.
CRAWLProgress, run to run
Each audit records which issues are new, which are fixed and which came back, so improvement is a fact from your own data instead of a claim in a slide.
CRAWL
No LocalBusiness structured data anywhere on the site
Why it matters
LocalBusiness schema is how search engines connect the site to a real-world business with an address, hours, and service area; without it the site competes with weaker local signals.
Recommended fix
Add LocalBusiness JSON-LD (or the closest subtype) with name, address, phone, and hours, ideally on the homepage and contact page.
CRAWLSite crawl · 142 pages · audited 4h ago
The wording is the rule's own. Nothing on this card was written for the marketing site.
Multi-location
One weak market should not hide behind three strong ones.
Blend five locations into a single line and the one that is quietly failing disappears. Localense maps each location to its own landing pages, so every number resolves to a market you can act on.
Each location carries its own address, phone and page URLs, and one can be marked primary. Search Console clicks, Analytics sessions and the open action queue are then resolved against those pages, each with its own provenance line rather than a shared footnote.
The Business Profile checklist is scored per location too, so the market with missing hours and no services listed is visible as a gap rather than averaged away.
An average across markets is the fastest way to lose the market that needs you.
| Location | Clicks | Avg pos | Sessions | Open actions |
|---|---|---|---|---|
| Austin, TX/locations/austin/ | 214 | 5.8 | 3 | |
| Round Rock, TX/locations/round-rock/ | 63 | 11.4 | 7 | |
| Cedar Park, TX/locations/cedar-park/ | 27 | 14.2 | 9 |
GSCSearch Console · last 28 days · synced 2h ago
GA4Analytics 4 · last 28 days · synced 2h ago
Your Business Profile
A completeness score with every weight printed on it.
Google Business Profile API access requires a separate Google approval that is not enabled for Localense. Until it is granted, profile data comes from a customer-authorized CSV import, and Localense tells you which source you are looking at.
Import what you can export
Download a template covering identity, categories, description, services, hours, attributes, review and photo counts and the performance figures you have access to. Re-importing the same location updates its snapshot rather than duplicating it.
IMPORT100 points, 10 checks
Primary category 15, services 15, hours 15, description 10, attributes 10, reviews present 10, review responses 10, additional categories 5, photos 5, website 5. No correlation claim is attached to the total.
IMPORTLive Places lookup
Google Places (New) text lookup is built and ships behind a restricted server key that is not enabled yet. Results are fetched live, carry Google attribution and a Maps link, and are never stored or trended, as the Places terms require.
PLACESGaps become work
Every unchecked item generates a scored Business Profile opportunity in the same queue as your technical and content work, ranked by the same formula.
AI answers
Customers are asking assistants who to call. Find out what they hear.
Write the questions your buyers actually ask, route them through OpenRouter to OpenAI and Perplexity models, and keep every answer as a dated snapshot. Running a prompt needs an OpenRouter key configured on the server; without one, prompt management still works and a run fails with an explicit provider-unavailable error rather than a fabricated result.
What each answer told you
Whether you were mentioned, recommended and cited, your position in the answer, the sentiment, which competitors were named instead and which URLs were linked.
AITracked over time
Mention rate, recommendation rate, citation share, average position and competitor overlap across a prompt set, run on demand or weekly or monthly.
AIThe response, kept
Every completed run stores the response text along with the provider and model that produced it, so a later model change cannot rewrite what you saw.
AIGaps and regressions
Prompts where you are absent become scored opportunities, and an AI visibility drop alert watches for a set that gets worse between runs.
Why this sits next to your site audit
Assistants answer local questions from the same public signals search engines read: your pages, your structured data, your listings and what other sites say about you. The work that makes you legible to a crawler is largely the work that makes you quotable to a model.
So an AI visibility gap does not open a separate workstream. It lands in the same queue, ranked by the same formula, next to the broken location page and the missing LocalBusiness schema that probably caused it.
See what a run recordsFix: Pages returning 4xx client errors
Pages that return 4xx errors waste crawl budget, break the visitor journey, and drop out of the index.
Recommended action
Restore the page, redirect the URL to the closest live page, or remove every internal link pointing at it.
Success metric
CRAWL_4XX affects 0 pages in the next site audit (currently 6)
Score breakdown
Evidence (1)
- CRAWLCRAWLEDcrawler · audit_issue
Site audit found CRAWL_4XX (high) affecting 6 page(s).
- issue_code
- CRAWL_4XX
- severity
- high
- category
- status
- affected_count
- 6
technical_fix:CRAWL_4XX
Site crawl · audited 4h ago
One queue
Everything the tool found, in the order worth doing it.
Site issues, keyword clusters just off page one, topics competitors cover and you do not, profile gaps and AI visibility gaps all land in the same scored list. Seven categories, one formula.
The score is impact times confidence times business value times urgency, divided by effort, and all five factors are shown. If you think a job is harder than the tool assumed, you can see exactly which number to argue with.
Under it sits the evidence: whether the fact was crawled from your site or reported by Google, and the record it points at. Each item also carries the success metric that would prove the work paid off, so next month has a scoreboard.
Checkable numbers
Facts about the software, not claims about customers.
Localense is early. Inventing testimonials would contradict the whole point of a product built on showing its evidence, so here is what it measurably does instead.
32
Audit rules evaluated on every crawl of your site
CRAWLALL_RULES in localense_audit/registry.py
16mo
Search Console history backfilled when you connect
GSCBACKFILL_MONTHS in localense_core/jobs/tasks.py
100pts
Profile completeness checklist, every weight visible
IMPORTWeighted checks in localense_core/local_seo/service.py
7
Query views over your own search data
GSCQUERY_VIEWS in localense_core/search_analytics/service.py
Where a value is inferred rather than measured, it is labelled as inferred and carries a confidence number. Where a source has nothing to say, you get an en dash and the name of the source, never a zero standing in for missing data.
Questions
What owners ask before connecting anything.
What do I have to connect before this is useful?
Does it connect to my Google Business Profile?
How does it handle more than one location?
Will it tell me how much traffic a keyword could bring?
What do I need for the AI visibility feature?
Do I need someone technical to act on this?
Start with your own site
Run one crawl and see what it finds.
Connect read-only Google access, crawl the site, and read a scored list where every item shows the evidence behind it.
14-day trial · no card required · read-only Google access