Senior Technical SEO Consultant

Find what's keeping your site invisible to Google.

I work the technical layer of search: crawl, index, render path, schema, ranking. My clients run B2B SaaS, e-commerce, and content sites, the kind of business where a drop in rankings shows up in the revenue line.

South Africa · working worldwide 10+ yrs senior technical SEO 100 Lighthouse SEO · server-rendered
10+
years of senior technical SEO
40
audits + sprints shipped
100%
server-rendered, so AI crawlers read every word
100
Lighthouse SEO & Best Practices
Methodology

Where rankings actually come from.

Six layers, in order. Most SEO advice only works the last two, which is why it rarely moves the first four. The other four are where I spend most of my time.

01
Crawl

Googlebot has to find you first.

Think of the site as a graph: URLs are the nodes, internal links the edges between them. A page with no incoming link, or one buried under three layers of session-ID noise, never enters Google's queue at all. The first file Googlebot reads on every visit is /robots.txt. Those few lines decide which URLs it crawls and which it skips.

# robots.txt for apparelclient.com
User-agent: Googlebot
Disallow: /cart
Disallow: /*?sort=
Disallow: /*?filter.size=
Allow:    /collections/

Sitemap: https://apparelclient.com/sitemap.xml

One wrong line here can delist a whole site in minutes, so it's where I start every audit.

02
Render

Your JavaScript sits in a queue, sometimes for weeks.

The cheap pass is HTML. It gets fetched, parsed, and indexed in seconds. The expensive pass renders your app in a headless Chromium called the Web Rendering Service. That queue usually clears within a day. I've watched it run eleven. If your title and body only appear after JS executes, you wait, and Google doesn't publish how long the wait is.

// abridged WRS timing on a real client
06:14:02  /pricing             [HTML crawled]
06:14:02  /pricing             [render queued]
14:32:17  /pricing             [WRS render]
14:32:17  /pricing             [indexed in 8h 18m]

That log is one page on one client. Search Console never surfaces this queue, so JS-heavy sites can sit un-indexed for days before anyone notices.

03
Index

A search is an intersection, not a scan.

When you search, Google doesn't read the web. It reads an inverted index it built ahead of time. Each word maps to a postings list, just the documents that contain it. A query then resolves by intersecting a handful of those short lists instead of scanning trillions of pages. Pandu Nayak described exactly this under oath in the 2023 DOJ trial.

TermPostings (doc:tf)
flatD3:2
feetD3:1
shoesD1:1, D2:1, D3:2
stabilityD3:1
runningD1:2, D2:1, D3:1

Query flat feet shoes → intersect the three postings → only D3 contains all three, so D3 is the candidate set ranking starts from.

04
Match

The candidate set gets scored, then reranked.

BM25 ranks the candidate set by how strongly each query term matches each document. Then the neural systems take over. RankBrain, BERT, and RankEmbed project the query into vector space and pull in documents that are semantically close even when they share zero keywords. That's why "apex predator" can rank for "consumer at the top of a food chain".

// classical BM25, still load-bearing in 2026
score = idf · tf(k₁+1) / (tf + k₁(1 − b + b·|d|/avgdl))

idf("flat")    = 1.58
tf in D3       = 2
|d| (D3 length) = 8
avgdl          = 7.3

score(D3) = 3.24

Numbers are illustrative, but the BM25 math is real and hasn't changed since 1995.

05
Rerank

Real users re-rank you, live.

Confirmed in the 2023 DOJ trial: NavBoost uses 13 months of click data to reorder results. A long dwell after the click lifts you. Pogo-stick straight back to the SERP and try the next result, and that counts against you. Your CTR is a live input the ranking system actually reads.

// NavBoost click signal aggregation, 13mo window
month 01 · R1  user → R1 → ← back in 3s          badClick
month 02 · R3  user → R3 → dwell 4m12s          goodClick
month 03 · R3  user → R3 → converted             signal++
month 05 · R2  user → R2 → pogo-stick            badClick
month 13     aggregate · R3 dominates         → rerank

A weak snippet gets demoted no matter how clean the rest of the stack is.

06
Serve

Twiddlers do the final reordering.

Internally, Google calls them twiddlers, lightweight rerankers that fire after the core ranking is done. Freshness nudges one way, diversity caps you at one result per host, spam demotions pull the rest down. By the time a result lands on page one, a stack of these has already adjusted its position.

PositionTwiddlerΔ
8core ranking exitnone
7Freshness−1
5SpamBrain (clean, authored)−2
2Diversity (one per host)−3
1NavBoost (13mo goodClicks)−1

Four twiddlers, each nudging the same result after core ranking is supposedly done.

Most SEO work lives in layers 5 and 6. I audit all six and find what's actually broken. See engagements →
Engagements

Three ways to work together.

You can start working with me from $699/month. Almost everyone starts with the two-week audit, then scope and the exact number get set on a quick call once I've seen the site. I work mostly with B2B SaaS, programmatic content sites, e-commerce stores doing $5M+, and digital publishers.

Audit

Two-week technical pass

Deep crawl, indexing, render path, schema, intent. You get a prioritized fix list with effort estimates and a 60-minute walk-through.

  • Up to 50 pages crawled in detail
  • Written report with prioritized fixes
Start with an audit
Retainer

Ongoing technical SEO partner

Monthly engagement for sites where search is a core acquisition channel. Continuous monitoring, quarterly deep-dives, ad-hoc fires, and a direct line to your growth team.

  • Month-to-month, no annual lock-in
  • Most engagements run 3-6 months
  • Direct line of access
Talk about a retainer
Recent work

What ships.

Client work is anonymised under NDA. My own sites and tools are named, so go click them.

B2B publisher · International International SEO

Cut about 27,000 locale pages without losing the clicks that paid the bills

I once deleted 40% of a site's organic clicks on purpose. About 27,000 machine-translated locale and hreflang pages were pulling that traffic at near-zero revenue, on top of enormous crawl waste. I segmented every URL by index state, clicks, and backlinks, then hard-410'd only the dead intersection and kept the equity and AI-citation pages on noindex. Traffic that doesn't convert isn't worth the crawl budget it burns. The revenue-driving English organic stayed intact.

Pages consolidated~27,000 Clicks protected~40%
Pet content · Core Web Vitals 2-week technical

Found the one file behind a "slow" site, not the page builder

Mobile LCP sat at ~6.0s and everyone blamed the page builder. I profiled the render path instead. The real culprit was a single render-blocking theme CSS file that was about 88% unused. I shipped Cloudflare cache rules, Early Hints, and image compression, each one behind a rollback. LCP came down to ~3.7s with no rebuild. Most "slow site" jobs end with the client being told to rebuild, and they rarely need to. The rebuild is usually the expensive way to avoid reading the waterfall.

LCP~6.0s → ~3.7s Root causea CSS file
Gaming media · Indexing Content ops

Recovered 21 pages that had dropped out of Google's index

Pages were bleeding out of the index. The hubs were starved of internal links and the templates were competing with each other. I separated link-starvation from crawl-demand, rebuilt 52 internal links across 14 hubs, wired up IndexNow, consolidated 34 near-duplicate pages, and removed a fabricated AggregateRating that was a penalty risk. The starved pages finally had a real route back into the index.

Pages recovered21 Links rebuilt52 / 14 hubs
Owned & operated GamingNation.in

Peak ~60K organic visits/month, on a site I built from zero

GamingNation started as a blank domain in a crowded niche and I ran the whole thing solo: content, technical SEO, Core Web Vitals, indexation, and monetisation through display and affiliate. It peaked at around 60K organic visits a month.

Peak traffic~60K/mo
Chrome extension · Built Manifest V3

SEO Audit Pro: 80+ checks plus an AI Search Readiness audit

Page-level SEO issues are scattered and hard to action. So I built a Manifest-V3 side-panel extension that runs 80+ on-page checks plus a GEO/AEO AI Search Readiness audit, and hands you the exact fix step for each issue. I designed, coded, and packaged the whole thing end to end.

Checks80+ AI Search Readinessbuilt in
Chrome extension · Built Manifest V3

Hreflang Checker: catches what Search Console won't tell you

Most hreflang errors are silent. Google just ignores the broken tags and serves the wrong page, and Search Console rarely tells you. So most multi-region setups I'm handed are already broken, and nobody knows, because every dashboard looks green. This extension audits a whole cluster in seconds: reciprocal return links, ISO locale validation, live URL status (404/301/noindex), canonical/noindex conflicts, sitemap hreflang. It's my international-SEO specialty, shipped as a working tool.

Auditsfull hreflang cluster Catchessilent return-link breaks
References

People I've worked with, in their words.

Recommendations from colleagues and senior leaders I've worked alongside, pulled straight from LinkedIn.

"I had the pleasure of working with Harsh and found him to be an invaluable asset to our team. He has an extensive background in SEO and digital marketing and consistently produces results that exceed expectations. He is always looking for new and innovative ways to increase visibility and build brand awareness. I highly recommend Harsh for any SEO or digital marketing project."
Amit Pawar Marketing Consultant Worked with Harsh on the same team
"I have worked with Harsh in different teams at Ondot Media. Even in a very short time frame, I was impressed with his digital marketing and SEO skills. In that short time, he added huge value to the platforms we ran. I highly recommend him as a professional with skills, the 'doer' attitude, and new ideas and initiatives that are rare in someone so young."
Kanika Goswami Business & communications strategy leader, Ondot Media Was senior to Harsh
"Great companion to work with. I have learned several aspects of SEO in detail working alongside him. He has a strong hold on digital analytics as well, and I'm sure he'll build a substantial portfolio very soon. Great guy to work with and work under. Could make a great leader."
Yogesh R PR, Branding & Design, Godrej Worked with Harsh on the same team
"As an SEO specialist, Harsh guided me to optimize my content so it would rank. He is well versed with the latest SEO algorithms and knows the best strategies to make web assets rank."
Nikhil Sonawane Marketing, PR & Media Relations Worked with Harsh across teams
Recently, in the field

A live tape of what I keep pulling out of real sites.

Threats I caught and the fixes I shipped lately, including this week. Hover to pause and read any one.

CloakingCloaking served to Googlebot on .gov.in domains HackedMalware shells & droppers on compromised WordPress sites Penalty riskFabricated AggregateRating schema, a manual-action waiting to happen Crawl waste~27,000 machine-translated locale pages bleeding crawl budgetsee case → PerformanceOne render-blocking CSS file, 88% of it unusedsee case → Ad revenueDisplay ads firing on only 0.35 of every pageview HreflangSilent return-link breaks Search Console never flags
RecoveredTraffic recovered after a Google core update FixedHacked sites cleaned, hardened and restored CitationsCitations & AI citations built to earn the brand mentions Re-indexed21 de-indexed pages routed back into Googlesee case → ShippedMobile LCP cut from ~6.0s to ~3.7s, no rebuildsee case → Rebuilt52 internal links rewired across 14 starved hubs DeployedIndexNow wired up for instant indexing
The stack

Tools I run in and out, not just installed.

Every one of these is in my day-to-day. I know where each lies to you, where it's the fastest read, and when to ignore it and go check the logs myself.

backlinks · keywords
crawl audits · logs
competitive · keyword
indexation · queries
GA4 · attribution
dashboards
edge · cache · CWV
Core Web Vitals
CMS · builds
e-commerce · Admin API
WordPress SEO
instant indexing
A taste of the work

Paste any URL. See the first pass I run.

The first pass I run on any site: status and redirects, title and meta, canonical, indexability, headings, mobile, social tags, schema.

Coming soon

The live audit tool is being wired up. Want the first pass on your site now? Email me your URL.

Questions

Questions I get on every project.

What size sites do you work with?
B2B SaaS from Series A through pre-IPO. E-commerce from $5M revenue up. Content sites with at least 50,000 monthly sessions. If you're earlier than that, the audit will help, but a retainer is overkill.
How fast can I see results?
Technical fixes (LCP, indexing, schema) usually show in 2-6 weeks. Crawl-budget reclamation in 4-8. Ranking lifts depend on the size of the change and the competitive set. For sites with existing authority, you typically see signal in 6-12 weeks.
Do you work directly with our engineers?
Always. The Sprint and Retainer engagements both include direct working sessions with your engineering team. I hand them spec-level tickets they can pull straight into a sprint.
What's your timezone situation?
Based in South Africa (UTC+2). I cover almost the full UK and EU working day live, plus solid US-afternoon overlap. Async handoffs with US teams stay clean, and I work with US and UK founders weekly.
Can you do content SEO too, or only technical?
Technical is the deepest specialty. I'll absolutely advise on content architecture, internal linking, intent matching, and topic clustering, but if your only need is editorial calendar planning, you want a content strategist, not me.
Do you sign NDAs?
Standard practice. Send your template; I'll review and counter-sign in 24 hours.
The free audit call

In 30 minutes I'll tell you whether your SEO is moving revenue or just filling a monthly report nobody reads.

Send your URL first. I'll have worked the technical layer before we talk, so the call is the verdict, not discovery. You leave knowing the one bottleneck that matters, even if you never hire me. The paid work starts from there.

Get a free audit call Pop your site URL in the email and I'll have looked at it before we talk.