What we do
Five disciplines under one roof, and the same team throughout. We choose technology for what the product needs, not for what we used last time.
IT strategy
Aligning the IT strategy with the company’s goals and visions means balancing performance, scalability and time to market — to maximise output and keep the costs honest.
AI and integrations
Most AI work fails at the seams: where the model meets your data, your auth, and the systems you already run. We build the seams first, then the feature.
UI/UX design
The power of visualisation before implementation should not be overlooked. Being able to interact with an idea early is what makes the build predictable.
Development
We use the correct tool for the problem, not the tool we used last time. Short iterations, and your key people involved along the way.
Maintenance
As important as building the thing is keeping it stable, improving it, and paying down the technical debt before it compounds.
Four steps, your people in the room
Strategy and scope
We map the systems you already run, what they cost, and where the actual constraint is. You get a written recommendation, even if it says do nothing.
Design before code
Interactive prototypes of the parts that carry risk. Cheap to change now, expensive later.
Build in the open
Two-week iterations, a demo at the end of each one, and your key people involved along the way.
Maintenance and debt
Stability, dependency upgrades and the work that keeps the product alive.
We connect what your business already pays for
- AnconPoint of sale — orders, products, checks
- easyTableTable booking, in both directions
- PlandayStaff and scheduling
- Freshsales & FreshdeskCustomer conversations and support
- Google BusinessReviews per venue
- Entra IDSign-in and provisioning
- PrismicContent across countries and languages
- Firebase & MailchimpPush notifications and mailings
- Google CloudCloud Run, Cloud SQL, Scheduler and Tasks
- Terraform & AnsibleThe whole estate as code
- DockerThe same build locally and in production
- Postgres & RedisData, queues and cache
- Traefik & InfisicalProxy in front, secrets under control
- SentryErrors and tracing in production
The right tool, not the same tool
Every one of these is running in a client product today. The language followed what the product needed, not what we happened to know best.
A tailored NMEA2000 CANbus parser, handling thousands of messages a second off a ship’s bus and calculating on them in the same pass.
A backend that listens to every order across a restaurant group and recalculates the index in realtime — while storing nothing that identifies the individual restaurant.
Our default for new work, on Node and Bun. Boulebar’s reporting platform runs on it over PostgreSQL, and Sympatigruppen’s Economix is moving on to it a piece at a time.
An integration layer does one thing and should start in milliseconds. That calls for a thin framework, not a full-sized one.
A 360-survey platform for admins and end users, migrated off a legacy system with its data set intact.
The property app on Google Play. It shares a data model and account with the site rather than duplicating them, and receives the saved-search alerts as push.
The property site as it runs today, on Rails 8 and Ruby 3.4. We kept it and upgraded it rather than rewriting — the cheaper answer, and the right one at the time.
Not sure what you need?
That is exactly what we help you find out. A first call is free and is usually enough to work out what suits you best.