This page exists so you can check what we actually build with before you talk to us: frontend, backend, mobile, data, AI models, automation and cloud — and the rules we use to choose between them.
How we choose a stack
Technology choices follow from constraints, not from fashion. The order we work in:
Compliance and data residency first. If patient data cannot leave a jurisdiction or a network, that decision eliminates most of the stack before any other consideration.
The integration surface you already have. A team with SQL Server, Active Directory and a legacy ERP gets different recommendations from a greenfield startup, even for the same business problem.
Team skills and total cost of ownership. A stack nobody can maintain locally is expensive regardless of its benchmarks.
New technology only when it removes a specific constraint we cannot solve with what is already in place.
The stack we build with
🌐Frontend
React, Next.js, TypeScript. Server-rendered where SEO or first paint matters, client-rendered where the product is an app.
⚙️Backend
Node.js for real-time and API-heavy services, Python for data, ML and document pipelines. Express and FastAPI where they fit the team.
📱Mobile
React Native and Flutter for cross-platform delivery, with native modules where a platform capability demands it.
🗃️Data
PostgreSQL as the default relational store, MongoDB for document-shaped data, and vector indexes for retrieval over embeddings.
🤖AI models
OpenAI, Anthropic and Google Gemini for hosted inference; open-source LLMs (Llama family) self-hosted where data cannot leave your environment.
🔗AI engineering
Retrieval-augmented generation, vector search, agent orchestration, tool and function calling, MCP where it makes an agent genuinely more capable, and evaluation harnesses.
🔄Automation
n8n for self-hosted workflow automation, plus REST APIs, webhooks and scheduled jobs. See the n8n vs Zapier comparison.
☁️Cloud & DevOps
AWS, Azure and Google Cloud; containers, infrastructure-as-code, CI/CD pipelines and environment parity from development to production.
Engineering practices that do not change with the stack
Repositories in your accounts from the first commit — 100% code ownership, no vendor lock-in.
Weekly demos on working software plus documented milestones, so progress is visible rather than reported.
Security and permissions designed in — least-privilege access, audited actions, secrets management, dependency patching.
Tests and evaluation sets — regression tests for software, a scored question set for AI systems, both run before release.
Documentation the next team can use — architecture notes, runbooks and environment setup committed alongside the code.
NDA before discovery and enterprise API terms so your data is not used for model training.
What this looks like in practice
AI development — agents, copilots, document intelligence and LLM integration.
Legacy modernization — moving ageing systems onto this stack without a big-bang rewrite.
Frequently asked questions
Frontend: React, Next.js and TypeScript. Backend: Node.js and Python. Mobile: React Native and Flutter. Data: PostgreSQL and MongoDB, with vector stores for retrieval. AI: OpenAI, Anthropic and Google Gemini for hosted models, and open-source LLMs where data must stay inside your network. Automation: n8n, REST APIs and webhooks. Cloud: AWS, Azure and Google Cloud.
No. We list the stack we build with in production. If a technology is not on this page and not required by your project, we will say we have not shipped it rather than learn on your budget.
From the constraint backwards: data residency and compliance first, then the integration surface you already have, then team skills and total cost of ownership. New technology is chosen only when it removes a specific constraint we cannot solve with the current stack.
Models sit behind an interface in our architecture, so providers are swappable. We benchmark candidate models on your own evaluation set for accuracy, latency and cost, then keep the model layer replaceable so a price or capability change is a configuration decision rather than a rewrite.