Tech stack
We pick boring, proven technology and spend the innovation budget on the AI layer. Every choice below optimizes for the same things we promise clients: reliability, auditability, and systems a small team can actually operate.
Web applications
| Layer | Technology | Why |
|---|---|---|
| Framework | Next.js (App Router) + React + TypeScript | One framework across every property; server components keep client bundles small |
| Hosting | Vercel | Push-to-deploy, preview URLs per pull request, zero ops |
| Styling | Tailwind CSS + shadcn/ui (apps); design-token CSS (this site) | Speed in apps; full control where brand matters |
| Testing | Playwright + Vitest | End-to-end checks gate every deploy |
Backend services
Python services run on Railway, deliberately separate from the web tier:
| Service | Job |
|---|---|
| Knowledge-base API | Search, ingestion, and agent memory over the agency knowledge vault |
| Text embedder | Converts text to vectors for semantic search |
| Quality worker | Background jobs: message scoring, quality alerts, cleanup |
| Lead-gen pipeline | Webhook-driven execution of the automation pipeline — reply detection through deck generation |
Data
| Concern | Choice |
|---|---|
| Database | Supabase (PostgreSQL) — one master instance for auth and internal data, one isolated instance per client |
| Isolation | Client data never shares a database with other clients; row-level security inside each instance |
| Vectors | pgvector for semantic search and agent memory |
AI layer
Model-agnostic by architecture: AI vendors (typically Anthropic and OpenAI) are called from the orchestration layer only, behind the DOE framework. Models make decisions; deterministic Python executes them. Swapping a model is a configuration change, not a rebuild.
Why this matters to clients
This is the same stack we deploy for client builds. When we say your team can operate what we hand over, it’s because the stack is learnable: one web framework, one database, plain Python, and documentation like this page.
Next steps
- Repositories — where each piece lives
- Knowledge base — the system our agents learn from