Investment Intelligence Platform for Sackson Capital Partners
KAZI is a closed, invite-only platform that enables SCP's investment team, co-investors, and sponsored search fund operators to manage deals, track portfolio entities, and act on AI-powered intelligence across Africa and Asia.
Monorepo structure with Turborepo orchestration:
kazi-platform/
├── apps/
│ ├── api/ # NestJS backend (REST + WebSocket)
│ ├── mobile/ # React Native/Expo mobile app
│ └── admin/ # Next.js admin dashboard (in development)
├── packages/
│ ├── ai-agents/ # LangGraph AI agents (5 specialized agents)
│ ├── shared-types/ # TypeScript type definitions
│ ├── config/ # Shared configuration
│ └── ui-components/ # Shared React components
└── infrastructure/ # Terraform IaC for Azure
Map → Signal → Originate → Analyze → Execute → Own → Report
- Signal Scout — Daily intelligence briefs from 100+ sources
- Deal Analyst — Automated deal screening and risk flagging
- Portfolio Monitor — KPI anomaly detection
- Report Writer — Draft quarterly and EITI compliance reports
- Deal Coach — Conversational AI for search fund operators
- Tier 1 (Principal): Full platform access
- Tier 2 (Partner): Deal + portfolio, no system admin
- Tier 3 (Operator): Search fund operators, Deal Coach access
- Tier 4 (Portfolio): Read-only portfolio KPI submission
- WebSocket live updates
- Push notifications
- Team assignment and mentions
- Audit trail for all changes
- Node.js: 20.x or later
- npm: 10.x or later
- PostgreSQL: 15 or later
- Redis: 6.x or later
- Azure CLI (for deployment)
- Docker (for local storage emulation)
# Clone repository
git clone https://github.com/sackson-capital/kazi-platform.git
cd kazi-platform
# Install dependencies
npm ci
# Start local storage emulator (Azurite)
npm run storage:dev --workspace=apps/api# API
cp apps/api/.env.example apps/api/.env
# Edit apps/api/.env with your credentials
# Mobile (optional for local dev)
cp apps/mobile/.env.example apps/mobile/.envRequired secrets:
DATABASE_URL— PostgreSQL connection stringREDIS_HOST,REDIS_PASSWORD— Azure RedisJWT_SECRET,JWT_PRE_MFA_SECRET— 64-char random stringsANTHROPIC_API_KEY— Claude API keyOPENAI_API_KEY— OpenAI embeddingsPINECONE_API_KEY— Vector database
cd apps/api
npx prisma migrate dev
npx prisma db seed # Creates initial admin user# Start all services in parallel (API + Mobile)
npm run dev
# Or individually:
npm run dev --workspace=apps/api # API at http://localhost:3000
npm run dev --workspace=apps/mobile # Expo dev server# Run all tests
npm test
# API unit tests only
npm run test:unit --workspace=apps/api
# Integration tests (requires running DB)
npm run test:integration --workspace=apps/api- Push to
develop→ Auto-deploys to staging - Push to
main→ Requires approval, deploys to production
See DEPLOYMENT.md for complete setup instructions.
docker build -t kazi-api:latest -f apps/api/Dockerfile .
docker run -p 3000:3000 --env-file apps/api/.env kazi-api:latestcd apps/mobile
# iOS build
eas build --platform ios --profile production
# Android build
eas build --platform android --profile production
# OTA update (no rebuild)
eas update --branch production --message "Fix critical bug"| Document | Description |
|---|---|
| DEPLOYMENT.md | Complete deployment guide for Azure |
| CHANGELOG.md | Version history and release notes |
| ARCHITECTURE.md | System design and technical decisions |
| API_DOCS.md | REST API reference (Swagger at /api/docs) |
| AI_AGENTS.md | AI agent decision trees and prompts |
- Framework: NestJS 10.3
- Database: PostgreSQL 15 (Azure Flexible Server)
- Cache: Redis 6 (Azure Cache for Redis)
- Queue: Bull (Redis-backed)
- ORM: Prisma 5.10
- Auth: Passport.js, JWT, Speakeasy (MFA)
- Framework: React Native 0.76
- Navigation: Expo Router 4.0
- State: Zustand + React Query
- Offline: WatermelonDB (v1.1)
- Maps: Mapbox GL
- Notifications: OneSignal
- Orchestration: LangGraph 0.1
- LLM: Anthropic Claude 3.5 Sonnet
- Embeddings: OpenAI text-embedding-3-small
- Vector DB: Pinecone
- Observability: LangSmith
- Cloud: Azure (Container Apps, PostgreSQL, Redis, Blob Storage)
- CI/CD: Azure DevOps Pipelines
- IaC: Terraform
- Monitoring: Azure Application Insights (planned v1.1)
- Authentication: JWT access tokens (15min) + refresh tokens (7 days)
- MFA: TOTP-based, secrets encrypted via AWS KMS in production
- Authorization: Row-level with 4-tier RBAC
- Secrets: Azure Key Vault
- Network: TLS 1.2+ for all connections, Redis TLS on port 6380
- Audit: Full audit log for all CRUD operations
Vulnerability Disclosure: security@sacksonfund.com
This is a private repository for Sackson Capital Partners. External contributions are not accepted.
- Create feature branch from
develop:git checkout -b feat/signal-scout-improvements - Make changes, write tests
- Run linter:
npm run lint - Run type check:
npm run type-check - Create PR to
develop - After staging verification, create PR from
developtomain
Follow Conventional Commits:
feat: add voice note transcription
fix: correct KPI calculation for EITI scope
chore: update Anthropic SDK to 0.24.3
docs: add AI agent decision tree diagrams
- Version: 1.0.0 (Production Release)
- Last Updated: May 25, 2026
- Active Development: ✅ Yes
- Production Status: ✅ Deployed on Azure
- Mobile Apps: 🟡 TestFlight (iOS), Internal Testing (Android)
v1.1.0 (July 2026)
- Offline-first mobile sync
- Voice notes with transcription
- AI explainability dashboard
- WhatsApp signal integration
- Sentry error tracking
- 60% test coverage
v1.2.0 (September 2026)
- Deal network graph (Neo4j)
- Automated EITI reports
- Multi-agent collaboration
- Predictive deal scoring
See CHANGELOG.md for full version history.
| Role | Contact |
|---|---|
| DevOps Lead | devops@sacksonfund.com |
| Database Admin | dba@sacksonfund.com |
| Security Officer | security@sacksonfund.com |
| Mobile Lead | mobile@sacksonfund.com |
API won't start:
# Check logs
docker logs <container-id>
# Or on Azure
az containerapp logs show --name kazi-api-production -g kazi-rg --tail 100Mobile app won't connect:
- Check
apps/mobile/.envfor correct API URL - Verify network connectivity
- Clear Expo cache:
expo start -c
Database migration fails:
- Ensure PostgreSQL firewall allows your IP
- Check
DATABASE_URLis correct - Run
npx prisma generatefirst
Proprietary — All Rights Reserved
© 2026 Sackson Capital Partners. This software is proprietary and confidential. Unauthorized access, use, or distribution is prohibited.
Built with:
Last Updated: May 25, 2026
Maintained by: Sackson Capital Partners DevOps Team