SnowIT
IT consulting company — Sarajevo operations, contracts, clients.
- Overview
- Active Tasks
- Key Decisions
- Project Overview
- Specifications Index
- SnowIT Tenant Tree (2026-05-15 migration)
- SEO Readiness Portal Cloud Migration — 2026-06-01
Overview
SnowIT Overview
IT consulting company — Sarajevo operations, contracts, clients.
Owner: John Last Verified: 2026-02-17
Contents
To be populated from SnowIT company documentation
Active Tasks
Last Verified: 2026-02-17 | Owner: John
SnowIT — Active Tasks
Open Tasks
Medium Priority
- #1213 — Follow up: Has Asmir posted content on LinkedIn?
- #1267 — DNS and email setup for snowit.ba (MX records)
Recently Completed
- Website services page — /usluge page live with full service catalog
- OG image fix — Text rendering problem resolved
- LinkedIn company page — Created and ready for content
- Sales playbook — Detailed sales strategy by AI agent (nicksaraev)
- Content calendar — 30-day content plan by AI agent (marketer)
- Financial model — 6-month projections by AI agent (finance)
- Market research — B&H market analysis completed
Planned Work
- Outreach campaign — 5 clients in 30 days (delivery delayed)
- Email setup — Complete DNS configuration
- Content execution — Post first batch from content calendar
- Lead generation — Start executing sales playbook
Key Decisions
Last Verified: 2026-02-17 | Owner: John
SnowIT — Key Decisions
Strategic Decisions
Market Focus: Bosnia & Herzegovina (2026-02)
Decision: SnowIT targets B&H market exclusively (snowit.ba domain). Rationale: Local market knowledge, language advantage, untapped AI services market. Implementation: Website in Bosnian/Serbian/Croatian, local pricing, B&H payment methods.
Service Packaging (2026-02)
Decision: Offer 3-tier packages (Digital Presence 800 KM, 2-4h response) Rationale: Predictable pricing, easier sales, scalable delivery. Source: Financial model from AI agent (finance).
Content Marketing Strategy (2026-02)
Decision: 3 posts per week on LinkedIn (12-13 posts/month) Rationale: Consistent presence, thought leadership, organic reach. Source: Content calendar from AI agent (marketer).
Partnership Model (2026-02)
Decision: Collaborate with Asmir as partner/sales contact. Status: Active, awaiting LinkedIn activity confirmation.
Technical Decisions
Website Stack
- Modern web framework (details in repo)
- Hosted on vercel/railway/fly.io (pending deploy strategy task #271)
- snowit.ba domain with email (@snowit.ba addresses)
Sales Process
- Sales playbook created by AI agent (nicksaraev)
- CRM integration planned
- Lead tracking via Mission Control
Operational Decisions
Pricing Strategy
- Digital Presence package: 800 KM (2-4h response time)
- Additional tiers defined in financial model
- Competitive with local market, premium positioning
Project Overview
Last Verified: 2026-02-17 | Owner: John
SnowIT — Project Overview
What is SnowIT?
SnowIT (snowit.ba) is an AI-driven agency focused on the Bosnia & Herzegovina market. It provides software development, design, security, data, infrastructure, and marketing services under one roof.
Current Status
- Phase: Active development
- Website: snowit.ba (live)
- Market: Bosnia & Herzegovina (B&H)
- Business Model: Full-service digital agency
Recent Work
- Website launch with services pages (/usluge)
- LinkedIn company page creation
- OG image optimization (text rendering fix)
- Sales playbook development
- 30-day content calendar for LinkedIn
- Financial model for first 6 months
- Market research for B&H market
Services Offered
- Software Development — Web, mobile, custom applications
- Design — UI/UX, branding, visual design
- Security — Infrastructure security, compliance
- Data — Analytics, business intelligence
- Infrastructure — Cloud hosting, deployment
- Marketing — Digital marketing, content, campaigns
Tech Stack
- Website: Modern web stack (details in project repo)
- Hosting: TBD (see Deploy & Hosting Strategy task #271)
- Email: snowit.ba domain (DNS/MX setup in progress)
Contacts
- Partner: Asmir (asmirmc@gmail.com)
- Status: Active collaboration, LinkedIn outreach campaign planned
Key Documents
- Sales Playbook — Agent-generated detailed sales strategy
- Content Calendar — 30-day LinkedIn posting schedule (3 posts/week)
- Financial Model — 6-month revenue projections
- Service Catalog — Full service offerings at snowit.ba/usluge
Specifications Index
Last Verified: 2026-02-17 | Owner: John
SnowIT — Specifications Index
Business Documents
Sales & Marketing
- Sales Playbook — Detailed sales strategy (AI-generated by nicksaraev agent)
- Content Calendar — 30-day LinkedIn content plan (AI-generated by marketer agent)
- Financial Model — 6-month revenue/cost projections (AI-generated by finance agent)
- Market Research — B&H market analysis
Service Catalog
Located at snowit.ba/usluge:
- Software Development
- Design Services
- Security Consulting
- Data Analytics
- Infrastructure Management
- Digital Marketing
Technical Documents
Website
- Stack: Modern web framework
- Hosting: TBD (Deploy & Hosting Strategy task #271)
- Domain: snowit.ba
- Email: MX records setup (task #1267)
Infrastructure
- DNS configuration (in progress)
- Email setup (in progress)
- Deployment pipeline (pending)
Planning Documents
- 30-Day Outreach Plan — 5 clients target (delivery delayed)
- LinkedIn Strategy — Content themes, posting schedule
- Pricing Strategy — Package definitions, competitive analysis
SnowIT Tenant Tree (2026-05-15 migration)
SnowIT Tenant Tree (2026-05-15 migration)
Legal Boundary
SnowIT BA is an independent legal entity. ALAI Holding AS provides technology and operations support under service agreement. ALAI has ZERO financial share/equity in SnowIT BA.
CEO directive 2026-05-15: "SnowIT BA = independent legal entity. ALAI = tech-only ZERO financial share."
New Canonical Layout
As of 2026-05-15, SnowIT BA operates under dedicated tenant tree:
~/tenants/SnowIT-BA/
├── company/ # Corporate operations
│ ├── state/ # System state, sessions (was ~/clients-external/snowit-state)
│ ├── finances/
│ ├── contracts/
│ └── reports/
├── legal/ # Legal documents, compliance
├── contacts/ # CRM, stakeholder data
├── calendar/ # Events, deadlines
├── mail/ # Email archives, campaigns
├── forms/ # Templates, intake forms
├── templates/ # Document templates
├── web/ # Web properties
│ └── snowit-site/ # Main repo (was ~/clients-external/snowit-site)
└── clients/ # SnowIT client projects
Migration Summary
What Moved
~/clients-external/snowit-site→~/tenants/SnowIT-BA/web/snowit-site~/clients-external/snowit-state→~/tenants/SnowIT-BA/company/state- Client reference symlink:
~/business/ALAI-Holding-AS/clients/SnowIT→~/tenants/SnowIT-BA/_external-tenant-snowit-reference
What Stayed in ALAI Tree
~/business/ALAI-Holding-AS/products/SnowIT/linkedin-cadence/— ALAI internal tool (CEO directive: stays in ALAI tree)
Hard Cutover Confirmed
Both old directories removed:
~/clients-external/snowit-site→ No such file or directory~/clients-external/snowit-state→ No such file or directory
Validation Evidence
Status: PASS (9/9 criteria)
| ID | Criterion | Status | Evidence |
|---|---|---|---|
| V1 | snowit.ba serves HTTP/2 200 | ✓ PASS | /tmp/proveo-100723/curl-snowit.txt |
| V2 | enterprise.snowit.ba serves HTTP/2 200 | ✓ PASS | /tmp/proveo-100723/curl-enterprise.txt |
| V3 | Playwright screenshot rendered | ✓ PASS | /tmp/proveo-100723/snowit-landing.png (124KB) |
| V4 | Vercel projectId intact | ✓ PASS | /tmp/proveo-100723/vercel-project.json |
| V5 | LaunchAgents operational | ✓ PASS | 3 daemons loaded, path-independent |
| V6 | Git remote correct | ✓ PASS | git@github.com:snowitba/snowit-site.git |
| V7 | Repo-local [user] config removed | ✓ PASS | Global ~/.gitconfig inherits correctly |
| V8 | No live functional refs to old path | ✓ PASS | 20 mentions are historical/spec/memory only |
| V9 | Hard cutover confirmed | ✓ PASS | Both old directories removed |
Open Items
Non-Blocking
- DEPLOY-MAP.md schema upgrade — Line 32 has stale path
~/projects/snowit-site. Kelsey-hightower blocked byblueprint-schema-validatorpre-hook. Requires DEPLOY-BLUEPRINT v2 compliance upgrade. Separate MC opened for schema migration.
References
- MC: #100723
- ADR: ADR-026 SnowIT Tenant Tree
- Spec: ~/system/specs/snowit-tenant-migration-2026-05-15.md
- Executor: kelsey-hightower (FlowForge)
- Validator: angie-jones (Proveo)
- Supersedes: anvil-fs-d2 (Phase D restructure now complete for SnowIT)
- Canonical Registry: ~/system/specs/canonical-registry.md
SEO Readiness Portal Cloud Migration — 2026-06-01
SEO Readiness Portal Cloud Migration — 2026-06-01
Date: 2026-06-01 Owner: john Verdict: DONE
Live state verified (2026-06-01 05:31 UTC)
curl -sI https://seo-tools.alai.no/api/health→ HTTP 302 toalai-no.cloudflareaccess.com/cdn-cgi/access/login/...(CF Access enforced, no anonymous access)curl -sI https://seo-readiness-alai.azurewebsites.net/api/health→ HTTP 403x-ms-forbidden-ip: 46.46.245.169(Azure origin lock to Cloudflare IPs)
No traffic to John local host: cloudflared route for seo-tools.alai.no and seo-tools.snowit.ba set to http_status:503.
Architecture (now)
Browser → Cloudflare Access (seo-tools.alai.no, alai-no team) → Cloudflare proxied DNS → Azure App Service Linux container seo-readiness-alai (Sweden Central, rg rg-seo-readiness-prod, asp asp-seo-readiness-prod B1) → Next.js standalone in alairegistry.azurecr.io/seo-readiness-portal:20260531-cloud (digest sha256:16c8a40a...) → persistent /home/data/workspace.json
App access mode: SEO_PORTAL_ACCESS_MODE=cf-access, trusted header CF-Access-Authenticated-User-Email, allowed domains snowit.ba,alai.no, extra allowed alembasic@gmail.com.
Evidence
- Deploy summary:
/tmp/alai/seo-readiness-cloud-migration-20260531/cloud-deploy-summary.md - Local-disabled proof:
/tmp/alai/seo-readiness-cloud-migration-20260531/local-disabled-evidence.txt - Azure build + deploy:
azure-build.log,azure-webapp-deploy.log,azure-hostname-corrected.log,azure-role-settings.log - Origin lock:
azure-access-restrict-cloudflare.log,azure-access-restrict-smoke.log - DNS upsert:
cf-dns-upsert.log - Public smoke:
public-cloud-smoke.log - Origin smoke:
azure-smoke.log - Authenticated UAT (alem@alai.no, end-to-end: partners → add client → intake → audit → report → markdown export):
uat-alem/seo-cloud-uat-result.json+ 8 PNG screenshotsuat-alem/01-cf-login.png…08-export.png - Lesson memo:
lesson-seo-cloud-origin-lock-20260531.md
Docs corrected (no localhost as final target)
DEPLOYMENT-CLOUD.mdL7 — explicit "must not be served from John/local localhost"DEPLOYMENT-INTERNAL.mdL7, L26, L102 — Docker steps marked local-dev only; cloud origin required for production; explicit "Do not routeseo-tools.*tohttp://127.0.0.1:*or any localhost address"README.mdL130 — "Azure App Service Linux container origin, not John/local localhost"BUILD-BLUEPRINT.mdL54, L70 — Azure runbook section + CEO correction recorded
Rollback
If Azure origin needs rollback:
- Revert Web App container image:
az webapp config container set -g rg-seo-readiness-prod -n seo-readiness-alai --container-image-name alairegistry.azurecr.io/seo-readiness-portal:<previous-tag> - CF Access policy and DNS remain unchanged; no public bypass introduced.
- Do NOT re-enable cloudflared local route — that violates the CEO correction.
Open follow-ups (separate MCs, not blockers)
- Postgres swap for
/home/data/workspace.json(durable multi-user storage) — pre-req for external product use. seo-tools.snowit.baDNS/zone provisioning (currently 503).- Bind Azure custom hostname TLS managed cert (currently CF terminates).
CEO scope check
- "Move off John/local host to real cloud" → DONE (Azure App Service)
- "Cloudflare Access trusted-header preserved" → DONE (
SEO_PORTAL_ACCESS_MODE=cf-access) - "No public unauthenticated access" → DONE (302 to CF Access login on unauth)
- "Custom domain toward seo-tools.alai.no" → DONE (CNAME + asuid TXT + Azure binding)
- "Concrete deploy URL/origin" → DONE (
seo-readiness-alai.azurewebsites.netbehindseo-tools.alai.no) - "UAT evidence" → DONE (alem-authenticated screen-recorded flow)
- "Rollback" → documented above
- "Fix docs that recommend local host" → DONE (4 docs updated)
MC / evidence references
- MC task: #102653
- Local closure artifact:
/tmp/alai/seo-readiness-cloud-migration-20260531/CLOSURE-102653.md - Cloud deploy summary:
/tmp/alai/seo-readiness-cloud-migration-20260531/cloud-deploy-summary.md - Authenticated UAT result:
/tmp/alai/seo-readiness-cloud-migration-20260531/uat-alem/seo-cloud-uat-result.json - Origin restriction smoke:
/tmp/alai/seo-readiness-cloud-migration-20260531/azure-access-restrict-smoke.log - P2P verifier PASS:
mesh-thr-50503688-7de8-489c-96ca-3d7d1a165dc2
See Also — Agent Runbook
The canonical end-to-end workflow runbook (intake to John deep-report, anti-pitfalls, trigger checklist):