Legal
Data Policy
Market pricing benchmarks · Last updated October 3, 2026
This page is the detailed companion to Section 3 of our Privacy Policy. It exists because "we collect anonymized pricing data" is not a meaningful disclosure on its own. Below is the exact field list, the exact exclusions, and the honest limits.
Why this program exists
Subcontractors bid largely blind. There is no reliable public reference for what a given scope of work actually goes for in a given metro, so the same trade can be 30% apart on the same building with neither party knowing it. SubPro is building that reference out of real bids and intends to offer it back to subcontractors as a separate benchmarks product.
That only works if contributors are safe. A subcontractor's pricing is the most competitively sensitive number in the trade, and the program is worthless — and unethical — if a number can be walked back to the company that produced it. Everything below follows from that single constraint.
Exactly what is recorded
When you send a proposal, and only if you have not opted out, one row is written containing:
| Field | Example | Why |
|---|---|---|
| Month | March 2026 | Tracks price movement over time. Deliberately month-only — see below. |
| CSI division | 09 (Finishes) | The trade category being priced. |
| CSI section | 092900 (Gypsum Board) | Finer scope detail, where you supplied it. |
| Metro area | Dallas–Fort Worth–Arlington | Derived from your typed project location. |
| State | TX | Fallback grain when a city is not recognized. |
| Bid total | $48,200.00 | The number the benchmark is made of. |
| Line item count | 14 | A rough proxy for job complexity, so a 3-line bid is not averaged against a 40-line one. |
| Rotating token | (opaque) | Prevents one contributor flooding a region, and lets us count distinct contributors. Explained below. |
That is the complete list. There are no other columns.
What is deliberately not recorded
- No user ID, account ID, or foreign key to your account. The table has no column pointing at you. There is nothing to join on — not by us, not by anyone who obtained a copy of the database.
- No company name, contractor license, email or phone.
- No client or general contractor name.
- No project name and no street address. Only the metro.
- No timestamp finer than the month. This one is load-bearing: an exact send time would correlate one-to-one with your proposal records and would quietly undo every other protection on this list.
- No scope text, terms language, or line item descriptions.
How the data is protected
Raw rows are unreadable. The underlying table denies read access to every application role. No logged-in user, and no client of our API, can query it. The only surface that can be read is an aggregate view.
Small cells are suppressed (5-anonymity). That aggregate view withholds any figure computed from fewer than 5distinct contributors. If only two drywall subs in a metro contributed in a month, no drywall number is published for that metro that month. This is what stops a benchmark from being a thin disguise over one company's bid.
The contributor token rotates monthly.Each row carries a one-way cryptographic token derived from your account and a secret that changes every month. It exists only to count distinct contributors and to stop flooding. Because the secret rotates, the same company produces a completely different token in April than in March — so the token cannot be used to follow one company's pricing across time, by us or by anyone else.
Your opt-out is enforced in the database, not the app. The check runs inside the function that writes the row. A bug elsewhere in our own code cannot cause a contribution from an account that opted out.
How to opt out
Open the SubPro app → Settings → Privacy → turn off market pricing contributions.
It takes effect immediately and applies to every proposal you send afterward. Opting out does not limit any feature, does not change your price, and does not affect your access to benchmark products if we offer them to you later.
Participation is on by default for accounts that have not opted out. We disclose that at signup rather than burying it here, which is the point of the notice you saw when you created your account.
The honest limits
We would rather state these plainly than let you discover them later.
- De-identified is not the same as impossible to re-identify. No de-identification scheme is absolute. Ours is designed so that re-identification would require combining our data with outside knowledge we do not have and do not seek. We do not attempt to re-identify contributions, and we require the same of anyone we license aggregate data to.
- Past contributions cannot be withdrawn. This is the direct cost of doing the de-identification properly: because no row is linked to your account, we cannot locate your previous contributions in order to delete them. Opting out stops all future contributions. Deleting your account removes your account data but cannot reach rows that were never connected to it.
- Very thin markets stay empty. The 5-contributor floor means rural regions and uncommon trades may show no data for a long time. We would rather publish nothing than publish something traceable.
What we do with the benchmarks
We use the aggregated results to build regional pricing benchmarks, and we may publish them or license them commercially — for example as a subscription product for subcontractors. Any such product is built exclusively from the suppressed aggregate view described above, never from raw rows.
We do not provide benchmark data to a general contractor for the purpose of identifying, targeting, or undercutting a specific subcontractor, and we do not sell the underlying records to anyone.
Changes and questions
If we materially change what is collected, how it is protected, or how it is used, we will update this page and notify you in the app before the change takes effect.
Questions about this program go to support@subproapp.co.