SEO Specialist (Local + AI Search)

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

TYPE OF WORK

Full Time

SALARY

1000

HOURS PER WEEK

40

DATE UPDATED

Jul 29, 2026

JOB OVERVIEW

We are a performance marketing agency built for blue-collar and local service businesses. Roofers, junk haulers, dumpster rental, lawn care, HVAC, construction. We run their Google Ads, SEO, websites, and video content, and we get them results that actually move the needle: more calls, more booked jobs, more revenue.

We move fast, we own our numbers, and our clients are the kind of people who built their businesses by hand. We are growing, and we need an SEO Specialist who can own local search from strategy through execution.

What you will do

Own local SEO for a book of client accounts, from audit to strategy to execution
Optimize Google Business Profiles to win the map pack and dominate service areas
Run keyword research and build content strategies around what customers actually search before they book a job
Write and optimize blog posts and service pages that rank, educate, and convert
Optimize for the full modern search landscape: traditional SEO, AEO (Answer Engine Optimization), and GEO (Generative Engine Optimization) so our clients get found in Google, AI Overviews, and answer engines
Handle on-page and technical SEO, internal linking, schema, and site structure in partnership with our web team
Track everything. Rankings, traffic, conversions, and attribution, so we can prove ROI to the client every single month
Report clearly. Translate rankings and traffic into what an owner actually cares about: booked jobs and revenue
What we are looking for

Real, hands-on experience doing local SEO for service businesses, with results you can point to
Deep Google Business Profile expertise, including map pack ranking factors, review strategy, and spam fighting
Strong writing skills. A copywriting certification or a portfolio of published, ranking content is a big plus
Working knowledge of AEO and GEO, or a genuine drive to master where search is heading
Comfort with GA4, Google Search Console, and rank tracking tools, and a habit of making decisions from data
An operator mentality. You catch problems before the client does, not after
Available 7 AM to 4 PM Eastern, with Hubstaff time tracking
Why you will like it here

Your work directly grows real businesses in real communities, and you will see the results
You get a full team behind you: web developers, designers, a Google Ads specialist, video, and automation
Room to grow as search evolves, with AI-driven optimization at the center of what we do
A team that moves fast, backs each other, and celebrates wins

How to apply

Send your resume along with one example of a local business you helped rank and what the results were. Tell us what you did, not just what happened. ENGLISH MUST BE FLUENT

Work Location: Remote

VIEW OTHER JOB POSTS FROM:
SHARE THIS POST
facebook linkedin
  BENCHMARKS  
Loading Time: Base Classes  0.0007
Controller Execution Time ( Jobseekers / Job )  0.0264
Total Execution Time  0.0277
  GET DATA  
No GET data exists
  MEMORY USAGE  
1,508,720 bytes
  POST DATA  
No POST data exists
  URI STRING  
jobseekers/job/SEO-Specialist-Local-AI-Search-1698843
  CLASS/METHOD  
jobseekers/job
  DATABASE:  onlinejobs (Jobseekers:$db)   QUERIES: 13 (0.0211 seconds)  (Hide)
0.0005   SELECT *
                                
FROM exrates
                                WHERE rate_name 
'USD-PHP' 
0.0004   SELECT *
FROM `employer_jobs`
WHERE `job_id` = 1698843
 LIMIT 1 
0.0016   SELECT *
FROM `employers`
WHERE `employer_id` = 754604
 LIMIT 1 
0.0018   SELECT COUNT(*) AS `numrows`
FROM `t_thread` `t`
LEFT JOIN `t_thread_misc` `miscON `t`.`id` = `misc`.`thread_id`
WHERE `t`.`job_id` = 1698843
AND `misc`.`idIS NULL 
0.0004   SELECT e.business_namee.logoe.websitee.rebill_datee.date_added member_datehitsDATEDIFF('2026-08-10',ej.date_added) duration_daysDATEDIFF('2026-08-10',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-10',ej.date_added) <= 14 ))
                                   AND 
e.deactivate != AND ej.deleted AND job_id '1698843' 
0.0003   SELECT *
FROM `employer_jobs_skills` `ejs`
LEFT JOIN `skills_categories` `scON `ejs`.`skill_id` = `sc`.`id`
WHERE `job_id` = 1698843 
0.0007   UPDATE employer_jobs SET hit_counts '***Jul-29-2026=448***Jul-30-2026=136***Jul-31-2026=51***Aug-01-2026=29***Aug-02-2026=19***Aug-03-2026=40***Aug-04-2026=20***Aug-05-2026=9***Aug-06-2026=3***Aug-07-2026=5***Aug-08-2026=1***Aug-10-2026=1' WHERE job_id'1698843'  
0.0014   UPDATE employer_jobs SET monthly_hits '***Jul-2026=634***Aug-2026=127' WHERE job_id'1698843'  
0.0004   SELECT date_sent FROM jobseeker_sent_emails WHERE jobseeker_id '' AND job_id '1698843' 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` = 1698843 
0.0128   SELECT COUNT(*) AS `numrows`
FROM `employer_jobs`
WHERE `employer_id` = '754604'
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)