The technologies we use, evaluate, and deliberately avoid. Updated as our thinking evolves. No hype - just what actually works for building production software.
Technologies are categorised by our confidence in using them for production work.
Technologies we use in production and actively invest in. Battle-tested and recommended.
Technologies we're using in limited scope. Promising but still proving themselves.
Technologies we're researching and evaluating. Worth exploring but not yet committed.
Technologies we're moving away from or deliberately avoiding. Not recommended for new work.
What we use across SwiftCase, Switchboard, and Foundation - and why.
Primary language for Switchboard and frontends. Strict mode everywhere.
SwiftCase platform. 15 years of production use, continuously upgraded.
Switchboard runtime. Excellent for real-time, concurrent connections.
SwiftCase core. Mature, well-documented, excellent for complex business logic.
Switchboard HTTP/WebSocket server. Lightweight and flexible.
Foundation platform and marketing sites. App Router for new projects.
All new frontends. Component model fits our needs well.
Utility-first styling across all products. Fast iteration, consistent design.
Component library for Foundation. Evaluating for broader adoption.
Build tool for Switchboard UI. Significantly faster than Webpack.
Accessible primitives. Unstyled, composable, production-ready.
Primary database for all products. Relational data, relational database.
Caching, sessions, real-time data. Essential for performance.
ORM for Foundation. Type-safe queries, excellent DX.
SwiftCase data layer. Mature, powerful, well-understood.
Switchboard query builder. Flexible SQL with migrations.
Intent classification, entity extraction, quality scoring. Built in-house.
GPT models for complex reasoning. Primary LLM provider.
Alternative LLM with fallback support. Excellent for nuanced tasks.
No vendor lock-in. Switch providers without code changes.
Speech-to-text. Fast, accurate, handles accents well.
Text-to-speech. Natural-sounding voices, low latency.
Voice calling and SMS. Reliable, well-documented APIs.
Real-time audio streaming. Essential for voice AI latency.
Inbound and outbound calling. Production-proven at scale.
Text messaging channel. High deliverability.
Messaging channel. Growing customer demand.
Transactional and notification emails. Swift Mailer / Nodemailer.
Embeddable chat widget. Custom-built for flexibility.
All services containerised. Consistent environments everywhere.
Container orchestration. Simpler than Kubernetes for our scale.
Managed MariaDB. Handles backups, failover, scaling.
Automated pipelines. Build, test, deploy on every merge.
Reverse proxy and static serving. Lightweight, fast.
JavaScript/TypeScript testing. Fast, good DX.
E2E testing for Switchboard UI. Evaluating reliability.
PHP testing for SwiftCase. Standard, well-supported.
Code quality enforcement. Catches issues before review.
Maximum type safety. Prevents entire classes of bugs.
Stateless authentication. Works well with APIs.
Third-party integrations. Standard, well-understood.
Authentication for Foundation. Good DX, evaluating at scale.
Permission management across all products.
Every action logged. 154+ event types tracked.
Structured JSON logging for Switchboard. Fast, lightweight.
Liveness and readiness probes. Container orchestration integration.
Fault tolerance for external services. Fail fast, recover gracefully.
Identify bottlenecks in production. Data-driven optimisation.
Technologies we're researching for potential adoption. Not yet proven in our context.
For semantic search and RAG. Evaluating Pinecone, Weaviate, pgvector for knowledge retrieval.
For latency-sensitive operations. Evaluating Cloudflare Workers, Vercel Edge for specific use cases.
For cost reduction on high-volume, simple tasks. Evaluating Llama, Mistral for specific intents.
For browser-native voice. Could reduce telephony costs for web-based voice interactions.
Technologies we're deliberately avoiding or phasing out. Not recommended for new work.
Our data is inherently relational. Workflows, cases, users, documents - all have relationships. Relational databases handle this better.
Large JavaScript bundles hurt performance. We prefer code splitting, lazy loading, and server components where appropriate.
Legacy code still has some. Not for new development. React handles everything jQuery did, with better architecture.
WebSockets provide true real-time with less overhead. Polling wastes resources and adds latency.
Direct OpenAI/Anthropic SDK calls without abstraction. We need provider flexibility for resilience and cost optimisation.
Human-triggered deploys are error-prone. CI/CD pipelines handle everything automatically.
This radar reflects our current thinking based on production experience across SwiftCase (workflow automation), Switchboard (AI communication), and Foundation (learning platform). It's updated as we learn and as the technology landscape evolves.
Last updated: January 2026
We're hiring engineers who care about choosing the right tool for the job - not chasing trends. If this approach resonates, we'd love to hear from you.