WiseAI Agency Hub — Expected Output Spec (DRAFT)
Stage 1 agent research draft. Every touchpoint is pre-populated from code + production (visited 2026-05-20). The founder confirms or corrects in a Stage-2 interview before this moves to COMPLETE. Do not treat any expected output here as canonical until the founder signs off.
What WiseAI Agency Is (scope note for agents)
WiseAI Agency (wiseaiagency.com) is the meta-brand parent hub — not a product with
a checkout or dashboard. It is the tech + trust brand that ties the vertical family
together. It hosts:
- A home page (brand hub, verticals directory teaser, prompt-pack teaser)
- A verticals directory page (
/verticals) - A technology page (
/technology) - An about / founder page (
/about) - A contact form (
/contact) for custom-engagement inquiries - A hub-level pricing overview (
/pricing) — display-only; checkout happens on each vertical's own site - A demo Playground (
/playground) - Local-SEO city landing pages (
/ingersoll,/london-ontario,/woodstock,/tillsonburg) - An AI prompt-pack aggregator (
/skills) - Legal/trust pages (
/privacy,/terms,/security)
Infrastructure: wiseaiagency.com is a hostname rewrite in Next.js middleware
(src/middleware.ts) to churchwiseai-web/src/app/wiseaiagency/. No separate deployment.
Decision: knowledge/decisions/2026-05-04-wiseaiagency-rewrite.md.
N/A Categories (with rationale)
The standard 62-touchpoint methodology (Categories A–H) is designed for tier-gated products with checkout, onboarding, dashboards, and lifecycle billing events. WiseAI Agency has none of these. The following categories are explicitly N/A:
| Category | Status | Reason |
|---|---|---|
| B. Pre-Purchase Journey (onboard form, Stripe checkout, success page) | N/A | No checkout on wiseaiagency.com. Actual purchases happen on vertical sites (churchwiseai.com, funeralwiseai.com, etc.). The hub's only "conversion" is submitting the contact form or booking a call. |
| C. Email Journey (welcome email, receipt, Day 0/2/7/13 lifecycle) | N/A — partially | There is no post-signup email sequence. The only email the hub sends is a notification to hello@wiseaiagency.com when a contact form is submitted. No MailerLite drip from this domain. |
| D. First Login & Dashboard Discovery | N/A | No login, no dashboard. wiseaiagency.com is fully public. |
| E. Setup Journey | N/A | No product to set up. No admin interface. |
| F. Public-Facing Product Pages (chat/care/embed/pro-website) | N/A | No AI product hosted on this domain. Products live on vertical sites. |
| G. Ongoing Dashboard Use (calls, requests, care, social, upgrade tabs) | N/A | No dashboard exists on this domain. |
| H. Lifecycle Events (usage limits, trial expiry, payment failure, cancellation) | N/A | No billing, no subscription, no lifecycle on this domain. |
Applicable Touchpoints
The following touchpoints ARE applicable and are documented below.
Category A — Discovery Paths
A1. Direct navigation to wiseaiagency.com
Entry point: Direct URL / bookmark / social link
Landing URL: https://wiseaiagency.com
Screenshot: screenshots/wiseaiagency/home-hero.png (pending production capture)
Should See:
- Nav: "What we build" / "Verticals" / "Technology" / "Pricing" / "Playground" / "About" / "Contact" + "Talk to us" CTA button
- Hero H1: "AI agents for service businesses."
- Hero eyebrow: "One platform. Many industries."
- Sub-copy: describes one codebase configured per industry; churches today, funeral homes next
- Two primary CTAs in hero: "Try the playground" →
/wiseaiagency/playgroundand "See our verticals" →#verticals - Verticals section showing 3 live brands (ChurchWiseAI gold, FuneralWiseAI amber, VetWiseAI green) + "8 more verticals" roadmap card
- Dial demo CTA block (conditional on
NEXT_PUBLIC_DEMO_NUMBER+findDemoCodeByBrand('playground-wiseaiagency')) — shows phone number + code - "What we build" section: 2 product cards (Voice Agent, Chatbot) linking to playground
- Prompt packs section (dark hero): "12 free AI prompts for the verticals we serve." — two pack links
- Founder story block (
variant="agency") - Contact section: "Building in a vertical we haven't shipped yet?" — cal.com booking link + hello@wiseaiagency.com email link
Should NOT See:
- Stripe checkout
- Any admin dashboard link
- Any church-specific content (prayer requests, care agents, etc.)
- PewSearch references (hub-level positioning only)
- Any reference to specific Stripe price IDs
Links:
- "Try the playground" →
/wiseaiagency/playground - "See our verticals" →
#verticals(anchor) - "Visit site" (ChurchWiseAI) →
https://churchwiseai.com(new tab) - "Visit site" (FuneralWiseAI) →
https://funeralwiseai.com(new tab) - "Visit site" (VetWiseAI) →
https://veterinarywiseai.com(new tab) - "Ask about your vertical" →
/wiseaiagency/contact - Pastor AI Prompt Pack →
https://churchwiseai.com/skills - Funeral Director Prompt Pack →
/funeralwiseai/skills - "See both packs side-by-side" →
/wiseaiagency/skills - "Book a 30-min call" →
https://cal.com/john-moelker/wiseaiagency-demo - "Email hello@wiseaiagency.com" →
mailto:hello@wiseaiagency.com
Open question for founder interview:
- Is the hero copy ("AI agents for service businesses") finalized, or is a pain-led variant planned?
- Should the dial demo section always show (even on mobile), or should it be hidden on mobile?
A2. Google search → wiseaiagency.com (organic)
Entry point: SERP organic result
Expected meta title: "AI Agents for Service Businesses - WiseAI Agency"
Expected meta description: "We build AI agents for service businesses. Pastor-founded. One technology platform, customized per industry. Churches, funeral homes, and more."
Canonical: https://wiseaiagency.com
Should See:
- Title and description indexed correctly
- Canonical tag present in
<head>
A3. Google search → local city page (e.g., "AI agency Ingersoll Ontario")
Entry point: SERP organic result for city-specific query
Landing URL: https://wiseaiagency.com/ingersoll (or london-ontario, woodstock, tillsonburg)
Should See:
- Meta title: "AI Agents for [City] Businesses — WiseAI Agency"
- JSON-LD
LocalBusinessschema withareaServedincluding the city and nearby areas - Hero H1: "AI agents for [City] service businesses."
- City-specific stats widget: number of churches, funeral homes, vet clinics
- Three vertical cards (ChurchWiseAI, FuneralWiseAI, VetWiseAI) with descriptions
- "Why local matters" section: time zone, CASL compliance, ongoing support
- City-specific pain points (data from
cities.ts) - Testimonials slot: placeholder card ("We are actively onboarding [City]-area businesses")
- Contact CTA: "Book a 30-minute call" → cal.com + "Send a message instead" →
/wiseaiagency/contact
Should NOT See:
- Testimonial quotes that don't exist yet (no fabricated social proof)
- Pricing figures (city pages don't show pricing)
Open question for founder interview:
- The JSON-LD schema includes
telephone: '+1-226-XXX-XXXX'— this is a placeholder. Does a real WiseAI Agency phone number exist? If not, should thetelephonefield be removed to avoid serving fake structured data to Google? - Is the Ingersoll stat "10+ Churches / 2–3 Funeral homes / 3–4 Vet clinics" accurate and acceptable for public display?
A4. Direct link to /wiseaiagency/verticals
Entry point: Nav "Verticals" item or external link
Landing URL: https://wiseaiagency.com/verticals
Should See:
- H1: "One engine. Many industries."
- Active verticals (status: Active badge, green bg): ChurchWiseAI, FuneralWiseAI, VetWiseAI, SermonWise AI, PewSearch
- Roadmap verticals (Coming soon badge, grey bg): DoctorWiseAI
- Each active vertical shows: name, domain, description, "Visit site →" link (opens new tab)
- FuneralWiseAI description includes: "$745 setup + $199/mo"
- Bottom CTA: "Get in touch" →
/wiseaiagency/contact
Should NOT See:
- SermonWise listed as "coming soon" (it IS active)
- PewSearch listed as "coming soon" (it IS active)
Open question for founder interview:
- Should SermonWise and PewSearch be listed on the Agency verticals page? They are not WiseAI-branded agency products in the same sense as Church/Funeral/Vet. Confirm intent.
A5. Direct link to /wiseaiagency/pricing
Entry point: Nav "Pricing" item or external link
Landing URL: https://wiseaiagency.com/pricing
Should See:
- H1: "Simple pricing across our verticals."
- Subheading: "Each vertical sets its own pricing on its own site — this is the cross-vertical summary."
- USD/CAD currency toggle (defaults by geo-IP)
- Three vertical cards: ChurchWiseAI, FuneralWiseAI, VetWiseAI with price ranges
- "ChurchWiseAI extras" section: Pro Website ($14.95/mo), SermonWise AI ($19.95/mo), PewSearch Premium (founder to confirm — see drift section)
- Footnote: "Display currency is for comparison. Each vertical's checkout currently bills in USD; CAD billing is being rolled out..."
- "Custom builds" section →
/wiseaiagency/contact - Final CTA: "Open the playground" →
/wiseaiagency/playground
CTAs:
- "See full ChurchWiseAI pricing" →
https://churchwiseai.com/pricing(new tab) - "See full FuneralWiseAI pricing" →
/funeralwiseai/pricing(same tab — note: resolves via hostname rewrite, effectivelyhttps://funeralwiseai.com/pricing) - "See full VetWiseAI pricing" →
https://veterinarywiseai.com/pricing(new tab) - PewSearch Premium "Learn more" →
https://pewsearch.com/pricing(new tab)
Open question for founder interview:
- PewSearch Premium listed at $9.95/mo on the page — see "Drift found during research" section. Confirm correct price.
A6. Direct link to /wiseaiagency/playground
Entry point: Nav "Playground" item or hero CTA
Landing URL: https://wiseaiagency.com/playground
Should See:
- H1: "Pick a product. Pick an industry. See it work."
- Disclaimer badge: "Every agent here is fictional — for demo purposes only."
- Step 1: Pick a product — Chatbot or Voice Agent
- Step 2: Pick an industry — grid of verticals (6 live, 4 coming soon per code)
- After selection: chatbot inline (BrandSalesChatbot) OR voice dial CTA
- Conversion CTAs after demo: per-vertical based on status (book demo / waitlist / visit site)
Should NOT See:
- Real church/customer data in the demo agents
- Any "log in" or "sign up" prompts during the playground flow
Open question for founder interview:
- Which specific industries are available as live chatbot demos right now? The playground wizard code references multiple verticals. Founder to confirm which are fully trained vs placeholder.
A7. Direct link to /wiseaiagency/skills
Entry point: Home page prompt-packs section link or direct URL
Landing URL: https://wiseaiagency.com/skills
Should See:
- H1: "[N] AI prompts for service businesses that respect their craft." (where N = total count, currently 12)
- "Works in" strip: ChatGPT, Claude.ai, Gemini, Grok, Perplexity, Copilot
- Two pack cards: Pastor Pack (7 prompts, church gold accent) and Funeral Director Pack (5 prompts, copper accent)
- "Open the Pastor Pack" →
https://churchwiseai.com/skills(new tab) - "Open the Funeral Director Pack" →
/funeralwiseai/skills(same-origin rewrite → funeralwiseai.com) - AI Bridge Principle section: "The AI is a bridge to humans. Never a replacement."
- Bottom CTA: "See what we build" →
/wiseaiagency/and "Try the playground" →/wiseaiagency/playground - MIT license notice
Should NOT See:
- Email gate on
/wiseaiagency/skillsitself (email gate lives on individual pack pages, not the aggregator) - Individual prompt content (this is an index/directory page)
A8. Cal.com booking page (not on wiseaiagency.com, but exit point)
Entry point: Multiple "Book a 30-min call" CTAs across the hub
Destination: https://cal.com/john-moelker/wiseaiagency-demo
Should See:
- Cal.com hosted booking page (not a wiseaiagency.com page)
Open question for founder interview:
- Is this Cal.com link active and configured with the right calendar? It appears in 4+ places across the hub.
Category C — Email Journey (partially applicable)
C1. Contact form submission → founder notification email
State: Visitor submits /wiseaiagency/contact with valid payload + CASL consent
API: POST /api/wiseaiagency/contact
Should See (founder inbox at hello@wiseaiagency.com):
- Email from:
WiseAI Agency <hello@wiseaiagency.com> - Reply-to: the visitor's email address
- Subject:
New agency inquiry — [Business Name] ([City]) - Body contains: Name, Email (linked), Business name, Business URL (if provided), Industry type, City, CASL consent confirmation, message body
Should NOT See:
- Email going to
support@churchwiseai.com(the generic CWA contact goes there; this one is wiseaiagency-specific) - Form submission succeeding without CASL checkbox checked
Conditional:
- If CASL consent is
false: API returns 400 "Consent is required" — form shows error message with fallbackmailto:hello@wiseaiagency.comlink - If Resend fails: API soft-fails (does not expose error to visitor); DB write still attempted
- If
AGENCY_INBOUND_CAMPAIGN_IDcampaign row missing inoutreach_contacts: DB insert soft-fails, email notification still fires; a warning is logged but visitor sees the success state
Success state (visitor sees after submit):
- Check icon + "Message received."
- Body: "John will respond within one business day. Short conversations, honest answers."
- Form fields are replaced by the success card
Error state (visitor sees if API fails):
- Red alert box: "Something went wrong. [errorMessage] Email us directly →" (links to
mailto:hello@wiseaiagency.com)
Category A (continued) — Contact Form Journey
A9. /wiseaiagency/contact — full form experience
Should See:
- H1: "Building in a vertical we haven't shipped yet?"
- Left panel: context copy,
hello@wiseaiagency.comemail link, redirect block for already-launched verticals (FuneralWiseAI + ChurchWiseAI demo links) - Right panel (form): Name* / Email* / Business name* / Business website (optional) / Type of business* (dropdown: Church / Funeral home / Veterinary clinic / Healthcare / Other service business / Investor or partner inquiry) / City* / "What are you working on?"* / CASL consent checkbox* / "Send message" button
- When "Other service business" selected: helper text "Describe your business type in the message below."
- CASL consent text includes:
hello@wiseaiagency.comunsubscribe link and "Ingersoll, ON, Canada"
Should NOT See:
- Phone number field (not in this form — this is a custom-engagement form, not the church onboarding form)
- Any "church name" field (this is vertical-agnostic)
- ChurchWiseAI branding (uses WiseAI Agency brand tokens)
Rate limiting: 5 submissions per minute per IP. On limit: standard 429 response.
Category A (continued) — Trust / Legal Pages
A10. /wiseaiagency/privacy
Should See: Privacy policy scoped to wiseaiagency.com (data collected on the hub). Defers to vertical brand sites for product data.
A11. /wiseaiagency/terms
Should See: Terms covering visitor use, custom engagements, demo bookings. States vertical product terms are governed by brand sites.
A12. /wiseaiagency/security
Should See: Security and AI safety practices — infrastructure, encryption, tenant isolation, HEAR/crisis protocol, subprocessors, incident response.
A13. /wiseaiagency/technology
Should See: Technology page describing LiveKit voice, multi-agent orchestration, HEAR protocol, per-vertical training approach.
Drift Found During Research
As per methodology rules: drifts are DOCUMENTED here, not fixed. A remediation agent addresses them separately.
DRIFT-1: PewSearch Premium price on wiseaiagency.com/pricing — $9.95/mo vs canonical $4.95/mo
Location: churchwiseai-web/src/app/wiseaiagency/pricing/PricingOverviewClient.tsx line 123
Code value: monthly: 9.95
Canonical price: PRICING.md → "Premium Church Page (USD) $4.95/mo"
Production display (CAD): Shows ~$12.95 CAD which converts correctly from $9.95 USD, but $9.95 USD is itself wrong
Severity: Medium — this is a display-only pricing overview page (no checkout); the actual checkout on pewsearch.com would charge the correct price. But it misstates the product price to prospects browsing the hub.
Action: A remediation agent should update monthly: 9.95 → monthly: 4.95 in PricingOverviewClient.tsx and verify the note field is accurate.
DRIFT-2: JSON-LD LocalBusiness schema uses placeholder phone number
Location: churchwiseai-web/src/app/wiseaiagency/[city]/page.tsx line 88
Code value: telephone: '+1-226-XXX-XXXX'
Issue: This placeholder will be served in structured data to Google. A fake phone number in JSON-LD LocalBusiness schema can cause Google Business Profile issues.
Severity: Low-Medium — Google may ignore or flag structured data with a non-dialable number.
Action: Either supply the real WiseAI Agency phone number (if one exists) or remove the telephone field from the schema entirely until a real number is assigned.
DRIFT-3: FuneralWiseAI setup price — VERIFIED CORRECT at $745
Confirmed: PricingOverviewClient.tsx line 78 shows usd: 745 for FuneralWiseAI setup. The 2026-05-19 audit fix (from $999 → $745) is correctly applied. No action needed.
DRIFT-4: Home page stat widget shows "2 Live vertical brands" — outdated
Location: churchwiseai-web/src/app/wiseaiagency/page.tsx line 218 (visual stat card)
Code value: ['2', 'Live vertical brands']
Current reality: The verticals page lists 5 active brands (ChurchWiseAI, FuneralWiseAI, VetWiseAI, SermonWise AI, PewSearch). Even limiting to commercially launched WiseAI-branded verticals, there are 3 (Church, Funeral, Vet).
Severity: Low — minor accuracy issue on a stat card; doesn't affect purchase decisions.
Open question: What count is the founder's intent? "3 commercial verticals" (Church/Funeral/Vet)? "5 active WiseAI brands"? Should this stat be removed or updated?
User State Definition
WiseAI Agency has no authenticated user states. All visitors are unauthenticated. The two meaningful visitor states are:
| State | Description | Primary goal |
|---|---|---|
| Curious prospect | Service business owner exploring the hub | Understand what WiseAI Agency is → reach playground or contact form |
| Custom engagement lead | Business in an unlaunched vertical seeking a custom build | Reach the contact form → submit inquiry → receive response |
Open Questions for Stage-2 Founder Interview
-
Contact form → campaign row: The DB insert at
POST /api/wiseaiagency/contactdepends on a campaign row with IDa9000000-0000-0000-0000-000000000001existing inoutreach_campaigns. Does this row exist? If not, every form submission silently soft-fails the DB write (email still sends). Has the founder confirmed receipt of test form submissions? -
hello@wiseaiagency.comemail routing: The contact API sends tohello@wiseaiagency.com. Is this inbox monitored? Where does it route (forwarding rule, shared inbox, etc.)? -
PewSearch Premium price ($9.95 vs $4.95): Confirm canonical price. If $4.95 is correct, approve remediation.
-
LocalBusiness JSON-LD phone: Does WiseAI Agency have a real phone number for the schema, or should the
telephonefield be removed? -
Home page "2 Live vertical brands" stat: Confirm correct count — 2, 3, or 5?
-
Verticals directory scope: Should SermonWise AI and PewSearch appear in the wiseaiagency.com/verticals page? They are not WiseAI-branded vertical products in the same category as Church/Funeral/Vet.
-
Cal.com booking link: Is
https://cal.com/john-moelker/wiseaiagency-demoactive and configured? -
Playground industries: Which playground verticals are fully trained (real demo quality) vs placeholder? The page says "6 industries live, 4 more coming" — confirm which 6.
-
Dial demo section: The home page conditionally shows a dial-in CTA if
NEXT_PUBLIC_DEMO_NUMBERis set and a demo code forplayground-wiseaiagencyexists. Is this configured in production? (Production showed a phone number(414) 310-7631— confirm this is intentional and the demo code is valid.) -
City pages — real stats: Are the per-city stats (e.g., Ingersoll: 10+ churches, 2-3 funeral homes, 3-4 vet clinics) manually curated in
cities.tsor pulled from a data source? Confirm they are accurate enough for public display. -
SermonWise AI pricing on hub pricing page: Shows $19.95/mo with "Free tier available — 2 sermons per month." Confirm this is current pricing (not stale from pre-SermonWise-pricing change).
Agents Reading This Spec
Before modifying any WiseAI Agency page or the contact API:
- Cross-reference the drift section — existing issues are known and tracked.
- The contact form API (
/api/wiseaiagency/contact) has a FOUNDER GATE dependency on theagency-inboundcampaign row. Do not assume DB writes succeed without verifying that row exists. - Never modify
/api/contact/route.tsthinking it handles WiseAI Agency contact — that route handleschurchwiseai.com/contact(sends tosupport@churchwiseai.com). The agency form uses/api/wiseaiagency/contact/route.ts(sends tohello@wiseaiagency.com). - The
/wiseaiagency/pricingpage is display-only — do not add Stripe checkout logic here. - City pages are statically generated. Adding a new city requires updating
cities.ts+ runninggenerateStaticParamsat build time.