Upgrade GBP snapshot form to v1.1 — Services, Posts status, Claim prompt, Messaging button, refined Q&A and ownership fields for full consistency with intake template and execution card

This commit is contained in:
Ty
2026-08-03 17:51:29 +00:00
parent 628bcc2724
commit e121e79d03
+64 -25
View File
@@ -3,7 +3,7 @@
<head> <head>
<meta charset="UTF-8" /> <meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" /> <meta name="viewport" content="width=device-width, initial-scale=1" />
<title>DOP — GBP Snapshot Intake</title> <title>DOP — GBP Snapshot Intake v1.1</title>
<style> <style>
:root { :root {
--bg: #0f1419; --bg: #0f1419;
@@ -141,8 +141,8 @@
</head> </head>
<body> <body>
<div class="wrap"> <div class="wrap">
<h1>DOP — GBP Snapshot Intake</h1> <h1>DOP — GBP Snapshot Intake v1.1</h1>
<p class="sub">General-purpose cold audit form. Fill once per client. Generate text → copy/paste to Leonard. Uses execution card rules only.</p> <p class="sub">Improved cold-audit form. Fill once per client Generate paste to Leonard. Follows execution card rules only.</p>
<form id="gbpForm" autocomplete="off"> <form id="gbpForm" autocomplete="off">
<div class="card"> <div class="card">
@@ -196,7 +196,7 @@
</div> </div>
<div> <div>
<label for="primary_category">Primary category</label> <label for="primary_category">Primary category</label>
<input id="primary_category" type="text" /> <input id="primary_category" type="text" placeholder="Copy exactly as shown" />
</div> </div>
<div> <div>
<label for="additional_categories">Additional categories</label> <label for="additional_categories">Additional categories</label>
@@ -217,13 +217,17 @@
<input id="review_count" type="text" placeholder="e.g. 42" /> <input id="review_count" type="text" placeholder="e.g. 42" />
</div> </div>
<div> <div>
<label for="review_responses">Review response behavior observed</label> <label for="review_responses">Review responses observed</label>
<select id="review_responses"> <select id="review_responses">
<option value="Unknown">Unknown</option> <option value="Unknown">Unknown</option>
<option value="Yes">Yes</option> <option value="Yes">Yes</option>
<option value="No">No</option> <option value="No">No</option>
</select> </select>
</div> </div>
<div>
<label for="review_responses_detail">Approx how many / how recent (optional)</label>
<input id="review_responses_detail" type="text" />
</div>
</div> </div>
</div> </div>
@@ -231,7 +235,15 @@
<h2>Ownership / Claim Signals</h2> <h2>Ownership / Claim Signals</h2>
<div class="grid"> <div class="grid">
<div> <div>
<label for="claimed">Claimed or “Own this business visible</label> <label for="claim_prompt">“Own this business?” prompt visible</label>
<select id="claim_prompt">
<option value="Unknown">Unknown</option>
<option value="Yes">Yes</option>
<option value="No">No</option>
</select>
</div>
<div>
<label for="claimed">Claimed status (your best judgment)</label>
<select id="claimed"> <select id="claimed">
<option value="Unknown">Unknown</option> <option value="Unknown">Unknown</option>
<option value="Yes">Yes</option> <option value="Yes">Yes</option>
@@ -278,7 +290,7 @@
<h2>Conversion</h2> <h2>Conversion</h2>
<div class="grid"> <div class="grid">
<div> <div>
<label for="booking_button">Booking / appointment button present</label> <label for="booking_button">Booking button present <strong>on the GBP</strong> (not the website)</label>
<select id="booking_button"> <select id="booking_button">
<option value="Unknown">Unknown</option> <option value="Unknown">Unknown</option>
<option value="Yes">Yes</option> <option value="Yes">Yes</option>
@@ -289,6 +301,14 @@
<label for="booking_label">Booking button label (if any)</label> <label for="booking_label">Booking button label (if any)</label>
<input id="booking_label" type="text" /> <input id="booking_label" type="text" />
</div> </div>
<div>
<label for="messaging_button">Messaging button present</label>
<select id="messaging_button">
<option value="Unknown">Unknown</option>
<option value="Yes">Yes</option>
<option value="No">No</option>
</select>
</div>
<div class="full"> <div class="full">
<label for="other_buttons">Other action buttons observed</label> <label for="other_buttons">Other action buttons observed</label>
<input id="other_buttons" type="text" /> <input id="other_buttons" type="text" />
@@ -310,22 +330,34 @@
<label for="photo_count">Approx photo count</label> <label for="photo_count">Approx photo count</label>
<input id="photo_count" type="text" /> <input id="photo_count" type="text" />
</div> </div>
<div class="full">
<label for="services">Services listed</label>
<input id="services" type="text" placeholder="e.g. strength training only" />
</div>
<div> <div>
<label for="posts_visible">Posts visible</label> <label for="posts_status">Updates / Posts status</label>
<select id="posts_visible"> <select id="posts_status">
<option value="Unknown">Unknown</option> <option value="Not visible">Not visible</option>
<option value="Yes">Yes</option> <option value="Present but empty">Present but empty</option>
<option value="No">No</option> <option value="Present with content">Present with content</option>
</select> </select>
</div> </div>
<div> <div>
<label for="qa_visible">Q&A visible</label> <label for="recent_post">Most recent post date (approx, optional)</label>
<select id="qa_visible"> <input id="recent_post" type="text" />
<option value="Unknown">Unknown</option> </div>
<option value="Yes">Yes</option> <div>
<option value="No">No</option> <label for="qa_status">Q&A status</label>
<select id="qa_status">
<option value="Not visible">Not visible</option>
<option value="Visible but empty">Visible but empty</option>
<option value="Visible + has answers">Visible + has answers</option>
</select> </select>
</div> </div>
<div class="full">
<label for="attributes">Attributes / highlights visible (optional)</label>
<input id="attributes" type="text" placeholder="e.g. women-owned, LGBTQ-friendly" />
</div>
</div> </div>
</div> </div>
@@ -389,13 +421,12 @@
function buildOutput() { function buildOutput() {
return `Follow docs/agents/leonard-gbp-execution-card.md exactly. return `Follow docs/agents/leonard-gbp-execution-card.md exactly.
Map this intake into the client Data Inventory GMB row. Map this intake into the client Data Inventory GBP row.
Apply only threat trigger rules R1R3. Apply only threat trigger rules R1R3.
Do not invent fields. Do not add solutions. Do not reason beyond the execution card. Do not invent fields. Do not add solutions. Do not reason beyond the execution card.
Return: updated GMB section, any threat changes, Changes Made list, Rules Fired list. Return: updated GBP section, any threat changes, Changes Made list, Rules Fired list.
--- GBP SNAPSHOT INTAKE --- --- GBP SNAPSHOT INTAKE ---
CLIENT: ${val("client")} CLIENT: ${val("client")}
SNAPSHOT_DATE: ${val("snapshot_date")} SNAPSHOT_DATE: ${val("snapshot_date")}
SOURCE: ${val("source")} SOURCE: ${val("source")}
@@ -412,22 +443,28 @@ ADDITIONAL_CATEGORIES: ${val("additional_categories")}
STAR_RATING: ${val("star_rating")} STAR_RATING: ${val("star_rating")}
REVIEW_COUNT: ${val("review_count")} REVIEW_COUNT: ${val("review_count")}
REVIEW_RESPONSES_OBSERVED: ${val("review_responses")} REVIEW_RESPONSES_OBSERVED: ${val("review_responses")}
REVIEW_RESPONSES_DETAIL: ${val("review_responses_detail")}
CLAIMED_VISIBLE: ${val("claimed")} CLAIM_PROMPT_VISIBLE: ${val("claim_prompt")}
CLAIMED_STATUS: ${val("claimed")}
VERIFIED_BADGE_VISIBLE: ${val("verified")} VERIFIED_BADGE_VISIBLE: ${val("verified")}
HOURS_LISTED: ${val("hours_listed")} HOURS_LISTED: ${val("hours_listed")}
HOURS_TEXT: ${val("hours_text")} HOURS_TEXT: ${val("hours_text")}
OPEN_NOW_OBSERVED: ${val("open_now")} OPEN_NOW_OBSERVED: ${val("open_now")}
BOOKING_BUTTON_PRESENT: ${val("booking_button")} BOOKING_BUTTON_PRESENT_ON_GBP: ${val("booking_button")}
BOOKING_BUTTON_LABEL: ${val("booking_label")} BOOKING_BUTTON_LABEL: ${val("booking_label")}
MESSAGING_BUTTON_PRESENT: ${val("messaging_button")}
OTHER_ACTION_BUTTONS: ${val("other_buttons")} OTHER_ACTION_BUTTONS: ${val("other_buttons")}
PHOTOS_PRESENT: ${val("photos_present")} PHOTOS_PRESENT: ${val("photos_present")}
PHOTO_COUNT_APPROX: ${val("photo_count")} PHOTO_COUNT_APPROX: ${val("photo_count")}
POSTS_VISIBLE: ${val("posts_visible")} SERVICES_LISTED: ${val("services")}
QA_VISIBLE: ${val("qa_visible")} UPDATES_POSTS_STATUS: ${val("posts_status")}
MOST_RECENT_POST_DATE: ${val("recent_post")}
QA_STATUS: ${val("qa_status")}
ATTRIBUTES_HIGHLIGHTS: ${val("attributes")}
SECOND_LISTING_NEARBY: ${val("second_listing")} SECOND_LISTING_NEARBY: ${val("second_listing")}
SECOND_LISTING_NAMES: ${val("second_listing_names")} SECOND_LISTING_NAMES: ${val("second_listing_names")}
@@ -439,7 +476,9 @@ RAW_NOTES: ${val("raw_notes")}
function setStatus(msg) { function setStatus(msg) {
$("status").textContent = msg; $("status").textContent = msg;
if (msg) setTimeout(() => { if ($("status").textContent === msg) $("status").textContent = ""; }, 2500); if (msg) setTimeout(() => {
if ($("status").textContent === msg) $("status").textContent = "";
}, 2500);
} }
$("btnGenerate").addEventListener("click", () => { $("btnGenerate").addEventListener("click", () => {