gbp-snapshot-intake v1.2 — surface, datetime, NOT_PRESENT/NOT_OBSERVED, PLACE_ID compute, category split

This commit is contained in:
Ty
2026-08-03 19:07:52 +00:00
parent 5bcd86eb8f
commit b8d35127c5
+41 -29
View File
@@ -1,4 +1,4 @@
# GBP Snapshot Intake v1.1 # GBP Snapshot Intake v1.2
**Purpose:** Capture raw Google Business Profile / Maps observations with zero analysis. **Purpose:** Capture raw Google Business Profile / Maps observations with zero analysis.
@@ -6,60 +6,72 @@
**Who consumes this:** Leonard / agents — map fields into Data Inventory only. Do not invent. **Who consumes this:** Leonard / agents — map fields into Data Inventory only. Do not invent.
**Status values to use:** Observed / Not observed / Unknown (or the specific options listed below) **Status vocabulary (required):**
- `NOT_PRESENT` — looked; confirmed absent (evidence of absence)
- `NOT_OBSERVED` — did not look or could not see (absence of evidence)
- `Unknown` — only when signal is ambiguous after looking
- Observed values: Yes / No / concrete text / numbers
Do **not** use “Not visible” as a synonym; map to NOT_PRESENT or NOT_OBSERVED.
--- ---
## Snapshot Metadata ## Snapshot Metadata (required)
- **Client name:** - **Client name:**
- **Snapshot date (YYYY-MM-DD):** - **Snapshot datetime (ISO 8601 + timezone):** e.g. `2026-08-03T14:30:00-07:00`
- **Source:** Human eye on Maps / Places API / Owner dashboard - **Source:** Human eye on Maps / Places API / Owner dashboard
- **Observation surface:** desktop_maps / mobile_maps / knowledge_panel / other
- **Maps or Place URL:** - **Maps or Place URL:**
- **Place ID (if known):** - **Place ID:** (if known; else leave blank — agent **computes from URL** when possible)
## Core Fields ## Core Fields
- **Business name shown:** - **Business name shown:**
- **Address shown:** - **Address shown (exact string):**
- **Phone shown:** - **Address canonical (optional normalize):** Suite not #; full street type
- **Phone shown (full digits only; no masking):**
- **Website shown:** - **Website shown:**
- **Primary category:** - **Primary category (ONE canonical GBP category only):**
- **Additional categories:** - **Additional categories (list; separate from primary):**
## Reputation ## Reputation
- **Star rating:** - **Star rating:**
- **Review count:** - **Review count:**
- **Review responses observed:** Yes / No / Unknown - **Review responses observed:** Yes / No / NOT_OBSERVED
- **Approx how many responses / how recent (optional):** - **If Yes — how many of N have owner replies:**
- **If Yes — most recent owner response age/date (approx):**
## Ownership / Claim Signals ## Ownership / Claim Signals
- **“Own this business?” prompt visible:** Yes / No / Unknown - **“Own this business?” prompt visible:** Yes / No / NOT_OBSERVED
- **Claimed status (your best judgment):** Yes / No / Unknown - **Claimed status (observed or inferred):** Claimed / Unclaimed / Likely Claimed — inferred / Unknown
- **Verified badge or equivalent observed:** Yes / No / Unknown - **If inferred — list signals used:**
- **Verified badge observed:** Yes / No / NOT_OBSERVED
## Operations ## Operations
- **Hours listed:** Yes / No - **Hours listed:** Yes / No
- **Hours text (paste if short):** - **Hours text:**
- **Open now indicator observed:** Yes / No / Unknown - **Open now indicator:** Yes / No / NOT_OBSERVED (only valid with snapshot datetime+TZ)
## Conversion ## Conversion (complete the whole action-button row if any button is observed)
- **Booking button present on the GBP (not the website):** Yes / No / Unknown - **Booking button present on the GBP (not the website):** Yes / No / NOT_OBSERVED
- **Booking button label (if any):** - **Booking button label (if any):**
- **Messaging button present:** Yes / No / Unknown - **Messaging button present:** Yes / No / NOT_OBSERVED
- **Other action buttons observed:** - **Other action buttons observed:**
## Content Surface ## Content Surface
- **Photos present:** Yes / No - **Photos present:** Yes / No
- **Approx photo count:** - **Approx photo count:**
- **Services listed:** - **Services listed (exact labels):**
- **Updates / Posts status:** Present with content / Present but empty / Not visible - **Posts section present:** Yes / No / NOT_OBSERVED
- **Post count (0 if empty section):**
- **Most recent post date (approx, optional):** - **Most recent post date (approx, optional):**
- **Q&A status:** Visible + has answers / Visible but empty / Not visible - **Q&A status:** answers present / empty / NOT_PRESENT / NOT_OBSERVED
- **Attributes / highlights visible (optional):** - **Attributes / highlights visible (optional):**
## Related Listings ## Related Listings
- **Second related listing nearby:** Yes / No / Unknown - **Second related listing nearby:** Yes / No / Unknown
- **Related listing name(s):** - **Related listing name(s):**
- **Related listing notes (factual only):** - **Related listing notes (factual only):**
- **Secondary feature IDs from MAPS_URL (if parsed):**
## Raw notes (optional, factual only) ## Raw notes (optional, factual only)
- -
@@ -69,10 +81,10 @@
## Agent mapping rules (do not reason beyond this) ## Agent mapping rules (do not reason beyond this)
1. Copy each filled field into the **GBP row** of the client Data Inventory. 1. Copy each filled field into the **GBP row** of the client Data Inventory.
2. If a field is blank, write `Not observed`. 2. Blank → `NOT_OBSERVED` (not “Unknown” unless truly ambiguous after looking).
3. Set **Verification Tier** to: 3. If MAPS_URL present and PLACE_ID blank → **compute** place/feature IDs from URL; never leave PLACE_ID blank when derivable.
- `Tier 1` only if Source = Owner dashboard or owner-confirmed export 4. PRIMARY_CATEGORY must be a single value; if intake has multiple tokens → mark **INVALID_CAPTURE** and do not invent a primary.
- otherwise `Tier 2` 5. Verification Tier: Tier 1 only if Source = Owner dashboard or owner-confirmed; else Tier 2.
4. Set **Snapshot Date** to the intake Snapshot date. 6. Snapshot Date/time from intake datetime.
5. Do not create new threats unless a Threat Trigger Rule fires (see execution card). 7. Do not create threats unless a Threat Trigger Rule fires (execution card).
6. Do not add severity, recommendations, or competitor comparisons. 8. Do not add severity upgrades, recommendations, or competitor claims.