Select a project from the list to open the billing worksheet.
Construction Project Dashboard
—
Company Performance
Viewing:
ⓘ
This Month Billing (gross)
—
Across all active projects
ⓘ
This Month Costs
—
QB transactions + labour
ⓘ
This Month Gross Profit
—
GP%
ⓘ
Holdback Retained (cumulative)
—
Cumulative, all active projects
ⓘ
Backlog
—
Contract + Approved COs − Billed to Date
ⓘ
New Projects
—
This period
ⓘ
Completed Projects
—
This period
ⓘ
Portfolio GP%
—
From QB Job Profitability
ⓘ
Overdue Billing
—
Past deadline, not billed
ⓘ
Missing Estimate
—
Projects without estimate
12-Month Billing & GP% Trend
● Actual ○ - - - Estimated (hover for details)
Backlog Over Time
Effective contract value (base + approved COs, as they stood each month) minus cumulative billed-to-date · currently-tracked projects only
Biggest Spend on Subcontractors
From QB transactions tagged "Subcontractor" in the Vendor Registry
Busiest General Contractors
Total billed to date, active projects only
ⓘ Checks: ● Estimate ● QB Profit ● QB Trans ● QB Time
| PO # | Project | PM | Contract | Prev. Billed | This Period | Progress | Portal | HB | Checks ⓘ | Status | Trend | Actions |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
Go to Data Setup to import your project list. | ||||||||||||
Invoice Management
Scan · Assign to project · Confirm · Flag for review
ⓘ
0
Confirmed Invoices
ⓘ
0
Needs Review
ⓘ
0
Action Required
ⓘ
0
Total This Period
Sort:
Click Scan Inbox to pull emails from admin@blackstonemechanical.ca
Already confirmed invoices load automatically from SharePoint
Already confirmed invoices load automatically from SharePoint
🚩 Flag Invoice for Review
Select reasons — PM will be notified
Other notes
Data Source
Billing Worksheet
Select a project to begin
Project Details
Select a project to begin
Select a project from the list to view or edit its details.
Project Performance
Select a project to review its performance
Select a project from the list to review its performance.
Progress Billing Report
Select a project to build or generate a billing report
Select a project from the list to build or generate a billing report.
Post-Billing Audit
Compares QB actual cost against billed amount, flags under-billed / over-billed / low-GP projects after a period closes
Data Setup
Project list · QuickBooks · Connections · Database
Project Data
Epic Final Invoicing List
Upload the Excel project list monthly. Review every change in the audit screen before writing to the database. Will auto-refresh in a future update.
No file imported yet — using embedded default data
Default data
Historical Epic Data — for year-over-year trends only
Upload a prior year's Epic Invoicing List (e.g. 2022-2025) to feed the dashboard's month selector and year-over-year charts. Adds billing history only — never touches current project status, contracts, or estimates.
No historical years loaded yet
Optional
QuickBooks Reports — Source of truth for all costs
Upload monthly: Job Profitability Summary · Transaction Detail by Account · Time by Job Detail. These drive all cost actuals in the forecast and billing worksheets.
Upload Job Profitability, Transaction Detail, Time by Job
Upload required
Vendor Registry — auto-categorizes incoming invoices by trade
Upload BSM_Vendor_Registry.xlsx. Invoice emails are matched to vendors by sender domain and tagged with trade category, cost type, and QuoteToMe status automatically when scanning the inbox.
No vendor registry loaded yet
Upload required
Microsoft 365 Connection
☁
Sign in to access inbox scanning and SharePoint data
Not signed in
Admin inbox access — admin@blackstonemechanical.ca
Sign in to verify inbox access
SharePoint Database
Database Management
✓ Changes save automatically in the background as you work — the buttons below are a manual override for troubleshooting, not a required step.
Force a full re-sync of everything to SharePoint — useful if the sync indicator shows an error, or you suspect something didn't save.
Force-refresh from SharePoint — useful right after another PM makes a change you want to see immediately.
Overhead Time
Overhead Time (Admin / Break / Shop / STAT)
Non-project overhead hours (Admin Time, Break, Shop Time, STAT jobcodes) synced hourly from QuickBooks Time -- these used to dump into the Task Match Review queue as noise; now they land here instead, per employee per month, so trends (e.g. Shop Time creeping up for someone) can be spotted over time.
Click Refresh to load overhead time.
List Health Check — read-only checks across the BSM_* lists
Looks for the things that break quietly: lists approaching SharePoint's 5,000-row limit (the failure that stopped the labour sync for 17 days), duplicate people on the roster, change orders carrying a retired status that silently drops them from billing math, projects with no estimate imported, and learned task mappings pointing at tasks that no longer exist. Nothing here changes any data.
Click Run to check the lists. Reads only — takes a few seconds.
User Management
Users & Permissions
All users sign in with their BlackStone M365 account. Assign roles here. Admins have full access including database management and project imports. PMs have full access to billing and forecasting.
Click Refresh to load current users.
Add New User
API Configuration
Anthropic API ✓ Secured server-side
API key is stored as a server-side environment variable and is never exposed in the browser. All AI requests go through the authenticated /api/claude proxy — there is no client-side key fallback.
Alberta Billing Deadlines — 2026
AI Assistant
Ask questions about projects, invoices, billing, and forecasts
👋 Hello — I'm the BlackStone Mechanical billing assistant. I can help with project billing questions, invoice matching, cost analysis, and forecast interpretation. What do you need?
Settings
Configuration · Users · Admin tools
Microsoft 365
Not signed in
Use the Sign in / Sign out button in the top bar.
Configuration
Company and Province are fixed. Labour Rate is not yet synced to SharePoint — click Save after changing it, or the change only applies to this browser session.
The labour rate is set per project by the estimate import — the estimating
workbook generates it, and importing an estimate updates that project's rate.
$39/hr is only a placeholder for projects with no estimate rate yet, and any figure calculated on it is marked ⚠ $39 placeholder where it appears. To correct a project's rate, re-import its estimate.
$39/hr is only a placeholder for projects with no estimate rate yet, and any figure calculated on it is marked ⚠ $39 placeholder where it appears. To correct a project's rate, re-import its estimate.
Trade Roster — classifies employees by trade for labour hour breakdowns
Employees appear here automatically once you upload a QB Time by Job report. Classify each one's trade so hours can be broken down by trade instead of just a lump total.
No employees loaded yet.
Audit Log
Permanent record of every significant action — who changed what and when.
Click Load to view recent activity.