Two-Domain Architecture + Audit Lead Magnet (2026-05-13/14) SnowIT — Two-Domain Architecture + Audit Lead Magnet Date: 2026-05-13 + 2026-05-14 Sessions: 9d81f0c3-f7fb-4f8e-bf8c-04091a5dbbec + (current) MC Parent: #100509 (Skybound pass 2) Status: LIVE — production serving Executive Summary SnowIT executed a strategic brand split and technical implementation across two sessions (2026-05-13 + 2026-05-14), delivering: Two-domain architecture: snowit.ba (SMB BiH market) + enterprise.snowit.ba (Enterprise/Norwegian transit/AI security) — unified under single Vercel project via middleware.ts host-based routing Critical bugs fixed: snowit.ba pricing EUR→KM unification (300/800/1200 KM), AI/enterprise content archived, LinkedIn pricing 400 KM live Frontend builds: enterprise/index.html + case-study.html (anonymized Nordic transit TVM case) + about.html (founder bio, NDA-compliant) Audit lead magnet pipeline: snowit.ba/audit.html landing + /api/audit serverless function (pdf-lib MVP, Phase 2 Places API/Sheets/WA deferred pending Vercel Pro upgrade + GCP SA grants) Infrastructure: AWS Route 53 CNAME enterprise.snowit.ba → Vercel Edge, middleware.ts host rewrite (vercel.json rewrites don't fire after filesystem match), orphan snowit-enterprise project flagged for deletion Founding identity corrected: SnowIT d.o.o. founded 2022 (not 2026 — CEO Alem Basic caught agent default-year drift on enterprise preview). Founder consulting record (Entur 2022-2024, Ruter/TET 2024-2025) separate from SnowIT delivery history — NDA-compliant anonymization applied to all public copy. Brand Split Rationale Anti-Lie Positioning SnowIT (founded 2022) pivoted to enterprise AI/transit services in 2026. The company has zero enterprise delivery history as SnowIT entity, but founder Alem Bašić has documented 3-year consulting record at: ENTUR (Norwegian national transit, 2022-2024): TVM modernization, solution architect RUTER (Oslo/Viken transit via TET Digital, 2024-2025): Cloud ops, IoT/EDA, solution architect Two-domain split avoids claim fabrication: snowit.ba: SMB BiH focus (Google Business Profile setup 300 KM, web presence 800 KM, full digital start 1.200 KM) — no enterprise positioning, no false authority enterprise.snowit.ba: Transparent positioning: "Senior consulting expertise meets agile delivery" with NDA-aware disclosure: "Project delivered by SnowIT founder in prior senior consulting capacity. Client identity disclosable under NDA on inquiry." Market Segmentation Domain Audience Services Language Pricing Transparency snowit.ba SMB BiH (salons, auto, bakeries, cafes) GMB, websites, LinkedIn, SEO BS (primary), EN (minimal) Full (300-2.500 KM on-page) enterprise.snowit.ba Enterprise/Norwegian transit/AI security Public transit app dev, AI security harness, legacy modernization EN (primary), BS (i18n toggle) POA (contact-for-quote) Two-Domain Architecture System Diagram graph LR A[snowit.ba] -->|CNAME cname.vercel-dns.com| V[Vercel Edge Network] B[enterprise.snowit.ba] -->|CNAME cname.vercel-dns.com| V V -->|Project: snowit-site prj_6kWI33mxaX2PClQwe1xt1OUbSxP6| MW[middleware.ts] MW -->|Host: snowit.ba, Path: /*| FS1[/index.html /portfolio.html /usluge.html /audit.html] MW -->|Host: enterprise.snowit.ba, Path: /*| RW[Rewrite to /enterprise/*] RW --> FS2[/enterprise/index.html /enterprise/case-study.html /enterprise/about.html] style A fill:#FF6B35 style B fill:#3b82f6 style V fill:#0F172A,stroke:#00D4FF style MW fill:#1e293b style FS1 fill:#334155 style FS2 fill:#475569 DNS Topology AWS Route 53 Hosted Zone: snowit.ba (ID: Z0412149****QUPIW) Record Type Value TTL snowit.ba CNAME cname.vercel-dns.com. 300 enterprise.snowit.ba CNAME cname.vercel-dns.com. 300 clients.snowit.ba CNAME cname.vercel-dns.com. 300 TLS Certificates: Auto-provisioned by Vercel (Let's Encrypt R12), valid 90 days from 2026-05-13 Middleware Host Rewrite Pattern Problem: vercel.json rewrites with has conditions (host-based) run AFTER handle: filesystem in Vercel's output config. Filesystem match wins, rewrite never fires — enterprise.snowit.ba/index.html served placeholder instead of /enterprise/index.html. Solution: Extend middleware.ts to handle host-based routing at edge (runs BEFORE filesystem): // middleware.ts (excerpt — commit 1fcbe0b) export default async function middleware(req: Request): Promise { const url = new URL(req.url); // Host-based rewrite: enterprise.snowit.ba/* → /enterprise/* if (url.hostname === "enterprise.snowit.ba" && !url.pathname.startsWith("/enterprise")) { const destPath = "/enterprise" + (url.pathname === "/" ? "/" : url.pathname); const destUrl = new URL(destPath + url.search, req.url); return rewrite(destUrl); } // tim.html auth gate scoped to pathname === "/tim.html" (no regression) if (url.pathname === "/tim.html") { /* HMAC cookie check */ } return next(); } Commit: 1fcbe0b (2026-05-13) Path Structure /Users/makinja/clients-external/snowit-site/ ├── index.html (snowit.ba SMB landing) ├── portfolio.html (SMB portfolio) ├── usluge.html (SMB services, pricing 300-2500 KM) ├── audit.html (lead magnet landing, BS copy) ├── /api/audit.js (serverless function, pdf-lib MVP) ├── /enterprise/ │ ├── index.html (enterprise landing) │ ├── case-study.html (anonymized Nordic transit TVM case) │ ├── about.html (founder bio, NDA-compliant) │ ├── /css/enterprise.css (dark theme, --ent-* tokens) │ └── /js/i18n.js (EN+BS dictionaries) ├── middleware.ts (host rewrite + tim.html auth) ├── vercel.json (tim.html X-Robots-Tag headers) └── BUILD-BLUEPRINT.md Audit Lead Magnet Pipeline Flow Diagram sequenceDiagram participant U as User (SMB Owner) participant L as /audit.html participant A as /api/audit participant PDF as pdf-lib participant SMTP as nodemailer participant E as Enis (info@snowit.ba) participant GCP as Places API (Phase 2) participant GS as Google Sheets (Phase 2) participant WA as WhatsApp (Phase 2) U->>L: Fill form (name, company, city, industry, contact, notes) L->>A: POST {name, company, city, industry, email OR whatsapp, notes} A->>A: Validate (honeypot check, required fields) A->>PDF: Generate audit PDF (ref SNW-XXXXX-XXXX) PDF-->>A: PDF buffer A->>SMTP: Send email to info@snowit.ba + lead SMTP-->>E: "Novi upit za audit: [company] u [city]" A-->>U: {"ok":true,"ref":"SNW-XXXXX-XXXX"} Note over GCP,WA: Phase 2 — blocked on Vercel Pro + GCP SA grants A-.->GCP: Fetch GBP data (if email) GCP-.->A: Profile + reviews + map position A-.->GS: Log lead (timestamp, ref, company, city, industry, contact, utm_*) A-.->WA: Send WA to lead "Vaš upit primljen, radim na auditu" (if whatsapp) Phase 1 (LIVE — MVP) Landing: /audit.html (837 lines, BS copy, Proxima Marketing) Backend: /api/audit.js (1470 lines, pdf-lib ^1.17.1) Payload schema: {name, company, city, industry, email?, whatsapp?, notes, _honey} Honeypot: _honey field (hidden, rejects bots) Email delivery: nodemailer via one.com SMTP (SMTP_USER/SMTP_PASS env vars reused from /api/contact) Reference ID: SNW-{timestamp}-{random 4-digit} (e.g., SNW-17156-9384) Cost: $0/audit (no external API calls) Phase 2 (BLOCKED — Pending CEO actions) Blocker Status Owner Cost Impact Vercel Pro upgrade ($20/mo) CEO manual action required (UI-only upgrade, no API) CEO Alem Basic +$20/mo Google Places API key (tribal-sign-487920-k0) GCP Console enable + API key + HTTP referrer restriction CEO or grant alai-cli-deployer SA permissions ~$1.70/mo @100 audits Google Sheets SA (snowit-leads-writer@tribal-sign-487920-k0.iam.gserviceaccount.com) GCP Console create SA + download JSON key + share sheet CEO or grant alai-cli-deployer SA permissions $0 (free tier) WhatsApp auto-send Meta WhatsApp Cloud API (24-72h approval) OR Twilio WA API FlowForge (after above unblocked) Free 1K/mo OR $0.005/msg CEO action path (Option A — manual, 15 min): Vercel Pro: https://vercel.com/johns-projects-4b43bfa9/settings/billing → Upgrade to Pro Places API: https://console.cloud.google.com/apis/library/places-backend.googleapis.com?project=tribal-sign-487920-k0 → Enable → Create API Key → Restrict to snowit.ba Sheets API: https://console.cloud.google.com/apis/library/sheets.googleapis.com?project=tribal-sign-487920-k0 → Enable → Create SA "snowit-leads-writer" → Download JSON Lead sheet: Create Google Sheet "SnowIT Leads — Audit Lead Magnet" → Share with SA email (Editor access) → Copy sheet ID CEO action path (Option B — grant FlowForge gcloud access, automated): Run script /Users/makinja/clients-external/snowit-site/scripts/setup-gcp-sa-grant.sh (commit 07a7982) to grant alai-cli-deployer@tribal-sign-487920-k0.iam.gserviceaccount.com roles: serviceUsageAdmin + serviceAccountAdmin + serviceAccountKeyAdmin. Then re-dispatch to FlowForge. Pricing Matrix (snowit.ba SMB) Package Price (KM) Includes Delivery Google Business Starter 300 KM GBP setup + verification + optimization 48h LinkedIn Launch 400 KM LinkedIn Company Page + 5 posts 5-7d Web + GMB (card1) 800 KM 1-page website + GBP setup 7-10d Full Digital Start (card3) 1.200 KM Website + GBP + LinkedIn + SEO basics 14d SnowIT PRO 2.500 KM Full package + 3-month support 30d Currency unification (commit 075ae2b): All "200 EUR" references replaced with "300 KM" across i18n.js (12 changes), index.html (32 changes), usluge.html (18 changes). LinkedIn 400 KM added (commit bef5820). NDA Compliance Pattern Public Copy (enterprise.snowit.ba) Client names: FORBIDDEN (Tet, Ruter, Entur, TET Digital) — verified via grep -i "tet|ruter|entur" on live HTML = 0 matches Anonymization pattern: "Major Nordic public transit operator (identity disclosable under NDA on inquiry)" Disclosure box (case-study.html): 3-paragraph amber-muted banner: Project delivered by SnowIT founder in prior senior consulting capacity SnowIT (founded 2022) is new to enterprise AI/transit services — founder's prior engagements separate Client identity + specific project details available under NDA on inquiry Founder bio (about.html): "Norwegian public transit operators" (plural, anonymized), "Client identities available under NDA on inquiry", professional references subject to client approval NDA-Protected Facts (BookStack only, not public) ENTUR: 03.2022 - 02.2024 (23 months), TVM modernization, Kafka/KSQLDB/GCP/React RUTER (via TET Digital): 09.2024 - 09.2025 (13 months), Cloud ops, AWS/IoT/MQTT/Kafka/EDA CV evidence: /Users/makinja/personal/cv/Alem-Basic_no_2026-02-06T06-08-13Z.pdf BookStack finance logs: RPG January 2026, KnowIT MinVei, timesheet January 2026 Founder Identity Name: Alem Bašić Role: Founder + CEO (SnowIT d.o.o., founded 2022) Background: 25+ years software engineering, solution architect, senior consulting record at Norwegian public transit operators (Entur 2022-2024, Ruter 2024-2025), expertise in Kafka/cloud/AI security/legacy modernization Education: (not disclosed on public site — available under NDA) Languages: BS/EN/NO (professional fluency) Consulting vehicles: Everdeen partner status (Entur engagement), RPG-Kyndryl subcontractor (Ruter/TET engagement) Distinction: SnowIT (founded 2022, pivoted to enterprise 2026, zero enterprise delivery history as entity) vs Founder (Alem Bašić, 3-year documented consulting record 2022-2025). Public copy transparent about this split — no claim fabrication. MC Task Tree MC ID Title Owner Status Evidence #100509 SnowIT Enterprise Pass 2 (Skybound) skybound ready_for_review /tmp/skybound-enterprise-evidence-pending.md #100513 snowit.ba SMB cleanup (EUR→KM, AI archive) codecraft ready_for_review /tmp/codecraft-snowit-cleanup-100513-evidence.md #100510 enterprise.snowit.ba domain move + infra codecraft ready_for_review /tmp/codecraft-domain-move-evidence.md + /tmp/codecraft-faza-b-infra-evidence.md (child) enterprise.snowit.ba case-study.html frontend-builder ready_for_review /tmp/frontend-builder-case-study-evidence.md (child) enterprise.snowit.ba about.html frontend-builder ready_for_review /tmp/frontend-builder-about-evidence.md (child) Audit lead magnet copy (Proxima) proxima done /tmp/proxima-lead-magnet-snowit/_evidence.md #100543 /api/audit backend (pdf-lib MVP) codecraft ready_for_review /tmp/codecraft-audit-tool-evidence.txt (child) /audit.html landing page builder ready_for_review /tmp/builder-audit-html-evidence.md (child) GCP SA permission grant script builder ready_for_review /tmp/builder-gcp-sa-script-evidence.md (child) Vercel Pro + Places API (BLOCKED) flowforge BLOCKED (CEO action) /tmp/flowforge-snowit-vercel-pro-places-evidence.md Outstanding Decisions Orphan snowit-enterprise project: Vercel project prj_8fTtx2Z0UJY4kqdNJACkfIpQamHi (served placeholder, domain now moved to snowit-site) — delete to avoid confusion? (CEO decision pending) Vercel Pro upgrade ($20/mo): Required for Phase 2 Playwright screenshots + real GBP data. CEO must upgrade via UI (Vercel API doesn't support billing changes). GCP Places API + Sheets SA: Option A (CEO manual, 15 min) vs Option B (grant FlowForge gcloud access via scripts/setup-gcp-sa-grant.sh, automated). GA4 + Pixel + GSC tracking IDs: Placeholders in index.html/enterprise/index.html — CEO provide actual IDs or remove placeholders? Audit delivery SLA: Current copy promises "24h" — if Enis volume exceeds capacity, change to "48h" or hire VA? Follow-up cadence: Email/WA sequence ends at 7 days — add 10-day or 14-day final nudge, or stick with 3d+7d? Free vs Paid audit gating: All audits free (current) vs gate multi-location SMBs at 100 KM audit fee (credited toward paid service)? Operational Scripts Script Path Purpose Usage setup-gcp-sa-grant.sh /Users/makinja/clients-external/snowit-site/scripts/ One-time GCP SA permission grant for Phase 2 backend ./scripts/setup-gcp-sa-grant.sh (or PROJECT_ID=X ./scripts/setup-gcp-sa-grant.sh) Commit: 07a7982 (executable, bash -n verified, grants serviceUsageAdmin + serviceAccountAdmin + serviceAccountKeyAdmin to alai-cli-deployer@tribal-sign-487920-k0.iam.gserviceaccount.com) Cost Breakdown Phase 1 (LIVE — MVP) Vercel Hobby: $0/mo AWS Route 53: ~$0.50/mo (hosted zone) one.com SMTP: $0 (existing email account) Total: ~$0.50/mo Phase 2 (Pending CEO Actions) Vercel Pro: $20.00/mo Google Places API: ~$1.70/mo @100 audits/mo ($0.017 per Nearby Search call) Google Sheets API: $0 (free tier, 60 req/min) WhatsApp API: $0 (free 1,000 conversations/mo via Meta Cloud API) OR $0.005/msg via Twilio Total: ~$22/mo + $0.017 per audit over 100/mo Key Commits SHA Message Files Date 0b95bfb snowit.ba SMB cleanup (AI archive, contact form) _archive/usluge-ai-blocks-2026-05-13.html, index.html, portfolio.html, usluge.html 2026-05-13 075ae2b EUR→KM unification (300/800/1200 KM) i18n.js, index.html, usluge.html (62 changes) 2026-05-13 bef5820 LinkedIn 400 KM pricing usluge.html 2026-05-13 1c4c1de + 6f4e98a enterprise/index.html pass 1 enterprise/index.html, enterprise/css/enterprise.css, enterprise/js/i18n.js 2026-05-13 49cd8b2 feat(snowit-enterprise): case-study.html anonymized Nordic transit enterprise/case-study.html (375 lines) 2026-05-13 0705d9a feat(snowit-enterprise): about.html founder bio enterprise/about.html, i18n.js, enterprise.css (392 insertions) 2026-05-13 9a7da92 + 7519bed fix: founding date 2022 (not 2026) enterprise/index.html, i18n.js (14 changes) 2026-05-13 1fcbe0b fix: middleware.ts host rewrite (enterprise.snowit.ba) middleware.ts 2026-05-13 f69e804 feat: /api/audit backend (pdf-lib MVP) api/audit.js (1470 lines), package.json (+pdf-lib) 2026-05-13 cad6878c feat(snowit-smb): /audit.html lead magnet landing audit.html (837 lines) 2026-05-13 07a7982 chore(snowit): scripts/setup-gcp-sa-grant.sh scripts/setup-gcp-sa-grant.sh (38 lines) 2026-05-13 Related Resources Repo: github.com/snowitba/snowit-site Local path: /Users/makinja/clients-external/snowit-site/ BUILD-BLUEPRINT: /Users/makinja/clients-external/snowit-site/BUILD-BLUEPRINT.md ARCHITECTURE doc: /Users/makinja/clients-external/snowit-site/docs/ARCHITECTURE-2026-05-14.md (to be created) Memory entry: ~/.claude/projects/-Users-makinja/memory/project_snowit_brand_split_lead_magnet_2026-05-14.md (to be created) MC parent: #100509 (Skybound pass 2) Last updated: 2026-05-14 Documented by: Skillforge (ALAI Knowledge Management) Status: LIVE — production serving, Phase 2 blocked on CEO actions