Maintenance Director (Property Management)

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

TYPE OF WORK

Full Time

SALARY

N/A

HOURS PER WEEK

40

DATE UPDATED

Sep 2, 2026

JOB OVERVIEW

Remote | Open to PH & LATAM Applicants
U.S. Business Hours

We’re looking for an experienced Maintenance Director with strong AppFolio experience to lead and improve maintenance operations for a growing U.S.-based property management company.

This is a leadership role for someone who can implement systems, establish best practices, and help scale maintenance operations efficiently.

What You’ll Do:
- Oversee maintenance operations, vendors, and work order management
- Build and implement scalable maintenance systems and workflows
- Lead and mentor maintenance coordinators and support staff
- Monitor KPIs, service quality, and operational efficiency
- Improve maintenance turnaround times and escalation handling
- Manage workflows and reporting inside AppFolio

What We’re Looking For:
- 4–5+ years of experience in property management maintenance operations
- Strong hands-on experience with AppFolio (required)
- Leadership experience managing maintenance teams or departments
- Experience supporting larger PM portfolios or scaling operations
- Strong systems and process improvement mindset
- Hands-on maintenance knowledge (HVAC, plumbing, appliance troubleshooting, etc.) is a strong plus

Interested? Share the following:
* Updated resume
* WhatsApp number
* Availability for initial interview
* Comfortable monthly rate in USD

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.0548
Total Execution Time  0.0560
  GET DATA  
No GET data exists
  MEMORY USAGE  
1,509,264 bytes
  POST DATA  
No POST data exists
  URI STRING  
jobseekers/job/Maintenance-Director-Property-Management-1656302
  CLASS/METHOD  
jobseekers/job
  DATABASE:  onlinejobs (Jobseekers:$db)   QUERIES: 13 (0.0492 seconds)  (Hide)
0.0003   SELECT *
                                
FROM exrates
                                WHERE rate_name 
= 'USD-PHP' 
0.0008   SELECT *
FROM `employer_jobs`
WHERE `job_id` = 1656302
 LIMIT 1 
0.0012   SELECT *
FROM `employers`
WHERE `employer_id` = 444437
 LIMIT 1 
0.0032   SELECT COUNT(*) AS `numrows`
FROM `t_thread` `t`
LEFT JOIN `t_thread_misc` `misc` ON `t`.`id` = `misc`.`thread_id`
WHERE `t`.`job_id` = 1656302
AND `misc`.`id` IS NULL 
0.0005   SELECT e.business_name, e.logo, e.website, e.rebill_date, e.date_added member_date, hits, DATEDIFF('2026-09-25',ej.date_added) duration_days, DATEDIFF('2026-09-25',e.rebill_date) duration_rebill, ej.*, e.deactivate FROM employers e, employer_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-09-25',ej.date_added) <= 14 ))
                                   AND 
e.deactivate != 1 AND ej.deleted = 0 AND job_id = '1656302' 
0.0008   SELECT *
FROM `employer_jobs_skills` `ejs`
LEFT JOIN `skills_categories` `sc` ON `ejs`.`skill_id` = `sc`.`id`
WHERE `job_id` = 1656302 
0.0010   UPDATE employer_jobs SET hit_counts = '***May-27-2026=297***May-28-2026=73***May-29-2026=33***May-30-2026=6***May-31-2026=6***Jun-01-2026=10***Jun-02-2026=11***Jun-03-2026=5***Jun-04-2026=11***Jun-05-2026=3***Jun-06-2026=2***Jun-08-2026=275***Jun-09-2026=28***Jun-10-2026=17***Jun-11-2026=17***Jun-12-2026=10***Jun-13-2026=6***Jun-14-2026=5***Jun-15-2026=9***Jun-16-2026=12***Jun-17-2026=9***Jun-18-2026=6***Jun-19-2026=5***Jun-20-2026=2***Jun-22-2026=473***Jun-23-2026=29***Jun-24-2026=17***Jun-25-2026=6***Jun-26-2026=8***Jun-27-2026=3***Jun-28-2026=6***Jun-29-2026=8***Jun-30-2026=6***Jul-01-2026=6***Jul-02-2026=4***Jul-03-2026=932***Jul-04-2026=59***Jul-05-2026=39***Jul-06-2026=46***Jul-07-2026=16***Jul-08-2026=6***Jul-09-2026=8***Jul-10-2026=6***Jul-11-2026=5***Jul-12-2026=1***Jul-13-2026=10***Jul-14-2026=361***Jul-15-2026=30***Jul-16-2026=7***Jul-17-2026=10***Jul-18-2026=9***Jul-20-2026=4***Jul-21-2026=7***Jul-22-2026=7***Jul-23-2026=3***Jul-24-2026=8***Jul-25-2026=12***Jul-26-2026=1***Jul-27-2026=5***Jul-28-2026=8***Jul-29-2026=2***Jul-30-2026=9***Jul-31-2026=5***Aug-01-2026=8***Aug-02-2026=1***Aug-03-2026=13***Aug-04-2026=3***Aug-05-2026=11***Aug-06-2026=4***Aug-13-2026=1***Aug-15-2026=5***Aug-16-2026=3***Aug-17-2026=2***Aug-19-2026=1***Aug-20-2026=1***Aug-21-2026=2***Aug-22-2026=1***Aug-25-2026=1***Aug-27-2026=2***Aug-30-2026=2***Aug-31-2026=1***Sep-02-2026=266***Sep-03-2026=71***Sep-04-2026=22***Sep-05-2026=9***Sep-06-2026=9***Sep-07-2026=14***Sep-08-2026=15***Sep-09-2026=11***Sep-10-2026=5***Sep-11-2026=8***Sep-12-2026=3***Sep-13-2026=4***Sep-14-2026=13***Sep-15-2026=9***Sep-16-2026=5***Sep-17-2026=3***Sep-18-2026=1***Sep-19-2026=1***Sep-25-2026=1' WHERE job_id= '1656302'  
0.0006   UPDATE employer_jobs SET monthly_hits = '***May-2026=415***Jun-2026=999***Jul-2026=1626***Aug-2026=62***Sep-2026=470' WHERE job_id= '1656302'  
0.0015   SELECT date_sent FROM jobseeker_sent_emails WHERE jobseeker_id = '' AND job_id = '1656302' AND status LIKE 'sent%' ORDER BY id DESC  
0.0003   SELECT *
FROM `employer_jobs_skills` `ejs`
LEFT JOIN `skills_categories` `sc` ON `ejs`.`skill_id` = `sc`.`id`
WHERE `job_id` = 1656302 
0.0383   SELECT COUNT(*) AS `numrows`
FROM `employer_jobs`
WHERE `employer_id` = '444437'
AND `date_added` >= '2022-06-08' 
0.0005   select * from teasers 
0.0002   SELECT * FROM skill_categories WHERE skill_cat_id='' 
  HTTP HEADERS  (Show)
  SESSION DATA  (Show)
  CONFIG VARIABLES  (Show)