Procore/Construction/Bookkeeping Position

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

TYPE OF WORK

Full Time

WAGE / SALARY

N/A

HOURS PER WEEK

40

DATE UPDATED

Apr 24, 2026

JOB OVERVIEW

Pay: ?300.00 - ?600.00 per hour

Job description:

Role Overview

We are hiring a detail-obsessed project coordinator/bookkeeper to manage the financial and administrative side of active construction projects using Procore.

This is not a basic VA role. You will be responsible for keeping projects financially organized, tracking costs, and making sure nothing slips through the cracks.

If you don’t have real Procore experience, this is not a fit.


Key Responsibilities

Manage project financials and documentation inside Procore
Track budgets, job costs, and cost codes across multiple projects
Process and manage subcontractor invoices and vendor bills
Assist with commitments, change orders, and contract tracking
Ensure all project data in Procore is accurate and up to date
Reconcile project costs with accounting records
Support monthly job cost reporting and financial summaries
Coordinate with project managers, vendors, and internal team
Identify cost overruns or discrepancies early


Requirements (Non-Negotiable)

2+ years of hands-on experience using Procore
2+ years of construction accounting and job costing
Experience with budgets, change orders, and cost tracking
Familiar with U.S. construction workflows (preferred)
Experience with Xero/QuickBooks or similar accounting software (bonus)
High attention to detail (errors directly impact project profitability)
Strong written and spoken English
Reliable internet and ability to work U.S. business hours (or overlap)


What We’re Looking For

Someone who owns their role and doesn’t need constant direction
Someone who can catch mistakes before they become expensive problems
Someone comfortable working in a fast-paced construction environment
Someone who understands that clean numbers = profitable projects


Compensation

Competitive salary (based on experience)
Long-term role with growth opportunity

VIEW OTHER JOB POSTS FROM:
SHARE THIS POST
facebook linkedin
  BENCHMARKS  
Loading Time: Base Classes  0.0009
Controller Execution Time ( Jobseekers / Job )  0.0564
Total Execution Time  0.0579
  GET DATA  
No GET data exists
  MEMORY USAGE  
1,497,848 bytes
  POST DATA  
No POST data exists
  URI STRING  
jobseekers/job/ProcoreConstructionBookkeeping-Position-1631271
  CLASS/METHOD  
jobseekers/job
  DATABASE:  onlinejobs (Jobseekers:$db)   QUERIES: 13 (0.0508 seconds)  (Hide)
0.0003   SELECT *
                                
FROM exrates
                                WHERE rate_name 
'USD-PHP' 
0.0003   SELECT *
FROM `employer_jobs`
WHERE `job_id` = 1631271
 LIMIT 1 
0.0003   SELECT *
FROM `employers`
WHERE `employer_id` = 825855
 LIMIT 1 
0.0452   SELECT COUNT(DISTINCT t.id) as cnt
FROM 
`t_thread` `t`
INNER JOIN `t_message` `mON `t`.`id` = `m`.`thread_id`
INNER JOIN `t_message_employer` `eON `m`.`id` = `e`.`message_id`
LEFT JOIN `t_thread_misc` `miscON `t`.`id` = `misc`.`thread_id`
WHERE `t`.`job_id` = 1631271
AND `misc`.`idIS NULL 
0.0005   SELECT e.business_namee.logoe.websitee.rebill_datee.date_added member_datehitsDATEDIFF('2026-06-20',ej.date_added) duration_daysDATEDIFF('2026-06-20',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-06-20',ej.date_added) <= 14 ))
                                   AND 
e.deactivate != AND ej.deleted AND job_id '1631271' 
0.0003   SELECT *
FROM `employer_jobs_skills` `ejs`
LEFT JOIN `skills_categories` `scON `ejs`.`skill_id` = `sc`.`id`
WHERE `job_id` = 1631271 
0.0009   UPDATE employer_jobs SET hit_counts '***Apr-24-2026=937***Apr-25-2026=80***Apr-26-2026=57***Apr-27-2026=84***Apr-28-2026=38***Apr-29-2026=24***Apr-30-2026=16***May-01-2026=10***May-02-2026=7***May-03-2026=7***May-04-2026=29***May-05-2026=3***May-06-2026=8***May-07-2026=6***May-08-2026=3***May-09-2026=4***May-10-2026=1***May-11-2026=6***May-12-2026=5***May-13-2026=6***May-14-2026=1***May-15-2026=4***May-16-2026=6***May-17-2026=8***May-18-2026=3***May-19-2026=3***May-20-2026=6***May-21-2026=2***May-22-2026=5***May-23-2026=5***May-24-2026=4***May-25-2026=2***May-26-2026=6***May-27-2026=2***May-28-2026=5***May-29-2026=3***May-31-2026=1***Jun-01-2026=5***Jun-02-2026=2***Jun-03-2026=3***Jun-04-2026=5***Jun-05-2026=7***Jun-06-2026=2***Jun-07-2026=2***Jun-08-2026=5***Jun-09-2026=4***Jun-10-2026=4***Jun-11-2026=5***Jun-12-2026=1***Jun-13-2026=3***Jun-20-2026=1' WHERE job_id'1631271'  
0.0006   UPDATE employer_jobs SET monthly_hits '***Apr-2026=1236***May-2026=161***Jun-2026=49' WHERE job_id'1631271'  
0.0008   SELECT date_sent FROM jobseeker_sent_emails WHERE jobseeker_id '' AND job_id '1631271' 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` = 1631271 
0.0008   SELECT COUNT(*) AS `numrows`
FROM `employer_jobs`
WHERE `employer_id` = '825855'
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)