From b8d35127c505684c695ae515336d89e1a7b8cf87 Mon Sep 17 00:00:00 2001 From: Ty Date: Mon, 3 Aug 2026 19:07:52 +0000 Subject: [PATCH] =?UTF-8?q?gbp-snapshot-intake=20v1.2=20=E2=80=94=20surfac?= =?UTF-8?q?e,=20datetime,=20NOT=5FPRESENT/NOT=5FOBSERVED,=20PLACE=5FID=20c?= =?UTF-8?q?ompute,=20category=20split?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/templates/gbp-snapshot-intake.md | 72 ++++++++++++++++----------- 1 file changed, 42 insertions(+), 30 deletions(-) diff --git a/docs/templates/gbp-snapshot-intake.md b/docs/templates/gbp-snapshot-intake.md index 3714c63..729f50d 100644 --- a/docs/templates/gbp-snapshot-intake.md +++ b/docs/templates/gbp-snapshot-intake.md @@ -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. @@ -6,73 +6,85 @@ **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:** -- **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 +- **Observation surface:** desktop_maps / mobile_maps / knowledge_panel / other - **Maps or Place URL:** -- **Place ID (if known):** +- **Place ID:** (if known; else leave blank — agent **computes from URL** when possible) ## Core Fields - **Business name shown:** -- **Address shown:** -- **Phone shown:** +- **Address shown (exact string):** +- **Address canonical (optional normalize):** Suite not #; full street type +- **Phone shown (full digits only; no masking):** - **Website shown:** -- **Primary category:** -- **Additional categories:** +- **Primary category (ONE canonical GBP category only):** +- **Additional categories (list; separate from primary):** ## Reputation - **Star rating:** - **Review count:** -- **Review responses observed:** Yes / No / Unknown -- **Approx how many responses / how recent (optional):** +- **Review responses observed:** Yes / No / NOT_OBSERVED +- **If Yes — how many of N have owner replies:** +- **If Yes — most recent owner response age/date (approx):** ## Ownership / Claim Signals -- **“Own this business?” prompt visible:** Yes / No / Unknown -- **Claimed status (your best judgment):** Yes / No / Unknown -- **Verified badge or equivalent observed:** Yes / No / Unknown +- **“Own this business?” prompt visible:** Yes / No / NOT_OBSERVED +- **Claimed status (observed or inferred):** Claimed / Unclaimed / Likely Claimed — inferred / Unknown +- **If inferred — list signals used:** +- **Verified badge observed:** Yes / No / NOT_OBSERVED ## Operations - **Hours listed:** Yes / No -- **Hours text (paste if short):** -- **Open now indicator observed:** Yes / No / Unknown +- **Hours text:** +- **Open now indicator:** Yes / No / NOT_OBSERVED (only valid with snapshot datetime+TZ) -## Conversion -- **Booking button present on the GBP (not the website):** Yes / No / Unknown +## Conversion (complete the whole action-button row if any button is observed) +- **Booking button present on the GBP (not the website):** Yes / No / NOT_OBSERVED - **Booking button label (if any):** -- **Messaging button present:** Yes / No / Unknown +- **Messaging button present:** Yes / No / NOT_OBSERVED - **Other action buttons observed:** ## Content Surface - **Photos present:** Yes / No - **Approx photo count:** -- **Services listed:** -- **Updates / Posts status:** Present with content / Present but empty / Not visible +- **Services listed (exact labels):** +- **Posts section present:** Yes / No / NOT_OBSERVED +- **Post count (0 if empty section):** - **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):** ## Related Listings - **Second related listing nearby:** Yes / No / Unknown - **Related listing name(s):** - **Related listing notes (factual only):** +- **Secondary feature IDs from MAPS_URL (if parsed):** ## Raw notes (optional, factual only) -- +- --- ## Agent mapping rules (do not reason beyond this) 1. Copy each filled field into the **GBP row** of the client Data Inventory. -2. If a field is blank, write `Not observed`. -3. Set **Verification Tier** to: - - `Tier 1` only if Source = Owner dashboard or owner-confirmed export - - otherwise `Tier 2` -4. Set **Snapshot Date** to the intake Snapshot date. -5. Do not create new threats unless a Threat Trigger Rule fires (see execution card). -6. Do not add severity, recommendations, or competitor comparisons. +2. Blank → `NOT_OBSERVED` (not “Unknown” unless truly ambiguous after looking). +3. If MAPS_URL present and PLACE_ID blank → **compute** place/feature IDs from URL; never leave PLACE_ID blank when derivable. +4. PRIMARY_CATEGORY must be a single value; if intake has multiple tokens → mark **INVALID_CAPTURE** and do not invent a primary. +5. Verification Tier: Tier 1 only if Source = Owner dashboard or owner-confirmed; else Tier 2. +6. Snapshot Date/time from intake datetime. +7. Do not create threats unless a Threat Trigger Rule fires (execution card). +8. Do not add severity upgrades, recommendations, or competitor claims.