Senior SEO Specialist - Programmatic / Location-Page Indexing + GEO/AIO (Part-Time)

Please login or register as jobseeker to apply for this job.

TYPE OF WORK

Part Time

SALARY

9 USD per hour

HOURS PER WEEK

20

DATE UPDATED

Jun 26, 2026

JOB OVERVIEW

About the role:

I run the personal-brand website of an international keynote speaker (TV-featured, Top 1% / CSP). The site is built on Craft CMS with the SEOmatic plugin, runs in 3 languages (DE / EN / ES), and has roughly 180 pages, including programmatic "keynote speaker in [city]" location pages.

I have solid SEO knowledge myself and built parts of this. I'm not looking for a beginner to learn on my site - I'm looking for an expert to take the wheel strategically and operationally.

The core problem (be honest with me about this)

Many of my programmatic location pages are stuck on "Crawled — currently not indexed" in Google Search Console. Organic traffic and, more importantly, inquiries dropped significantly.

My priority is clear: get my existing location pages indexed again and found at scale - both in classic SERPs and in GEO/AIO (ChatGPT, Perplexity, Google AI Overviews). Right now these pages are ~90% identical to each other (same testimonials, logos, stats, FAQ - only the city name and one paragraph change), which I suspect is why Google won't index them. I need someone who can fix that root cause and make these pages genuinely indexable and findable - not just polish thin pages.

What you'll do:

Diagnose the indexing problem and give me a prioritized 30-day plan.
Get my existing location pages re-indexed and ranking at scale by making them genuinely differentiated - or recommend consolidation/pruning where it's the right call. I want your honest opinion, even if it contradicts me.
Fix technical SEO: indexing, crawl efficiency, internal linking, hreflang / international SEO across DE/EN/ES, structured data.
Strengthen the personal-brand entity for both classic SEO and GEO/AIO (getting recommended by ChatGPT, Perplexity, Google AI Overviews): entity/schema, off-site footprint, reviews, directories, press.
Implement the work yourself (in Craft) and surprise me with new GEO/AIO ideas to future-proof the site.

Must-have (non-negotiable):

Verifiable track record getting programmatic / location-page sets indexed AND ranking - with real URLs and GSC/GA screenshots, not claims.
Strong technical SEO: indexing diagnostics, crawl budget, hreflang, schema/entity.
Active, demonstrable experimentation with GEO/AIO (AI Overviews, Perplexity, ChatGPT visibility).
Willingness to prune, consolidate, and challenge my strategy when the data says so.
Fluent written English.

Nice-to-have

Experience with Craft CMS / SEOmatic (or comfort working in an unfamiliar CMS).
Multilingual SEO (DE/ES a plus).
Personal-brand / local-service or expert-website experience.

You're NOT a fit if:

Your plan is "write more pages" or "spin up better templates" without solving the thin-content/duplication root cause.
Your growth playbook is mostly link buying.
Your "case studies" are screenshots you can't tie to a live, verifiable URL.

How to apply (read carefully - this is the filter):

Start your message with the word CRAWL-BUDGET so I know you read this.
Send 2 verifiable case studies: live URLs of location/programmatic page sets you built, plus GSC or GA screenshots showing indexing/traffic improvement.
Answer these three short questions (3–4 sentences each):

- Most of my city pages are "crawled, currently not indexed," and I haven't spoken in many of these cities yet. What's your honest first hypothesis and your approach?
- Under what circumstances would you tell me to delete or merge pages instead of optimizing them?
- How would you get an AI engine (ChatGPT / Perplexity / Google AI Overviews) to recommend a keynote speaker - which signals off the website matter most?

Engagement:

Part-time, ongoing. We start with a paid audit + prioritized 30-day plan (fixed scope) so we both see how you work before committing long-term.
Please include your part-time rate and your availability per week.

I read every application that follows the steps above. Generic copy-paste pitches will be ignored.

SKILL REQUIREMENT
VIEW OTHER JOB POSTS FROM:
SHARE THIS POST
facebook linkedin
  BENCHMARKS  
Loading Time: Base Classes  0.0008
Controller Execution Time ( Jobseekers / Job )  0.0146
Total Execution Time  0.0160
  GET DATA  
No GET data exists
  MEMORY USAGE  
1,503,064 bytes
  POST DATA  
No POST data exists
  URI STRING  
jobseekers/job/Senior-SEO-Specialist-Programmatic-Location-Page-Indexing-GEOAIO-Part-Time-1677107
  CLASS/METHOD  
jobseekers/job
  DATABASE:  onlinejobs (Jobseekers:$db)   QUERIES: 13 (0.0084 seconds)  (Hide)
0.0003   SELECT *
                                
FROM exrates
                                WHERE rate_name 
'USD-PHP' 
0.0004   SELECT *
FROM `employer_jobs`
WHERE `job_id` = 1677107
 LIMIT 1 
0.0009   SELECT *
FROM `employers`
WHERE `employer_id` = 947628
 LIMIT 1 
0.0014   SELECT COUNT(*) AS `numrows`
FROM `t_thread` `t`
LEFT JOIN `t_thread_misc` `miscON `t`.`id` = `misc`.`thread_id`
WHERE `t`.`job_id` = 1677107
AND `misc`.`idIS NULL 
0.0004   SELECT e.business_namee.logoe.websitee.rebill_datee.date_added member_datehitsDATEDIFF('2026-07-22',ej.date_added) duration_daysDATEDIFF('2026-07-22',e.rebill_date) duration_rebillej.*, e.deactivate FROM employers eemployer_jobs ej WHERE e.employer_id ej.employer_id AND
                                   ((
e.user_level >= '500' AND ej.date_added <= e.rebill_date)
                                   OR 
e.employer_id '' OR (ej.date_approved <> '2000-01-01' and DATEDIFF('2026-07-22',ej.date_added) <= 14 ))
                                   AND 
e.deactivate != AND ej.deleted AND job_id '1677107' 
0.0007   SELECT *
FROM `employer_jobs_skills` `ejs`
LEFT JOIN `skills_categories` `scON `ejs`.`skill_id` = `sc`.`id`
WHERE `job_id` = 1677107 
0.0007   UPDATE employer_jobs SET hit_counts '***Jun-26-2026=341***Jun-27-2026=32***Jun-28-2026=20***Jun-29-2026=37***Jun-30-2026=26***Jul-01-2026=20***Jul-02-2026=12***Jul-03-2026=8***Jul-04-2026=4***Jul-05-2026=2***Jul-06-2026=6***Jul-07-2026=21***Jul-08-2026=2***Jul-09-2026=4***Jul-11-2026=3***Jul-12-2026=2***Jul-13-2026=8***Jul-14-2026=1***Jul-15-2026=10***Jul-16-2026=4***Jul-18-2026=1***Jul-22-2026=1' WHERE job_id'1677107'  
0.0006   UPDATE employer_jobs SET monthly_hits '***Jun-2026=456***Jul-2026=109' WHERE job_id'1677107'  
0.0012   SELECT date_sent FROM jobseeker_sent_emails WHERE jobseeker_id '' AND job_id '1677107' AND status LIKE 'sent%' ORDER BY id DESC  
0.0003   SELECT *
FROM `employer_jobs_skills` `ejs`
LEFT JOIN `skills_categories` `scON `ejs`.`skill_id` = `sc`.`id`
WHERE `job_id` = 1677107 
0.0007   SELECT COUNT(*) AS `numrows`
FROM `employer_jobs`
WHERE `employer_id` = '947628'
AND `date_added` >= '2022-06-08' 
0.0004   select from teasers 
0.0002   SELECT FROM skill_categories WHERE skill_cat_id='' 
  HTTP HEADERS  (Show)
  SESSION DATA  (Show)
  CONFIG VARIABLES  (Show)