Fractional CFO - Residential HVAC

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

TYPE OF WORK

Part Time

SALARY

$10-$55/hr

HOURS PER WEEK

20

DATE UPDATED

Jan 10, 2026

JOB OVERVIEW

Fractional CFO / Finance Lead (Residential HVAC Service & Replacement) — Remote (Global) — Long-Term

The Opportunity
We are a rapidly growing U.S.-based residential HVAC service and replacement company. We’re hiring a Fractional CFO to be a long-term strategic partner and the finance leader who builds a scalable financial operating system—cash visibility, margin discipline, and decision-grade reporting.

This is not a tax-prep role and not a bookkeeping-only role. We need a finance leader who can design the system, set standards, lead the cadence, and drive outcomes.

What You’ll Own (Two Phases)

Phase 1: Historical Reconciliation & Cleanup (2019–2024)

We have several years of historical QuickBooks data that needs to be standardized and reconciled so the books are clean, consistent, and well-documented.

Your role: You will architect and lead the cleanup—define the approach (“rules of the road”), implement controls, and supervise the execution. We will hire (or already have) bookkeeping support to handle the bulk transaction work.

Key deliverables for Phase 1

A clear cleanup strategy and timeline (month-by-month approach, priorities, controls)

Reconciled balance sheet accounts (bank/credit cards/loans) with documentation

A clean chart of accounts and consistent categorization rules

A working monthly close package and exception-resolution process

A documented policy for how uncategorized and unclear items are handled

Phase 2: Ongoing CFO Leadership (Strategic + Operating Finance)

After the foundation is solid, you’ll run the finance operating system and partner with ownership on profitability and growth.

Key responsibilities

Margin and performance: Track true gross margins and key drivers (labor, material, burden, overhead recovery)

Cash flow: Build and maintain a rolling 13-week cash forecast reflecting HVAC seasonality and financing timing

Decision support: KPI dashboards and monthly performance reviews with action items

Growth: Support capital planning, overhead management, banking/financing readiness, and scenario modeling

Systems: Collaborate on ServiceTitan ? QuickBooks workflows and reporting integrity

Who You Are

A hands-on finance leader (CFO / Finance Director / Controller+) who can build structure and cadence

Strong in cash forecasting, management reporting, and operational finance (job-costing exposure is helpful but not required)

Comfortable leading remote resources (bookkeepers, data-entry support, internal staff) with clear standards and accountability

Clear communicator—able to lead monthly strategy calls and translate numbers into decisions

Requirements

CFO/Finance Director/Controller-level experience (fractional is fine)

Strong QuickBooks Online and Excel/Sheets capability (must be able to build models and dashboards)

Excellent English and strong meeting leadership

Nice to Have (Not Required)

ServiceTitan experience or field-service financial workflow experience

Home services / trades exposure (HVAC, plumbing, electrical, roofing, restoration)

Experience designing a cleanup/reconciliation playbook and supervising execution

Engagement & Structure

Remote (global candidates welcome)

Initial phase: hourly/contract (cleanup leadership + setup)

Ongoing: transition to a monthly retainer once the system is running

Expected time: ramp-up during initial setup; ongoing cadence afterward (we will align scope and hours)

How to Apply
Please send:

A brief summary of your relevant experience

2–3 examples of measurable outcomes you drove (cash, margin, reporting speed, forecasting accuracy)

Your hourly rate and weekly availability

VIEW OTHER JOB POSTS FROM:
SHARE THIS POST
facebook linkedin
  BENCHMARKS  
Loading Time: Base Classes  0.0008
Controller Execution Time ( Jobseekers / Job )  0.0117
Total Execution Time  0.0131
  GET DATA  
No GET data exists
  MEMORY USAGE  
1,506,096 bytes
  POST DATA  
No POST data exists
  URI STRING  
jobseekers/job/Fractional-CFO-Residential-HVAC-1550729
  CLASS/METHOD  
jobseekers/job
  DATABASE:  onlinejobs (Jobseekers:$db)   QUERIES: 13 (0.0055 seconds)  (Hide)
0.0004   SELECT *
                                
FROM exrates
                                WHERE rate_name 
'USD-PHP' 
0.0004   SELECT *
FROM `employer_jobs`
WHERE `job_id` = 1550729
 LIMIT 1 
0.0004   SELECT *
FROM `employers`
WHERE `employer_id` = 892508
 LIMIT 1 
0.0004   SELECT COUNT(*) AS `numrows`
FROM `t_thread` `t`
LEFT JOIN `t_thread_misc` `miscON `t`.`id` = `misc`.`thread_id`
WHERE `t`.`job_id` = 1550729
AND `misc`.`idIS NULL 
0.0004   SELECT e.business_namee.logoe.websitee.rebill_datee.date_added member_datehitsDATEDIFF('2026-04-17',ej.date_added) duration_daysDATEDIFF('2026-04-17',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-04-17',ej.date_added) <= 14 ))
                                   AND 
e.deactivate != AND ej.deleted AND job_id '1550729' 
0.0003   SELECT *
FROM `employer_jobs_skills` `ejs`
LEFT JOIN `skills_categories` `scON `ejs`.`skill_id` = `sc`.`id`
WHERE `job_id` = 1550729 
0.0007   UPDATE employer_jobs SET hit_counts '***Jan-09-2026=13***Jan-10-2026=6***Jan-11-2026=126***Jan-12-2026=70***Jan-13-2026=25***Jan-14-2026=8***Jan-15-2026=19***Jan-16-2026=21***Jan-17-2026=6***Jan-18-2026=8***Jan-19-2026=5***Jan-20-2026=12***Jan-21-2026=3***Jan-22-2026=4***Jan-23-2026=7***Jan-25-2026=1***Jan-26-2026=3***Jan-27-2026=1***Jan-29-2026=4***Jan-30-2026=2***Jan-31-2026=2***Feb-01-2026=2***Feb-02-2026=1***Feb-04-2026=2***Feb-05-2026=2***Feb-06-2026=1***Feb-07-2026=3***Feb-08-2026=1***Feb-09-2026=1***Feb-10-2026=1***Feb-12-2026=3***Feb-13-2026=4***Feb-14-2026=3***Feb-16-2026=2***Feb-17-2026=3***Feb-18-2026=1***Feb-19-2026=2***Feb-20-2026=1***Feb-23-2026=1***Feb-24-2026=2***Feb-25-2026=3***Feb-27-2026=3***Mar-01-2026=1***Mar-02-2026=3***Mar-03-2026=1***Mar-04-2026=2***Mar-05-2026=1***Mar-06-2026=3***Mar-07-2026=2***Mar-10-2026=3***Mar-11-2026=2***Mar-12-2026=2***Mar-14-2026=2***Mar-15-2026=5***Mar-17-2026=3***Mar-18-2026=4***Mar-19-2026=2***Mar-20-2026=3***Mar-21-2026=8***Mar-22-2026=1***Mar-23-2026=2***Mar-24-2026=7***Mar-25-2026=1***Mar-26-2026=2***Mar-27-2026=2***Mar-29-2026=2***Mar-31-2026=1***Apr-01-2026=4***Apr-02-2026=5***Apr-03-2026=1***Apr-05-2026=3***Apr-06-2026=1***Apr-07-2026=1***Apr-08-2026=1***Apr-10-2026=3***Apr-14-2026=1***Apr-17-2026=2' WHERE job_id'1550729'  
0.0005   UPDATE employer_jobs SET monthly_hits '***Jan-2026=346***Feb-2026=42***Mar-2026=65***Apr-2026=22' WHERE job_id'1550729'  
0.0004   SELECT date_sent FROM jobseeker_sent_emails WHERE jobseeker_id '' AND job_id '1550729' 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` = 1550729 
0.0003   SELECT COUNT(*) AS `numrows`
FROM `employer_jobs`
WHERE `employer_id` = '892508'
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)