Technologies we actually use
78 tools across 9 disciplines — chosen for the job in front of us, and structured so the choice can change later without a rewrite.
AI & LLMs
15We stay deliberately model-agnostic. Every model call sits behind one internal interface, so switching provider — or moving a workload onto self-hosted Ollama because the data cannot leave your network — is a configuration change rather than a refactor.
- OpenAI
- Anthropic Claude
- Google Gemini
- DeepSeek
- Meta Llama
- Mistral AI
- Alibaba Qwen
- Moonshot Kimi
- Nous Hermes
- xAI Grok
- Ollama
- Whisper
- Hugging Face
- LangChain
- LlamaIndex
AI Automation
8n8n is the automation core because it self-hosts, prices by execution rather than per task, and has native AI agent nodes. MCP gives assistants typed, audited access to your systems instead of a bespoke integration per tool.
- n8n
- Model Context Protocol
- WhatsApp Business Cloud
- Slack API
- Google Workspace
- Webhooks
- Zapier
- Make
Vector & Search
8Retrieval quality sets the ceiling on any AI assistant built above it. We pick the store against your corpus — pgvector when Postgres is already there and the scale suits it, Qdrant when payload filtering and quantisation start to matter.
- Qdrant
- pgvector
- Pinecone
- Weaviate
- Chroma
- Milvus
- FAISS
- Elasticsearch
Backend
12Laravel is our default for business applications: fast to build, and still legible to a developer who joins in year three. Node and Python join it where the workload genuinely suits them.
- Laravel
- PHP
- Node.js
- Python
- Django
- FastAPI
- Express
- CodeIgniter
- Symfony
- Livewire
- REST API
- GraphQL
Frontend
8Next.js and React with TypeScript, rendered on the server wherever content needs to be found by a crawler. Tailwind keeps spacing and colour decisions in a system rather than in each component.
- React
- Next.js
- TypeScript
- Tailwind CSS
- Angular
- Vue.js
- Nuxt
- shadcn/ui
Mobile
7Flutter where one codebase can honestly serve both platforms, native Kotlin and Swift where deep OS integration or demanding graphics mean it cannot. We choose against your feature list, not a house preference.
- Flutter
- Android
- iOS (Swift)
- Kotlin
- React Native
- Ionic
- Draftbit
Database
6MySQL and PostgreSQL for relational work, with deliberate indexing rather than defaults. Redis does the caching, queues, rate limiting and conversation memory our AI work leans on heavily.
- MySQL
- PostgreSQL
- MongoDB
- Redis
- Firebase
- SQLite
Cloud & DevOps
8Docker for parity between local and production, GitHub Actions for CI/CD, and boring well-understood infrastructure over novel architecture. Most products do not need Kubernetes, and we will say so.
- AWS
- Docker
- GitHub Actions
- Nginx
- Vercel
- Kubernetes
- Terraform
- Cloudflare
E-Commerce & CMS
6Platforms earn their place when they absorb work you should not rebuild — payments, tax and PCI compliance on Shopify, editorial workflow on WordPress. We recommend the platform when it is genuinely the cheaper answer.
- Shopify
- WooCommerce
- WordPress
- Magento
- Strapi
- Stripe
How we choose
The boring option, usually. Novel architecture is a recurring operational cost that somebody has to carry after we leave. We size the tooling to the team that will run it, which is why we talk most teams out of Kubernetes rather than into it.
Benchmarked, not assumed. Model and embedding choices are measured against your task and your evaluation set, not against public leaderboards — domain vocabulary reorders those results more than people expect.
Replaceable by design. AI providers trade places constantly. The abstraction lives in your codebase, so a model swap is a config change and a provider outage degrades a feature instead of taking the product down.
Yours to keep. Your repository, your cloud account, your data. We self-host where residency or cost demands it, and hand over documentation rather than a dependency on us.