What Unlikely Professionals Does
Unlikely Professionals (UP) performs building code compliance inspections across Maryland, DC, and Virginia, primarily focused on structural foundation and water management systems. Builders and developers hire UP to inspect their construction projects against local building codes, and UP issues certification packages confirming compliance. This is a required step before occupancy permits can be issued — so everything UP does is time-sensitive and legally consequential.
What the Portal Is
The portal is the centralized operations platform for UP. Before it existed, work was scattered across spreadsheets, emails, WhatsApp threads, and manual processes. The portal replaces all of that with a single system where every project, inspection, certification, and invoice is tracked from intake to delivery.
The vision: every person involved in a project — schedulers, inspectors, admins, triage staff, and you — sees exactly what they need, when they need it, with nothing falling through the cracks.
Your Role: Owner
You hold the up_owner role. This is the highest authority level in the system. Here is what that means in practice:
- Final approval authority — Jacob now handles most cert and invoice delivery directly using confidence-based routing. When he is uncertain, or when guardrails trigger, items land in your Owner Review Queue for your sign-off. You review what needs your eye — not everything.
- Unrestricted visibility — you see every project across every branch and every account. No data is hidden from you.
- User management — only you can create, modify, or deactivate portal user accounts.
- System oversight — you have access to reporting, audit logs, and system health monitoring.
- Escalation endpoint — when something cannot be resolved at any other level, it reaches you.
Portal URLs
You have two domains that reach the portal:
- unlikely.works — your primary domain (owner/admin access)
- unlikely.management — alternate domain (same portal, same login)
Both lead to the same system. Use whichever you prefer. Log in with your email and password.
/morning in Kulu for a 10-second text summary of pipeline status, open RFIs, cert queue depth, unpaid invoices, stalled projects, and permit alerts. It tells you where to focus before you even log in. See the Skills Reference for details.
Morning Briefing
After login, you land on the Morning Briefing — your actionable launch pad. This replaces the old analytics dashboard with a focused, action-oriented view. It is role-filtered — what you see is different from what Jacob, schedulers, or inspectors see, because it surfaces the things that need your attention.
| Section | What It Shows | Why It Matters |
|---|---|---|
| Scheduled Inspections | Today’s and this week’s field inspections | Revenue starts here — each inspection eventually becomes a cert + invoice |
| Owner Review Queue | Certs and invoices Jacob flagged for your review, plus guardrail-triggered items | Your #1 action item — these need your eye before shipping |
| Revenue Pipeline | Potential today/week vs. actual MTD/YTD | Shows the gap between inspections performed and revenue collected |
| Lifetime Revenue | Combined Mostly + Xero historical totals ($1M+ invoiced across 2022–present) | Full picture of firm revenue — current operations plus 2,286 historical Xero invoices |
| SLA Compliance | % of projects meeting the 3-business-day cert target | Your reputation metric — clients expect fast turnaround |
| Cert Velocity | Certs issued per day/week by branch | Throughput indicator — are we keeping up? |
| Open RFIs | Outstanding requests for information | Each open RFI is a blocked project |
| Schedule Change Requests | Pending reschedules, cancellations, additions (Action Center → Schedule tab) | Client service — respond promptly |
| Post-Production Queue | Projects waiting for Jacob’s review | Jacob’s backlog — if this grows, cert delivery will slow |
| Notifications | System messages, escalations, alerts | Catch anything that needs immediate attention |
| Dependencies | System health — API, Supabase, services | If something is red here, the whole pipeline may be impacted |
The Numbers That Matter Most
Of everything on the dashboard, these three metrics are the ones to watch:
- Revenue pipeline — gap between inspections completed and invoices sent. A growing gap means money is stuck in the pipeline.
- SLA compliance — percentage of projects certified within 3 business days of final inspection. Below 90% is a problem.
- Cert velocity — how many certs are going out per day. If it drops, check Jacob’s queue size and open RFIs.
Role Switcher
As owner, you can impersonate any role in the system. This lets you see exactly what a scheduler, inspector, GOA, or triage user sees. Use it for training, troubleshooting, or verifying that the right information is reaching the right people.
Your morning routine should take 10–15 minutes on a quiet day. Here is the recommended order, from most urgent to least.
This is your #1 priority every day. Navigate to Owner Review Queue (/owner-review) from the sidebar. This shows only the items that need your attention — not everything Jacob processes.
Jacob now uses confidence-based routing. When he is confident in a cert or invoice, he sends it directly to the client without waiting for your approval. When he is uncertain — or when automatic guardrails trigger — the item lands here for your review.
Guardrails that auto-queue for your review:
- Invoices ≥ $5,000
- Anne Arundel County projects (proprietary jurisdiction forms)
- Montgomery County projects (proprietary jurisdiction forms)
- Prince William County projects (proprietary jurisdiction forms)
To approve: Open the item, review the cert package and/or invoice details, then click Approve. The system will automatically send the cert and invoice to the client via email and update all statuses.
To request revision: If something looks wrong — wrong SOW line items, missing data, incorrect amounts — click Request Revision and add a note explaining what needs to change. The item returns to Jacob’s “Needs Another Look” queue, and he will revise and resubmit.
After clearing approvals, scan the overall pipeline. Projects move through four buckets:
| Bucket | What’s Here | Your Action |
|---|---|---|
| Ready for Cert | Field-complete projects waiting for Jacob | Monitor — if this grows, Jacob may need help |
| In Draft | Jacob is actively drafting cert/invoice | No action needed — work in progress |
| Owner Review | Items Jacob flagged + guardrail-triggered items | Approve or request revision (Step 1) |
| Sent Direct | Items Jacob sent directly to clients (confident) | Audit trail — review if needed, no action required |
| Invoiced | Sent to client, awaiting payment | Track in Financial Oversight |
SLA tracking: The system enforces a 3-business-day SLA from final inspection to cert delivery. Projects approaching or exceeding this target are flagged. Breached items appear in red — handle these immediately.
New project submissions from schedulers appear in the Action Center → Intake tab (/actions?tab=intake). Jacob handles most of these, but you have full approval authority too. Check for any escalated or unusual requests.
If a submission is incomplete (missing permits, plans, or SOW details), it should be returned with a note explaining what is needed. The scheduler will resubmit.
Clients request schedule changes through their schedulers. These appear in the Action Center → Schedule tab (/actions?tab=schedule). Types include reschedule, cancel inspection, add inspection, hold, and cancel project. Rush requests (less than 24 hours) are auto-flagged. Project cancellations have their own dedicated tab at /actions?tab=cancel.
Either you or Jacob can approve these. Check if any are pending, especially rush-flagged ones.
Every project follows the same path from intake to archive. Here is the full lifecycle as you will see it from the owner perspective.
With confidence-based routing, you no longer need to approve every cert and invoice. Jacob sends most items directly when he is confident. Your role is to review items he has flagged for your input, plus items that triggered automatic guardrails. This section explains how the new system works and what to look for when items reach your queue.
How Confidence Routing Works
When Jacob finishes drafting a cert or invoice, he makes a routing decision:
Automatic Guardrails
Even when Jacob is confident, certain items are automatically routed to your Owner Review Queue. These guardrails cannot be overridden:
- Invoices ≥ $5,000 — high-value items always get a second look
- Anne Arundel County — proprietary jurisdiction forms (Forms 210, 215, 240)
- Montgomery County — proprietary jurisdiction checklist
- Prince William County — proprietary building inspection form
Your Owner Review Queue
Navigate to /owner-review from the sidebar (under Daily Work). This is your primary action queue. Each item shows why it was queued — Jacob’s note, or which guardrail triggered.
What to Check Before Approving a Cert
- Project address — correct property, correct jurisdiction (MD/DC/VA)
- SOW lines — do the scope-of-work line items match what was inspected?
- Inspection data — are photos, drive logs, and field notes present?
- Cert type — PSoW (Pre-drywall Scope of Work) vs. ABSoW (Above-drywall/Behind-wall Scope of Work) — is it the right one for this stage?
- Account routing — is this going to the correct builder/account contact?
- Jurisdiction forms — for guardrail-triggered items, verify the correct proprietary forms are attached
/certcheck R8057 in Kulu to validate readiness programmatically. It checks the same items listed above (photos, drive logs, SOW, permits) and shows exactly what passes and what is missing. Useful for spot-checking items Jacob sent directly.
What to Check Before Approving an Invoice
- Line items — do they match the SOW and the cert?
- Amounts — are quantities and rates correct? (Especially important for $5K+ guardrail items)
- Account — is it billed to the right account?
- Any trip charges or extras — rush ($600, any visit booked <24h), Late Cancel ($600), No Access / Not Ready (full scheduled visit fee, $600 min), Return Visit ($350). Check the No Access amount — it is computed when the visit is flagged and frozen on the line.
- Reviewer flags — count tiers and size bands price off the as-built quantity. If a line has no as-built, the invoice uses the planned quantity and the draft says so; confirm before sending.
- PE Certification $225 — added automatically to every invoice that bills inspection work (never doubled, never discounted; omitted on fee-only invoices and cert-blocked projects).
- Return Visit lines — ADM-RTN $350 is created the moment a return visit is scheduled on a project that has closeout-flagged lines. The note reads “Return visit on MM/DD/YYYY — work not ready at the MM/DD/YYYY inspection” and carries the reason (Work not ready / Crew not finished / Deficiency re-inspection). The reason has to print on the invoice; the review agent flags an ADM-RTN without one. On production jobs the fee is dropped at invoice time unless the completed visits exceed the production days already billed.
Closeout-Flagged Lines
Darius marks every scope line at closeout. A line he marks Not present, In progress or Deficient is flagged post-production at closeout — it bills 2×, add-ons inherit it, and PRD-DAY stays 1× (production days are never doubled by a closeout flag). Nothing is billed when the flag goes on; one RFI opens to the branch scheduler and the fee, if any, attaches to how the line resolves:
| Resolution | What the system does | Fee | Rate |
|---|---|---|---|
| Verified from documentation — photos arrive and you, Jacob, or Darius mark the line verified with the date received | Stamps [verified-docs=MM/DD/YYYY] on the line and counts it inspected. The field report prints “Verified from contractor installation documentation received MM/DD/YYYY.” on that line only. |
None | Stays 2× |
| Return visit scheduled — any path that creates a site visit (portal add-visit, return-visit approval, an approved schedule change) | Every unresolved flagged line flips back to 1× (the flag comes off, the human note stays) and one ADM-RTN $350 is created with the strongest closeout reason and the original inspection date. #ops gets the notice. | $350 | Back to 1× |
| Silence | The RFI stays open and the holding-pool nudges chase it. | None yet | 2× |
When every flagged line on a project is resolved, the closeout RFI resolves itself. A line Darius marks Covered is different — it converts in situ to post-production at 2× and #ops gets a post naming exactly which lines converted, so a wrong conversion can be corrected before the invoice goes out. Check that post against the invoice on any job that came back covered.
For each item in your Owner Review Queue:
- Open the item — note the reason it was queued (Jacob’s note or guardrail)
- Review the cert package (PDF preview available)
- Review the invoice details
- Check SOW lines against the cert
- Approve — system sends to client immediately, or
- Request Revision — add a note explaining what needs to change. The item goes to Jacob’s “Needs Another Look” queue.
You still have full visibility into everything Jacob sends directly. Items he sent with confidence appear in the audit trail and can be viewed from the Cert Pipeline or the project detail page. You do not need to act on these — they are informational. If you spot an issue after the fact, you can flag it for Jacob to address.
What Happens After Approval
Invoice Lifecycle
Every invoice moves through these statuses:
Note: Invoice creation and approval happen as part of the cert/invoice workflow. The invoice sub-status tracks only delivery and payment: Not Invoiced → Sent → Paid.
You can track all invoices by status from the dashboard and the Cert & Invoice page. Pay attention to the gap between “Sent” and “Paid” — that is your accounts receivable.
Smart Reconciliation
Payments are matched to invoices using a confidence-based reconciliation engine — the same philosophy as confidence routing for certs. Three tiers:
- HIGH confidence — exact invoice number + amount match (within $0.01). These execute automatically: invoice marked paid, project closed. No human action needed.
- MEDIUM confidence — invoice number match but amount differs, or amount matches but reference is partial. Jacob reviews and confirms.
- LOW confidence — no clear match, multiple candidates, or combined payments. Surfaces in the reconciliation dashboard for manual resolution.
Guardrail: Payments $5,000+ always require human confirmation regardless of match quality.
Payment Sources
- Stripe — webhooks auto-mark invoices paid immediately. No reconciliation needed.
- EFT remittances — Groundworks corporate sends remittance PDFs via email. The system auto-ingests from Gmail every 30 minutes (Mon–Sat, 1–9 PM ET), parses PDF line items, and runs each through smart matching.
- Revolut — transactions matched against open invoices using the same confidence scoring.
- Ramp vendor portal — since 2026-08-31 Groundworks pays through Ramp Bill Pay. Every two hours on weekdays the system reads their vendor portal (the only place that shows what they have keyed) and shows it in the In Ramp column on Payments: In review, Payment initiated, Paid, or not yet when we sent an invoice they have not entered. Changes, invoices missing after 3 business days, and paid-in-Ramp-but-not-here drift arrive as one digest in #c-r-e-a-m. If the saved Ramp sign-in expires you get a single alert; re-run the sign-in script and it resumes.
Jacob handles MEDIUM and LOW matches day-to-day. You have full visibility via the Payments page (Reconciliation group in sidebar) and the Analytics revenue dashboard.
Revenue Dashboard
Available in the Analytics page (Monitoring → Analytics in the sidebar). Shows MTD/YTD revenue by branch, trends over time, and the invoicing gap analysis (certified but uninvoiced projects — these represent money left on the table).
Historical Revenue (Xero Integration)
The Analytics page now includes historical data from the Xero archive (2,286 invoices, $2.7M, 2022–2024). Three additions:
- Lifetime Revenue banner — combined Mostly + Xero totals displayed at the top of the Revenue Snapshot section. Also visible on the Morning Briefing.
- Historical Revenue by Year table — year-by-year breakdown (2022–2024) from the Xero archive.
- Year-over-Year Growth Chart — bar chart with YoY % change, visible when the period selector is set to “All.”
Current-period revenue KPIs are labeled “(Current)” when historical data is present, so you can distinguish between active operations and the full historical picture.
Project Detail — Historical Invoices
Each project’s detail page now shows a “Historical Invoices” section (visible to financial roles) listing any Xero invoices linked to that project. Compact table with invoice number, date, amount, and status pill. Useful for checking a project’s full billing history across systems.
User Management
Available at /admin/users. This is owner-only — Jacob cannot access it. Here you can:
- Create new portal users (assign username, role, and branch)
- Edit existing users (change roles, reassign branches)
- Activate or deactivate accounts
- Reset passwords
Roles available:
| Role | Access Level | Typical User |
|---|---|---|
| up_owner | Unrestricted — full system access | You |
| up_admin | All operations except user management | Jacob |
| goa | Branch-scoped — sees all projects for their branch | Branch managers |
| scheduler | Branch-scoped — intake, scheduling, limited project view | Client schedulers |
| scheduler_assistant | Narrower than scheduler — day-to-day support | Assistants |
| triage | Triage projects only (45+ days aged) | Triage team |
Friday’s Notes
The Friday’s Notes page (accessible from Admin → Friday’s Notes in the sidebar) collects bug reports and feedback from portal users. Review weekly. This is your direct line to understanding what is working and what is frustrating for the people using the system daily.
Role Switching
Use the role switcher (available from your user menu) to impersonate any role. This is essential for:
- Verifying what a scheduler sees when they log in
- Testing new features before announcing them
- Troubleshooting when a user reports they “can’t see” something
System Health Monitoring
System Status is accessible from the Admin group in the sidebar. It shows the health of all connected systems:
- API — the backend that powers everything
- Supabase — the project database (sole source of truth)
- Google Calendar — scheduling integration
- Gmail — cert/invoice delivery
Green means healthy. Yellow means degraded. Red means down — see Section 13 (Emergency Procedures) for what to do.
Projects List
Your projects view is unrestricted — you see every project across every branch and account. Other roles see only their branch or assigned projects. This is your master list.
You can filter by status, branch, account, date range, and more. Use search to find specific projects by address, project number, or account name.
Cert Pipeline
The Cert Pipeline is a unified tabbed page that consolidates the entire post-inspection workflow. It has four tabs:
| Tab | What’s Here | Who Acts |
|---|---|---|
| Post-Production | Field-complete projects awaiting review | Jacob |
| Desk Review | Office-based reviews (no field visit needed) | Jacob |
| Drafting | Jacob’s active drafts + “Needs Another Look” items | Jacob |
| Send | Jacob sends directly (confident) or queues for Owner Review (uncertain / guardrails) | Jacob + You |
Your primary action queue is the Owner Review Queue (/owner-review), accessible from the sidebar. The Send tab shows the full picture — items Jacob sent directly plus items queued for your review.
Pipeline Indicators
Each project in the Projects table and on the Project Detail page displays a pipeline indicator — a compact dot-and-line component showing the project’s current lifecycle stage. Green dots indicate completed stages, blue indicates the current stage, grey indicates future stages, and amber indicates the project is on hold. This gives you an at-a-glance view of where every project stands without opening the detail page.
Project Detail
Click into any project to see the full detail view: address, account, SOW lines, inspection history, RFIs, uploaded files (permits, plans, photos), cert PDFs, invoices, pipeline indicator (detail mode), and the complete audit trail for that project.
File Management
Each project can have files attached: permits, plans, photos from inspection, cert PDFs, and invoices. You can upload, download, and view these from the project detail page. Cert PDFs and invoices are generated by the system — you do not need to create them manually.
Revised Permits
A permit file that reaches a project which already has one — a portal upload, a reparse, or a follow-up request submitted through intake — is read twice (Claude Vision and a label read of the page text) and compared with the project’s permit history. It never overwrites the project’s permit fields on its own.
| What arrived | What happens |
|---|---|
| A revision or reissue of the same permit (R01, “Revision 1”, a new issue date) | Issue date, printed expiration and revision label update automatically when both reads agree. Scope changes and any value only one read found wait on the Permit Revisions card. |
| A Charles County REV permit (REV-250183 revising MIR-250323) | Treated as a revision. The project keeps the base number; the cert prints both. |
| An electrical, plumbing or mechanical sub-permit | Recorded as an additional permit. It never replaces the building permit. |
| A permit with a different number | The card asks: New linked project (default — a separate job, linked to this one and parked in Intake) or Add to this project. If another project already carries that number, the first option reads “Move to MAN-xxxx” and moves the file there. |
| A permit for a different address | Rejected with a red flag and never applied. Check where the file belongs. |
| The same file again | Ignored. |
The Permit Revisions card (project page, you and Jacob only) shows what was applied automatically (with Revert), values that need your check (read by only one of the two reads, reads that disagree, or an expiration computed from the county’s lifespan because the permit prints none), permitted-quantity changes with the permit text as evidence, and the different-number question. Check the arithmetic on quantity changes: revisions add to the previous scope (“add two IntelliJacks” on a permit for four means six). When a permit states only an addition and nothing on file gives the base, the card asks you to confirm the total instead of guessing. Apply confirms what is shown; Dismiss drops the proposal.
Permit History lists every permit on file — current or superseded, printed or computed expiration, and the source file. The project header shows Permit revised R01 or 2 permits, and calendar cards carry a small +permit marker while a review is pending or once a revised or additional permit is on file.
Cert not sent: re-drafted as a new version. Cert already sent: the system drafts a REVISED CERTIFICATE (next version) that names the version it supersedes and the permit it reflects, and #ops gets a note. It waits for your or Jacob’s approval like any cert and goes out as an UPDATED certificate; the public cert link keeps showing the last version that was sent until then. The cert itself now prints the revision and both issue dates (“RES-12241-2025, Revision R01”; “MIR-250323 / REV-250183”). Invoice not sent: re-drafted from the new SOW; an approved invoice goes back to draft, and a draft made before the revision can’t be sent until it is re-drafted. Invoice sent or paid: never changed. #ops gets one note and the invoice section offers Draft supplemental invoice (-B) — the added lines only, priced and numbered after the sent invoice (MANA-INV-9283-B), as a draft for your review. If the job was invoiced before the 9/20 price change, you choose which price book the added lines use. Decreases are never credited automatically. The portal has no send button for supplementals: open the PDF and send it yourself. Dismiss the flag if the added scope isn’t billable.
Jacob can review and apply the same proposals from #ops-assistant (list_permit_revisions / apply_permit_revision); applying needs an explicit yes in the thread.
Calendar View
The Calendar page shows all scheduled inspections across all branches. It syncs bidirectionally with Google Calendar. You see the full picture — other roles see only their branch.
Use the calendar to understand workload distribution: are inspections clustered in certain areas? Is the field team overbooked on certain days? This directly affects your downstream pipeline — more inspections today means more certs and invoices in 3–5 days.
Schedule Change Requests
When a scheduler requests a change (reschedule, cancel, add, hold), it appears in the Action Center → Schedule tab (/actions?tab=schedule). Both you and Jacob can approve. Types of requests:
| Request Type | What It Means | Watch For |
|---|---|---|
| Reschedule | Move an inspection to a different date | Rush flag if < 24 hrs |
| Cancel Inspection | Remove a specific inspection from the schedule | Impact on project timeline |
| Add Inspection | Schedule an additional inspection | Field team capacity |
| Hold | Pause the project temporarily | Duration — monitor for stale holds |
| Cancel Project | Cancel the entire project | Revenue impact, reason code |
The Cancel Button
Every visit row in Site Visits has a Cancel button (you and Jacob only). It replaces three older paths: choosing “Cancelled” in the visit status dropdown, the calendar’s “Hold project & cancel future visits” prompt, and the “Hold project” schedule-change request type. One question, three answers:
| Answer | What it does | Fee |
|---|---|---|
| Reschedule (new date known) | The visit moves to the new date. | Late Cancel $600 if the notice came after the cutoff. Late Cancel only — never a rush fee on top for the same original visit. |
| Hold (no date yet) | The visit is cancelled and the project goes to the Holding Pool with your hold reason. | Late Cancel $600 if the notice came after the cutoff. |
| Our call (weather, Darius out) | The visit is cancelled, or moved if you give a new date. | Never. |
When we enter the cancellation, the form asks “When did they tell us?” — a date and time defaulting to now. That is the only judgement call; the system does the arithmetic. The cutoff is 2:00 PM ET on the business day before the visit, weekends skipped and no holiday calendar, so a Monday visit’s cutoff is Friday 2 PM. Visits before 2026-09-20 never carry the fee. You can preview the arithmetic before committing — the form shows the cutoff, the notice time, and whether the fee applies.
When the branch cancels through their own portal or the schedule-change form, no question is asked: the API computes Late Cancel from the time the request was submitted. An approved cancel_inspection cancels the visit; an approved hold cancels the visit and holds the project.
The 45-Day Rule
When a project sits for 45 or more days after its last inspection without being certified, it is automatically transferred to the Triage Team. This is a safety net — it ensures that aged projects do not quietly die in someone’s queue.
When a project enters triage:
- The original scheduler and scheduling assistant lose portal access to the project
- The branch GOA (General Operations Administrator) retains visibility
- The triage team takes ownership and works the project to close-out
- When complete, the invoice still routes to the originating branch’s GOA
Your Role in Triage
You are the final escalation point. The triage team handles most aged projects independently, but some situations require your judgment:
- Client disputes about aged projects
- Projects where the original data is incomplete and the builder is unresponsive
- Revenue decisions — write-off vs. continued pursuit
Your dashboard shows triage counts (projects entering and leaving triage) by day, month, and year, broken down by branch. A rising triage count for a specific branch may indicate a process problem with that branch’s scheduler.
Escalations
Any stakeholder can trigger an escalation on a project. Escalations are accessible from the Action Center → Escalations tab (/actions?tab=escalations). They create an instant notification to responsible parties and open a threaded message channel scoped to that project. You are always notified of escalations.
The Work Pool is the system that allocates post-production work — the step between field inspection and cert/invoice drafting. Currently, Jacob is the primary person working this pool.
How It Works
When a project reaches “Ready for Cert” (auto-advanced from Field Complete by cert validation), it enters the Work Pool. Jacob claims items from the pool and works them through the cert/invoice drafting process. Items can also enter the pool from triage returns and RFI fulfillments.
What to Monitor
- Pool size — how many items are waiting to be claimed. If this grows steadily, throughput is not keeping up with intake.
- Jacob’s active queue — how many items he is currently working. A reasonable load is 10–15 items in various stages of drafting.
- Time-in-pool — how long items sit unclaimed. Anything over 2 business days is a yellow flag.
- Oldest unclaimed item — this is your single best indicator of backlog health.
The system now includes automated intelligence that monitors the pipeline and takes action without waiting for humans to notice problems.
Auto-Validation (Field Complete)
When a project reaches Field Complete, the system automatically runs a 10-point validation checklist. This checks for photos, drive logs, SOW completeness, and other required data.
- Pass — the project auto-advances to Ready for Cert and enters Jacob’s work pool. No human action needed.
- Fail — the system automatically generates an RFI listing exactly what is missing. The SLA clock pauses until the RFI is resolved.
This eliminates the manual step of checking whether a project is ready for post-production review.
Pipeline Shepherd
The Pipeline Shepherd is an automated daily scan that runs at 7:45 AM ET. It examines every active project and detects stuck or aging items using a rules engine:
| Rule | Trigger | Action |
|---|---|---|
| Intake stale | Intake > 3 days old | WhatsApp alert + portal notification |
| Scheduled, no visit | Scheduled > 2 days, no site visit | Notification to scheduler |
| Field complete, no validation | Field Complete > 1 day | Auto-triggers validation |
| Cert drafting overdue | Ready for Cert > 3 business days | Notification to admin |
| Certified, not invoiced | Certified > 1 day | Notification to admin |
| Unpaid aging | Invoice unpaid 30 / 60 days | WhatsApp alert to you |
| On hold too long | On hold > 30 days | Notification to owner |
| RFI aging | Open RFI > 3 / 7 days | Escalation notifications |
The shepherd sends WhatsApp alerts to you for critical items and portal notifications for operational items. It runs once per day (idempotent). Reports are stored and viewable at /ops/shepherd-report.
All charts and reporting are consolidated into the Analytics page (under Monitoring in the sidebar). Data is live, sourced from three systems: Supabase (current projects), Xero archive (2022–2024 invoicing), and PMS archive (2018+ historical projects).
| Report | What It Shows | Use It When |
|---|---|---|
| Revenue by Branch | MTD/YTD revenue with trends | Monthly reviews, branch performance comparison |
| Lifetime Revenue | Combined Mostly + Xero totals across all years | Full-picture revenue view, board reporting |
| Historical Revenue by Year | Year-by-year breakdown (2022–2024) from Xero | Annual trend analysis |
| Year-over-Year Growth | Bar chart with YoY % change (visible on “All” period) | Growth trajectory assessment |
| SLA Compliance | % of projects meeting 3-day cert target | Daily — your key quality metric |
| Cert Velocity | Certs per day/week by branch | Spotting throughput slowdowns |
| Branch Comparison | Comparative metrics across all branches | Identifying underperforming branches |
| Pipeline Snapshot | Full pipeline across 3 sources (7,000+ projects): Supabase + Xero + PMS | Understanding where projects are — past and present |
| Invoicing Gap Analysis | Certified but uninvoiced projects | Finding revenue left on the table |
Pipeline Dot Chart
The pipeline snapshot now renders as a scaled dot chart (10px dots, up to 120 per row). It blends three data sources with deduplication: Supabase current projects, Xero invoices (unlinked only — those already in Supabase are excluded), and PMS archive records (non-migrated only). All statuses are shown, including terminal states (Invoiced, Closed). The total project count is now 7,000+.
Using Data to Identify Bottlenecks
The three most common bottlenecks in the pipeline and how to spot them:
| Bottleneck | Symptom | Resolution |
|---|---|---|
| Field → Cert | Growing “Ready for Cert” count | Jacob needs capacity help or RFIs are blocking |
| Review → Approval | Growing Owner Review Queue count | You need to clear your review queue |
| Approval → Payment | Growing “Sent” invoices, low “Paid” | Client follow-up needed; possible payment issues |
System Down
If the portal is unreachable or showing errors:
- Check the Dependencies section on your dashboard (if accessible). Red indicators show which service is affected.
- Contact your system administrator. The VPS (server) is hosted on Hostinger and can be checked via their control panel.
- If the issue is widespread (multiple services down), a server restart may be needed. The system is designed to recover automatically — all data is backed up nightly.
Supabase Issues
Supabase is the sole source of truth for all project data. If it becomes slow or unresponsive:
- The portal will show degraded performance (slow loading, stale data)
- Check the Supabase dashboard for service status
- SmartSuite receives a mirror copy during the soak period (through April 6, 2026) but is not used for reads or writes
- Do not approve certs/invoices during a Supabase outage — status updates will not propagate
Cert Delivery Failures
If a cert or invoice email fails to deliver:
- Check the project’s audit log for delivery error details
- Common causes: invalid email address on the account, Gmail API rate limits, attachment size
- Certs can be resent from the project detail page
Client Escalations
When a client contacts you directly about a problem:
- Look up the project in the portal by address or project number
- Check the project timeline — when was the last inspection? Is there an open RFI? Is it in triage?
- Check the audit log for recent activity
- If a cert is delayed, check whether it is in Jacob’s queue, in your Owner Review Queue, or stuck on an RFI
There is no Messages page. Conversations live inside each project — open a project, scroll to the Correspondence section, and the full thread is there alongside the files, site visits, and certifications it refers to. A red dot on a project row or calendar event means someone said something you haven’t read yet.
What You Need to Know
Red dots on the Projects table and Calendar tell you where unread messages are. Click through to the project to read and reply. All conversations must be linked to a project — no standalone or direct messages. The system tracks response times and resolution SLAs per conversation. Everything is logged in the project’s Activity timeline.
Owner Review Queue — Chat Integration
When Jacob queues a cert or invoice for your review, a ‘review’ conversation is automatically created on that project. You can approve or request revision directly within the thread, and any discussion about the revision happens inline.
Notification Router
Click the gear icon in the notification panel to configure how you receive alerts. Four channels are available: portal notification, email (via Gmail), WhatsApp, and SMS. You can set per-urgency routing — for example, urgent messages go to WhatsApp immediately, while normal messages stay in the portal. Configure:
- Channels per urgency — which channels fire for low / normal / high / urgent messages
- Email fallback delay — how long the system waits before emailing you about an unanswered portal notification (e.g., 15 minutes)
- Do Not Disturb — hours during which only urgent messages are delivered
Notifications consolidate within a 2-minute window to avoid spam. If you are offline, the system falls back to email after your configured delay.
Project Activity Timeline
Every project detail page has an Activity section showing a unified chronological feed: status changes, cert generation, cert delivery, invoice creation, payment receipt, file uploads, site visits, hold events, and messages. Filter by type (All / Messages / Events / RFIs / Files) to focus on what matters.
Friday Command Interface
The ask friday action in any conversation’s compose bar gives you Friday’s Internal voice (Opus model, full tools). Friday’s responses are visible to the entire team. You can issue natural language commands:
- “Approve this cert” — executes the approval from within the conversation
- “Schedule a visit for next Tuesday” — creates the site visit
- “What is the invoice total for this project?” — queries financial data
- “Flag this as an urgent RFI” — converts the conversation to an RFI with priority
Friday Intelligence Tiers
Friday operates on three intelligence tiers, each escalating in capability:
| Tier | Capability | What It Does |
|---|---|---|
| 1 — Query Engine | query_data + describe_schema | Structured queries against Supabase with table/column allowlists. Friday discovers what data exists and queries it without writing SQL. Supports null-aware filtering (e.g., “not invoiced” catches both blank and explicit values). |
| 2 — SQL + Cross-System | run_sql + query_stripe + query_calendar | Read-only SQL via Supabase RPC (SELECT only, 5s timeout, 100-row limit). Cross-system queries to Stripe (invoices, payments, subscriptions) and Google Calendar (schedule). Financial columns redacted for non-privileged roles. |
| 3 — Write Actions | 6 capabilities | Modify schedule (create/reschedule/cancel visits), send certs and invoices, send WhatsApp messages, approve certs inline, and render charts. All write actions use a two-phase preview/confirm pattern with 60-second confirmation tokens. |
Friday Visualizations
When you ask Friday to chart, graph, or visualize data, it renders directly in the thread — no external tools needed. Three rendering tiers are available:
| Tier | Renderer | Chart Types |
|---|---|---|
| Tufte SVG | Inline SVG, Tufte-styled | Bar, horizontal bar, line, sparkline, dot plot, pie, donut, gauge, stacked bar, grouped bar, area, scatter |
| Recharts | Interactive React charts | Bar, line, area, pie, radar, scatter, composed, treemap, funnel — with tooltips, legends, and animations |
| Sandbox | Sandboxed iframe | Arbitrary HTML/SVG/JS — custom dashboards, infographics, complex layouts. Tufte CSS pre-injected. No network access (fully isolated). |
All visualizations follow Edward Tufte design principles: no gridlines, no chartjunk, muted earth-tone palette, high data-to-ink ratio, data labels where appropriate.
/commands, /revenue) are free — they do not count against the rate limit.
SLA Monitoring
Each conversation tracks first response time and resolution time. Color indicators (green / yellow / red) show SLA status based on priority tier. The Morning Briefing shows open conversations, unanswered messages older than 4 hours, and RFI chats aging beyond 3 days — all linking to the Projects page where red dots guide you to the right projects. The Pipeline Shepherd flags projects with unanswered messages older than 24 hours and stale assignments older than 48 hours in the daily WhatsApp summary.
| Term | Definition |
|---|---|
| SOW | Scope of Work — the list of inspection items for a project. Each line item corresponds to a specific building code check (e.g., foundation, waterproofing, drainage). |
| RFI | Request for Information — a formal request from UP to a client (Agent RFI) or from a client to UP (Client RFI) asking for missing data, photos, or clarification. Pauses the SLA clock. |
| SLA | Service Level Agreement — the commitment to deliver a cert + invoice within 3 business days of the final inspection. The clock pauses during open RFIs. |
| Cert Package | The formal certification document (PDF) that confirms a project meets building code requirements. This is what clients need to obtain occupancy permits. |
| Drive Log | Field data collected during inspection — PSI readings, torque values, and other measurements that go into the cert package. |
| PSoW | Pre-drywall Scope of Work — inspections performed before drywall is installed (foundation, waterproofing, framing checks). |
| ABSoW | Above-drywall / Behind-wall Scope of Work — inspections performed at later stages (structural verification, final grading, water management). |
| Branch | A client organization or builder that uses UP’s services. Projects are grouped by branch. Each branch has schedulers and a GOA. |
| Account | The billing entity for a group of projects. An account may span multiple branches or be 1:1 with a branch. |
| Triage | The process and team handling projects that have aged past 45 days since their last inspection. Triage takes over from the original scheduler. |
| Work Pool | The queue of post-inspection projects awaiting review and cert/invoice drafting. Jacob claims and works items from this pool. |
| GOA | General Operations Administrator — the branch-level manager who has visibility into all projects for their branch. |
| Closeout Flag | A scope line Darius marked Not present, In progress or Deficient at closeout. Bills 2× (PRD-DAY stays 1×), opens one RFI, costs nothing by itself. Resolves either by documentation (photos → “verified from documentation,” no fee, stays 2×) or by a scheduled return visit (back to 1× plus ADM-RTN $350). |
| Compliance Review Summary | The client-facing name of the document previously called the Post-Production Review Summary. Client-facing documents no longer use the words “desk review” or “post-production.” |
| Trip Charge | A fee for a wasted or short-notice trip, added to the project invoice. Visits on/after 2026-09-20: Rush $600 (booked <24h out), Late Cancel $600 (after 2 PM the prior business day), No Access / Not Ready = full scheduled visit fee, $600 minimum (we arrived and could not inspect), Return Visit $350. Free to cancel or reschedule before 2 PM the prior business day. Earlier visits keep the old $400. Set from the $ control on the visit in Site Visits (owner/admin only). Never recorded as a failed inspection. |
Portal URLs
| Domain | Purpose |
|---|---|
| unlikely.works | Primary portal (all roles) |
| unlikely.management | Alternate portal domain (all roles) |
Key Actions & Where to Find Them
| Action | Where |
|---|---|
| Review queued certs/invoices | Owner Review Queue (/owner-review) |
| Approve a queued item | Owner Review Queue → open item → Approve |
| Request revision | Owner Review Queue → open item → Request Revision (with notes) |
| View Jacob’s direct sends | Cert Pipeline → Send tab (audit trail) |
| View all projects | Projects (sidebar) |
| Approve intake | Action Center → Intake tab (/actions?tab=intake) |
| Approve schedule changes | Action Center → Schedule tab (/actions?tab=schedule) |
| Check revenue | Analytics → Revenue by Branch |
| Check SLA | Morning Briefing or Analytics → SLA Compliance |
| Manage users | /admin/users |
| Switch roles | User menu → Role Switcher |
| View audit log | /audit or project detail → Audit Trail |
| View calendar | Calendar (sidebar) |
| Check system health | Admin → System Status |
Who Handles What
| Person / Role | Responsibilities |
|---|---|
| You (Dustin) | Owner Review Queue (guardrail + flagged items), user management, system oversight, escalation endpoint |
| Jacob (Admin) | Post-production review, cert/invoice drafting + direct send (confident), queue for review (uncertain), RFI management, intake approval, payment reconciliation |
| Darius (Inspector) | Field inspections, photo/data collection, WhatsApp field reporting |
| Schedulers | Project intake, scheduling, client communication, schedule change requests |
| GOAs | Branch-level oversight, invoice receipt for their branch |
| Triage Team | Aged project (45+ days) close-out and resolution |
/owner-review), and approve or request revision on everything there. Jacob handles the rest directly. The Pipeline Shepherd will WhatsApp you if anything else needs your attention.