Media Buyer for Local Businesses

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

TYPE OF WORK

Part Time

SALARY

$10/hour

HOURS PER WEEK

20

DATE UPDATED

Jul 26, 2026

JOB OVERVIEW

READ THIS BEFORE APPLYING

If your Meta ads experience is e-commerce, dropshipping, Shopify, or Amazon — do not apply. You will not get a reply. This role is strictly for media buyers who have run ads for LOCAL SERVICE BUSINESSES: medical clinics, med spas, dental, HVAC, plumbing, roofing, and similar. If you can't show proof of local service work, this is not your job.

WHO WE ARE

KeepUp Media is a Toronto-based marketing agency serving premium local businesses across North America, with a heavy focus on private-pay medical clinics. The person we hire will be trained on the exact systems we use to help clinics generate hundreds of thousands per month. That's why this posting is picky. This is sensitive, high-trust work, and an NDA is required.

THE ROLE

You're the daily eyes on our entire client ad portfolio — part media buyer, part creative director. If all you know is how to click buttons in Ads Manager, this won't be a fit. You need a real eye for creative and real judgment.

Day-to-day:
- Check every client ad account daily: delivery, spend, performance, account health
- Add new creatives and copy variations; duplicate winning ads correctly
- Suggest new tests and changes based on what you're seeing
- Spot yellow flags and red flags EARLY — creative fatigue, spend anomalies, ad rejections, tracking or permission issues — and flag them immediately
- Send an end-of-day report every single working day, with any flags called out
- Weekly catch-up call with the founder, plus communication during the week to work through flagged issues

To be clear: you are not expected to fix major issues on your own. Your job is to catch problems early, communicate them clearly, and keep us on track. We provide all materials, SOPs, and training.

Bonus if you have it: experience consolidating multiple ad accounts into one master spreadsheet (total portfolio spend and metrics across all clients). We want this built.

REQUIREMENTS — ALL OF THEM, NOT SOME

1. Proven Meta ads experience for local service businesses (you'll show real accounts and results)
2. Deep Meta Business Suite fluency: Business Manager structure, ad account permissions and access, dealing with Meta support, handling rejections and appeals
3. A genuine creative eye — you can tell a strong hook from a weak one. Familiarity with AI creative tools like Higgsfield is a big plus; we use them daily
4. A paid Claude plan (Anthropic). Our SOPs are built around it. Non-negotiable
5. Elite communication: highly responsive on WhatsApp and Slack, clear written English, zero disappearing acts. You'll work closely with the founder, the team, and our operational assistant
6. Hungry. This role starts part-time (~1–2 focused hours/day) and grows into a full-time seat with incentives and bonuses for the right person

HOW TO APPLY — FOLLOW EXACTLY, THIS IS THE FIRST TEST

Start your application with the words "LOCAL ONLY" and answer:

1. List the local service ad accounts you've managed: niche, monthly budget, results. Be specific.
2. Describe one time you caught a problem in an ad account before it became expensive. What did you see and what did you do?
3. Do you have a paid Claude plan? (Yes / No — if no, will you get one before starting?)
4. Which AI creative tools have you used (Higgsfield or similar), and for what?
5. Record a 2–3 minute Loom walking through one local service campaign you ran: structure, creative choices, results.

Applications that skip the code word, skip the Loom, or read like AI copy-paste get deleted. Shortlisted candidates complete a short mock-campaign test before a final call.

If you're sharp, hungry, and done babysitting dropshipping stores — this is the seat.

VIEW OTHER JOB POSTS FROM:
SHARE THIS POST
facebook linkedin
  BENCHMARKS  
Loading Time: Base Classes  0.0011
Controller Execution Time ( Jobseekers / Job )  0.0177
Total Execution Time  0.0197
  GET DATA  
No GET data exists
  MEMORY USAGE  
1,503,440 bytes
  POST DATA  
No POST data exists
  URI STRING  
jobseekers/job/Media-Buyer-for-Local-Businesses-1696760
  CLASS/METHOD  
jobseekers/job
  DATABASE:  onlinejobs (Jobseekers:$db)   QUERIES: 13 (0.0096 seconds)  (Hide)
0.0004   SELECT *
                                
FROM exrates
                                WHERE rate_name 
'USD-PHP' 
0.0004   SELECT *
FROM `employer_jobs`
WHERE `job_id` = 1696760
 LIMIT 1 
0.0005   SELECT *
FROM `employers`
WHERE `employer_id` = 816463
 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` = 1696760
AND `misc`.`idIS NULL 
0.0006   SELECT e.business_namee.logoe.websitee.rebill_datee.date_added member_datehitsDATEDIFF('2026-08-12',ej.date_added) duration_daysDATEDIFF('2026-08-12',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-12',ej.date_added) <= 14 ))
                                   AND 
e.deactivate != AND ej.deleted AND job_id '1696760' 
0.0004   SELECT *
FROM `employer_jobs_skills` `ejs`
LEFT JOIN `skills_categories` `scON `ejs`.`skill_id` = `sc`.`id`
WHERE `job_id` = 1696760 
0.0011   UPDATE employer_jobs SET hit_counts '***Jul-26-2026=335***Jul-27-2026=321***Jul-28-2026=87***Jul-29-2026=28***Jul-30-2026=18***Jul-31-2026=9***Aug-01-2026=7***Aug-02-2026=2***Aug-03-2026=6***Aug-04-2026=2***Aug-05-2026=5***Aug-06-2026=4***Aug-07-2026=5***Aug-08-2026=5***Aug-12-2026=1' WHERE job_id'1696760'  
0.0008   UPDATE employer_jobs SET monthly_hits '***Jul-2026=798***Aug-2026=37' WHERE job_id'1696760'  
0.0009   SELECT date_sent FROM jobseeker_sent_emails WHERE jobseeker_id '' AND job_id '1696760' 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` = 1696760 
0.0022   SELECT COUNT(*) AS `numrows`
FROM `employer_jobs`
WHERE `employer_id` = '816463'
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)