1 Track
2 Review
3 Approve
4 Report
Time Overview
9:41
Live Now Kitchen Remodel — Phase 2
02:34 hours today
GPS Verified
· Marcus R. on site
18.5h This Week
3 Active Jobs
$2,590 Labor Cost
Hours by Job View All
Kitchen Remodel — Phase 2
12.5h
Bathroom Tile Install
4.0h
Backyard Fence Repair
2.0h
4 entries pending approval Review and approve hours to release payments

PosterTimeOverview — dashboard with live timer + job breakdown

useQuery(posterTimeOverview), useQuery(getActiveTimers)

Job Time Log
10:15
Total Logged 42.5h
Estimated: 60h 71% complete
Today — Feb 24
MR
Marcus Rivera 2.5h
Cabinet framing & drywall prep
GPS Verified
Pending
JW
James Wilson 2.5h
Electrical rough-in for island
GPS Verified
Pending
Yesterday — Feb 23
MR
Marcus Rivera 8.0h
Demolition & debris removal
GPS Verified
Approved
JW
James Wilson 6.0h
Plumbing reroute for new sink layout
GPS Verified
Approved
Feb 22
MR
Marcus Rivera 7.5h
Counter template & measurement
GPS Verified
Approved

PosterJobTimeLog — grouped by date, per-worker entries

useQuery(posterGetJobTimeEntries, { jobId }), approve/dispute actions

Entry Detail
10:22
MR
Marcus Rivera Lead Carpenter
Time Details
Clock In 7:02 AM
Clock Out 9:32 AM

Duration 2h 30m
Break Time 0m
Net Billable 2h 30m
Task Performed Cabinet framing and drywall prep for kitchen island. Installed 2x4 backing for upper cabinet support.
Location
Verified — within 30m of job site
1847 Highland Ave, Akron, OH 44301
Photos (3)

PosterTimeEntryDetail — full entry with map + photos

useQuery(posterGetTimeEntry, { entryId }), useMutation(approveEntry)


Weekly Summary
11:30
Feb 17 – Feb 23, 2026 Week 8
Daily Hours 36.5h total
8.0
M
7.5
T
6.0
W
8.0
T
7.0
F
0
S
0
S
Cost Summary
Total Hours 36.5h
Blended Hourly Rate $68.00/hr

Weekly Labor Cost $2,482.00
Comparison to Estimate
Estimated Weekly 40.0h
Actual 36.5h
Variance -3.5h under
You’re trending 8.75% under the estimated weekly hours

PosterWeeklySummary — calendar week view with cost calc

useQuery(posterWeeklySummary, { weekStart }), bar chart + rate math

Approve Time
11:45
Batch Approve All Approve all GPS-verified entries at once
MR
Marcus Rivera 2.5h
Feb 24 · Cabinet framing & drywall prep
GPS Verified · 3 photos
JW
James Wilson 2.5h
Feb 24 · Electrical rough-in for island
GPS Verified · 1 photo
AK
Amy Kowalski 4.0h
Feb 23 · Tile layout & mortar prep
GPS: 85m from site
MR
Marcus Rivera 8.0h
Feb 22 · Counter template & measurement
GPS Verified · 5 photos
Approval Notes (Optional)

PosterApproveTime — batch + individual approval queue

useQuery(posterPendingEntries), useMutation(batchApproveEntries)

Dispute Entry
12:00
AK
Amy Kowalski Feb 23 · 4.0h · Tile layout & mortar prep
Disputing
Reason for Dispute
Hours Incorrect
Worker Not Present
Wrong Job Assigned
Work Not Completed
Other
Description
Suggested Correct Hours
Current
4.0h
Suggested
Supporting Evidence Upload photos, screenshots, or camera footage clips
The contractor will be notified and has 48h to respond

PosterDisputeEntry — dispute form with reason + evidence

useMutation(posterDisputeTimeEntry), file upload via useUploadFile


Cost Tracking
1:15
Budget Used 62%
$5,610 of $9,000 labor budget
Hours
Estimated Total 120.0h
Actual to Date 82.5h
Remaining 37.5h

At current pace, project will use ~95% of budgeted hours
Labor Cost Breakdown
Hourly Rate (blended) $68.00/hr
Hours Worked 82.5h
Total Labor Cost $5,610.00

Budget Remaining $3,390.00
Completion Projection Based on current weekly pace
Projected Final Cost $8,550.00
vs. Budget $450 under budget
Est. Completion Mar 7, 2026
Cost by Worker
MR
Marcus Rivera
$3,254
JW
James Wilson
$1,632
AK
Amy Kowalski
$724

PosterCostTracking — budget vs actual + projection

useQuery(posterJobCostSummary, { jobId }), derived calculations

Time Reports
2:30
Date Range
From
Feb 1, 2026
To
Feb 24, 2026
This Month
Last 7 Days
Last 30 Days
Custom
View By
Worker
Task
Day
By Worker 82.5h total
MR
Marcus Rivera 47.5h
58%
JW
James Wilson 24.0h
29%
AK
Amy Kowalski 11.0h
13%
By Task Top activities
Demolition & Prep 24.0h · 3 workers
Cabinet Framing 18.5h · 1 worker
Electrical Rough-In 14.0h · 1 worker
Plumbing Reroute 12.0h · 1 worker
Countertop Template 14.0h · 2 workers
Total Hours 82.5h
Total Cost $5,610.00
Workers 3
Export
PDF
CSV
Email

PosterTimeReports — filterable export with breakdowns

useQuery(posterTimeReport, { dateRange, groupBy }), PDF/CSV generation


Data Architecture

Schema (Poster View)

timeEntries {
  jobId: Id<jobs>
  contractorId: Id<contractorUsers>
  clockInAt: number (timestamp)
  clockOutAt: number?
  clockInLocation: {lat, lng, accuracy}
  taskDescription: string?
  photos: Id<_storage>[]?
  durationMinutes: number?
  breakMinutes: number?
  gpsVerified: boolean
  gpsDistanceMeters: number?
  approvalStatus: pending | approved |
    disputed | adjusted

  approvedAt: number?
  approvedBy: Id<posterUsers>?
}

timeDisputes {
  entryId: Id<timeEntries>
  posterId: Id<posterUsers>
  reason: hours_incorrect |
    not_present | wrong_job |
    work_incomplete | other

  description: string
  suggestedHours: number?
  evidence: Id<_storage>[]?
  status: open | resolved | escalated
}

Queries

posterTimeOverview()
  → {activeTimers, weeklyHours,
    jobBreakdown, pendingCount}


posterGetJobTimeEntries(
  jobId, dateRange?, limit?)
  → [{worker, hours, task, gps...}]

posterGetTimeEntry(entryId)
  → {clockIn, clockOut, worker,
    task, photos, location, status}


posterWeeklySummary(weekStart)
  → {dailyHours[], totalHours,
    costCalc, vsEstimate}


posterPendingEntries(jobId?)
  → entries with approvalStatus
    == “pending”


posterJobCostSummary(jobId)
  → {budget, actual, projection,
    workerCosts[], remaining}


posterTimeReport(
  dateRange, groupBy, jobId?)
  → {byWorker[], byTask[],
    totals, exportUrl}

Mutations

approveTimeEntry(entryId,
  notes?)
  → sets approvalStatus = approved,
    triggers payment release


batchApproveEntries(
  entryIds[], notes?)
  → bulk approve, returns count

posterDisputeTimeEntry(
  entryId, reason, description,
  suggestedHours?, evidence?)
  → creates timeDispute,
    notifies contractor


generateTimeReport(
  jobId?, dateRange, format)
  → {reportUrl, expiresAt}

Statuses & Hooks

Approval Statuses:
  pending → awaiting poster review
  approved → poster confirmed hours
  disputed → poster challenged entry
  adjusted → hours corrected post-dispute

Dispute Statuses:
  open → awaiting contractor response
  resolved → both parties agreed
  escalated → admin intervention needed

GPS Thresholds:
  verified → within 50m of job site
  warning → 50–100m from site
  flagged → >100m from site

Automations:
  onEntryComplete → push notification
    to poster for approval
  onApproval → triggers escrow
    payment release calculation
  onDispute → Slack alert to ops,
    email + in-app to contractor
  autoApprove → GPS-verified entries
    auto-approve after 72h if no action
Live Tracking + Job Time Log
9:41
Time Tracking3 Active Jobs
Live Now
Kitchen Remodel — Phase 2
02:34
hours today
GPS Verified· Marcus R. on site
18.5h
This Week
3
Active Jobs
$2,590
Labor Cost
Hours by Job
Kitchen Remodel — Phase 2
12.5h logged · 71% of estimate
Bathroom Tile Install
4.0h logged · 28% of estimate
Backyard Fence Repair
2.0h logged · 11% of estimate
Kitchen Remodel — Time Log
Total Logged42.5h
Estimated: 60h71% complete
Today — Feb 24
MR
Marcus Rivera2.5h
Cabinet framing & drywall prep
GPS VerifiedPending
JW
James Wilson2.5h
Electrical rough-in for island
GPS VerifiedPending
Yesterday — Feb 23
MR
Marcus Rivera8.0h
Demolition & debris removal
GPS VerifiedApproved

Review & Approve Hours
9:41
Approve Hours4 Pending
Batch Approve All
Approve all GPS-verified entries at once
MR
Marcus Rivera2.5h
Feb 24 · Cabinet framing & drywall prep
GPS Verified· 3 photos
JW
James Wilson2.5h
Feb 24 · Electrical rough-in for island
GPS Verified
AK
Amy Kowalski4.0h
Feb 23 · Tile layout & mortar prep
GPS: 85m from site
Weekly Summary
Feb 17 – Feb 23, 2026Week 8
36.5h
Total
$2,482
Labor Cost
-3.5h
Under Est.
Entry Detail
MR
Marcus Rivera
Lead Carpenter
Clock In7:02 AM
Clock Out9:32 AM
Duration2h 30m
TaskCabinet framing & drywall prep
Verified — within 30m of job site
1847 Highland Ave, Akron, OH 44301

Cost Tracking & Export
9:41
Reports
Cost Tracking
Kitchen Remodel — Phase 2In Progress
$2,890
Spent
$4,200
Budget
69% of budget used · $1,310 remaining
Bathroom Tile InstallIn Progress
$680
Spent
$2,100
Budget
32% of budget used · $1,420 remaining
Export Report
Date Range
Feb 1, 2026
Feb 28, 2026
Format
PDF Report
Formatted time & cost summary
CSV Export
Raw data for spreadsheets
Full Time Tracking Overview
https://app.3bids.io/time-tracking

Time Tracking

3 Active Jobs 4 Pending
18.5h
This Week
$2,590
Labor Cost
4
Pending Approval
-8.75%
Under Estimate
Live Now
Kitchen Remodel — Phase 2
02:34
GPS Verified· Marcus R.
Hours by Job
Kitchen Remodel
12.5h · 71%
Bathroom Tile
4.0h · 28%
Fence Repair
2.0h · 11%
Pending Approval
MR
Marcus Rivera2.5h
Feb 24 · Cabinet framing · GPS Verified
JW
James Wilson2.5h
Feb 24 · Electrical rough-in · GPS Verified
AK
Amy Kowalski4.0h
Feb 23 · Tile layout · GPS: 85m
MR
Marcus Rivera8.0h
Feb 22 · Counter template · GPS Verified

Cost Tracking & Report Generation
https://app.3bids.io/time-tracking/reports

Reports

Feb 2026
Cost by Job
Kitchen Remodel — Phase 2In Progress
Budget: $4,200Spent: $2,890 (69%)
Bathroom Tile InstallIn Progress
Budget: $2,100Spent: $680 (32%)
Backyard Fence RepairIn Progress
Budget: $800Spent: $272 (34%)
Weekly Summary
Feb 17 – Feb 23, 2026Week 8
36.5h
Total Hours
$2,482
Labor Cost
-3.5h
Under Estimate
Blended Rate$68.00/hr
Estimated Weekly40.0h
Export Report
From
Feb 1, 2026
To
Feb 28, 2026