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:
@@ -3,7 +3,7 @@
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<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>
|
||||
:root {
|
||||
--bg: #0f1419;
|
||||
@@ -141,8 +141,8 @@
|
||||
</head>
|
||||
<body>
|
||||
<div class="wrap">
|
||||
<h1>DOP — GBP Snapshot Intake</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>
|
||||
<h1>DOP — GBP Snapshot Intake v1.1</h1>
|
||||
<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">
|
||||
<div class="card">
|
||||
@@ -196,7 +196,7 @@
|
||||
</div>
|
||||
<div>
|
||||
<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>
|
||||
<label for="additional_categories">Additional categories</label>
|
||||
@@ -217,13 +217,17 @@
|
||||
<input id="review_count" type="text" placeholder="e.g. 42" />
|
||||
</div>
|
||||
<div>
|
||||
<label for="review_responses">Review response behavior observed</label>
|
||||
<label for="review_responses">Review responses observed</label>
|
||||
<select id="review_responses">
|
||||
<option value="Unknown">Unknown</option>
|
||||
<option value="Yes">Yes</option>
|
||||
<option value="No">No</option>
|
||||
</select>
|
||||
</div>
|
||||
<div>
|
||||
<label for="review_responses_detail">Approx how many / how recent (optional)</label>
|
||||
<input id="review_responses_detail" type="text" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -231,7 +235,15 @@
|
||||
<h2>Ownership / Claim Signals</h2>
|
||||
<div class="grid">
|
||||
<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">
|
||||
<option value="Unknown">Unknown</option>
|
||||
<option value="Yes">Yes</option>
|
||||
@@ -278,7 +290,7 @@
|
||||
<h2>Conversion</h2>
|
||||
<div class="grid">
|
||||
<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">
|
||||
<option value="Unknown">Unknown</option>
|
||||
<option value="Yes">Yes</option>
|
||||
@@ -289,6 +301,14 @@
|
||||
<label for="booking_label">Booking button label (if any)</label>
|
||||
<input id="booking_label" type="text" />
|
||||
</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">
|
||||
<label for="other_buttons">Other action buttons observed</label>
|
||||
<input id="other_buttons" type="text" />
|
||||
@@ -310,22 +330,34 @@
|
||||
<label for="photo_count">Approx photo count</label>
|
||||
<input id="photo_count" type="text" />
|
||||
</div>
|
||||
<div class="full">
|
||||
<label for="services">Services listed</label>
|
||||
<input id="services" type="text" placeholder="e.g. strength training only" />
|
||||
</div>
|
||||
<div>
|
||||
<label for="posts_visible">Posts visible</label>
|
||||
<select id="posts_visible">
|
||||
<option value="Unknown">Unknown</option>
|
||||
<option value="Yes">Yes</option>
|
||||
<option value="No">No</option>
|
||||
<label for="posts_status">Updates / Posts status</label>
|
||||
<select id="posts_status">
|
||||
<option value="Not visible">Not visible</option>
|
||||
<option value="Present but empty">Present but empty</option>
|
||||
<option value="Present with content">Present with content</option>
|
||||
</select>
|
||||
</div>
|
||||
<div>
|
||||
<label for="qa_visible">Q&A visible</label>
|
||||
<select id="qa_visible">
|
||||
<option value="Unknown">Unknown</option>
|
||||
<option value="Yes">Yes</option>
|
||||
<option value="No">No</option>
|
||||
<label for="recent_post">Most recent post date (approx, optional)</label>
|
||||
<input id="recent_post" type="text" />
|
||||
</div>
|
||||
<div>
|
||||
<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>
|
||||
</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>
|
||||
|
||||
@@ -389,13 +421,12 @@
|
||||
|
||||
function buildOutput() {
|
||||
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 R1–R3.
|
||||
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 ---
|
||||
|
||||
CLIENT: ${val("client")}
|
||||
SNAPSHOT_DATE: ${val("snapshot_date")}
|
||||
SOURCE: ${val("source")}
|
||||
@@ -412,22 +443,28 @@ ADDITIONAL_CATEGORIES: ${val("additional_categories")}
|
||||
STAR_RATING: ${val("star_rating")}
|
||||
REVIEW_COUNT: ${val("review_count")}
|
||||
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")}
|
||||
|
||||
HOURS_LISTED: ${val("hours_listed")}
|
||||
HOURS_TEXT: ${val("hours_text")}
|
||||
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")}
|
||||
MESSAGING_BUTTON_PRESENT: ${val("messaging_button")}
|
||||
OTHER_ACTION_BUTTONS: ${val("other_buttons")}
|
||||
|
||||
PHOTOS_PRESENT: ${val("photos_present")}
|
||||
PHOTO_COUNT_APPROX: ${val("photo_count")}
|
||||
POSTS_VISIBLE: ${val("posts_visible")}
|
||||
QA_VISIBLE: ${val("qa_visible")}
|
||||
SERVICES_LISTED: ${val("services")}
|
||||
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_NAMES: ${val("second_listing_names")}
|
||||
@@ -439,7 +476,9 @@ RAW_NOTES: ${val("raw_notes")}
|
||||
|
||||
function setStatus(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", () => {
|
||||
@@ -463,7 +502,7 @@ RAW_NOTES: ${val("raw_notes")}
|
||||
$("btnDownload").addEventListener("click", () => {
|
||||
const text = $("output").value || buildOutput();
|
||||
$("output").value = text;
|
||||
const client = ( $("client").value || "client" ).trim().replace(/[^\w\-]+/g, "_") || "client";
|
||||
const client = ($("client").value || "client").trim().replace(/[^\w\-]+/g, "_") || "client";
|
||||
const date = $("snapshot_date").value || todayISO();
|
||||
const blob = new Blob([text], { type: "text/plain;charset=utf-8" });
|
||||
const a = document.createElement("a");
|
||||
|
||||
Reference in New Issue
Block a user