Finance & Business Analyst — SaaS / Subscription Reporting (Remote)

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

TYPE OF WORK

Part Time

SALARY

$15-$20/hour

HOURS PER WEEK

20

DATE UPDATED

May 21, 2026

JOB OVERVIEW

About the role
We're a US-based finance and advisory practice supporting a growing roster of clients — subscription and SaaS businesses first, with others added as we scale. We're looking for a sharp, tech-fluent analyst to own recurring financial and operational reporting across these clients and make it faster, cleaner, and more insightful using modern tools, including AI. You'll work directly with the founder and a small team, with real room to grow into broader analytics work as new clients come on.
This is a long-term, part-time role of roughly 100 hours per month, with potential to grow over time.

What you'll do

Own recurring financial and SaaS-metric reporting: NRR, GRR, logo retention, churn, ARR/MRR movement, and cohort analysis
Turn raw data from accounting and billing systems into clean, structured, decision-ready reporting and dashboards
Use AI tools and light automation/scripting to speed up reporting — less manual work, faster turnaround, better-looking output

Support budgets, forecasts, and ad-hoc analysis for the founder and clients

Reconcile and pressure-test data; flag anomalies before they reach a client

Grow into reporting for new clients and domains as the practice expands — the core skill is the same: turn messy data into reliable, clean reporting

What we're looking for

Working knowledge of subscription/SaaS metrics (NRR, GRR, logo retention, churn) and why they matter — this is the differentiator

Advanced Excel (clean model structure, pivots, lookups) — non-negotiable

Genuinely tech-fluent and fast-learning: you actively use AI tools (ChatGPT, Claude, etc.) to work faster, and you're comfortable using light scripting or automation to eliminate manual work

Strong analytical instinct — you understand the story behind the numbers, not just the mechanics

Clear written English, reliable across time zones, detail-obsessed, and self-directed once trained

Strong pluses

SQL and/or BI tools (Power BI, Tableau, Looker)
Scripting / automation (Python, Google Apps Script)
QuickBooks or other accounting/billing-system experience
Foundational data-warehouse exposure (BigQuery, Snowflake, Postgres) — with room to grow into broader data work

Who this role is for (and who it's not)
This is a hands-on, do-the-work role, not a leadership or architecture seat. You'll love it if you're an individual contributor who enjoys building clean reports and models, you're early-to-mid in your career and growing toward more responsibility, you take direction well, and you want a stable long-term remote role you can settle into. It's not the right fit if you're a manager, director, or architect looking to lead teams or set strategy.

Rate
$15–$20/hour depending on experience, roughly 100 hours/month, long-term.

How to apply
Send your CV and a short note on a reporting or SaaS-metrics project you're proud of. Bonus: include a dashboard or model sample, and tell us one specific way you've used an AI tool to do analytical work faster. Please start your message with the word "RETENTION" so we know you read this post.

VIEW OTHER JOB POSTS FROM:
SHARE THIS POST
facebook linkedin
  BENCHMARKS  
Loading Time: Base Classes  0.0012
Controller Execution Time ( Jobseekers / Job )  0.0200
Total Execution Time  0.0221
  GET DATA  
No GET data exists
  MEMORY USAGE  
1,504,528 bytes
  POST DATA  
No POST data exists
  URI STRING  
jobseekers/job/Finance-Business-Analyst-SaaS-Subscription-Reporting-Remote-1652576
  CLASS/METHOD  
jobseekers/job
  DATABASE:  onlinejobs (Jobseekers:$db)   QUERIES: 13 (0.0125 seconds)  (Hide)
0.0003   SELECT *
                                
FROM exrates
                                WHERE rate_name 
'USD-PHP' 
0.0014   SELECT *
FROM `employer_jobs`
WHERE `job_id` = 1652576
 LIMIT 1 
0.0013   SELECT *
FROM `employers`
WHERE `employer_id` = 937456
 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` = 1652576
AND `misc`.`idIS NULL 
0.0005   SELECT e.business_namee.logoe.websitee.rebill_datee.date_added member_datehitsDATEDIFF('2026-07-26',ej.date_added) duration_daysDATEDIFF('2026-07-26',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-07-26',ej.date_added) <= 14 ))
                                   AND 
e.deactivate != AND ej.deleted AND job_id '1652576' 
0.0008   SELECT *
FROM `employer_jobs_skills` `ejs`
LEFT JOIN `skills_categories` `scON `ejs`.`skill_id` = `sc`.`id`
WHERE `job_id` = 1652576 
0.0007   UPDATE employer_jobs SET hit_counts '***May-21-2026=152***May-22-2026=200***May-23-2026=50***May-24-2026=39***May-25-2026=71***May-26-2026=57***May-27-2026=52***May-28-2026=30***May-29-2026=23***May-30-2026=21***May-31-2026=9***Jun-01-2026=24***Jun-02-2026=40***Jun-03-2026=15***Jun-04-2026=7***Jun-05-2026=13***Jun-06-2026=16***Jun-07-2026=9***Jun-08-2026=15***Jun-09-2026=17***Jun-10-2026=28***Jun-11-2026=51***Jun-12-2026=27***Jun-13-2026=6***Jun-14-2026=7***Jun-15-2026=17***Jun-16-2026=18***Jun-17-2026=17***Jun-18-2026=14***Jun-19-2026=5***Jun-20-2026=15***Jun-21-2026=9***Jun-22-2026=13***Jun-23-2026=13***Jun-24-2026=7***Jun-25-2026=6***Jun-26-2026=11***Jun-27-2026=6***Jun-28-2026=7***Jun-29-2026=10***Jun-30-2026=16***Jul-01-2026=6***Jul-02-2026=7***Jul-03-2026=6***Jul-04-2026=6***Jul-05-2026=8***Jul-06-2026=15***Jul-07-2026=5***Jul-08-2026=2***Jul-09-2026=12***Jul-10-2026=6***Jul-11-2026=8***Jul-12-2026=6***Jul-13-2026=6***Jul-14-2026=4***Jul-15-2026=2***Jul-16-2026=4***Jul-17-2026=3***Jul-18-2026=5***Jul-19-2026=1***Jul-20-2026=8***Jul-21-2026=3***Jul-22-2026=3***Jul-23-2026=3***Jul-24-2026=5***Jul-25-2026=6***Jul-26-2026=3' WHERE job_id'1652576'  
0.0006   UPDATE employer_jobs SET monthly_hits '***May-2026=704***Jun-2026=459***Jul-2026=143' WHERE job_id'1652576'  
0.0020   SELECT date_sent FROM jobseeker_sent_emails WHERE jobseeker_id '' AND job_id '1652576' AND status LIKE 'sent%' ORDER BY id DESC  
0.0005   SELECT *
FROM `employer_jobs_skills` `ejs`
LEFT JOIN `skills_categories` `scON `ejs`.`skill_id` = `sc`.`id`
WHERE `job_id` = 1652576 
0.0008   SELECT COUNT(*) AS `numrows`
FROM `employer_jobs`
WHERE `employer_id` = '937456'
AND `date_added` >= '2022-06-08' 
0.0005   select from teasers 
0.0012   SELECT FROM skill_categories WHERE skill_cat_id='' 
  HTTP HEADERS  (Show)
  SESSION DATA  (Show)
  CONFIG VARIABLES  (Show)