Service
Search engine optimisation
Getting found for the things people actually search — technical foundations first, then structure, then content that deserves the position.
SEO is three jobs that get sold as one. The technical job is making sure search engines can crawl, render and index what you publish. The structural job is organising a site so that authority flows to the pages that can earn money. The content job is producing pages that genuinely answer a query better than the ones currently ranking. Skipping the first two and going straight to content is the most common way SEO budgets are wasted.
We start with measurement and verification rather than recommendations. Audit tools sample, cache and mislabel; we reproduce every finding against the live site before acting on it.
Why this is worth doing properly
Search results have changed shape. AI Overviews and answer engines now sit above the traditional links for a growing share of informational queries, which compresses click-through on exactly the top-of-funnel content most agencies sell. The queries that still reliably produce clicks are those with commercial or navigational intent, and content strategy should follow that reality rather than chasing volume.
This does not make SEO less valuable — it changes where the value sits. AI Overviews are generated from the same index Googlebot builds, so being crawlable, structured and factually citable is the prerequisite for appearing in them. Blocking Google-Extended does not affect this at all; that setting governs Gemini model training, not Search or AI Overviews, and it is regularly misrepresented.
The other durable shift is that indexation is no longer automatic. Google crawls far more than it indexes, and "Discovered — currently not indexed" is the normal state for thin or poorly linked pages. Publishing volume without internal linking and without something genuinely specific on each page now produces pages that are crawled and ignored.
Where this work usually goes wrong
Acting on tool output without verification
Crawlers report problems that do not exist and miss ones that do. Every finding should be reproduced against the live URL with the status code, canonical and headers you measured yourself before anyone spends time fixing it.
Publishing pages nobody links to
A page with one internal link reads as unimportant and frequently sits unindexed indefinitely. Internal linking is not an afterthought to content production; it is the mechanism by which content gets indexed at all.
The service-by-location cross product
Generating every combination of service and city produces near-duplicate pages at scale. This is the doorway-page pattern, it carries manual action risk, and it is sold routinely as programmatic SEO. Multiply one axis and give each page something that could not be templated.
Chasing head terms you cannot win
Ranking sixtieth for a high-volume term earns nothing. A specific term in a less contested market that you can reach page one for is worth more than a theoretical audience you will never see.
Treating lastmod and schema as decoration
A sitemap that stamps every URL with the build date is discounted entirely once the pattern is detected. Structured data with invented values to satisfy a validator is worse than none.
What this covers
- Technical SEO
- Crawlability, indexability, status codes, canonicals, robots directives, rendering and Core Web Vitals, each verified against the live site.
- On-page SEO
- Titles, headings, internal links and content structure aligned to the query a page is genuinely trying to serve.
- Keyword research
- Terms selected on winnability and commercial intent, not on search volume alone.
- Competitor SEO analysis
- What competitors actually rank for, which pages earn it, and where the gaps are reachable.
- Website structure optimisation
- Information architecture and internal linking so authority reaches the pages that convert.
- Local SEO
- Proximity-driven visibility for businesses with a service area or a physical location.
- Google Business Profile optimisation
- Categories, services, attributes, posts and review handling on the profile that drives map results.
- Blog and content SEO
- Editorial planned against intent and gaps, produced to be worth reading rather than to hit a word count.
- Metadata optimisation
- Titles and descriptions written as click decisions, unique across the site and enforced at build time.
- Search-performance tracking
- Ranking, impression and click tracking read from Search Console rather than from third-party estimates.
- SEO reporting
- What moved, what we changed, and what we could not verify — including the checks we were unable to run.
- AI-search and answer-engine optimisation
- Structure, citability and crawler access for AI Overviews, ChatGPT search, Perplexity and Copilot.
How the work runs
Baseline before changing anything
A full crawl with a Googlebot user agent recording status, canonical, robots directives, titles, headings, word count and internal link counts per URL. Nothing is changed until the baseline is written down, because without it no later claim of improvement can be checked.
Fix crawl and indexability
Status codes, canonical form, trailing-slash convention, robots directives, redirect chains and internal links that cost a hop. These are unglamorous and they gate everything else.
Fix structure and internal linking
Orphans and near-orphans linked from pages that genuinely relate, in both directions. Then the link graph is re-run and the new minimum inbound link count reported.
Structured data, validated at document level
JSON-LD validated across the whole document with nested nodes walked, since consumers merge every block on a page. Nodes missing required properties are removed rather than filled with plausible values.
Then content
Only once the foundations hold. Pages built around intent we can realistically win, each with something specific enough that it could not have been templated.
Make it enforceable
The checks move into the build: one h1 per page, unique titles and descriptions, self-referencing canonicals, no internal link to a non-canonical URL, no orphans, no JSON-LD node missing a required property. The build fails on regression.
What you receive
- Baseline crawl with per-URL data
- Verified findings with your measurement beside the tool’s claim
- Technical fixes implemented and re-verified live
- Internal link graph before and after
- Structured data implementation, validated at document level
- Sitemap with genuine lastmod values
- Build-time audit script that fails on regression
- Reporting including the checks that could not be run
You probably need this if
- Pages are crawled and sit in "Discovered — currently not indexed".
- Traffic dropped after a redesign or a migration.
- You publish regularly and nothing ranks.
- Your sitemap stamps every URL with the same date.
- An agency sent you a list of issues nobody has verified.
What we build and work with
Tooling is for finding candidates. Every candidate is verified by hand against the live URL before it becomes a finding.
- Google Search Console
- The only source of truth for impressions, clicks and index coverage. Third-party rank estimates are treated as directional at best.
- Crawling with a Googlebot user agent
- Direct crawls recording status, canonical, headers, headings and word count per URL, so findings are reproducible rather than reported.
- Structured data validation
- Document-level JSON-LD validation walking nested nodes, because block-by-block validation manufactures false dangling-reference errors.
- Real page-load measurement
- Core Web Vitals measured from actual page loads in a browser, repeated, with variance reported. Not inferred from file sizes.
- Build-time audit script
- The whole checklist as a script that runs on every build and exits non-zero on regression, so fixes stay fixed.
- Log and index monitoring
- Where server logs are available, what Googlebot actually requested, which is frequently different from what anyone assumed.
- IndexNow and sitemap submission
- Prompt notification to Bing and participating engines, with sitemaps carrying a lastmod derived from real content change dates.
What changes once this is in place
- Every indexable page actually indexable
- Verified status codes, canonicals and robots directives, measured against the live site rather than asserted.
- No orphan pages
- Internal linking that makes each page reachable and demonstrably important, with the link graph re-measured afterwards.
- Structured data that validates honestly
- Required properties present or the node removed. Nothing invented to satisfy a validator.
- Regressions caught at build time
- The audit runs on every deploy, so an accidental noindex or a duplicate title fails the build instead of reaching production.
- Reporting that states its limits
- Every report ends with the checks we could not run and the access they would need.
How this differs by market
The work is the same craft everywhere. What changes is the law, the language and the buying culture — and those change enough to matter.
European Union
Multilingual sites need hreflang declared only for pages that genuinely exist — an alternate pointing at a 404 is worse than none — with self-references and reciprocation on both sides. A language switcher that prefixes a locale to the current path will 404 on every untranslated page, and crawlers follow those links.
Nordics
Search volumes are small enough that keyword tools frequently report zero for terms that carry real commercial traffic. Local-language content genuinely outranks English for commercial queries in Sweden, Denmark, Norway and Finland even where the audience reads English comfortably, so translation is not optional at the bottom of the funnel.
United States and Canada
The most contested search markets in the world, where head terms are frequently unwinnable for a new domain regardless of budget. Realistic strategy targets specific, lower-competition terms and geography. In Canada, French-language search in Quebec is a distinct market with materially less competition.
United Arab Emirates
Bilingual Arabic and English search behaviour, with Arabic queries facing far less competition for the same commercial intent. Correct hreflang between ar and en versions, plus right-to-left rendering that does not break indexing, are the technical prerequisites most sites get wrong.
Not legal advice. Regulatory summaries on this site describe how we scope and build, and are current to our latest review. Verify the operative text with qualified counsel in the relevant jurisdiction before relying on it.
How we know it worked
We report impressions, clicks, average position and index coverage from Search Console, alongside the technical facts we verified ourselves. We do not report third-party "visibility scores", which are estimates presented with a precision they do not have.
Where a ranking change is claimed to result from our work, we state what changed, when, and what else changed in the same window. Search results move for reasons outside anyone’s control, and attributing every improvement to the most recent invoice is not analysis.
Indexed is not ranking, and ranking is not revenue. We track through to enquiries where the CRM allows it, because a page at position four that produces nothing is a problem, not a success.
Estimates are labelled as estimates. Any figure on this site that describes a range is a planning estimate with its assumptions stated, not a measured client outcome. We do not publish client results without the client's permission and a date.
Questions
How long does SEO take?
Technical fixes can show up in weeks. Content and authority in a competitive market are six to twelve months to a meaningful position, and sometimes longer. Anyone promising first-page rankings in ninety days for a competitive term is either lucky or not being straight with you.
Can you guarantee rankings?
No. Nobody can, because the results are ranked by a system none of us controls and the competition is actively working too. We commit to a verified technical standard, a content plan built on winnability, and reporting that states its own limits.
What does it cost?
We quote against scope — an audit and fix pass is a defined project; ongoing content and link work is a retainer. We do not publish rates, and we would rather scope honestly after a crawl than guess before one.
Should we block AI crawlers?
Separate the two kinds. Blocking training crawlers such as GPTBot, ClaudeBot and CCBot has no effect on search ranking or indexing; it is a licensing decision. Blocking answer-engine crawlers such as OAI-SearchBot and PerplexityBot removes your ability to be cited in AI answers, which is a real visibility loss. Never block Googlebot or Bingbot.
Do we need to publish blog posts every week?
Almost certainly not. Publishing cadence is a poor proxy for results, and volume without internal linking produces unindexed pages. We would rather publish fewer pages that each have something specific and are properly linked.
Is programmatic SEO worth doing?
It can be, and it is frequently done in a way that carries manual-action risk. The line is whether each generated page has something true and specific to it. Generating every service-by-city combination does not clear that line; multiplying a single axis with real per-page substance can.
Related services
Website Design & Development
Sites built to convert and to survive — fast, accessible, integrated with your CRM, and maintainable by someone other than us.
Read more →Digital Marketing
The layer above the channels: what the funnel is, which campaigns run, what each is meant to produce, and whether it did.
Read more →Content Creation & Creative Production
The production line behind everything else — the graphics, video, photography and copy that campaigns, channels and sales teams all consume.
Read more →Data Engineering & BI
Getting numbers out of the systems that hold them, into one place, in a state somebody can actually make a decision from.
Read more →Sectors where this is usually the lead engagement
These are the industries where this discipline is typically the first thing a client buys rather than something added later. The link goes to a page written for that sector specifically, with a paragraph on this service and on every other one.
- Legal Services — A sector where the work is documents and judgement, the advertising is regulated, and confidentiality constrains every architecture decision.
- Professional Services — The second-largest sector for digital transformation spending, selling something that only exists as the time of people who are hard to replace.
It appears on all thirty sector pages, because every one of them carries a paragraph on all twenty-two services. This list names only the sectors where it tends to lead.
Where we deliver this
This service is delivered across the European Union, the Nordic countries, North America and the United Arab Emirates. The craft does not change; the law, the language and the buying culture do. Consent regimes, invoicing mandates and payment conventions differ enough between markets that a campaign or a system built for one frequently cannot be used unchanged in another.
Each country page sets out what actually differs there and what it means for scope — all 32 countries and 10 cities are listed here. A few of the markets we work in most:
Start a conversation
Tell us what you are trying to change and we will tell you whether this is the right service for it — including when it is not.
Get in touch