← back to Rentv Adintel
docs/ADVERTISER_SOURCE_REGISTER.md
77 lines
# RENTV Advertiser Intelligence — Source Register
The catalog of research sources and their policies. **A source must have a reviewed
policy before automation is enabled** — this is the governing rule, enforced by
`lib/compliance/source-policy.js` (`validateSourcePolicy` / `assertSourceEnabledLegal`)
which is called before every run.
## The governing rule
1. Each source is described by a `source_policies` record (the `SourcePolicy` shape in
§10 — `sourceKey`, `displayName`, `owner`, `baseUrl`, `accessMethod`,
`allowsAutomatedAccess`, rate limits, `reviewedAt`, `reviewNotes`, `enabled`, …).
2. A policy is validated on save and again **before every run**. A policy that names a
prohibited proprietary DB (CoStar, LoopNet, ZoomInfo, Apollo, MLS) or a LinkedIn host
as its base and sets `allowsAutomatedAccess: true` is **rejected** — the pipeline
refuses to run it.
3. `enabled` + `allowsAutomatedAccess` together are what turn a reviewed policy into an
automated one. Until a human reviews the source and sets those, the source is
available only as a **one-click manual-review / manual-upload link** — no automation.
4. Access methods (§10): `official_api`, `official_bulk_download`, `rss_or_sitemap`,
`first_party_public_web`, `authorized_mailbox`, `manual_upload`, `manual_review_only`.
## RENTV-owned / authorized sources
These are first-party or authorized and may be enabled for permitted automated or
mailbox access after review.
| Source key | Display name | Access method | Automated? | Notes |
|------------|--------------|---------------|-----------|-------|
| `rentv_com` | RENTV public pages (rentv.com) | `first_party_public_web` | after review | conservative rate limit |
| `rentvreview_com` | RENTV Review public pages | `first_party_public_web` | after review | |
| `rentv_conferences` | RENTV conference pages | `first_party_public_web` | after review | sponsor/exhibitor grids |
| `rentv_cre_talk` | RENTV CRE Talk pages | `first_party_public_web` | after review | |
| `rentv_newsletters` | RENTV newsletters / browser-view archives | `manual_upload` | no | uploaded `.eml` / HTML |
| `rentv_constant_contact` | RENTV Constant Contact exports | `manual_upload` | no | CSV campaign reports |
| `rentv_gmail` | RENTV Gmail (authorized) | `authorized_mailbox` | admin-only, off by default | least-privilege OAuth |
| `rentv_sales_csv` | RENTV sales records (approved CSV) | `manual_upload` | no | |
| `rentv_flyers` | Property Spotlight + Corp flyer assets | `manual_upload` | no | `AUTHORIZED_RENTV_ASSET` |
## External sources — manual-review-only until reviewed
Publications, associations, and conference ecosystems (§9) are seeded as
**`manual_review_only`** or `first_party_public_web` (disabled) records. None permits
automation until its current official page is validated, robots/terms checked, and a
policy reviewer flips `enabled` + `allowsAutomatedAccess`. Representative entries:
| Source key | Display name | Access method | Automated? |
|------------|--------------|---------------|-----------|
| `labj` | Los Angeles Business Journal | `manual_review_only` | no (validate first) |
| `ocbj` | Orange County Business Journal | `manual_review_only` | no |
| `sdbj` | San Diego Business Journal | `manual_review_only` | no |
| `bisnow` | Bisnow market/event pages | `manual_review_only` | no |
| `connect_cre` | Connect CRE | `manual_review_only` | no |
| `naiop_socal` | NAIOP SoCal / IE / SD / NorCal | `first_party_public_web` (disabled) | after review |
| `uli_la` | ULI Los Angeles / OC-IE / SD / SF / Sac | `first_party_public_web` (disabled) | after review |
| `boma_gla` | BOMA GLA / OC / SD / SF / Oakland / Sac | `first_party_public_web` (disabled) | after review |
| `pbj` | Phoenix Business Journal | `manual_review_only` | no |
| `azre` | AZ Big Media / AZRE | `manual_review_only` | no |
| `naiop_az` | NAIOP Arizona | `first_party_public_web` (disabled) | after review |
| `icsc` | ICSC Las Vegas / regional | `first_party_public_web` (disabled) | after review |
## Prohibited-for-automation hosts (hard block)
These may exist only as `manual_review_only` records (store the company, search URL,
review date, analyst notes) — never automated:
- CoStar, LoopNet, ZoomInfo, Apollo, Crexi, Reonomy (proprietary login-gated DBs)
- Any MLS system (matched by pattern)
- LinkedIn (`linkedin.com`, `www.linkedin.com`, `m.linkedin.com`, `lnkd.in`)
## Ad-transparency surfaces — manual-review deep links
Google Ads Transparency Center, Meta Ad Library, and any currently-public LinkedIn ad
library are represented as **human-review deep links** only. A manual-review record can
store the company, the search URL, the review date, and analyst notes — but the app does
not scrape these products.