Skip to main content

Our AI stack

What we build with, and why. We choose tools for your constraints, not ours — this is our default starting point.

Models

  • Anthropic Claude — long documents, careful reasoning, coding and agentic work

  • OpenAI GPT — broad ecosystem, also available through Azure OpenAI

  • Google Gemini — multimodal work and teams already on Google Cloud

  • Open-weight models (Llama, Mistral, Qwen) — when data must never leave your infrastructure

We are model-agnostic. We pick per task on evaluation results, cost and your data constraints, and design so a model can be swapped without a rewrite.

Orchestration & agents

  • Plain Python services with the providers' official SDKs

  • Tool calling and structured output for reliable integration

  • Model Context Protocol (MCP) for reusable tool and data connectors

We keep orchestration thin and readable. Frameworks are used where they earn their place, not by default.

Retrieval & data

  • PostgreSQL with pgvector as the default vector store

  • Hybrid keyword + semantic search with re-ranking

  • Permission-aware retrieval that respects your existing access rules

Most retrieval problems are solved by better chunking and ranking, not a new database. We add a dedicated vector engine only when scale demands it.

Quality, evals & observability

  • Evaluation sets built from your real cases, run in CI

  • Request tracing, cost and latency tracking per feature

  • Prompt and model versioning with regression checks

If you cannot measure it, you cannot safely change it. Every system ships with evals and tracing.

Application & infrastructure

  • Python / FastAPI back ends, React / TypeScript front ends

  • Docker; deployed to AWS, Azure or GCP — in your account where required

  • CI/CD, infrastructure as code, audit logging

Boring, well-understood infrastructure your team can own after handover.

Already have a stack?

We work inside your existing cloud, models and tooling. See how we handle your data on our security page.