Projects
Every project in the portfolio, reported in CAD. Click a column name to sort, the ▼ to filter. Click a row to open it in the Workbook.
Backlog, ETC and EAC — hours
Cost sheet budget hours against time booked in QuickBooks Time. Backlog is budget − actual. ETC is the estimate to complete — a PM override if one is set, otherwise zero once the closing milestone is ticked, otherwise the backlog figure. EAC is actual + ETC. Click a row to see the projects behind it.
Unmapped codes
These codes came from the labour file with no matching budget category, so their hours reach EAC against no budget. Map them here — the full list, including codes already mapped, lives under Setup → Category Map.
Weekly labour by project
Drop the QuickBooks Time weekly CSV. Hours only — this export carries no cost, so it is kept separate from the monthly import and never counted alongside it.
Drop timesheet_report_*.csv here, or click to choose
Resource schedule
Who is on what. Resources down the left grouped by craft, days across the top. Click a bar to edit it, or the + beside a name to add work.
Labour capacity
Net capacity = paid hours × weeks, less vacation, statutory holidays, training and estimated non-billable time. Lunch is not deducted — it is unpaid, so it was never inside paid hours. Each year is stored separately.
Cover against backlog
Remaining work (ETC) for open projects against the capacity above, by department.
Resource table
Everyone who can be scheduled. Craft sets which group they appear under on the Resource Schedule. Mark someone inactive to keep their history without showing them on the schedule — deleting removes their assignments too.
Labour categories
The buckets the Workbook's hours analysis reports on, in the order they appear. Drag a row to reorder. Marking one inactive keeps its history but drops it off the Workbook; a category any project has budgeted cannot be deleted, only deactivated.
Users
Access is two things that must agree: a login in Supabase Auth, and a row on this list. Nearly every access problem is one existing without the other, so both are shown here.
This screen cannot create logins — that needs a key which would give any browser full database access. Add someone here, then have them go to the sign-in screen and use “First time here? Create my password” with the same email.
Screen permissions
Which screens each role sees in the sidebar. Admin is always shown everything, so the matrix cannot be hidden from the people who maintain it.
This hides screens, it does not secure data. Anyone who can sign in can still reach the underlying tables through the API. Row-level security is what restricts data — use it for anything a role must not see.
Category map
Actual hours arrive keyed by QuickBooks Time task; budget hours are keyed by cost sheet labour category. This is the join between them. Anything left unmapped still appears on the backlog report, as an “Unmapped” row with no budget behind it.
Category → department
Actual hours carry a department; budget hours do not. This assigns each budget category to a trade so the backlog report can be read by department. Unassigned categories are reported as “(unassigned)” rather than spread across departments.
Project status rules
Status on the Projects list is generated from each project's next incomplete milestone. Define what each one means — e.g. next milestone “Build Complete” shows as status “In-Build”. Projects whose next milestone has no rule show the raw milestone label in amber.
Next steps
Projects in this view
Worst budget position first. Select a project from the pulldown for its full report.
Labour hours — budget vs actual
By labour category: cost sheet Hours Summary against time booked in QuickBooks Time.
Where the project sits
Bars drawn against the contract value. Budget splits in-house and on-site; cost does the same. Red segment = spend beyond the in-house budget; hatched = untouched on-site reserve.
Cumulative in-house cost vs. budget
Monthly labour + material spend.
In-house budget vs. actual by category
Contractor invoices counted as labour; travel as expense.
Margin sensitivity
Margin = sales order − spend to date − on-site reserve at budget − remaining in-house cost.
Upload actuals
Accepts: a per-project PTD workbook, the full multi-project WIP workbook, or the staging CSVs — all auto-detected. Files whose rows carry project codes (jobcodes, P#, or a project_code column) are distributed to the matching projects automatically; files without codes go to the currently selected project. Grand-total and overhead rows (lunch, vacation, admin) are skipped.
Upload history
Settings apply to a single project — pick one from the Project pulldown (not "All").
1 · Project Details
Entered by hand. Changes are held until you press Save at the bottom of this page.
Ready Systems Team
Picked from the resource table, so each person has one spelling everywhere. Add people under Setup → Resource Table.
The project manager is set above.
Customer Team
| Role | Name | Phone | |
|---|---|---|---|
| Project manager | |||
| Buyer | |||
| Executive sponsor |
Held in this database for now; can be linked to the CRM contacts later.
2 · Contract Value
Contract value is the sum of customer POs, including POs raised against an ECN — add those here as type Change (ECN/ECO). ECN costs come in through the cost sheet. Rows here save immediately.
3 · Budget
Dollars and hours both come from the costing sheet. Import it below — re-importing replaces the budget and hours entirely, so add an ECN to the cost sheet and upload it again to bring the new numbers through.
+
Drop cost sheets here
or · one or several · .xlsx, .xlsm, .xlsb
Budget by scope
Populated by the cost sheet import; edit if the quote differs. The workbook reports in CAD.
Hours by sub project
4 · Project Milestones
Manual entry. Give each milestone its share of the PO value and tick it when complete — completed milestones become releasable for invoicing below.
5 · Invoicing
Released follows the completion ticks above. Invoiced is entered by hand from the WIP report.
Team
People with access to this application. Admins can manage the team; viewers have full data access but cannot change membership.
New members create their own login on the sign-in screen ("First time here? Create my password") — no email involved. Data stays locked to this team list, so add them here first.
Danger zone
Deleting a project permanently removes it and everything attached to it — budgets, hours, milestones, POs, and all imported labour and material actuals. This cannot be undone.