RPP Card Expenses: Launch-Readiness Audit

Woz engineering audit of the Card Expenses module at app.revparpro.com/app/card-expenses
Generated 2026-08-02. Sources: live production database queries run today (service-role, read-only), live browser verification of the production page, GitHub Actions history, and the project note "RPP Card Expense Workflow" (vault, updated 2026-07-31).

Verdict: the software is ready. Launching this week is now a people exercise, not a build exercise.

Every screen, control, and safety check needed for the pilot is live and verified in production. What remains is: Junaid running his first approval pass, one QuickBooks bank-feed fix at HOUUS, the July statement files, and a policy call on the pre-pilot backlog. No new feature work is required to launch.

91
Page health / 100
(gstack /qa rubric)

Pilot scoreboard, as of today

HotelWhere it standsStatusWhat is blocking
HOUZN
Chase path
Sam Xie submitted all 8 of his real items, $497.16 combined (sum of the 8 production expense rows 48.96 + 58.43 + 28.10 + 124.97 + 41.91 + 30.63 + 136.10 + 28.06, queried 2026-08-02). All 8 sit "submitted, unreviewed." Waiting on approver Junaid has not started his review pass. Zero of the 8 are approved (production query, 2026-08-02).
HOURP
AMEX path
Michael's 2 real items (Chick-Fil-A $9.95 on Jul 16, Grainger $5.70 on Jul 24) are complete AND approved as of Jul 31 evening (production expense records). One step left Neither has been sent to QuickBooks yet: the newest QBO send on record is Jul 30 (production write-back log, queried 2026-08-02). Send plus confirmed read-back completes this hotel's core case.
HOUUS
AMEX / QBO path
RPP is healthy and synced (today's 9:00 UTC sync completed clean, 1,257 QBO purchases checked, production sync log). But QBO itself has no posted card purchase after May 9, while the active AMEX import carries 136 later rows whose absolute activity sums to $41,808.02 per the vault note "RPP Card Expense Workflow" (verified 2026-07-31 against the import file). Blocked in QBO The bank feed or For-Review queue in HOUUS QuickBooks must be fixed by a person with QBO access. RPP cannot fix this from its side.

What is verified working

To launch this week, in order

OwnerActionWhy
JunaidOpen Card Expenses, review and approve Sam's 8 submitted HOUZN items, send each to QuickBooks, confirm the read-back.This is the pilot's core proof: independent approval by someone who did not prepare the expense. All 8 are queued and waiting (production query, 2026-08-02).
JunaidSend Michael's 2 approved HOURP items to QuickBooks and confirm read-back.Approval is done; the QBO send is the only unfinished step (production write-back log, 2026-08-02).
Ace / AcctFix the HOUUS QuickBooks card feed: open Bank transactions, treat the two Aviator entries as one renumbered card, and post or reconnect the AMEX activity missing since May 9.136 statement rows after May 9, $41,808.02 in absolute activity per the vault note (verified 2026-07-31), have no QBO counterpart. HOUUS cannot reconcile to $0 until this is fixed.
All 3 GMsImport each hotel's July statement file when the issuer publishes it, and save the control totals.The importer needs no manual fields and reports duplicates safely (verified live on retained files, vault note 2026-07-24). July coverage is a close gate.
Ace + WozDecide the historical-backlog policy: 1,918 active expenses have no responsible owner and 7,918 still "need receipt," almost all from months before the pilot (production query, 2026-08-02).Nobody should chase 2025 receipts. A one-time decision (bulk waiver or scoped assignment for pre-pilot months) keeps the close gates honest without creating fake work.
FinanceRun the first real month close (June, then July) per hotel after reconciliation hits $0.Only three close-period records exist, all June, all still open with no blockers recorded (production query, 2026-08-02).
WozPush the prepared CI change (commit d7fc52c) once the GitHub login gets workflow permission.The automated deploy list covers 24 functions but none of the 4 card-expense functions (deploy workflow on main, checked 2026-08-02). Until fixed, any edit to those functions must be deployed by hand or it silently never ships.
AceAfter all three hotels close at $0: update the cardholder SOP and retire the Google Sheet.The stated finish line in the project plan (vault note, remaining-work item 7).

Bugs found (none block launch)

#SeverityWhat happensEvidence
1LowIntermittently, an authenticated non-Finance user who opens /app/card-expenses is bounced to the AP module a few seconds after the page loads. Happened on 2 of 3 attempts today with the QA account.Browser session, 2026-08-02. Needs a check that real cardholders (Sam, Michael) are not affected; their roles differ from the QA account's.
2LowThe Month close tab fires the same period-snapshot data call 6 times in a row (all denied for an unauthorized user). Wasted calls and console noise; suggests a retry or re-render loop.Network log on production, 2026-08-02.
3CleanupThe failed Jul 31 upload left 126 orphan raw statement rows ($13,409.87) in the evidence table. The workflow ignores them correctly, but any script or report that reads the raw table directly would double-count them.Production query, 2026-08-02. Several older reconciliation scripts in the repo still read the raw table directly.
4VerifyOne active HOURP card is registered with issuer "UNKNOWN." All other 20 cards have a real issuer.Production card registry, 2026-08-02.
5Spot check124 active expense pairs share the same hotel, date, merchant, and amount (production query, 2026-08-02). Most look like genuinely repeated purchases (identical same-day Uber rides, three identical $47.51 charges from one vendor). One HOURP pair, two $20.56 Amazon charges on Apr 13 with differently formatted merchant names, deserves a 30-second Finance look.Production query, 2026-08-02.

How the team will land on it (assessment, not fact)

Sam Xie (HOUZN cardholder)

Best evidence says the employee side works: Sam pushed all 8 real items through the new batch queue without a spreadsheet, and each needed only a GL choice from him since receipts and purposes were already attached (production records, 2026-08-02). His queue is now empty until Junaid acts, which is the right feeling for a cardholder: do your part, done.

Michael Giangrosso (HOURP cardholder)

Both of his items are complete and approved. His experience of the product is finished for the month, which is exactly the pitch.

Junaid Mehmood (approver)

The pilot now stalls or succeeds on his first session. His default view (current month) is a manageable list: 35 open HOURP and 21 open HOUZN July items (production query, 2026-08-02). The risk is first-impression shock if he flips to all months and meets thousands of historical incomplete items; the backlog policy decision above, made before his session, prevents that.

Ace and accounting

One genuinely annoying task remains theirs: the HOUUS QuickBooks feed. Everything else they see should read as progress: two hotels with live employee submissions, clean syncs, and an audit trail behind every number.

Backdrop numbers

9,980
Active expense records
10,260 total minus 280 superseded. Production query, 2026-08-02.
99.4%
Matched to statement evidence
9,916 of 9,980 active. 62 unmatched, 2 disputed. Production query, 2026-08-02.
80
Confirmed QBO coding posts
45 HOURP, 35 HOUZN, all with confirmed read-back. Production write-back log, 2026-08-02.
21 / 21
Active cards assigned
Zero unassigned, zero on test accounts. Production card registry, 2026-08-02.
10
Real pilot items in motion
8 submitted (HOUZN) + 2 approved (HOURP). Production query, 2026-08-02.
3
Close periods open
June 2026 for each hotel; none closed yet. Production query, 2026-08-02.

Page health score of 91/100 was computed with the gstack /qa rubric (weighted console, links, visual, functional, UX, performance, content, accessibility categories) from today's production browser session.