SLS Prism Billing — Next-Generation Surfaces

Wireframes & estimated build plan · prepared for Mike, Kara, Angela, Elvira · April 30, 2026

Overview

A redesign of Prism's billing surfaces around five workspaces — built so the operator's mental model matches the UI, not the underlying database tables.

Replaces: Banyan + Prism + 6 spreadsheets + QB Pending tab + 4 special-client batch flows Built on: existing Prism Django app, Stripe, S3, Celery Validated against: 53 SOPs from your team
1

Audit Workspace

Kara · Angela · Gigi
One screen per shipment-being-audited. Side-by-side bill comparison, inline charge entry with Auto/Add suggestions, lifecycle pill, activity feed. Replaces the click-cycle through Banyan + Prism + Excel.
2

Send Workspace

Kara → Gigi (after Kara's leave)
The 50-80-invoices-a-day queue with bulk send, document-requirement badges, customer name, auto-attach. Failed rows route to Resolution. AR-HOLD invoices pulled out automatically.
3

Resolution Workspace

Angela · Kara · Jennifer · Ashley · Racquel · Melisha
Kanban board replacing the four-tier sheet handoff (CS & Ops → CS → A&C → Processing). Cards carry up to 3 issue categories, three-snapshot financials, Auto/Add suggestions, manager review.
4

Variance & Commission

Elvira (manager) · Mike (clawback approval)
Commission ledger with the +$16 math built-in, Uncollectable AR clawbacks with 1.5% monthly compounding, settlement export to QB AP. Replaces the 2024/2025 Variance sheets.
5

Statements & Collections

Accounting team
Customer-side AR aging, weekly statements, AR HOLD management, special-client invoice reports (Air Global, Achem, Matfer). Replaces the QB Pending tab and current QB-driven statements.
+

Plus three smaller surfaces

Across all roles
Activity Feed (the spine all workspaces ride on), Auto/Add Rule Engine (the four-dimensional rule registry your team already maintains), Client Lifecycle and Vendor mgmt (Phase 7+).

Use the left navigation to drill into each. Yellow flags throughout the deck mark questions where we'd like your input.

How to read this deck

A few visual conventions used throughout.

Wireframe element (dashed border)
Active / focused state
Auto/Add suggestion or success state
Warning / on-hold state
Open question for your team

Sample wireframe

Each workspace page includes a low-fidelity sketch like the one below, plus an enumerated list of supported use cases (with the SOP that drives each), and yellow-flagged questions placed next to the relevant UI element.

Header
Lifecycle pill, status badges, primary actions
Left panel
Bill summary, charges, issues
Center
Active work area (carrier-bill PDF, charge form, etc.)
Right rail
Activity feed
Open question
Like this — flagged inline at the relevant UI element.
If you don't reply, our default: do the obvious thing and surface it for review.

Wireframes are intentionally low-fidelity so you can react to the structure, not the styling. We'll iterate visuals during the build.

Overview Audit Queue

Audit Queue

Entry point for the Audit Workspace. The list of shipments awaiting audit, sorted by 5-day-mark proximity. Replaces the Banyan "Bills to be Processed" Working tab and the Prism `bills_not_invoiced` page.

Primary users: Kara · Angela · Gigi Replaces: Banyan To-Be-Processed sheet · Prism bills_not_invoiced page

List view

3 over 5-day mark 142 awaiting audit
SLS Customer Carrier Delivered Days Variance Stage Assigned Issues
SLS25310071 US Air Conditioning XPO Logistics 11/11 7d −$249.40 In audit Kara W&I
SLS25239028 Stage Depot Inc XPO Logistics 11/13 5d −$84.00 In audit Racquel CBOL
SLS25318049 NLS Lighting T-Force 11/16 2d −$76.77 Needs audit
SLS25254032 Air Global Saia 11/17 1d +$32.10 Needs audit
SLS25304040 Permalite Saia 11/17 1d −$157.69 Needs audit RECON
SLS25300072 Troy Lee Designs Best Overnite 11/06 12d −$657.94 Needs review Ashley RECON
Click a row to open the Per-shipment detail. Rows past the 5-day mark show a yellow warning pill, matching the highlight rule operators apply by hand today (`Daily Reports - To Be Processed Report` SOP).
Question · Default sort
Sort by days-since-delivery (oldest first, surfacing 5-day breaches), or by variance amount (largest first), or by client priority?
Default: days-since-delivery descending; secondary sort by variance descending.

What lands here from upstream

  1. Shipments delivered 2+ business days ago (the daily emailed report) (Daily Reports - To Be Processed Report)
  2. EDI bills that arrived overnight in DISP status (EDI Processing - Banyan)
  3. Shipments where Auto FB Audit flagged variance > tolerance (Wave 4)
  4. Resolution cards that need a re-audit pass (returned from Resolution Workspace)
  5. Unknown-shipment intake (carrier billed for shipment not in either system) (Entering "unknown" Shipments into Banyan)
  6. Special-client cadence batches (Air Global Mon, Matfer 1st of month) (Air Global / Matfer SOPs)

Overview Audit Queue SLS25310071

Audit Detail — Per-shipment

One screen per shipment-being-audited. Eliminates the hop-cycle.

Primary users: Kara · Angela · Gigi Replaces: Banyan + Prism Billing Mgmt + Excel + carrier websites Build: ~1 day

Layout

DRAFT
NEEDS AUDIT
IN AUDIT
NEEDS REVIEW
PROCESSING
MATCHED
QB EXPORTED
PAID
Shipment summary
SLS25310071
US Air Conditioning · XPO Logistics
Pickup 11/06 · Delivery 11/11
Status, dates, parties, primary identifiers
Carrier-bill PDF (rendered)
[ PDF.js viewer or iframe — same width as the FreightBill data on the left for side-by-side comparison ]
The carrier's freight-bill PDF rendered inline. Today this lives buried 5 clicks deep or is uploaded as a "user added file" titled "freight bill" as a workaround.
Activity feed
11/19/25 14:23
Kara reweigh from 100 lbs to 310 lbs. Emailed customer for dispute docs.
11/17/25 09:11
System charge added · LFTGT · $286.81 (suggested via Auto/Add)
11/17/25 08:45
Racquel opened audit · variance > $20 threshold
Right rail. Time-stamped. Replaces "Check Call History" + Banyan notes + sheet comments.
Question · Force-push override
When a shipment hits day 5 post-delivery without audit completion, who can authorize the force-push to QB? Auditor self-authorize with a typed reason, or manager (Angela) approval required?
Default if you don't reply: auditor self-authorize with required reason text — matches today's SOP. Manager review is a separate notification, not a block.
Bill detail (left panel, expanded view)
Quoted raw:$240.94
Carrier invoice:$490.34
Variance:−$249.40
Auto/Add suggested
Customer: US Air Conditioning · Accessorial: W&I (reweigh)
Rule: Min $10, 15% markup
→ Add charge: Raw $249.40, Profit Markup $37.41 → bills client $286.81

SOP-driven use cases supported

  1. Document retrieval & upload — single widget across docs/imaging (Documental Retrieval & Upload, Auditing documents)
  2. Side-by-side quote-vs-bill comparison with auto-classify on variance (Prism Auditing — closes Banyan #1 gap)
  3. Auto/Add charge entry with one-click apply, override, or "email for approval" (Prism Auditing + Auto Add Bill List)
  4. Charge allocation toggle: current invoice / supplemental / unallocated (meeting feedback)
  5. Issue mark + resolve from inside the workspace; resolution notes flow to bill notes automatically (Working & Resolving Marked Issues — fixes "siloed notes")
  6. 5-day Force-push override with required reason and Activity row (Pushing FB-Invoice into QB when audit not completed)
  7. Inline raw-cost / sell-rate edits with audit trail (Updating Raw Cost, Updating $0.01 sell rates)
  8. EDI bill reconciliation — OPN/DISP/PSND status carried across (EDI Processing - Banyan)
  9. QB transfer status tile with T-Force routing suggestion (Prism QB Billing Transfer, T-Force Payables in QB)
  10. Bill lifecycle stages with explicit transitions and Activity log (across SOPs)
  11. Unknown-shipment intake (carrier billed for shipment not in either system) (Entering "unknown" Shipments into Banyan)

Overview Send Queue

Send Queue

The daily 50–80-invoice queue with bulk operations and intelligent doc handling. Entry point for the Send Workspace.

Primary users: Kara → Gigi (after Kara's leave) Replaces: per-invoice click flow, manual doc attachment Build: ~0.5 day

Layout

112 invoices to send 8 on AR HOLD 3 missing POD
SLS Customer Amount Cadence Doc reqs Send via Status
SLS25310071 US Air Conditioning $720.83 Per shipment POD ✓ BOL ✓ Email Ready
SLS25318049 NLS Lighting $642.53 Per shipment POD ✓ Stripe-hosted Ready
SLS25239028 Stage Depot Inc $842.62 Per shipment POD missing Mail AR HOLD: missing POD
SLS25254032 Air Global $2,145.00 Weekly manifest All ✓ Email + EDI Ready
SLS25258044 Matfer $398.38 Monthly POD ✓ Email Awaits cadence (next: 1st)
SLS25305114 Global Industries via TTD $1,600.00 ($2,000 − $400 split) Per shipment POD ✓ Email · TTD AR Ready
Customers booked under a tenant level (e.g., Global Industries under TTD) route the invoice to the tenant — not the end customer — with an auto-itemized line backing out the tenant's profit-split percentage per TenantCommissionAgreement.
Question · Bulk-send error handling
When a row in a bulk send fails (Stripe error, missing doc found mid-send, mail-merge issue), do we email the operator a summary, surface in-app only, or both?
Default: in-app summary in a "Needs attention" pile. Failed rows automatically become Resend Required issues. Email digest opt-in per user.

SOP-driven use cases supported

  1. Bulk send with per-row checkboxes and Celery-backed progress drawer (meeting feedback)
  2. Document attachment per client requirement (POD/BOL/W&I) (Adding New Clients, Working & Resolving Marked Issues)
  3. Itemization preview surfaced inline before send (Prism QuickBooks Bill-Invoice Process)
  4. Customer name and Send-w-Invoice destination visible per row (Adding New Clients — the Send w Invoice column in QB)
  5. Stripe / Email / Mail / EDI routing per client preference (Banyan Client Invoicing)
  6. AR HOLD detection & auto-segregation out of send queue (AR HOLD Report SOP)
  7. Tenant-routed invoicing — invoice goes to tenant org with auto-itemized profit-split deduction (BILLING SOP FOR GLOBAL INDUSTRIES)
  8. Special-client cadence: weekly (Air Global), monthly (Matfer), per-client custom (Air Global Weekly, Monthly processing Matfer)

Overview Send Queue SLS25310071 — preview

Send Detail — Per-invoice preview

Drill-in view from the Send Queue. Preview the rendered invoice + attachments before send, override routing, or hold for later.

Opens from: Send Queue row click, or per-row "Preview" button

Layout

Invoice header
SLS25310071 · US Air Conditioning · Invoice #4592
Amount $720.83 · Due 12/11/2025 · Sent via Email
Stage: Approved
Rendered invoice (PDF preview)
[ PDF.js viewer — full invoice as customer will receive ]
Includes line items: freight charge + reweigh itemization $286.81
Recipients
To: ar@usairconditioning.com
Cc: Brett Christensen
Send via: Email
Attachments
POD ✓ auto-attached
BOL ✓ auto-attached
W&I cert (optional)
Send history
No prior sends. This is the first attempt.
Question · Approval before send
Should the Send Detail allow the operator to send directly, or require an Approve step (e.g., when itemizations were added during audit)?
Default: send directly if invoice is already approved upstream; require Approve only when stage transitions skipped one or more required gates.

Overview Resolution Board

Resolution Board

The four-tier sheet handoff (CS & Ops → CS → A&C → Processing) collapsed into one Kanban board. Entry point for the Resolution Workspace.

Primary users: Angela · Kara · Jennifer · Ashley · Racquel · Melisha Replaces: 4 spreadsheets, manual hand-offs Build: ~1 day

Kanban view

New
SLS25296064
Greene Textile · ArcBest
W&I
−$176.52
SLS25301018
Custom Aerospace · FedEx
OTHER
+$268.73
In Audit
SLS25304040
Permalite · Saia
RECON
−$157.69
Mgr Review
SLS25223099
Stage Depot · XPO
OTHER LTD-D
+$219.62
Processing
SLS25254032
Stage Depot · T-Force
LTD-D
+$188.45
SLS25259033
Air Global · Saia
W&I
+$441.00
Finalized
SLS25310071
US AC · XPO · 11/20
+$214.49
SLS25318049
US AC · XPO · 11/21
+$139.42
Click a card to open the Card Detail view. Drag a card across columns to transition stage (writes Activity row). Filters at the top: assigned-to, sales rep, customer, carrier, category, age.

What lands on the board

  1. CS-raised cards while shipment is in transit (CS & Ops Invoice Resolution Sheet)
  2. Auto-routed cards from the Audit Workspace when variance > threshold (Wave 4 Auto FB Audit)
  3. Manager-review escalations from auditors (Manager Review status across sheets)
  4. Re-audits returned from Variance Workspace (loop-back when finalized variance disputed)

Overview Resolution Board SLS25310071

Resolution Detail — Card

Drill-in view from the Resolution Board. Shows the full audit/processing workflow for a single card: three-snapshot financials, Auto/Add rule application, manager review thread.

Opens from: Resolution Board card click

Card detail

Header
SLS25310071 · US Air Conditioning · XPO Logistics
Sales rep: Brett Christensen · Auditor: Kara → review by Angela
W&I + add category
Original (quote)
Raw:$240.94
Sell:$434.02
Margin:$193.08
New (carrier invoice)
Raw:$490.34
Sell:pending
Variance:−$249.40
Finalized
Raw:$490.34
Sell:$720.83
Margin:$230.49
Commission base:$214.49 (−$16)
Auto/Add suggestion · matched rule
Customer rule: US Air Conditioning · Accessorial: W&I · Min $10, 15% markup
Computed itemization: $286.81 reweigh from 100 lbs to 310 lbs
Question · Issue category seed list
We extracted ~30 distinct issue codes from your CS / A&C / Processing / Variance data, with explicit aliases for typos (DETN ← DETENTION, LUMPER ← LUMEPR). Confirm coverage and bucket assignments. Anything missing?
Default: ship the seed list as drafted; add new codes through the Resolution Workspace as the team needs them.
Question · Manager review threshold
Today everything bottlenecks at Angela for review. Should the workspace auto-route only above a $-threshold (e.g., variances >$200), or always require human review?
Default: auto-route below threshold; flag everything above. Threshold configurable per category. Angela can override either way.

SOP-driven use cases supported

  1. Pre-delivery intake from CS while shipment in transit (CS & Ops Invoice Resolution Sheet)
  2. Post-delivery audit pickup; card opens with shipment+quote+bill+invoice in scope (Daily Reports - To Be Processed Report, Prism Auditing)
  3. Multi-category issue tagging — up to 3 IssueCategory tags per card (CS/A&C/Processing — Issue Type 1/2/3 columns)
  4. Three-stage financial snapshot with auto-computed deltas (across resolution sheets)
  5. Auto/Add rule application with apply/override/escalate paths (Auto Add Bill List, Prism Auditing)
  6. Responsible party assignment + discussed-with toggle (Variance Responsible Party column)
  7. Manager review handoff with comment thread (Manager Review status across sheets)
  8. Itemization handoff to accounting (pending_itemization flag) (Prism Auditing — FB Itemization Sheet)
  9. Special-client custom workflows (Stage Depot, Air Global, Achem) (Stage Depot Audits, Air Global Accessorial List)
  10. Westset / TTD tenant chargebacks (Variance Responsible Party — Westset entries)
  11. CSR communication log → activity feed (CS sheet CSR Comments column)
  12. Service Failure / Guarantee Failure dedicated paths (Service Failure SOP, Guarantee Failure SOP)

Overview Variance & Commission Settlement queue

Settlement Queue

Entry point for the Variance & Commission Workspace. Per-rep settlement table for the active commission period. Click a rep to drill into per-rep detail.

Primary users: Elvira (manager) · Mike (clawback approval) Replaces: 2024/2025 Variance Reports · manual settlement Build: ~1 day

Per-period commission view

Sales rep Variance entries Commission base Variance clawbacks AR clawbacks Net payout Status
Tony Granillo 179 $24,581.20 −$316.40 $0.00 $24,264.80 Ready
Michael De La Torre 94 $16,202.30 −$48.00 $0.00 $16,154.30 Ready
George Tovar 49 $8,113.05 −$200.00 −$329.84 $7,583.21 Pending Mike's approval (1)
Brett Christensen 5 $870.40 $0.00 $0.00 $870.40 Ready
Jeff Billman 3 $520.10 $0.00 $0.00 $520.10 Ready
Click a rep to drill into their per-rep variance detail. The "Pending Mike's approval" rows surface clawback approvals waiting on Mike.

Tenant commission splits (separate flow — B2B revenue-share, not paycheck)

Tenant Customer Period shipments Profit Split Tenant cut SLS net QB code
Total Transportation (TTD) Global Industries 23 $24,200 60/40 $9,680 $14,520 LTL
Total Transportation (TTD) Valmont Telecommunications 11 $8,540 60/40 $3,416 $5,124 LTL
Westset Distribution Joseph Joseph, Inc 15 $11,300 per-shipment 35% WST
Per BILLING SOP FOR GLOBAL INDUSTRIES: when a customer is booked under a tenant level, SLS invoices the tenant (not the end customer) with an itemized line backing out the tenant's profit-split percentage. Math: $1,000 carrier charge + $1,000 profit → $2,000 sell rate stays in TMS → invoice TTD for $1,600 ($400 = TTD's 40% commission) → TTD invoices end customer the full $2,000 and keeps $400.
Question · Settlement export format
Once Prism owns commissions, what format flows to QB AP? Per-rep monthly bill in QB Vendor table, or journal entry, or paycheck integration? This intersects with whether QBO migration ships before or after this workspace.
Default: per-rep monthly bill in QB Vendor table, exported as the same CSV Business Importer accepts today. When QBO ships, switch to direct API push.
Question · Tenant commission model
Model tenant commissions as a dedicated TenantCommissionAgreement (profit-split %, QB itemize code, optional per-customer overrides), or as a special MarkupRule with negative percentages? Are there tenants beyond TTD and Westset to plan for?
Default: dedicated TenantCommissionAgreement model — the math (split of profit) and routing (invoice goes to tenant, not end customer) are categorically different from MarkupRule.

Overview Variance & Commission Settlement queue George Tovar — Nov 2025

Per-Rep Variance Detail

Drill-in view from the Settlement Queue. Every variance entry that contributed to one rep's commission base for the active period.

Opens from: Settlement Queue row click

Header — George Tovar · November 2025

Period summary
49 finalized variance entries · 12 LOWER BILL outcomes · 3 disputed
Gross commission base: $8,113.05
Variance clawback: −$200.00 (1 entry)
AR clawback: −$329.84 (1 entry)
Net payout: $7,583.21
Approvals required
1 clawback pending Mike
Tamerica Products · $329.84 · 1331 days aged

Per-shipment variance entries

SLS Customer Carrier Category Original margin New margin Commission base Outcome
SLS25310071 US Air Conditioning XPO Logistics W&I $193.08 $230.49 $214.49 + $214.49
SLS25318049 US Air Conditioning XPO Logistics OTHER $143.90 $155.42 $139.42 + $139.42
SLS25239028 US Air Conditioning XPO Logistics CBOL $215.30 $164.00 $148.00 + $148.00 (acc'd in quote)
SLS218353 Silver Spur T-Force W&I $85.25 $65.23 $49.23 George liable
Math per row: commission_base = finalized_sell − finalized_raw − $16. When < 0, it becomes a variance clawback against the rep.
Question · Sales rep termination handling
Today Banyan uses a _fired{date} username convention. Adopt as-is, or use a cleaner effective_to date on CommissionContract?
Default: effective_to on CommissionContract. Open clawbacks transition to "uncollectable" tracking. Reactivation un-stamps the date. Banyan integration mirrors the convention going outbound.

Overview Variance & Commission Clawback ledger

Clawback Ledger

The Uncollectable Agent Clawbacks registry. AR-aging-driven clawbacks with the 1.5% monthly compounding done automatically.

Replaces: Uncollectable Agent Clawbacks tab in the Variance workbook Approval gate: Mike

Open clawbacks

Rep Customer SLS Aging Open balance Carrier cost Late fees Pay-back Batch
George Tovar Tamerica Products SLS212430 1331 days $445.83 $381.32 −$51.48 $329.84 CB 2/16-28
Steve Schuh Beauty 21 Cosmetics SLS40245084 492 days $1,530.12 $1,269.10 −$171.33 $1,097.77 Pending
Steve Schuh Beauty 21 Cosmetics SLS22209014 197 days $398.87 $398.87 −$53.85 $345.02 Pending
Late-fee math: 1.5%/period compounded across 30/60/90/120/150/180/210/240/270/360-day buckets. Pay-back = Carrier Cost − Total Late Fees. Computed automatically from current aging.

Approved batches (this period)

Batch Approved # clawbacks Total pay-back Settlement
CB 11/1-15 11/16/25 · Mike 4 $1,243.18 Exported to QB

SOP-driven use cases supported (across the 3 Variance pages)

  1. Per-rep commission report period view (Elvira's **commission rpt N-YYYY tagging)
  2. Per-period archive view (read-only audit) (Variance sheet — 99% Finalized status)
  3. Uncollectable AR clawback math (1.5% / 30-360 day buckets) (Uncollectable Agent Clawbacks tab)
  4. Variance-driven clawback when commission_base < 0 (Variance sheet rows with actual_loss)
  5. Claim-driven clawback (placeholder for claims module) (Claim Clawbacks empty tab)
  6. Settlement export to QB AP per rep (today: hardcoded in special_qb_report)
  7. Sales rep lifecycle awareness — termination, reactivation (Creating a Sales Rep Banyan)

Overview Statements & Collections Aging dashboard

Aging Dashboard

Entry point for the Statements & Collections Workspace. Customer-side AR aging at a glance, with operations toolbar and special-client cadence cards. Click a bucket or customer to drill into Customer Detail.

Primary users: Accounting team Replaces: QB Pending tab · AR HOLD Report · weekly statements · special-client batch reports Build: ~0.5 day

Aging dashboard

Current
$182,403
1–30
$84,210
31–60
$22,815
61–90
$8,402
91+
$3,917
360+ → clawback
$2,028

Operations

Top customers by aging

CustomerOpen balanceCurrent1–3031–6061–9091+360+
Stage Depot Inc$28,402$18,200$8,402$1,800
NLS Lighting$22,100$14,300$7,800
Air Global$18,420$10,200$5,820$2,400
Tamerica Products$2,028$2,028
Click a customer or aging bucket to drill into the per-customer Statement Detail view.

Special-client cadences

Air Global
Cadence: Weekly Monday batch, 2-week post-delivery lag
Next batch: Mon 12/01
Pending: 14 shipments
Matfer
Cadence: Monthly 1st-week batch, prior month
Next batch: Mon 12/01
Pending: 47 shipments
Achem
Cadence: Weekly billing report (Friday)
Next report: Fri 11/28
Pending: 9 shipments

Outbound A/R submissions

Moody's Analytics Pulse
Cadence: Monthly · per-customer aging buckets (Current / 1-30 / 31-60 / 61-90 / 91+ DBT)
Last submission: 11/01 · 142 customers
Next submission: 12/01 · ~148 customers
Inbound: per-customer % on time, DBT, DCL, EZ Cover Risk Rating — feeds Client Lifecycle credit evaluation. (A/R Data Submission Guidelines)
Question · Statement template
Today statements are emailed from QB with QB's default formatting. Move to a Prism-generated PDF with our branding? Or keep QB visual identity until QBO migration?
Default: Prism-generated PDF, branded, with same field structure as QB output. Customer-facing change is just the design refresh.

Overview Statements & Collections Aging dashboard Stage Depot Inc

Customer Statement Detail

Drill-in view from the Aging Dashboard. Per-customer open invoices, payment history, contact actions, hold management.

Opens from: Aging Dashboard customer-row click, or aging-bucket drill

Header — Stage Depot Inc

Customer
Stage Depot Inc · HOUSE rep · Net 30
Sales contact: George Tovar
AR contact: ar@stagedepot.com
Send via: Mail · POD required ✓ · BOL required ✓
Aging snapshot
Open balance: $28,402
Current $18,200 · 1–30 $8,402 · 31–60 $1,800 · 91+ $0

Open invoices

InvoiceSLSDateDueDaysAmountStatus
4592SLS2530502011/0612/0622$842.62Sent
4571SLS2523902810/3011/29−1 (overdue)$842.62AR HOLD: Pending POD
4540SLS2522309910/2411/23−7 (overdue)$1,165.21Sent

Recent activity

11/20 · System
STATEMENT_SENT — November weekly batch · 18 invoices
11/18 · Ashley
CALL_LOGGED — left voicemail re INV 4571 missing POD
11/04 · System
INVOICE_HELD — INV 4571 · reason: Pending POD

Overview Statements & Collections AR HOLD list

AR HOLD List

Invoices currently on HOLD with structured reasons. Replaces the QB AR HOLD Report SOP (today: free-text in QB Ref# field, monthly manual report).

Cadence today: Monthly report In v3: Live view, hold release writes Activity, releases route back to Send Workspace

Held invoices

8 on hold $5,193 total
SLSCustomerAmountHeld sinceReasonOwner
SLS25239028Stage Depot Inc$842.6211/04Pending PODCS — Ashley
SLS25254032Air Global$1,200.6411/06Pending final sell rate from TonyAudit — Angela
SLS25247016Allstate Floral$3,150.0009/22Service issue under reviewMike
Reasons are structured (not free-text). Releasing a hold writes an Activity row and re-routes the invoice into the Send Queue.

SOP-driven use cases supported (across the 3 Statements pages)

  1. Weekly open invoice statements (Sending Statements)
  2. Collections report — twice-weekly aging review (Weekly Collection Report SOP)
  3. AR HOLD management with structured hold reasons (vs free-text in QB Ref#) (AR HOLD Report SOP)
  4. Special-client invoice report cadences (Air Global Weekly, Achem Weekly Billing, Monthly Matfer)
  5. Late-arriving docs flow — update in-flight QB invoice (Docs Received for shipment already in QuickBooks)
  6. QB Pending / Bills To Be Paid view (carrier-side AP) (To Be Paid-Unbilled Report)
  7. Per-customer drilldown with payment history and contact actions (Banyan Client Invoicing, Prism Quickbooks Bill-Invoice Process)
  8. Moody's Pulse outbound A/R submission — monthly aging file → per-customer credit metrics back (A/R Data Submission Guidelines)

Client Lifecycle (smaller surface)

Onboarding, credit management, terms verification, level changes. Today distributed across Banyan + Prism + QB + 4 spreadsheets.

Build: ~1 day (after core workspaces stabilize) Defer: dedicated UI to Phase 7+; data model lands earlier

Client lifecycle states

Pending Credit App
One-time / Pre-pay
Building Internal Credit
Net 15 / 30
House Account
DO NOT SELL
Inactive

Per-client view (sketch)

Identity & contacts
Company name (matches QB Customer Name) · DBA · physical / mailing address · sales contact · accounting contact · users with portal access
Credit & risk
Moody's % on time · Days Beyond Terms (DBT) · DCL · EZ Cover Risk Rating · Credit App date · CC Auth on file · Credit limit
Billing requirements
Send via: Email / Mail / EDI
Required docs: POD ☐ BOL ☐ W&I ☐
Reference numbers required: BOL ☐ PO ☐ PRO ☐
Cadence & markup
Billing cadence: per-shipment / weekly / monthly
Min markup, target margin %
Auto/Add rules → linked to MarkupRule table
Carriers & defaults
Assigned carriers (currently 23 default LTL carriers per onboarding SOP)
Default freight characteristics (NMFC, sub, class)
Default accessorials with frequencies
Lifecycle history
Reactivation events · level changes · credit-line updates · terms changes — all as Activity rows
Question · Client level enforcement
Today Banyan has "quote-only" client levels (SLS Freight, SLS Freight - <Agent>, SLS Freight - Total Transportation, Westset Distribution) that must be updated to a real customer before booking. Should Prism enforce this with a hard block on booking? Or surface it as a warning + auto-suggest?
Default: warning + auto-suggest (don't block; route to Resolution if not corrected within 24h).

SOP-driven use cases supported

  1. New client registration (Adding New Clients into the TMS(s), Client Registration AGENT)
  2. Credit application & evaluation with Moody's data (Credit Application, OFFICE USE ONLY section)
  3. CC Auth Form on file (CC Auth Form Current — terms encoded)
  4. Customer terms classification (New Client Terms Verification)
  5. Pending / pre-pay / one-time / house monitoring (Pending Credit App spreadsheet, Building Internal Credit)
  6. Account reactivation (Reactivating Accounts SOP)
  7. Quote-only level handling (Changing the Client Level - Banyan)
  8. Default shipment / accessorial defaults per client (Updating Client Defaults - Banyan)

Vendor & Carrier Management (smaller surface)

QuickPay, NOA inquiries, payment status, sales rep onboarding, unknown-shipment intake.

Build: ~0.5 day (Phase 7+ for full UI) Data model: lands during Wave 4–5 to support related workflows

Sketch

Carrier registry
35 active LTL carriers · per-carrier QuickPay flag · NOA status (factoring) · QB vendor mapping · payment terms

For T-Force specifically: shows the Blanket→sub-account mapping (today done by hand)
Sales rep / agent registry
Per-rep contracts, commission rate, fixed deduction, clawback rules · effective dates · Banyan / Prism user accounts

Termination = effective_to date set; reactivation = effective_to cleared
QuickPay queue
FreightBills with QuickPay requested · approval status · per-carrier QuickPay terms (typical: 24h pay for 2% discount)
Unknown shipments inbox
Carrier bills that don't match any Prism shipment · research queue · creates Resolution card on resolution
Question · Factoring / NOA workflow
When a carrier sends an NOA (factoring company has bought their receivables), payment routing changes. Today this is manual — mark on the bill, look up factoring co. in a spreadsheet. Build a structured NOA flow now, or defer?
Default: defer dedicated UI; add a Carrier.factoring_contact field plus a Resolution category so today's manual flow at least leaves a trail.

Activity Feed (cross-cutting spine)

One time-stamped, role-filtered log per shipment. Replaces the four scattered note tables (Invoice.notes, Invoice.history, Shipment.special_notes, Client.notes, Carrier.history_notes), the "Check Call History", and the chronological logs the team manually formats into single Excel cells today.

Build: ~1 day (lands in Wave 2 with Audit Workspace) All workspaces ride on it

Sample feed (right rail of any workspace)

11/20/25 14:22 · Kara Lohse
INVOICE_SENT — bulk send batch · client invoice with reweigh fee · POD attached
11/19/25 16:15 · Kara Lohse
RESOLUTION_FINALIZED — itemized $286.81 reweigh · auto/add markup applied 15%
11/19/25 14:05 · System
CHARGE_ADDED — LFTGT · Raw $249.40 · Profit Markup $37.41 · suggested via MarkupRule "US Air Conditioning × W&I"
11/18/25 09:30 · Racquel Martinez
RESOLUTION_OPENED — variance −$249.40 exceeds $20 threshold · routed to Audit team
11/18/25 09:30 · System
BILL_DISPUTED — auto-flagged · carrier invoice $490.34 vs quote $240.94
11/11/25 17:45 · System
STATUS_CHANGE — Delivered (per carrier API)
11/06/25 08:14 · George Tovar
STATUS_CHANGE — Booked → Dispatched · pickup confirmed

Visibility roles

Each activity row carries a visibility role. Operators filter the feed by role.

all billing ops broker client tenant

Activity kinds (initial set)

NOTE STATUS_CHANGE ISSUE_OPENED ISSUE_RESOLVED BILL_MATCHED BILL_DISPUTED INVOICE_APPROVED INVOICE_SENT INVOICE_PAID INVOICE_HELD INVOICE_RELEASED QB_EXPORTED FORCE_PUSHED_TO_QB CHARGE_ADDED CHARGE_VARIANCED DOC_UPLOADED DOC_RECEIVED_LATE RESOLUTION_OPENED RESOLUTION_FINALIZED MANAGER_REVIEW COMMISSION_PERIOD_TAGGED CLAWBACK_RAISED EMAIL_SENT CALL_LOGGED CARRIER_DISPUTE_FILED APPROVAL_REQUESTED / GRANTED / DENIED
Question · Backfill scope
Forward-only writes for new rows, with a one-time read-only render of legacy notes inline? Or full migration of existing notes into Activity rows?
Default: forward-only, with read-through layer for legacy notes. Cheaper and lower-risk; doesn't mutate history.

Auto/Add Rule Engine (cross-cutting)

Your Auto Add Bill List - Master.xlsx, normalized. Today: 5 tabs, 30 carriers × 16 accessorials, 225 active customers + 189 inactive, plus Westset and Total Trans tenant overlays. We seed the engine from this exact file on day one.

Lands in: Wave 4 (with Auto-FB-Audit) Powers: Audit Workspace · Resolution Workspace

Rule structure (per cell in Auto Add Bill List)

Min add to cost
e.g. $20
Flat rate to add
e.g. $50
% to add to cost
e.g. 35%
Total not to exceed
e.g. $250 · or "email for approval"

Scoping precedence

Most specific wins:
  1. customer × carrier (e.g., NLS Lighting × T-Force)
  2. customer (e.g., NLS Lighting)
  3. tenant × customer (e.g., Westset × Joseph Joseph)
  4. carrier (e.g., EDI Express CBOL "DO NOT auto add")
  5. global default ($20 min, 35%, max via email)
Sentinel values:
  • NONE — explicitly disabled (e.g., Allstate Floral)
  • email / Angela — manual approval required
  • at cost (include any processing fee) — pass-through (Lumper)
  • DO NOT auto add — SEE Mike — hard stop with note

Sample rule lookup (Audit Workspace integration)

Rule resolution
Customer: US Air Conditioning · Carrier: XPO Logistics · Accessorial: W&I (reweigh)
Looked up:
1. customer × carrier → not configured · skip
2. customer → Min $10, 15% · matched ✓
Computed: $249.40 raw × 1.15 = $286.81 · > $10 floor ✓ · no max set
Suggestion presented to operator with Apply/Override/Email-for-approval buttons.
Question · Scoping precedence confirmation
We propose: customer × carrier > customer > tenant × customer > carrier > global. Confirm that's what you want — particularly the precedence between customer-level and tenant×customer-level. (Should a Westset customer's customer-level rule beat the Westset tenant default? We say yes; confirm.)
Default: most specific wins; customer-level beats tenant-default.

Open Questions — Consolidated

Every yellow flag in this deck, in one place. If you don't reply, we ship the listed default. Reply on any of these to override.

Audit Workspace
Force-push override authorization
When a shipment hits day 5 post-delivery without audit completion, who can authorize the force-push to QB? Auditor self-authorize with reason, or manager approval required?
Default: auditor self-authorize with required reason text — matches today's SOP.
Send Workspace
Bulk-send error handling UX
When a row in a bulk send fails (Stripe error, missing doc, mail-merge), do we email the operator, surface in-app only, or both?
Default: in-app summary in a "Needs attention" pile; failed rows become Resend Required issues. Email digest opt-in per user.
Resolution Workspace
Issue category seed list
~30 distinct issue codes extracted from your CS / A&C / Processing / Variance data, with explicit aliases for typos. Confirm coverage and bucket assignments. Anything missing?
Default: ship the seed list as drafted; add new codes through the Resolution Workspace as the team needs them.
Resolution Workspace
Manager review threshold
Today everything bottlenecks at Angela for review. Auto-route only above a $-threshold (e.g., variances >$200), or always require human review?
Default: auto-route below threshold; flag everything above. Threshold configurable per category.
Variance & Commission
Settlement export format
Per-rep monthly bill in QB Vendor table, journal entry, or paycheck integration? Intersects with QBO migration timing.
Default: per-rep monthly bill in QB Vendor table, exported as the same CSV Business Importer accepts today. Switch to direct QBO API push when QBO ships.
Variance & Commission
Sales rep termination handling
Adopt Banyan's _fired{date} username convention as-is, or use a cleaner effective_to date on CommissionContract?
Default: effective_to on CommissionContract. Banyan integration mirrors the convention going outbound.
Statements & Collections
Statement template
Today statements are emailed from QB with QB's default formatting. Move to Prism-generated PDF with our branding, or keep QB visual identity until QBO migration?
Default: Prism-generated PDF, branded, with same field structure as QB output.
Client Lifecycle
Client level enforcement
Banyan "quote-only" client levels (SLS Freight, SLS Freight - <Agent>, etc.) must be updated to a real customer before booking. Hard block, or warning + auto-suggest?
Default: warning + auto-suggest; route to Resolution if not corrected within 24h.
Vendor & Carrier
Factoring / NOA workflow
When a carrier sends an NOA (factoring co. has bought their receivables), payment routing changes. Build a structured NOA flow now, or defer?
Default: defer dedicated UI; add Carrier.factoring_contact field plus a Resolution category so today's manual flow leaves a trail.
Activity Feed
Backfill scope
Forward-only writes for new rows, with a one-time read-only render of legacy notes inline? Or full migration of existing notes into Activity rows?
Default: forward-only, with read-through layer for legacy notes.
Auto/Add Rule Engine
Scoping precedence
Customer × carrier > customer > tenant × customer > carrier > global. Confirm — particularly whether a Westset customer's customer-level rule beats the Westset tenant default.
Default: most specific wins; customer-level beats tenant-default.
Variance & Commission
Tenant commission model
Per the Global Industries SOP: TTD-tenanted customers are invoiced through TTD with a 60/40 profit split. Model as a dedicated TenantCommissionAgreement (profit-split %, QB itemize code, optional per-customer overrides), or as a special MarkupRule with negative percentages? Are there tenants beyond TTD and Westset to plan for?
Default: dedicated TenantCommissionAgreement model — the math (split of profit) and routing (invoice goes to tenant, not end customer) are categorically different from MarkupRule.

Build Timeline — Agentic Development

Re-estimated for agentic development cycles. Each engineering wave is roughly a focused day; total ~10 build-days, ~3–4 calendar weeks including validation and iteration with your team.

Build days: ~10 Calendar weeks: 3–4 (with daily Kara/Angela/Elvira validation) Compare to v3 plan: 24–30 weeks under traditional dev cycle

Wave-by-wave

D1D2D3D4D5D6D7D8D9D10D11D12D13D14D15D16D17D18D19D20
0.5d · Wave 1 Surfacing fixes
D1
1d · Wave 2 Activity Feed + Audit Workspace
D1–D2
0.5d · Wave 3 Send Workspace
D3
1.5d · Wave 4 Lifecycle + MarkupRule + Auto FB Audit
D3–D5
1d · Wave 5 Resolution Workspace
D5–D6
1d · Wave 6 Variance + Commission + Clawback
D7–D8
0.5d · Wave 7 Statements & Collections
D8
1d · Wave 8 Banyan ingestion (read-only mirror)
D9–D10
0.5d · Wave 9 Cutover (Prism = billing-of-record)
D10
2d · Phase 11 QBO API integration
D11–D14 (after QBO sandbox cutover)

What the agentic estimate covers vs. doesn't

Covered in build days
Model + migration
Views + URL routing
Templates (functional, low-fi)
Activity hooks at write-points
Unit tests for new logic
Integration test for happy path
Documentation update
Calendar overhead (not in build days)
Daily 30-min validation calls with Kara / Angela / Elvira
UX iteration cycles based on operator feedback
Visual polish & theming
Production data backfill
Performance tuning at scale
Phase 10 QBO migration project (mostly accountant time)

Recommended cadence

Week 1: Waves 1–3 (Surfacing + Activity/Audit + Send). Kara reviews before her leave. Daily 30-min standup.
Week 2: Waves 4–5 (Lifecycle + MarkupRule + Resolution). Angela becomes the primary daily reviewer. Friday: full team demo.
Week 3: Waves 6–7 (Variance + Statements). Elvira joins daily review. Replay one full clawback period as cutover gate.
Week 4: Waves 8–9 (Banyan mirror + cutover). Two weeks dual-running before write traffic flips. Phase 10 QBO project starts in parallel.

Phase 10 (QBO migration) and Phase 11 (QBO API) run later, gated by accountant-driven cutover. Phase 11 is ~2 build-days under agentic dev, vs. 6–9 weeks traditional, per the QBO inventory companion doc.