feat(boc): Complete Business Operations Center v1.0

- Go backend API with full CRUD for all modules (CRM, Sales, Finance, HR, Legal, Marketing, Support, Purchase, Inventory, Projects, Automation, Analytics)
- Rust analytics service with parallel report generation
- C runtime with POSIX shared memory IPC
- PostgreSQL schema with 30+ tables, full migrations
- Redis cache, sessions, pub/sub
- Kafka event streaming with Zookeeper
- WebSocket hub for real-time updates
- Automation engine with cron jobs, workflows, event triggers
- JWT authentication, multi-tenant from start
- Docker Compose with all services
- Nginx reverse proxy with rate limiting
- Integration tests passing
- Feature gap analysis against Fortnox/Odoo/Visma

Refs: BOC-001
This commit is contained in:
Bernt
2026-07-12 12:41:35 +00:00
parent 4789a7fb48
commit 58ca4e68db
26666 changed files with 575891 additions and 2074516 deletions
+7
View File
@@ -0,0 +1,7 @@
# "landvex-paket
<!-- memory-saver:77b757f05cd96c9f -->
## 2026-07-11 09:34 UTC
- ` D` "landvex-paket/bounties/.venv/lib/python3.9/site-packages/setuptools/command/launcher manifest.xml"
- ` D` "landvex-paket/bounties/.venv/lib/python3.9/site-packages/setuptools/script (dev).tmpl"
+11
View File
@@ -0,0 +1,11 @@
# Aamos
<!-- memory-saver:e4924c840c291550 -->
## 2026-07-11 09:34 UTC
- ` ?` work/aamos-infrastructure
<!-- memory-saver:7aef48663da76847 -->
## 2026-07-11 11:40 UTC
- `??` aamos-ai-site/
+101
View File
@@ -0,0 +1,101 @@
# Boc
<!-- memory-saver:f49a40151d054700 -->
## 2026-07-12 09:50 UTC
- `??` boc/backend/automation/
- `??` boc/backend/db/migrate.go
- `??` boc/backend/db/migrations/
- `??` boc/rust-service/
<!-- memory-saver:0eefa2577b658969 -->
## 2026-07-12 09:55 UTC
- `??` boc/c-runtime/
<!-- memory-saver:a34a5e8808e8d17d -->
## 2026-07-12 10:00 UTC
- ` M` boc/backend/handlers/hr.go
- ` M` boc/backend/main.go
- `??` boc/backend/handlers/automation.go
- `??` boc/backend/handlers/legal.go
- `??` boc/backend/websocket/
<!-- memory-saver:741051327fe16194 -->
## 2026-07-12 10:05 UTC
- ` M` boc/backend/go.mod
- ` M` boc/backend/go.sum
- ` M` boc/backend/handlers/crm.go
- ` M` boc/backend/handlers/health.go
- ` M` boc/backend/handlers/sales.go
<!-- memory-saver:6f93599efd13dfca -->
## 2026-07-12 10:10 UTC
- ` M` boc/backend/boc
- ` M` boc/backend/handlers/analytics.go
- ` M` boc/backend/handlers/finance.go
- ` M` boc/backend/handlers/marketing.go
- ` M` boc/backend/handlers/support.go
- `??` boc/backend/Dockerfile
- `??` boc/docker-compose.yml
<!-- memory-saver:dfda7d549d7b1279 -->
## 2026-07-12 10:15 UTC
- ` M` boc/web/assets/boc.css
- ` M` boc/web/dashboard.html
- `??` boc/Makefile
- `??` boc/web/automation.html
<!-- memory-saver:31353d8b1fc8502b -->
## 2026-07-12 10:20 UTC
- ` M` boc/README.md
<!-- memory-saver:8eda0647a3f11a08 -->
## 2026-07-12 10:30 UTC
- `??` boc/backend/cache/
- `??` boc/backend/events/
<!-- memory-saver:e0a586b128fbb26a -->
## 2026-07-12 10:40 UTC
- ` M` boc/backend/config/config.go
- `??` boc/deploy.sh
- `??` boc/nginx/
<!-- memory-saver:3f137291b02ace42 -->
## 2026-07-12 10:45 UTC
- `??` boc/docs/
<!-- memory-saver:52d09ac25042279c -->
## 2026-07-12 10:50 UTC
- `??` boc/backend/handlers/quotes.go
- `??` boc/backend/handlers/suppliers.go
<!-- memory-saver:0adef6751e61244b -->
## 2026-07-12 10:55 UTC
- `??` boc/backend/handlers/inventory.go
- `??` boc/backend/handlers/projects.go
- `??` boc/backend/handlers/receipts.go
- `??` boc/backend/handlers/subscriptions.go
<!-- memory-saver:1b51356b2d6051df -->
## 2026-07-12 11:00 UTC
- `??` boc/backend/handlers/bank.go
- `??` boc/backend/handlers/orders.go
- `??` boc/backend/handlers/payroll.go
<!-- memory-saver:dcb49f8209f5e07f -->
## 2026-07-12 11:05 UTC
- `??` boc/backend/handlers/handlers_test.go
- `??` boc/backend/integration_test.go
+8
View File
@@ -0,0 +1,8 @@
# Docs
<!-- memory-saver:a58fbb93f7512a06 -->
## 2026-07-11 09:34 UTC
- `??` docs/COMMUNICATION_GUIDELINES.md
- `??` docs/PITCH_DECK.md
- `??` docs/VALUE_PROPOSITION.md
+17
View File
@@ -0,0 +1,17 @@
# Landvex-articles
<!-- memory-saver:bbe1da077fb24c94 -->
## 2026-07-11 09:34 UTC
- ` D` landvex-articles/contributors/how-missions-work/index.html
- ` D` landvex-articles/contributors/index.html
- ` D` landvex-articles/insights/calculate-cost-of-stale-data/index.html
- ` D` landvex-articles/insights/continuous-monitoring-vs-periodic-inspection/index.html
- ` D` landvex-articles/insights/crowdsourced-vs-traditional-field-research/index.html
- ` D` landvex-articles/insights/evidence-driven-municipal-maintenance/index.html
- ` D` landvex-articles/insights/how-the-consensus-engine-works/index.html
- ` D` landvex-articles/insights/index.html
- ` D` landvex-articles/insights/pre-loss-surveys-insurance/index.html
- ` D` landvex-articles/insights/real-estate-due-diligence-observed-reality/index.html
- ` D` landvex-articles/insights/retail-site-selection-data/index.html
- ` D` landvex-articles/insights/what-is-a-city-health-index/index.html
+16
View File
@@ -0,0 +1,16 @@
# Landvex-bokforing
<!-- memory-saver:5fc65cef7037fcbc -->
## 2026-07-11 09:34 UTC
- ` D` landvex-bokforing/INDEX.md
- ` D` landvex-bokforing/dashboard-source.html
- ` D` landvex-bokforing/dokument/KPMG-UNDERLAG-LANDVEX-2026.md
- ` D` landvex-bokforing/dokument/LANDVEX-EKONOMI-KOMPLETT-2026.pdf
- ` D` landvex-bokforing/dokument/LEON-BEVISMATERIAL-2026.md
- ` D` landvex-bokforing/dokument/LEON-KRAVBREV-UTKAST-2026.md
- ` D` landvex-bokforing/kalldata/erik_privat.csv
- ` D` landvex-bokforing/kalldata/eur_parsed.json
- ` D` landvex-bokforing/kalldata/kvitton_erik.json
- ` D` landvex-bokforing/kalldata/leon_txs.json
- ` D` landvex-bokforing/kalldata/privat_tx.json
+33
View File
@@ -0,0 +1,33 @@
# Landvex-fix
<!-- memory-saver:d934d7686d15da30 -->
## 2026-07-11 09:34 UTC
- ` D` landvex-fix/about.html
- ` D` landvex-fix/blog.html
- ` D` landvex-fix/careers.html
- ` D` landvex-fix/cities-london.html
- ` D` landvex-fix/cities-stockholm.html
- ` D` landvex-fix/comparison.html
- ` D` landvex-fix/compliance.html
- ` D` landvex-fix/dpa.html
- ` D` landvex-fix/enterprise.html
- ` D` landvex-fix/fix_canonicals.py
- ` D` landvex-fix/fix_landvex.py
- ` D` landvex-fix/homepage.html
- ` D` landvex-fix/intelligence-map.html
- ` D` landvex-fix/intelligence.html
- ` D` landvex-fix/methodology.html
- ` D` landvex-fix/pilot.html
- ` D` landvex-fix/privacy.html
- ` D` landvex-fix/remove_hreflang.py
- ` D` landvex-fix/remove_verticals_links.py
- ` D` landvex-fix/reports-real.html
- ` D` landvex-fix/reports.html
- ` D` landvex-fix/security.html
- ` D` landvex-fix/sla.html
- ` D` landvex-fix/stockholm-intelligence.html
- ` D` landvex-fix/terms.html
- ` D` landvex-fix/trust.html
- ` D` landvex-fix/use-cases.html
- ` D` landvex-fix/verticals.html
+6
View File
@@ -0,0 +1,6 @@
# Landvex-landing
<!-- memory-saver:0e95830bf2f89ede -->
## 2026-07-11 09:34 UTC
- ` D` landvex-landing/index.html
+38
View File
@@ -0,0 +1,38 @@
# Landvex-market-pages
<!-- memory-saver:0849f57f5924dda3 -->
## 2026-07-11 09:34 UTC
- ` D` landvex-market-pages/cities/amsterdam/index.html
- ` D` landvex-market-pages/cities/bangkok/index.html
- ` D` landvex-market-pages/cities/bangkok/trends.html
- ` D` landvex-market-pages/cities/berlin/index.html
- ` D` landvex-market-pages/cities/berlin/trends.html
- ` D` landvex-market-pages/cities/brussels/index.html
- ` D` landvex-market-pages/cities/copenhagen/index.html
- ` D` landvex-market-pages/cities/helsinki/index.html
- ` D` landvex-market-pages/cities/london/index.html
- ` D` landvex-market-pages/cities/london/trends.html
- ` D` landvex-market-pages/cities/oslo/index.html
- ` D` landvex-market-pages/cities/paris/index.html
- ` D` landvex-market-pages/cities/stockholm/index.html
- ` D` landvex-market-pages/cities/stockholm/trends.html
- ` D` landvex-market-pages/cities/vienna/index.html
- ` D` landvex-market-pages/cities/zurich/index.html
- ` D` landvex-market-pages/de/commercial-intelligence/index.html
- ` D` landvex-market-pages/de/contradiction-analysis/index.html
- ` D` landvex-market-pages/de/infrastructure-intelligence/index.html
- ` D` landvex-market-pages/de/risk-intelligence/index.html
- ` D` landvex-market-pages/de/urban-intelligence/index.html
- ` D` landvex-market-pages/design-tokens.css
- ` D` landvex-market-pages/se/commercial-intelligence/index.html
- ` D` landvex-market-pages/se/contradiction-analysis/index.html
- ` D` landvex-market-pages/se/infrastructure-intelligence/index.html
- ` D` landvex-market-pages/se/risk-intelligence/index.html
- ` D` landvex-market-pages/se/urban-intelligence/index.html
- ` D` landvex-market-pages/template-city-intelligence/index.html
- ` D` landvex-market-pages/uk/commercial-intelligence/index.html
- ` D` landvex-market-pages/uk/contradiction-analysis/index.html
- ` D` landvex-market-pages/uk/infrastructure-intelligence/index.html
- ` D` landvex-market-pages/uk/risk-intelligence/index.html
- ` D` landvex-market-pages/uk/urban-intelligence/index.html
+56
View File
@@ -0,0 +1,56 @@
# Landvex-paket
<!-- memory-saver:d19fce5d724b8b28 -->
## 2026-07-11 09:34 UTC
- ` D` landvex-paket/API_README.md
- ` D` landvex-paket/AUDIT.md
- ` D` landvex-paket/README.md
- ` D` landvex-paket/STATUS.md
- ` D` landvex-paket/STRATEGI_GRANSKNING.md
- ` D` landvex-paket/api/FAS1_STATUS.md
- ` D` landvex-paket/api/auth.py
- ` D` landvex-paket/api/feedback/feedback_2026-07-07.jsonl
- ` D` landvex-paket/api/main.py
- ` D` landvex-paket/api/rate_limit.py
- ` D` landvex-paket/api/run.sh
- ` D` landvex-paket/bounties/.venv/bin/Activate.ps1
- ` D` landvex-paket/bounties/.venv/bin/activate
- ` D` landvex-paket/bounties/.venv/bin/activate.csh
- ` D` landvex-paket/bounties/.venv/bin/activate.fish
- ` D` landvex-paket/bounties/.venv/bin/dotenv
- ` D` landvex-paket/bounties/.venv/bin/fastapi
- ` D` landvex-paket/bounties/.venv/bin/idna
- ` D` landvex-paket/bounties/.venv/bin/pip
- ` D` landvex-paket/bounties/.venv/bin/pip3
- ` D` landvex-paket/bounties/.venv/bin/pip3.9
- ` D` landvex-paket/bounties/.venv/bin/python
- ` D` landvex-paket/bounties/.venv/bin/python3
- ` D` landvex-paket/bounties/.venv/bin/python3.9
- ` D` landvex-paket/bounties/.venv/bin/uvicorn
- ` D` landvex-paket/bounties/.venv/bin/watchfiles
- ` D` landvex-paket/bounties/.venv/bin/websockets
- ` D` landvex-paket/bounties/.venv/lib/python3.9/site-packages/_distutils_hack/__init__.py
- ` D` landvex-paket/bounties/.venv/lib/python3.9/site-packages/_distutils_hack/override.py
- ` D` landvex-paket/bounties/.venv/lib/python3.9/site-packages/_yaml/__init__.py
- ` D` landvex-paket/bounties/.venv/lib/python3.9/site-packages/annotated_doc-0.0.4.dist-info/INSTALLER
- ` D` landvex-paket/bounties/.venv/lib/python3.9/site-packages/annotated_doc-0.0.4.dist-info/METADATA
- ` D` landvex-paket/bounties/.venv/lib/python3.9/site-packages/annotated_doc-0.0.4.dist-info/RECORD
- ` D` landvex-paket/bounties/.venv/lib/python3.9/site-packages/annotated_doc-0.0.4.dist-info/WHEEL
- ` D` landvex-paket/bounties/.venv/lib/python3.9/site-packages/annotated_doc-0.0.4.dist-info/entry_points.txt
- ` D` landvex-paket/bounties/.venv/lib/python3.9/site-packages/annotated_doc-0.0.4.dist-info/licenses/LICENSE
- ` D` landvex-paket/bounties/.venv/lib/python3.9/site-packages/annotated_doc/__init__.py
- ` D` landvex-paket/bounties/.venv/lib/python3.9/site-packages/annotated_doc/main.py
- ` D` landvex-paket/bounties/.venv/lib/python3.9/site-packages/annotated_doc/py.typed
- ` D` landvex-paket/bounties/.venv/lib/python3.9/site-packages/annotated_types-0.7.0.dist-info/INSTALLER
- ` D` landvex-paket/bounties/.venv/lib/python3.9/site-packages/annotated_types-0.7.0.dist-info/METADATA
- ` D` landvex-paket/bounties/.venv/lib/python3.9/site-packages/annotated_types-0.7.0.dist-info/RECORD
- ` D` landvex-paket/bounties/.venv/lib/python3.9/site-packages/annotated_types-0.7.0.dist-info/WHEEL
- ` D` landvex-paket/bounties/.venv/lib/python3.9/site-packages/annotated_types-0.7.0.dist-info/licenses/LICENSE
- ` D` landvex-paket/bounties/.venv/lib/python3.9/site-packages/annotated_types/__init__.py
- ` D` landvex-paket/bounties/.venv/lib/python3.9/site-packages/annotated_types/py.typed
- ` D` landvex-paket/bounties/.venv/lib/python3.9/site-packages/annotated_types/test_cases.py
- ` D` landvex-paket/bounties/.venv/lib/python3.9/site-packages/anyio-4.12.1.dist-info/INSTALLER
- ` D` landvex-paket/bounties/.venv/lib/python3.9/site-packages/anyio-4.12.1.dist-info/METADATA
- ` D` landvex-paket/bounties/.venv/lib/python3.9/site-packages/anyio-4.12.1.dist-info/RECORD
- ... and 1232 more files
+24
View File
@@ -0,0 +1,24 @@
# Landvex-quixzoom-cms
<!-- memory-saver:2867609295cb2468 -->
## 2026-07-11 09:34 UTC
- ` D` landvex-quixzoom-cms/.env.example
- ` D` landvex-quixzoom-cms/README.md
- ` D` landvex-quixzoom-cms/package.json
- ` D` landvex-quixzoom-cms/public/index.html
- ` D` landvex-quixzoom-cms/src/config/sites.ts
- ` D` landvex-quixzoom-cms/src/db/index.ts
- ` D` landvex-quixzoom-cms/src/db/migrate.ts
- ` D` landvex-quixzoom-cms/src/db/schema.ts
- ` D` landvex-quixzoom-cms/src/db/seed.ts
- ` D` landvex-quixzoom-cms/src/lib/auth.ts
- ` D` landvex-quixzoom-cms/src/routes/api.ts
- ` D` landvex-quixzoom-cms/src/scripts/batch-translate.ts
- ` D` landvex-quixzoom-cms/src/scripts/seo-audit.ts
- ` D` landvex-quixzoom-cms/src/scripts/sync-content.ts
- ` D` landvex-quixzoom-cms/src/server.ts
- ` D` landvex-quixzoom-cms/src/services/ai-transcreation.ts
- ` D` landvex-quixzoom-cms/src/services/content-workflow.ts
- ` D` landvex-quixzoom-cms/src/services/seo-service.ts
- ` D` landvex-quixzoom-cms/tsconfig.json
+38
View File
@@ -0,0 +1,38 @@
# Landvex-report-system
<!-- memory-saver:1cafa2b51565abd5 -->
## 2026-07-11 09:34 UTC
- ` D` landvex-report-system/.env.example
- ` D` landvex-report-system/config/database.js
- ` D` landvex-report-system/config/redis.js
- ` D` landvex-report-system/package-lock.json
- ` D` landvex-report-system/package.json
- ` D` landvex-report-system/src/app.js
- ` D` landvex-report-system/src/controllers/productInputController.js
- ` D` landvex-report-system/src/controllers/reportController.js
- ` D` landvex-report-system/src/models/Analysis.js
- ` D` landvex-report-system/src/models/AuditLog.js
- ` D` landvex-report-system/src/models/Delivery.js
- ` D` landvex-report-system/src/models/Feedback.js
- ` D` landvex-report-system/src/models/ProductInput.js
- ` D` landvex-report-system/src/models/Report.js
- ` D` landvex-report-system/src/models/SensorData.js
- ` D` landvex-report-system/src/models/index.js
- ` D` landvex-report-system/src/queues/reportQueue.js
- ` D` landvex-report-system/src/queues/worker.js
- ` D` landvex-report-system/src/routes/index.js
- ` D` landvex-report-system/src/sensors/BaseSensor.js
- ` D` landvex-report-system/src/sensors/GoogleTrendsSensor.js
- ` D` landvex-report-system/src/sensors/NationalStatisticsSensor.js
- ` D` landvex-report-system/src/sensors/PatentSensor.js
- ` D` landvex-report-system/src/sensors/QuixzoomSensor.js
- ` D` landvex-report-system/src/sensors/SocialMediaSensor.js
- ` D` landvex-report-system/src/sensors/StatistaSensor.js
- ` D` landvex-report-system/src/sensors/WebScrapingSensor.js
- ` D` landvex-report-system/src/sensors/index.js
- ` D` landvex-report-system/src/services/AnalysisService.js
- ` D` landvex-report-system/src/services/AuditService.js
- ` D` landvex-report-system/src/services/DeliveryService.js
- ` D` landvex-report-system/src/services/ReportService.js
- ` D` landvex-report-system/src/utils/logger.js
+46
View File
@@ -0,0 +1,46 @@
# Landvex-site
<!-- memory-saver:9addbca8c19bda9a -->
## 2026-07-11 09:34 UTC
- ` M` landvex-site/enterprise/index.html
- ` M` landvex-site/index.html
- ` M` landvex-site/insights/index.html
- ` M` landvex-site/pilot/index.html
- ` M` landvex-site/privacy/index.html
- ` M` landvex-site/reality-alerts/index.html
- ` M` landvex-site/reports/index.html
- ` M` landvex-site/sla/index.html
- ` M` landvex-site/vims/index.html
- `??` landvex-site/atm-monitoring/
- `??` landvex-site/comparison/
- `??` landvex-site/developers/
- `??` landvex-site/insights/atm-maintenance-predictive/
- `??` landvex-site/insights/atm-network-optimization/
- `??` landvex-site/insights/atm-security-assessment/
- `??` landvex-site/insights/bank-branch-field-intelligence/
- `??` landvex-site/insights/building-trust-in-crowdsourced-data/
- `??` landvex-site/insights/cash-access-urban-deserts/
- `??` landvex-site/insights/field-data-vs-satellite-imagery/
- `??` landvex-site/insights/from-observation-to-action/
- `??` landvex-site/insights/how-landvex-validates-observations/
- `??` landvex-site/insights/how-to-measure-urban-decay/
- `??` landvex-site/insights/the-cost-of-unverified-infrastructure-data/
- `??` landvex-site/insights/the-economics-of-preventive-maintenance/
- `??` landvex-site/insights/the-future-of-infrastructure-monitoring/
- `??` landvex-site/insights/the-problem-with-official-statistics/
- `??` landvex-site/insights/why-cities-need-field-intelligence/
- `??` landvex-site/missions/
- `??` landvex-site/quixzoom/
- `??` landvex-site/why-landvex.html
- `??` landvex-site/zoomers/
<!-- memory-saver:a2cd01ec5d620127 -->
## 2026-07-12 10:00 UTC
- `??` landvex-site/position/
<!-- memory-saver:154c949ace4aff1d -->
## 2026-07-12 11:00 UTC
- ` M` landvex-site/press/index.html
+6
View File
@@ -0,0 +1,6 @@
# Life-weather
<!-- memory-saver:7db8965933eaab54 -->
## 2026-07-11 09:34 UTC
- ` M` life-weather/metrics.json
+14
View File
@@ -0,0 +1,14 @@
# Projects
<!-- memory-saver:8c625809e8087169 -->
## 2026-07-11 09:34 UTC
- ` M` projects/landvex/20-automation/intag/kontrollintelligens_ko.json
- `??` projects/landvex/20-automation/intag/kandidatposter-2026-07-09-aamos.json
- `??` projects/landvex/20-automation/intag/kandidatposter-2026-07-10-aamos.json
- `??` projects/landvex/20-automation/intag/kandidatposter-2026-07-11-aamos.json
<!-- memory-saver:09485e9e35cf638e -->
## 2026-07-12 00:00 UTC
- `??` projects/landvex/20-automation/intag/kandidatposter-2026-07-12-aamos.json
+20
View File
@@ -0,0 +1,20 @@
# Quixzoom-landing-fixed
<!-- memory-saver:ce126041312a9c75 -->
## 2026-07-11 09:34 UTC
- ` M` quixzoom-landing-fixed/join.html
- ` M` quixzoom-landing-fixed/locale-data.js
- ` M` quixzoom-landing-fixed/sweden-launch.html
<!-- memory-saver:0a72b47df5c81f9f -->
## 2026-07-12 11:50 UTC
- `??` quixzoom-landing-fixed/order/
<!-- memory-saver:6595d6a43c186604 -->
## 2026-07-12 11:55 UTC
- ` M` quixzoom-landing-fixed/earn/index.html
- ` M` quixzoom-landing-fixed/index.html
- ` M` quixzoom-landing-fixed/pricing.html
+18
View File
@@ -0,0 +1,18 @@
# Quixzoom
<!-- memory-saver:93ae0420b4572399 -->
## 2026-07-11 09:34 UTC
- ` M` iom/quixzoom-app/package.json
- ` M` iom/quixzoom-app/src/navigation/AppNavigator.tsx
- ` M` quixzoom-index.html
- `??` docs/QUIXZOOM_PRODUCT_ARCHITECTURE.md
- `??` iom/quixzoom-app/src/screens/
- `??` quixzoom-com-locales/
- `??` quixzoom-deploy.service
- `??` quixzoom-handle-registration.md
- `??` quixzoom-seo-action-plan.md
- `??` quixzoom-seo-asia.md
- `??` quixzoom-seo-status.md
- `??` quixzoom-shop/
- `??` quixzoom-token-system/
+11
View File
@@ -0,0 +1,11 @@
# Vims-backend
<!-- memory-saver:da2bea6e69c22b6d -->
## 2026-07-11 09:34 UTC
- ` M` vims-backend/docker-compose.yml
- ` M` vims-backend/src/index-simple.js
- ` M` vims-backend/src/index.js
- ` M` vims-backend/src/models/index.js
- `??` vims-backend/.env.local
- `??` vims-backend/docs/PRODUCT_POSITIONING.md