RevParPro · AP Invoice Module

AP Module: Plan of Record

Updated 2026-07-20 evening · supersedes the morning research brief at this URL · design locked by Ace, hardened by a five-advisor review, revised twice on Ace's pushback
Verdict: BUILD, next slot ahead of Plaid Estimate: 13-17 build days (Woz estimate) Pilot: HOURP, August 2026 Volume: ~144 QBO bills + ~75 tracked invoices / month Clickable design mockup →

What this is

An in-house AP module for RevParPro replacing Innrly's failed AP product: invoices come in by GM forward or upload, a vision model reads and codes them, the GM approves on screen, and bills post to QuickBooks (or a tracked lane for the 12 active entities that run on the Excel sheet today). Built role-based because it ships as a product for management companies; THM is tenant #1. Payment execution stays out of V1.

Basis for the build call: ~144 QBO bills a month across HOURP/HOUZN/HOUUS (12 months of QBO data) plus ~75 a month on the manual tracking sheet, which showed $611,165.81 past due when parsed on 7/20. The research verdict on Innrly stands: sound structure, obsolete extraction engine (their own emails admit per-vendor regex parsing), which is the layer we invert with vision extraction.

01The pipeline

Capture
GM forwards / bulk upload / phone photo. Vendors never get the address
Vision extraction
proven by backtest vs historical invoices BEFORE pilot
AI GL coding
learned per vendor, exceptions to accounting
Duplicate + fraud gates
ours first, QBO's DocNumber check second
GM approves
org co-sign over $2,500
Post
QBO bill with source PDF attached, or tracked lane

The backtest is Ace's revision: hundreds of historical invoice PDFs (QBO attachments plus the tracker's Drive folder) already have known-correct answers in the books, so extraction accuracy gets measured in days, not discovered during a pilot month.

02Locked decisions

DecisionLocked call (Ace, 2026-07-20)
1Approval chainGM approves own property's bills; org (Ace/Alyssa) co-signs above threshold. Accounting facilitates, never authorizes spend.
2Threshold$2,500 default. Calibrated same day: 3.6 org co-signs a week at full rollout, 2.1 during the pilot (12-month bill distribution).
3Accounting's touchExceptions only: low confidence, new vendor, math mismatch, suspected duplicate. Clean bills skip accounting.
4Stalled approvalsRemind at 48h; escalate at day 5 or 3 days before due date, whichever first.
5NotificationsDaily digest; escalations break through individually.
6Pilot shapeHOURP August, GM Michael approving from day one, manual entry parallel.
7Unreadable invoicesAccounting keys them in-app beside the image; nothing bounces to vendors.
8Auto-postSchema supports trusted-vendor auto-post; OFF in V1 until pilot data proves accuracy.
9IntakePer-property internal addresses + smart generic. GMs forward or upload; vendors keep emailing GMs as today.
10Tracked laneThe 12 active sheet entities onboard right after the pilot month; the Excel tracker retires.
11Near-term extrasOrg-wide AP aging dashboard + missing-bill alerts. Later: statement reconciliation, exports.
12Roles, not peopleSubmitter, AP Reviewer, AP Approver, Org Admin, Vendor Steward, GL Map Manager. Every tenant assigns its own humans.

Baked-in invariants no tenant can disable: nobody approves a bill they submitted or coded; editing amount or vendor resets approval; when the same person captures and approves, accounting adds one verification touch; delegation is time-boxed and audited; one-person shops get an honest control-exception stamp, never fake segregation.

03Five-advisor review, disposition

ReviewerVerdictTop catch, and what changed
Warren (CFO)Build with changesGM both forwards and approves: fixed by defining forwarding as capture, not submission, plus a second touch when capturer = approver. Also added: vendor-splitting velocity rule, remit-to fraud diffing, coding-risk gate.
Walton (COO)Build with changesNothing fired on silence: intake heartbeat and zero-intake alerts now land in Phase 1. GL map pre-seeded from 12 months of history so August is not an exception avalanche on Asad's first week back.
Andrej (GPT)Build with changesThe QBO function we planned to clone has live bugs (undefined variable, "bill" excluded from its logging contract): posting service gets built fresh. Approval enforcement moved into the database, keyed to bill versions.
ChaseAI (Gemini)Build with changesA model grading its own confidence hides its blind spots: answered with the historical backtest plus a month of field-by-field comparison against Asad's manual entries.
Wynn (CRO)Build with changesThree cheap columns (expense category, service period) so AP data can feed cost-per-occupied-room benchmarking and franchise-fee revenue checks later.

Zero STOP verdicts. Ace's two post-review revisions: (1) prove extraction on historical examples up front instead of relying on the shadow month; (2) shadow window shortens to gates-met, realistically 1 to 2 weeks, because QBO's own duplicate check is exact-match and preference-dependent, so it stays the second net, not the first.

04Rollout

  • Build (13 to 17 days, Woz estimate): schema + roles + vendor sync, intake, extraction + the historical backtest gate, GM approval screen, posting service with database-enforced approval gate. Rule adopted from the review: if the envelope busts, UI polish gets cut, controls never do.
  • August, HOURP pilot: live intake and GM approvals, posting dark (payloads stored, Asad's manual entry remains system of record). Nightly reconciliation of the two is the scorecard, the extraction audit, and the missed-intake alarm at once. Cutover gates pre-registered and signed by Ace.
  • September: gates met, live posting on, manual entry stops. Then HOUZN + HOUUS, then the tracked lane replaces the Excel sheet, then the org aging dashboard and missing-bill alerts.
  • Plaid bank reconciliation starts immediately after pilot-ready, the bank-side control that catches whatever the preventive gates miss.