Skip to content
Localense

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 → Report

The 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.

  1. 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.

  2. 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.

  3. 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.

  4. 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.

Opportunity detailSample project data
criticalTechnical fixopen0.168

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

Impact0.70
Confidence1.00
Business value0.80
Urgency0.60
Effort2
Score0.168

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 work

What 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.

How a finding reads in a client reportSample project data
highBROKEN_INTERNAL_LINKS14pages

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.

mcp.localense.com/mcp68 tools
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?
Starter includes 3 projects, Agency includes 15 and Scale includes 50. The limit is on active projects rather than on seats, users or connected properties, and it is enforced when a project is created rather than silently at some later point.
Can I white-label what the client sees?
Reports carry your agency name, primary and accent color, logo and footer text, and can be shared through an expiring link that shows the report without giving access to the workspace. The application itself is not resold under your own domain.
What do I connect for a new client?
Google Search Console and Google Analytics 4 through the client's own OAuth grant, then the site domain for crawling and up to four competitor domains. Business Profile data comes from a customer-authorized CSV import because the separate Google Business Profile API approval is not enabled for Localense.
Will the tool argue with my own judgement?
It is built not to. Every opportunity shows its five factors and the arithmetic that ranked it, plus the evidence rows and providers behind it, so you can override a confidence or an effort estimate on a specific item instead of discarding the whole queue.
Can I automate the repetitive half of delivery?
Yes. The REST API and 68 MCP tools run over the same core services as the dashboard, keys are scoped and revocable, agent clients can be bound to a single project, and nine webhook event types are delivered with an HMAC-SHA256 signature and five retry attempts.

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