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.tsgrantsGPTBot,OAI-SearchBot,PerplexityBot,ClaudeBot,Google-Extended(plusAllow: /); sitemap URL set (2026-08-04) - Sitemap route —
app/sitemap.ts→ live/sitemap.xml -
/llms.txt+/.well-known/llms.txt—public/llms.txtandpublic/.well-known/llms.txtare byte-identical; include Agentic AI Integrations and MCP Servers labels (verified withdiff, 2026-08-04) - Structured offerings labels — exact strings in
lib/content.ts(capabilities / pillars),components/GeoSchema.tsx(serviceType+ offers), and bothllms.txtfiles (2026-08-04) - Organization + LocalBusiness + ProfessionalService JSON-LD —
components/GeoSchema.tsxemitsOrganization,LocalBusiness, andProfessionalServicewith 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/clutchslots onsiteConfig.socialinlib/content.ts;GeoSchemafilters empty values and keeps GitHub. URLs still empty until Owner pastes them.
Lead engine (code)
- Zod validation —
lib/leads.tsconsultationLeadSchema - 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.mdpoints at the scripts path (no duplicate script body) - Backup curl — documented in
../sales/tenant-demo-checklist.mdand below - Postman collection —
docs/postman/jsglobtech-leads.postman_collection.jsonmirrors 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.tssubmits URL lists to the IndexNow API - Protected ping route —
POST /api/indexnow(app/api/indexnow/route.ts); requiresINDEXNOW_KEYplusX-IndexNow-Secret/ Bearer matchingINDEXNOW_SUBMIT_SECRETorCRON_SECRET - Key file route —
app/[indexNowKey]/route.tsserveshttps://host/<INDEXNOW_KEY>.txtfrom env - Static key backup —
public/<key>.txtalso present (IndexNow keys are meant to be public) - Env docs —
.env.exampledocuments Owner wiring steps - Live IndexNow — Production
INDEXNOW_KEY+INDEXNOW_SUBMIT_SECRETset; key URL returns 200;POST /api/indexnowreturned"ok": true/ IndexNow HTTP 202 (2026-08-05)
Live surface verify (script)
- Verify script —
scripts/verify-live-surfaces.sh(+ npmverify:live) - Live check run 2026-08-04 — all five
wwwsurfaces 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.comin 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_KEYin Vercel → Production (2026-08-05) -
INDEXNOW_SUBMIT_SECRETset in Vercel Production (2026-08-05) - Key URL live —
/<key>.txtreturns 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.xmland 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.comwith 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:
linkedingoogleBusinessclutch
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.gsinto Apps Script; followscripts/google-apps-script/SETUP.md - Deploy as Web App; set Script Property
WEBHOOK_SECRET - Set Production Vercel env:
CRM_WEBHOOK_URL(+CRM_WEBHOOK_SECRET); optionalCLIENT_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/submitfor tenantjsglobtech - 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:
- Owner: Production webhook + Sheet — tenant-demo checklist §§ A–B.
- Owner: Custom GPT Action — import OpenAPI; demo prompt in GPT instructions.
- Owner: GSC — verify domain, submit sitemap. Bing sitemap submit still open.
- Owner: Paste real
sameAsprofile URLs intolib/content.tswhen directories exist. - 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.