Software that survives contact with production.
We are a software development firm in Vancouver, British Columbia, Canada. We design, build, and run websites, web and mobile applications, connected hardware and kiosks - the kind that carry real traffic, real money, and real consequences when they break.
- Building software for clients
- Since 2003
- Building software for clients
- Typical time to first release
- 4 wks
- Typical time to first release
Screens, servers, and the hardware in between
Most engagements pull from more than one of these. You work with the same team throughout - no handoff to a delivery pod you have never met.
Websites & web applications
From a marketing site that loads fast to an application your business runs on.
Mobile apps
iOS and Android - native where the hardware matters, cross-platform where it does not.
IoT & embedded systems
Raspberry Pi, BeagleBone, Arduino, ESP32 - and the platform behind the fleet.
Kiosks & interactive installations
Unattended screens that stay up, recover on their own, and resist curious hands.
Platform, cloud & observability
Infrastructure that is boring on purpose - and instrumented so you can see it.
Data & AI
Pipelines and models that earn their operating cost.
Modernization
Getting off the system that is holding the business back.
Systems we put into production
A few engagements we can talk about publicly.
Broadcasting to twenty thousand phones when the network is gone
A patented live-experience platform that turns a packed venue full of phones into a coordinated second screen - synchronized light shows, live stats, exclusive content - without needing cellular or WiFi at all.
Read the case studyMembership, dues and minutes for lodges that still run on paper
Lodge administration runs on spreadsheets, filing cabinets and one secretary who remembers everything. Acacia Leaf puts membership, dues, meetings and documents in one system - with every record held in Canada.
Read the case studyA compliance engine that can be asked what will be true next month
Asbestos abatement in British Columbia is governed by dates: licence expiry, worker certificates, notice windows measured in hours. Clearance is a working prototype of the workflow layer that tracks them - built to test the idea, not to sell it.
Read the case studyWe use AI tooling throughout our builds
Not as a novelty and not as a substitute for engineers. It is part of the toolchain, the same way a compiler and a test runner are - and we are direct about where it helps and where it does not.
More of the budget goes to judgement
Scaffolding, migrations, test fixtures and boilerplate are the cheapest things to generate and the least valuable to bill you for. Squeezing that work leaves more of the engagement for architecture and the decisions that actually cost money to get wrong.
Test coverage that would not otherwise get written
The edge cases everyone agrees should be covered, and nobody has time for, get covered. That shows up later as fewer regressions rather than as a line item.
Faster reading of code we did not write
On a modernization job the first weeks go into understanding a system nobody documented. Working through it with AI assistance shortens that considerably, which is usually the longest pole in the tent.
A second reviewer on every change
Automated review runs over every diff before a human sees it. It catches the dull mistakes - an unhandled branch, a missing index, a leaked secret - so review time is spent on design.
What does not change: an engineer owns every line that ships. Generated code gets read, tested and reviewed exactly like handwritten code, and nothing reaches your repository that we could not explain in a code review. Where a client needs their source kept out of third-party tools, we work that way instead - just tell us up front.
We do not sell you the stack we happen to like
The right choice depends on what you are building, what your team can maintain, and what you already run. We are fluent across these and will tell you plainly when your existing stack is fine and the rewrite is not the answer.
Web front end
Chosen for the rendering model the product actually needs.
- React
- Next.js
- Vue
- Nuxt
- Svelte
- Astro
- TypeScript
- Tailwind CSS
Back end
Whatever your team can maintain after we leave.
- Node.js
- Fastify
- NestJS
- .NET
- Go
- Python
- FastAPI
- Django
- Laravel
- Rails
Mobile
Native when the hardware matters, cross-platform when it does not.
- Swift
- SwiftUI
- Kotlin
- Jetpack Compose
- React Native
- Flutter
Embedded & IoT
From a single sensor to a fleet in the field.
- Raspberry Pi
- BeagleBone
- Arduino
- ESP32
- C / C++
- Rust
- MicroPython
- Yocto
- Buildroot
- MQTT
- BLE
- Modbus
Data
Relational by default. Something else only when the shape demands it.
- PostgreSQL
- MySQL
- SQL Server
- SQLite
- MongoDB
- Redis
- ClickHouse
- dbt
- Airflow
Cloud & infrastructure
Your accounts, your bill, your keys.
- AWS
- Azure
- Google Cloud
- DigitalOcean
- Docker
- Kubernetes
- Terraform
- nginx
Observability
Instrumented before it is optimized.
- Dynatrace
- OpenTelemetry
- Prometheus
- Grafana
- Sentry
- Loki
Not listed is not a problem. We have picked up unfamiliar stacks on client systems plenty of times - that is a normal part of taking on existing code.
We give a lot of it away
A suite of developer tools we built because we wanted them - an endpoint inspector, a webhook catcher, a JWT verifier, one-time secrets. Free, no sign-up, each backed by a real API.
No discovery theatre, no 90-page deck
An engagement is three phases. You can stop after any of them and still have something that works.
Scope before code
We start with a short discovery: what you are trying to change, what already exists, and what actually constrains the work. Reading an unfamiliar codebase with AI assistance turns the usual three-week archaeology dig into days, so the written plan you get - stack, sequence, number - arrives while the problem is still fresh.
Ship in weeks, not quarters
Work lands in small, reviewable increments behind CI. Scaffolding, migrations and test fixtures are generated rather than typed, which means more of the hours you pay for go into architecture and the decisions that are expensive to get wrong.
Hand over something you own
Documented infrastructure, tests that mean something, and a team that has been in the code with you. The edge cases everyone agrees should be covered actually get covered, because writing that tier of test is no longer the expensive part. No lock-in, no black box.
What we have learned shipping this stuff
Hiring a software development firm: questions worth asking
Choosing a development partner is mostly a due-diligence problem. These are the questions that actually separate firms, from a firm that answers them for a living.
Guardrails for shipping an LLM feature
A demo that works on your ten favourite examples is not a feature. What turns one into the other is evaluation, boundaries, and a plan for being wrong.
Managed Postgres or your own: an honest comparison
Managed database services are excellent and cost several times what the same workload costs on a server you administer. Both facts matter.
Ready to build something that lasts?
Tell us what you are trying to ship. We will tell you how we would approach it - scope, stack, and timeline - before you commit to anything.

