# Konstruct

## What This Is

Konstruct is an AI workforce platform where SMBs subscribe to AI employees that communicate through familiar messaging channels — Slack and WhatsApp for v1. Clients get an AI worker that shows up where their team already communicates, requiring zero behavior change. Think "hire an AI department" rather than "subscribe to another SaaS dashboard."

## Core Value

An AI employee that works in the channels your team already uses — no new tools to learn, no dashboards to check, just a capable coworker in Slack or WhatsApp.

## Requirements

### Validated

(None yet — ship to validate)

### Active

- [ ] Channel Gateway that normalizes messages from Slack and WhatsApp into a unified internal format
- [ ] Single AI employee per tenant with configurable role, persona, and tools
- [ ] Multi-tenant architecture with proper isolation (PostgreSQL RLS for Starter tier)
- [ ] LLM backend pool with Ollama (local) + commercial APIs (Anthropic/OpenAI) via LiteLLM
- [ ] Full admin portal (Next.js) for tenant management, agent configuration, and monitoring
- [ ] Tenant onboarding flow in the portal
- [ ] Billing integration (Stripe) for subscription management
- [ ] Conversational memory (conversation history + vector search)
- [ ] Tool framework for agent capabilities (registry, execution)
- [ ] Rate limiting per tenant and per channel

### Out of Scope

- Multi-agent teams and coordinator pattern — v2 (need single agent working first)
- AI company hierarchy (teams of teams) — v2+
- Microsoft Teams, Mattermost, Rocket.Chat, Signal, Telegram — v2 channel expansion
- BYO API key support — moved to v1 Phase 3 (operator requested during scoping)
- Self-hosted deployment (Helm chart) — v2+ (SaaS-first for beta)
- Voice/telephony channels — v3+
- Agent marketplace / pre-built templates — v3+
- SOC 2 / HIPAA compliance — post-revenue
- White-labeling for agencies — future consideration

## Context

- **Market gap:** Existing AI tools are dashboards or chatbots, not channel-native workers. No coordinated AI teams. No self-hosted options for enterprises. Konstruct addresses all three.
- **Target customer:** SMBs that need additional staff capacity but lack resources, are overwhelmed with processes, or want to grow faster but can't find the right balance.
- **Inspiration:** paperclip.ing — but differentiated by channel-native presence, tiered multi-tenancy, and eventual BYO-model support.
- **V1 goal:** Beta-ready product that can accept early users. One AI employee per tenant on Slack + WhatsApp, managed through a full admin portal, with multi-tenancy and billing.
- **Tech foundation:** Python (FastAPI) backend, Next.js portal, PostgreSQL + Redis, Docker Compose for dev, monorepo structure.

## Constraints

- **Tech stack:** Python 3.12+ (FastAPI, SQLAlchemy 2.0, Pydantic v2), Next.js 14+ (App Router, shadcn/ui), PostgreSQL 16, Redis — as specified in CLAUDE.md
- **V1 channels:** Slack (slack-bolt) + WhatsApp (Business Cloud API) only
- **LLM providers:** Ollama (local) + Anthropic/OpenAI (commercial) via LiteLLM — no BYO in v1
- **Multi-tenancy:** PostgreSQL RLS for v1 (Starter tier), schema isolation deferred to v2
- **Deployment:** Docker Compose for dev, single-server deployment for beta — Kubernetes deferred

## Key Decisions

| Decision | Rationale | Outcome |
|----------|-----------|---------|
| Slack + WhatsApp for v1 channels | Slack = where SMB teams work, WhatsApp = massive business communication reach | — Pending |
| Single agent per tenant for v1 | Prove the channel-native thesis before adding team complexity | — Pending |
| Full portal from day one | Beta users need a proper UI, not config files — lowers barrier to adoption | — Pending |
| Local + commercial LLMs | Ollama for dev/cheap tasks, commercial APIs for quality — balances cost and capability | — Pending |
| PostgreSQL RLS multi-tenancy | Simplest to start, sufficient for Starter tier, upgrade path to schema isolation exists | — Pending |
| Beta-ready as v1 target | Multi-tenancy + billing = can accept real users, not just demos | — Pending |

---
*Last updated: 2026-03-22 after initialization*
