BUSINESS CONTROLLER

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

TYPE OF WORK

Full Time

SALARY

$1,105.00 - $1,350.00 per month

HOURS PER WEEK

TBD

DATE UPDATED

Apr 1, 2026

JOB OVERVIEW

About us
Castle Horizon Group is a UK-based holding company operating across temporary accommodation, housing services, property development, and regulated care. We run multiple entities, we're actively acquiring more, and we operate a remote-first leadership model.

The role
We need a Business Controller who owns the performance picture across the entire group. Not just the financials — the operational metrics that drive them. Occupancy rates, void turnaround times, staffing ratios, contract utilisation, compliance status. The financials are the backbone; operational data is where decisions get made.
You'll build and maintain management reporting across all group entities, working with an established external accountancy firm (statutory/compliance) and an existing virtual bookkeeper (transactional processing). Your layer is the middle: management accounts, KPIs, dashboards, cash flow, budgets, and consolidated reporting.
This role sits at the intersection of finance and technology. We're building AI-powered internal tools (CastleAgentIQ) and you will co-design the reporting and dashboard modules — defining what gets measured and how it's presented. You're not just consuming reports. You're building the reporting infrastructure.

What you'll do
Build group-wide operational reporting: occupancy, voids, staffing, compliance, property-level performance
Prepare monthly management accounts for each entity and consolidated group
Design KPI dashboards that give leadership real-time visibility
Monitor and forecast cash flow across all entities
Prepare budgets, reforecasts, and variance analysis
Co-design AI-powered reporting tools — defining data models and automation logic
Manage the existing virtual bookkeeper and oversee data quality
Liaise with external accountants on statutory and year-end processes
Support acquisition due diligence with financial and operational analysis

What we're looking for
Qualified accountant (ACCA, CPA, CIMA, ACA, or internationally recognised equivalent)
Proven multi-entity management accounting experience
Demonstrable experience with operational KPIs — not just financial metrics
Strong Excel / spreadsheet skills
Experience with cloud accounting platforms (Xero, QBO, or similar)
Proven remote working ability across time zones
Genuine excitement about AI tools and automation

Mindset
Business thinker, not just a numbers person — you understand what the metrics mean operationally
Builder mentality — you're creating systems, not inheriting a polished function
Obsessively accurate but pragmatically fast — 90% right on Monday beats 100% right on Friday
Excited by the idea that automation will reshape your workflow — you actively make manual processes redundant

Engagement
Full-time remote engagement (4–5 days per week). Monthly retainer or employment contract depending on location and mutual preference. Scope grows as the group acquires and scales.

How to Apply
----------
Important: Applications without a Loom video will not be considered. We receive a high volume of applications and this is how we identify serious candidates.

Please submit:
Your CV or LinkedIn profile.
A 2-minute Loom video ( ---------- — free to use) where you speak directly to camera and cover:

Introduce yourself briefly — who you are, where you're based, and your professional background
Tell us about a specific multi-entity reporting challenge you've faced. What was broken or missing? What did you build? What did the output look like? Explain what interests you about this role specifically

No cover letter needed. The video tells us everything.
Apply at: ----------

Applications through the OLJ inbox will not be considered — please ONLY apply through the link above.

VIEW OTHER JOB POSTS FROM:
SHARE THIS POST
facebook linkedin
  BENCHMARKS  
Loading Time: Base Classes  0.0008
Controller Execution Time ( Jobseekers / Job )  0.0181
Total Execution Time  0.0195
  GET DATA  
No GET data exists
  MEMORY USAGE  
1,505,464 bytes
  POST DATA  
No POST data exists
  URI STRING  
jobseekers/job/BUSINESS-CONTROLLER-1615051
  CLASS/METHOD  
jobseekers/job
  DATABASE:  onlinejobs (Jobseekers:$db)   QUERIES: 13 (0.0119 seconds)  (Hide)
0.0003   SELECT *
                                
FROM exrates
                                WHERE rate_name 
'USD-PHP' 
0.0010   SELECT *
FROM `employer_jobs`
WHERE `job_id` = 1615051
 LIMIT 1 
0.0009   SELECT *
FROM `employers`
WHERE `employer_id` = 274080
 LIMIT 1 
0.0008   SELECT COUNT(*) AS `numrows`
FROM `t_thread` `t`
LEFT JOIN `t_thread_misc` `miscON `t`.`id` = `misc`.`thread_id`
WHERE `t`.`job_id` = 1615051
AND `misc`.`idIS NULL 
0.0005   SELECT e.business_namee.logoe.websitee.rebill_datee.date_added member_datehitsDATEDIFF('2026-04-16',ej.date_added) duration_daysDATEDIFF('2026-04-16',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-16',ej.date_added) <= 14 ))
                                   AND 
e.deactivate != AND ej.deleted AND job_id '1615051' 
0.0003   SELECT *
FROM `employer_jobs_skills` `ejs`
LEFT JOIN `skills_categories` `scON `ejs`.`skill_id` = `sc`.`id`
WHERE `job_id` = 1615051 
0.0011   UPDATE employer_jobs SET hit_counts '***Apr-01-2026=374***Apr-02-2026=104***Apr-03-2026=62***Apr-04-2026=8***Apr-05-2026=19***Apr-06-2026=21***Apr-07-2026=18***Apr-08-2026=9***Apr-09-2026=10***Apr-10-2026=8***Apr-11-2026=2***Apr-16-2026=1' WHERE job_id'1615051'  
0.0006   UPDATE employer_jobs SET monthly_hits '***Apr-2026=635' WHERE job_id'1615051'  
0.0008   SELECT date_sent FROM jobseeker_sent_emails WHERE jobseeker_id '' AND job_id '1615051' 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` = 1615051 
0.0049   SELECT COUNT(*) AS `numrows`
FROM `employer_jobs`
WHERE `employer_id` = '274080'
AND `date_added` >= '2022-06-08' 
0.0003   select from teasers 
0.0002   SELECT FROM skill_categories WHERE skill_cat_id='' 
  HTTP HEADERS  (Show)
  SESSION DATA  (Show)
  CONFIG VARIABLES  (Show)