Bookkeeper / CPA + Google Apps Script Developer (Full-Time)

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

TYPE OF WORK

Full Time

SALARY

Negotiable ($5/hr trial period)

HOURS PER WEEK

40

DATE UPDATED

Aug 19, 2026

JOB OVERVIEW

We are a US-based mineral rights and royalty acquisition company looking for a rare hybrid: someone with a strong accounting/bookkeeping background who is ALSO a strong Google Apps Script developer.

This is NOT a general VA role. We already have help with admin tasks. We need someone who can look at our financial trackers and deal spreadsheets with the eye of a bookkeeper - and then build the automation to keep them accurate, reconciled, and up to date without being told twice.

WHAT YOU WILL DO:

- Build and maintain Google Apps Script automations tied to our core Google Sheets (deal trackers, invoice trackers, transaction logs)
- Reconcile purchases vs. sales on closed deals - verify we sold 100% of what we bought, flag any discrepancies down to the line item
- Automate invoice tracking - incoming invoice emails auto-update our tracking files
- Clean up and maintain financial/deal data across multiple linked spreadsheets
- Use AI tools (Claude) to work faster - we will provide access
- Deliver finished projects quickly, then move to the next one

WHO YOU ARE:

- Accounting, bookkeeping, or CPA background (CPA preferred but not required if your bookkeeping fundamentals are strong)
- Proven Google Apps Script experience - you have written real scripts that run in production, not just recorded macros
- Advanced Google Sheets skills (formulas, structure, data integrity)
- Obsessive attention to detail - a number that is off by one decimal should bother you
- Excellent individual written and verbal English, with strong logic and comprehension - you understand instructions the first time and communicate clearly on your own, without AI writing for you
- You execute fast and bring solutions, not questions. We review your work; you take charge of it.
- You keep things simple - no overcomplicated systems
- You will send one clear summary email per day

WHAT WE OFFER:

- Full-time, long-term role (40 hrs/week)
- 2-week paid trial at $5/hr - after the trial, pay is negotiable based on experience and we pay for skill
- Pay via Payoneer (weekly during trial, monthly rate after)
- Direct work with the owner - no layers, no bureaucracy
- We pay for the tools you need (AI access, extra monitors if needed)

HOW TO APPLY:

1. Start your application with the word LEDGER so we know you read this posting.
2. Tell us your accounting/bookkeeping background in 2-3 sentences.
3. Describe ONE Google Apps Script project you built: what it did, what it connected to, and how long it took you.
4. Answer this: A tracker shows we bought 320 net acres across 4 deals but our sale deeds only total 317.5. What are the first two things you check?

Applications that skip any of the four items above will not be read. We hire fast for the right person - the 2-week paid trial starts immediately for the right candidate.

VIEW OTHER JOB POSTS FROM:
SHARE THIS POST
facebook linkedin
  BENCHMARKS  
Loading Time: Base Classes  0.0007
Controller Execution Time ( Jobseekers / Job )  0.0139
Total Execution Time  0.0152
  GET DATA  
No GET data exists
  MEMORY USAGE  
1,489,784 bytes
  POST DATA  
No POST data exists
  URI STRING  
jobseekers/job/Bookkeeper-CPA-Google-Apps-Script-Developer-Full-Time-1712637
  CLASS/METHOD  
jobseekers/job
  DATABASE:  onlinejobs (Jobseekers:$db)   QUERIES: 13 (0.0079 seconds)  (Hide)
0.0004   SELECT *
                                
FROM exrates
                                WHERE rate_name 
'USD-PHP' 
0.0009   SELECT *
FROM `employer_jobs`
WHERE `job_id` = 1712637
 LIMIT 1 
0.0008   SELECT *
FROM `employers`
WHERE `employer_id` = 871604
 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` = 1712637
AND `misc`.`idIS NULL 
0.0005   SELECT e.business_namee.logoe.websitee.rebill_datee.date_added member_datehitsDATEDIFF('2026-08-28',ej.date_added) duration_daysDATEDIFF('2026-08-28',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-28',ej.date_added) <= 14 ))
                                   AND 
e.deactivate != AND ej.deleted AND job_id '1712637' 
0.0003   SELECT *
FROM `employer_jobs_skills` `ejs`
LEFT JOIN `skills_categories` `scON `ejs`.`skill_id` = `sc`.`id`
WHERE `job_id` = 1712637 
0.0009   UPDATE employer_jobs SET hit_counts '***Aug-19-2026=242***Aug-20-2026=83***Aug-21-2026=55***Aug-22-2026=22***Aug-25-2026=1***Aug-28-2026=1' WHERE job_id'1712637'  
0.0005   UPDATE employer_jobs SET monthly_hits '***Aug-2026=404' WHERE job_id'1712637'  
0.0009   SELECT date_sent FROM jobseeker_sent_emails WHERE jobseeker_id '' AND job_id '1712637' 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` = 1712637 
0.0012   SELECT COUNT(*) AS `numrows`
FROM `employer_jobs`
WHERE `employer_id` = '871604'
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)