Costs — who sent an invoice is read from that invoice's company

PR #12363 on stage, branch dev server, smoke user.

25 Sept 2026 · branch costs-vendor-names-from-records · captured against propflow-stage · at 059b4d79a1+local

Data note. Every name and balance below comes from propflow-stage, which is anonymized by construction (ADR-0097/0110 — phones in the impossible +1000 NPA, emails @example.test). The identical capture against prod would carry real tenants' names and balances and is not safe to attach anywhere, which is why the generator refuses to run against one.

1 · Unclaimed senders: domain label, no badge

No vendor record claims either sender, so each row is labelled from its domain and shows no trade badge. Before, a guessed General badge appeared. The company's own mail is skipped, because one of its buildings' addresses is on that domain.

Asserted in the captured DOM — Vendors by Spend · Vendor Costs. Labels only; badge absence is shown, not asserted.

Unclaimed senders: domain label, no badge

2 · An expanded row

Rows open by their group id (one per vendor record or unclaimed domain) and still list their invoices.

Asserted in the captured DOM — Vendors by Spend. Invoice lines are moving stage data, so they are not pinned.

An expanded row

Not on stage

Stage anonymizes every sender, so no invoice comes from a learned vendor. The record-backed name and trade are pinned by load-cost-data.senders.test.ts and api-routes-costs.test.ts.

PropFlow Docs