SEO Specialist – Local SEO / Google Maps / AI Search Visibility (Long Term)

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

TYPE OF WORK

Full Time

SALARY

$3 - $10/hour

HOURS PER WEEK

40

DATE UPDATED

Aug 8, 2026

JOB OVERVIEW

I run a small web and media agency in Germany ( ---------- ). We build websites for our clients in WordPress, and I'm looking for someone to own the SEO side — getting those sites found, both in normal Google search and in Google Maps.

Two members of my team have been based in the Philippines for several months now and it has been working really well. That is exactly why I am hiring here again. You would not be the only one on the team.

Responsibilities:

Google Business Profile: set up, optimise and maintain client listings — categories, services, attributes, descriptions, photos, posts and Q&A
Improve local pack and Google Maps rankings for our clients, and track them properly with geo-grid tools, not just by searching from your own location
Build and clean up local citations and keep NAP data consistent everywhere
Set up review generation and help clients respond to reviews
On-page SEO on our WordPress sites: titles, meta descriptions, heading structure, internal linking, structured data
Technical SEO: indexation, crawl issues, sitemaps, redirects, canonicals, Core Web Vitals
Keyword research and content briefs
Set up and maintain Google Search Console and Google Analytics 4, and report what actually changed
Monitor rankings and explain in plain language what is working and what is not

Requirements:

Real hands-on experience with Google Business Profile and local SEO — you have moved clients into the map pack, not just read about it
Solid general SEO across on-page and technical
Confident with Google Search Console and Google Analytics 4
Comfortable working inside WordPress with Rank Math or Yoast
You can explain your reasoning in plain English, without SEO jargon
You report honestly when something is not working instead of hiding it in a dashboard
Good written and spoken English
Stable internet and a plan for brownouts

Nice to have, not required:

AI search visibility — getting brands mentioned and cited in ChatGPT, Claude, Perplexity and Google AI Overviews. If you have actually worked on this and can show what you did, that is a big plus and it will show in the offer.
Experience with Ahrefs, Semrush, Screaming Frog, BrightLocal or Local Falcon
Schema and structured data beyond the basics
Handling review spam and competitor listing spam through Google's redressal process
You already use AI tools like Claude in your daily workflow

Important — please read this part: Our clients are German businesses and their websites are in German. You do not need to speak German. But you will be doing keyword research and writing meta data in a language you do not speak, using translation tools, and you need to be honest about where that works and where you need me to check. In your application, tell me how you would approach that. I would rather hear a realistic answer than a confident one.

Hours and how we work:

I am flexible on hours. This can start at around 20 hours per week and grow into a full-time position, or start full time if you are the right person. Tell me what you are looking for.
Your schedule is flexible, but I need at least four hours of overlap with German business hours. That is roughly 3 PM to 7 PM Manila time.
We use Google Meet for calls.
In the first weeks we will go through the client sites together so you understand the businesses, not just the keywords.

What I offer:

A long-term position, not one-off projects — I am hiring someone I intend to keep for years
Direct communication with me, no layers in between
Room to grow the role as we take on more clients
Real ownership — this is your area, not a task list someone hands you



Proof of results is the most important part of your application. Anyone can say they rank clients on page one. Show me instead.

Send me at least two real examples — websites you optimised, Google Business Profiles you improved, or both. For each one I want the actual link, not a description: the website URL, or the Google Maps link to the profile. Tell me what the situation was when you took over, what you actually did, and what changed. Numbers and dates make it credible: rankings before and after, calls, direction requests, impressions, whatever you have.

If some of your work is under NDA, that is fine — but send me at least one example you are free to name. Screenshots from Search Console or the Google Business Profile performance report are welcome, and be ready to show me the real accounts on a screenshare later.

Then answer these three questions:

Walk me through your two best examples above. Why did the rankings move — what was the actual cause?
Have you worked on AI search visibility — being found in ChatGPT, Claude, Perplexity or AI Overviews? If yes, what did you do and how did you measure it? If no, just say so, it is not required.
What hourly rate are you looking for (in USD), how many hours per week can you commit, and what does that come to as a monthly figure?

SKILL REQUIREMENT
VIEW OTHER JOB POSTS FROM:
SHARE THIS POST
facebook linkedin
  BENCHMARKS  
Loading Time: Base Classes  0.0007
Controller Execution Time ( Jobseekers / Job )  0.0145
Total Execution Time  0.0158
  GET DATA  
No GET data exists
  MEMORY USAGE  
1,511,552 bytes
  POST DATA  
No POST data exists
  URI STRING  
jobseekers/job/SEO-Specialist-Local-SEO-Google-Maps-AI-Search-Visibility-Long-Term-1705465
  CLASS/METHOD  
jobseekers/job
  DATABASE:  onlinejobs (Jobseekers:$db)   QUERIES: 13 (0.0092 seconds)  (Hide)
0.0004   SELECT *
                                
FROM exrates
                                WHERE rate_name 
'USD-PHP' 
0.0004   SELECT *
FROM `employer_jobs`
WHERE `job_id` = 1705465
 LIMIT 1 
0.0009   SELECT *
FROM `employers`
WHERE `employer_id` = 398698
 LIMIT 1 
0.0010   SELECT COUNT(*) AS `numrows`
FROM `t_thread` `t`
LEFT JOIN `t_thread_misc` `miscON `t`.`id` = `misc`.`thread_id`
WHERE `t`.`job_id` = 1705465
AND `misc`.`idIS NULL 
0.0005   SELECT e.business_namee.logoe.websitee.rebill_datee.date_added member_datehitsDATEDIFF('2026-08-23',ej.date_added) duration_daysDATEDIFF('2026-08-23',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-08-23',ej.date_added) <= 14 ))
                                   AND 
e.deactivate != AND ej.deleted AND job_id '1705465' 
0.0003   SELECT *
FROM `employer_jobs_skills` `ejs`
LEFT JOIN `skills_categories` `scON `ejs`.`skill_id` = `sc`.`id`
WHERE `job_id` = 1705465 
0.0016   UPDATE employer_jobs SET hit_counts '***Aug-08-2026=260***Aug-09-2026=350***Aug-10-2026=177***Aug-11-2026=89***Aug-12-2026=61***Aug-13-2026=36***Aug-14-2026=26***Aug-15-2026=30***Aug-16-2026=24***Aug-17-2026=42***Aug-18-2026=32***Aug-19-2026=29***Aug-20-2026=37***Aug-21-2026=34***Aug-22-2026=24***Aug-23-2026=1' WHERE job_id'1705465'  
0.0007   UPDATE employer_jobs SET monthly_hits '***Aug-2026=1252' WHERE job_id'1705465'  
0.0009   SELECT date_sent FROM jobseeker_sent_emails WHERE jobseeker_id '' AND job_id '1705465' AND status LIKE 'sent%' ORDER BY id DESC  
0.0004   SELECT *
FROM `employer_jobs_skills` `ejs`
LEFT JOIN `skills_categories` `scON `ejs`.`skill_id` = `sc`.`id`
WHERE `job_id` = 1705465 
0.0016   SELECT COUNT(*) AS `numrows`
FROM `employer_jobs`
WHERE `employer_id` = '398698'
AND `date_added` >= '2022-06-08' 
0.0004   select from teasers 
0.0003   SELECT FROM skill_categories WHERE skill_cat_id='' 
  HTTP HEADERS  (Show)
  SESSION DATA  (Show)
  CONFIG VARIABLES  (Show)