For agencies
Make excellent client work repeatable.
The hard part of local SEO delivery is not knowing what to do. It is producing the same standard of thinking on twelve accounts in the same month, and being able to show a client why each decision was made. Localense turns that into one loop with the evidence attached.
- 15 client projects on Agency
- Read-only Google connection
- Built by an agency running it on its own clients
One workspace. Every client.
Connect → Prioritize → ReportThe delivery loop
One month, four moves, on every account.
The same sequence runs whether it is a single-location client or a fifteen-location one. What changes is the evidence it produces, not the process you have to remember.
Step 1: Onboard in one pass
A four-step wizard captures the business, its services and service areas, and its primary location, then creates the project, profile, site and location in one atomic operation. A failed validation leaves no half-built project behind.
Step 2: Connect and crawl
The client authorizes Search Console and Analytics through their own Google account. Localense backfills 16 months of daily search rows, crawls the site against 32 audit rules, and adds up to four competitor domains for a crawl-based comparison.
Step 3: Decide from the queue
Audit findings, almost-there keyword clusters, competitor gaps, profile gaps and AI visibility gaps become one scored list. Each item carries its factors, its evidence rows and the provider each row came from.
Step 4: Report and repeat
Generating a report freezes the data it used and produces HTML, Markdown and a real PDF together, with an appendix dating every source. Next month's audit diff shows what was fixed, what is new and what regressed.
Fix: 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
Defensible work
Win the “why this and not that” conversation before it starts.
The uncomfortable part of a client call is rarely the work itself. It is being asked why this task is above that one and having only judgement to offer. Every item in the queue answers that question on its own face.
The score is impact times confidence times business value times urgency, divided by effort. All five factors and the resulting number are printed on the card, so a client or a colleague can challenge one input rather than the conclusion.
Under it sits the evidence: whether the fact was crawled by us or reported first-party by Google, which provider it came from, and the exact record it points at. When a recommendation is questioned six weeks later, the receipt is still attached.
Sell decisions with receipts, not dashboards with more charts.
How the opportunity engine scores workWhat the client receives
A report that survives being read closely.
Three templates, generated from one immutable snapshot into HTML, Markdown and PDF at the same time. The version you sent in March still says exactly what it said in March, because the data behind it was frozen at generation.
Broken internal links
Why it matters
Internal links that land on error pages frustrate visitors and send crawlers into dead ends, wasting authority the site already has.
Recommended fix
Update or remove every internal link pointing at these URLs, or bring the target pages back online.
CRAWLSite crawl · 142 pages · audited 4h ago
Every section carries a line like this
GSCSearch Console · Jun 1-30 · synced 2h ago
Three templates
Monthly summary, technical audit and action plan. Each ends with an evidence and freshness appendix recording the Search Console sync, crawl, audit, local import and generation timestamps.
Your branding
Agency name, primary and accent color, logo and footer text applied across the client-facing output, set once per organization.
Expiring share links
Send a link that shows the report and nothing else. No client account, no workspace access, and an expiry you control.
No invented zeros
Where a source had nothing to say, the report writes “Not available”. A missing month and a zero-click month are different facts and stay different on the page.
Changes in context
Annotate deployments, content releases, algorithm updates and business events on their date, so a movement in next month's trend has a cause beside it.
Generated as a job
Report generation runs in the background with visible status and real failure detail. A duplicate request for the same template returns a conflict instead of quietly spawning a second job.
Control at scale
Fifteen clients, one process, strict boundaries.
Every project belongs to exactly one organization, and access is granted deliberately rather than inherited. Growing the roster should not mean growing the number of things you hope nobody clicks.
Projects per plan
Starter 3, Agency 15, Scale 50. The limit is checked when a project is created, with a clear message naming the plan and its allowance rather than a generic failure.
Roles and invitations
Owner, admin and member. Invitations expire after seven days and are stored as token hashes, acceptance is restricted to the invited address, and admins can invite members but cannot create admins or touch the owner.
Tenant isolation
Organizations and projects are isolated at the query layer, stored Google credentials are encrypted at rest, and cross-tenant route coverage is part of the test suite rather than an assurance.
Schedules that run themselves
Per-project crawl frequency of manual, weekly or monthly, incremental Search Console and Analytics syncs, and scheduled AI visibility prompt runs.
Alerts before the client calls
Six alert kinds: crawl failure, key page error, Search Console drop, high-value query decline, integration sync failure and AI visibility drop, each with its own threshold and digest setting.
An audit trail
Member changes, key creation, webhook secret rotation, MCP calls and every queued mutation are written to the organization audit log with the actor who caused them.
Automate the repetitive half
Let an agent do the reading, and keep the judgement.
Pulling the queue, checking whether last month's fixes held, drafting the first pass of a report: all of it is available to an agent over MCP. The same core services back the dashboard, the REST API and the MCP surface, so an agent reads the real action queue rather than an export of it.
68 MCP tools
Projects, integrations, crawls, audits, keywords, competitors, local metrics, AI visibility, alerts, reports, opportunities and jobs.
Bound to one client
An agent client can be limited to a single project. Its keys inherit a subset of its scopes, and everything outside that project returns a 404.
Signed webhooks
Nine event types with an HMAC-SHA256 signature, five delivery attempts on exponential backoff, and a per-endpoint delivery history.
Jobs, not guesses
Long-running tools return a job reference and a status URL, so an agent polls real progress instead of sleeping and hoping.
claude mcp add --transport http localense https://mcp.localense.com/mcp \
--header "Authorization: Bearer lsk_..."
# agent turn
→ opportunity.list { project_id: "…", status: "open", limit: 3 }
{
"ok": true,
"data": {
"items": [
{
"category": "technical_fix",
"opportunity_key": "technical_fix:CRAWL_4XX",
"title": "Fix: Pages returning 4xx client errors",
"status": "open",
"priority_band": "critical",
"impact": 0.7,
"confidence": 1.0,
"business_value": 0.8,
"urgency": 0.6,
"effort": 2,
"score": 0.168,
"score_inputs": { "rule": "technical_fix", "severity": "high", … }
},
{ "opportunity_key": "content_update:cluster:builder composite deck", "score": 0.046, … }
],
"next_cursor": null
}
}
Checkable numbers
No customer counts. Just what the product does.
Localense is early, and inventing social proof would contradict the entire point of it. These are facts about the software, each one verifiable in the product itself.
15
Client projects included on the Agency plan
Agency limit in localense_core/billing/service.py
32
Audit rules evaluated on every crawl
CRAWLALL_RULES in localense_audit/registry.py
16mo
Search Console history backfilled on connect
GSCBACKFILL_MONTHS in localense_core/jobs/tasks.py
3
Report formats generated from one frozen snapshot
HTML, Markdown and PDF from one report snapshot
Localense is built by a web and SEO agency that runs it on its own client work. When a workflow here feels opinionated, it is because it had to survive a real delivery month first.
Questions
What agency owners ask first.
How many client projects does a plan include?
Can I white-label what the client sees?
What do I connect for a new client?
Will the tool argue with my own judgement?
Can I automate the repetitive half of delivery?
Start with one account
Run your hardest client through it first.
Connect their Google data, crawl the site, and see whether the queue tells you something your last audit missed.
14-day trial · no card required · read-only Google access