44 documents
Operations & Runbooks⏱️9 min read

Product Launch & Scaling Implementation Audit

**Client / tenant:** `jsglobtech` (dogfood tenant zero)

Product Launch & Scaling Implementation Audit

Client / tenant: jsglobtech (dogfood tenant zero)
Goal: High GEO visibility, AI-platform indexation, and multi-tenant lead capture readiness for live client demos
Status date: 2026-08-05
Owner: JSGlobtech
Related: [../sales/demo-mvp-scope.md](/knowledge/../sales/demo-mvp-scope) (required MVP for client pitches), [../sales/demo-framework.md](/knowledge/../sales/demo-framework), [../sales/tenant-demo-checklist.md](/knowledge/../sales/tenant-demo-checklist), [../architecture/geo-mcp-gap-analysis.md](/knowledge/../architecture/geo-mcp-gap-analysis)

Master tracker for demo readiness.
MVP scope of record: ../sales/demo-mvp-scope.md — ChatGPT citation + Custom GPT → Sheet. Directories / sameAs are deferred.
Agent-completed = done in the repo (or verified live by script).
Owner action required = manual account / Vercel / Sheet / directory work — the agent cannot finish these.
Do not put secrets here. Do not mark Owner items [x] until you finish them.

Status legend

Mark Meaning
[ ] Not started / blocked on Owner
[~] Partial — code exists but live enablement or Owner step still open
[x] Done (repo evidence and/or live verify)
Blocker Must be green before pitching the full GEO + lead-engine story

Progress snapshot (2026-08-05)

Bucket Done Partial / open Demo priority
Agent completed (repo / automated) GEO surfaces + lead API + IndexNow live + Postman + templates pointer — —
Owner action required IndexNow key + ping done GSC, directories, Sheet/webhook, Custom GPT, sameAs URLs, day-of rehearsal High — Blockers

Demo-ready verdict: IndexNow is live on Production. A reliable pitch still needs Owner to wire Production Sheet webhook, Custom GPT, and day-of probes. GSC / directories strengthen citations over time.


Agent completed (repo / automated)

Flipped [x] with evidence paths. Status date: 2026-08-04.

GEO & crawler surfaces

  • AI crawler allow rules — app/robots.ts grants GPTBot, OAI-SearchBot, PerplexityBot, ClaudeBot, Google-Extended (plus Allow: /); sitemap URL set (2026-08-04)
  • Sitemap route — app/sitemap.ts → live /sitemap.xml
  • /llms.txt + /.well-known/llms.txt — public/llms.txt and public/.well-known/llms.txt are byte-identical; include Agentic AI Integrations and MCP Servers labels (verified with diff, 2026-08-04)
  • Structured offerings labels — exact strings in lib/content.ts (capabilities / pillars), components/GeoSchema.tsx (serviceType + offers), and both llms.txt files (2026-08-04)
  • Organization + LocalBusiness + ProfessionalService JSON-LD — components/GeoSchema.tsx emits Organization, LocalBusiness, and ProfessionalService with Dubai/UAE address + geo (2026-08-04; LocalBusiness was already present — checklist status corrected)
  • SSR marketing + JSON-LD — App Router pages; schema in layout via GeoSchema
  • sameAs scaffolding — optional linkedin / googleBusiness / clutch slots on siteConfig.social in lib/content.ts; GeoSchema filters empty values and keeps GitHub. URLs still empty until Owner pastes them.

Lead engine (code)

  • Zod validation — lib/leads.ts consultationLeadSchema
  • Multi-tenant webhook routing — CLIENT_WEBHOOK_MAP → CLIENT_WEBHOOK_<CLIENT_ID> → CRM_WEBHOOK_URL
  • Apps Script template — canonical scripts/google-apps-script/Code.gs + SETUP.md; brief headers (Timestamp, Client ID, Name, Phone, Email, Service Requested, Source, …)
  • Templates pointer — knowledge/templates/README.md points at the scripts path (no duplicate script body)
  • Backup curl — documented in ../sales/tenant-demo-checklist.md and below
  • Postman collection — docs/postman/jsglobtech-leads.postman_collection.json mirrors the demo curl (§4.3)
  • Site deployed with OpenAPI + llms.txt — live paths prefer www (apex → www 308)

IndexNow (live on Production — 2026-08-05)

  • Helper — lib/indexnow.ts submits URL lists to the IndexNow API
  • Protected ping route — POST /api/indexnow (app/api/indexnow/route.ts); requires INDEXNOW_KEY plus X-IndexNow-Secret / Bearer matching INDEXNOW_SUBMIT_SECRET or CRON_SECRET
  • Key file route — app/[indexNowKey]/route.ts serves https://host/<INDEXNOW_KEY>.txt from env
  • Static key backup — public/<key>.txt also present (IndexNow keys are meant to be public)
  • Env docs — .env.example documents Owner wiring steps
  • Live IndexNow — Production INDEXNOW_KEY + INDEXNOW_SUBMIT_SECRET set; key URL returns 200; POST /api/indexnow returned "ok": true / IndexNow HTTP 202 (2026-08-05)

Live surface verify (script)

  • Verify script — scripts/verify-live-surfaces.sh (+ npm verify:live)
  • Live check run 2026-08-04 — all five www surfaces returned HTTP 200:
Live URL Result (2026-08-04)
https://www.jsglobtech.com/llms.txt OK 200
https://www.jsglobtech.com/.well-known/llms.txt OK 200
https://www.jsglobtech.com/docs/openapi.json OK 200
https://www.jsglobtech.com/sitemap.xml OK 200
https://www.jsglobtech.com/robots.txt OK 200

(Live llms.txt body updates after the next Production deploy of this branch’s label/content changes.)

Dogfood tenant: client_id: "jsglobtech" (or X-Client-ID: jsglobtech). Prior live lead probe: 2026-07-31 on www — see ../sales/tenant-demo-checklist.md.

Demo curl / Postman fallback

curl -sS -X POST https://www.jsglobtech.com/api/leads/submit \
  -H "Content-Type: application/json" \
  -H "X-Client-ID: jsglobtech" \
  -d '{
    "client_id": "jsglobtech",
    "client_name": "Demo Client — YYYY-MM-DD",
    "client_email_or_phone": "demo@example.com",
    "project_type": "geo_ai_integration",
    "budget_range_usd": "Not sure yet",
    "requirements_notes": "Live client demo — delete this row"
  }'

Import the same request from docs/postman/jsglobtech-leads.postman_collection.json. Expect "ok": true, "client_id": "jsglobtech", "lead_id": "jsg-…", then refresh the Sheet.


Owner action required (manual / blockers)

Everything below needs your accounts, Vercel Production settings, or day-of demo discipline. The agent does not claim these done.

Bing Webmaster Tools & IndexNow

  • Register jsglobtech.com in Bing Webmaster Tools (Owner — key issued 2026-08-05)
  • Submit sitemap: https://www.jsglobtech.com/sitemap.xml (or apex equivalent; site redirects apex → www)
  • Create IndexNow key → INDEXNOW_KEY in Vercel → Production (2026-08-05)
  • INDEXNOW_SUBMIT_SECRET set in Vercel Production (2026-08-05)
  • Key URL live — /<key>.txt returns the key as plain text (verified 2026-08-05)
  • Ping succeeded — POST /api/indexnow → "ok": true, IndexNow status 202 (2026-08-05)

Optional later: ping again after big content deploys with the same curl (secret stays only in Vercel — do not commit it).

Google Search Console

  • Verify domain ownership (DNS or HTML method in GSC)
  • Submit /sitemap.xml and spot-check core pages are indexed

Directories & brand consistency

Create / claim complete company profiles (same brand facts as lib/content.ts + llms.txt):

Platform Status Notes
Clutch.co [ ] Complete company profile
G2 [ ] Complete company profile
Crunchbase [ ] Complete company profile
GoodFirms [ ] Complete company profile
Google Business Profile (Dubai) [ ] Claim + optimize for Dubai Marina / Dubai

Then:

  • Brand name "JSGlobtech" identical everywhere
  • Address / service area matches site (Dubai Marina, Dubai, UAE)
  • Services list includes Flutter, web/Next.js, Agentic AI Integrations, MCP Servers, GEO
  • Prefer documenting https://jsglobtech.com with apex → www (308)

Citation footprint (content)

  • Publish technical articles / case studies (Medium, LinkedIn, or guest blogs)
  • Target queries such as “Custom Flutter App Development Dubai”, “Agentic AI Integration Agency UAE”

sameAs URLs (paste into repo when ready)

When profiles exist, paste real URLs into lib/content.ts → siteConfig.social:

  • linkedin
  • googleBusiness
  • clutch

Empty strings are ignored by GeoSchema today (GitHub only until you fill these in).

Google Sheet + Apps Script + Vercel webhook (demo blocker)

  • Create the demo Google Sheet
  • Paste scripts/google-apps-script/Code.gs into Apps Script; follow scripts/google-apps-script/SETUP.md
  • Deploy as Web App; set Script Property WEBHOOK_SECRET
  • Set Production Vercel env: CRM_WEBHOOK_URL (+ CRM_WEBHOOK_SECRET); optional CLIENT_WEBHOOK_JSGLOBTECH
  • Redeploy / confirm Production (not only .env.local) delivers rows to the Sheet

Pointer: knowledge/templates/README.md → scripts path.

Custom GPT / ChatGPT Action (demo blocker)

  • Create / update Custom GPT; import OpenAPI from https://www.jsglobtech.com/docs/openapi.json
  • Authorize POST /api/leads/submit for tenant jsglobtech
  • Test once before each demo week (lead appears in Sheet)

Day-of demo discipline (demo blockers)

  • Sheet open; naming convention Demo Client — YYYY-MM-DD
  • One Production webhook probe → new Sheet row (not JSON-only)
  • Citation query rehearsed (ChatGPT or Perplexity); screenshot fallback ready
  • Curl and/or Postman collection ready mid-call

Detail: ../sales/tenant-demo-checklist.md §§ B–D.


Pre-demo gate (must be green)

Scope of record for what “demo ready” means: ../sales/demo-mvp-scope.md.

Use this the morning of a client call. Honest statuses — Owner items stay [ ] until you finish them:

# Check Status
1 Production CRM_WEBHOOK_URL (or CLIENT_WEBHOOK_JSGLOBTECH) delivers to the demo Sheet [ ]
2 Probe lead with client_id=jsglobtech appears as a new Sheet row [ ]
3 Custom GPT / MCP host connected and tested once [ ]
4 Citation query rehearsed; screenshot fallback ready [ ]
5 Curl / Postman fallback ready [ ] (collection exists in repo; you still need it open day-of)
6 llms.txt + OpenAPI URLs open cleanly on www [~] (script verifies live; confirm again day-of)

Items 1–5 are demo blockers. Directory / Bing / GSC work can trail if citation rehearsal succeeds.


Implementation backlog (remaining)

Repo engineering items from the prior audit are largely done. What is left:

  1. Owner: Production webhook + Sheet — tenant-demo checklist §§ A–B.
  2. Owner: Custom GPT Action — import OpenAPI; demo prompt in GPT instructions.
  3. Owner: GSC — verify domain, submit sitemap. Bing sitemap submit still open.
  4. Owner: Paste real sameAs profile URLs into lib/content.ts when directories exist.
  5. Do not claim GSC verification or directory presence until Owner boxes above are checked. IndexNow is live.

Longer-term GEO product gaps (citation reports, monitoring, auth): ../architecture/geo-mcp-gap-analysis.md — out of scope for “demo works.”


Change log for this tracker

Date Change
2026-08-05 Added ../sales/demo-mvp-scope.md as required client-demo MVP (citation + Custom GPT → Sheet; directories deferred)
2026-08-05 IndexNow live on Production (Vercel env + key URL + successful ping); static key file under public/; PR #29 merged; Owner Bing IndexNow steps marked done
2026-08-04 Bifurcated Agent-completed vs Owner-manual; service labels (Agentic AI Integrations / MCP Servers); LocalBusiness marked done; Apps Script brief headers acknowledged; templates README; Postman collection; IndexNow code scaffold (not live-enabled); live verify script; stale robots/IndexNow backlog cleaned
2026-08-04 §1.3 complete — OAI-SearchBot + Google-Extended in app/robots.ts
2026-08-01 Checklist ingested into KB; statuses seeded from repo audit + prior live lead probe (2026-07-31)

When you complete an Owner item: flip [ ] → [x], add the date in Notes, and optionally note it under Change log.