Solutions / Custom Software Development

Software,
fitted to
the work.

Custom systems for operations that have outgrown their tools. We design, build, and ship production software that fits your process — not a vendor's interpretation of it.

Typical scope
3–6 mo
end-to-end build
Team shape
2–4 senior
no offshoring
Code ownership
100 %
always yours
BUILD ✓ tests 247 / 247
// Domain-fitted dispatch — 4-line replacement for a 30-tab spreadsheet.
import { Worker } from '@/queue'
import { rules } from '@/policies/dispatch'
import { pool, NoMatch } from '@/domain/fleet'

export const route = new Worker('route.assign', async ({ job }) => {
  // Pull only the candidates that satisfy the operation's hard constraints.
  const candidates = await pool.available({
    proximity: job.origin,
    capacity:  job.weight,
    sla:       job.deadline,
  })

  const ranked = rules.evaluate(candidates, job)
  return ranked[0] ?? throw new NoMatch(job.id)
})
mainTypeScriptUTF-8
⊙ deployed · prod
↳ Production code from a live deployment. Domain identifiers redacted.
§ 01 / Thesis

Off-the-shelf
software is
a contract you didn't write.

SaaS solves the first 80% of every operational problem — and then becomes the ceiling on the next 20%. That last fifth is where your business actually differs from the rest of your sector. It's where margin lives, where retention is decided, where institutional knowledge quietly accumulates.

Custom software is how you take that ceiling off — without trading it for a vendor's roadmap, pricing tier, or interpretation of how your work should run.

Common signals it's time
  • Three or more SaaS tools held together by spreadsheets
  • Per-seat pricing now exceeds the cost of building
  • A new hire takes weeks to learn the workarounds
  • The vendor's roadmap doesn't match yours
What stays out of scope
  • Generic CRM / accounting / HR (use the SaaS)
  • Static marketing sites (use the CMS)
  • Anything a no-code tool can do durably
  • Vanity rebuilds of working systems
§ 02 / Decision frame

Build or buy?
Honest answers,
no upsell.

We've turned this conversation into a written framework. If your problem belongs in the right column, we'll send you to the right vendor instead of taking the brief.

Buy off-the-shelf
SaaS · No-code

Right tool when —

  • 01
    The process is genuinely standard
    Payroll, basic CRM, accounting — solved problems with mature vendors.
  • 02
    Compliance comes pre-certified
    Audit, SOC2, regulatory controls baked into the platform.
  • 03
    Per-seat pricing still cheaper than build
    Total 5-yr SaaS cost is meaningfully below custom TCO.
  • 04
    Switching cost is low
    Data is portable, integrations are open, lock-in is shallow.
Build custom
Where we fit

Right tool when —

  • 01
    The process is your competitive edge
    If a competitor copied your stack tomorrow, would they catch up? If yes, build it.
  • 02
    SaaS gaps are filled by humans
    Three people exist mainly to translate between four tools.
  • 03
    The vendor's roadmap is your blocker
    You've been waiting eighteen months for a feature you could ship in six weeks.
  • 04
    Scale flips the unit economics
    Per-seat costs now meaningfully exceed amortised build cost over five years.

VERDICT —If you can't put a tick against any "build" row, custom isn't the right answer yet. We'll say so.

§ 03 / What we build

Six shapes a custom system takes.

Not categories of marketing fluff — these are the actual archetypes our work falls into. Most engagements span two or three.
A · Internal platforms

Operations back-office

The system your team actually lives in: dispatch, scheduling, inventory, fulfilment, case management — built around your real workflow.

e.g. Logistics dispatch · Field-service routing · Order management
B · Customer-facing

Portals & self-serve apps

Customer accounts, partner portals, marketplaces — places your users do business with you, designed as part of the product, not an afterthought.

e.g. B2B portals · Booking flows · Self-onboarding
C · Data products

Reporting & decision systems

Pipelines, dashboards, alerting — the glass through which the business actually runs. Not BI dashboards, operational ones.

e.g. Live ops dashboards · Pricing engines · Margin telemetry
D · Workflow engines

Approval & process flows

Multi-step processes with state, ownership, audit, and exception handling — the kind of work spreadsheets pretend to do but quietly break.

e.g. Loan approval · Claims · Procurement · Compliance trails
E · Domain SaaS

Productised vertical SaaS

You've found a niche — vertical platform, marketplace, or B2B tool — and you're ready to ship a real product. We're a senior co-founding team for hire.

e.g. Multi-tenant platforms · Niche marketplaces · API products
F · Modernisations

Legacy replatforms

A working system on dying infrastructure. We extract the parts that earned their keep and rebuild around them — safely, in slices, with no big-bang.

e.g. Strangler-fig migrations · Monolith carve-outs · Lift-and-evolve
§ 04 / Anatomy

What's actually
inside the systems
we ship.

Not a reference architecture. The real layers we deliver in a typical operations build, with the design decisions called out.

L · 01 / EDGE Clients Web app Mobile Partner API Webhooks L · 02 / GATEWAY API · Auth · Rate-limits REST + GraphQL SSO · scoped tokens · RLS L · 03 / DOMAIN · the part that's actually yours Business logic · Workflows · Policies Dispatch engine Pricing rules Workflow state Audit ledger L · 04a / DATA PostgreSQL · S3 migrations as code · point-in-time recovery L · 04b / EVENTS Redis · queues · cron durable jobs · retries · dead-letter L · 05 / INTEGRATIONS → ERP · payments · GIS · email · third-party APIs · existing SaaS
↪ Decision · L03

Domain stays domain-shaped

Business logic doesn't leak into controllers, queues, or UI. It lives in language your operations team can read out loud.

↪ Decision · L04

Boring data choices

PostgreSQL until proven otherwise. We don't reach for NoSQL, vector DBs, or microservices because they're fashionable.

↪ Decision · L05

Integrations as adapters

Every external system is an adapter, swappable in a day. Vendor risk doesn't get to write itself into your domain.

§ 05 / Toolchain

The stack — and why each piece.

We have strong defaults and shallow opinions. Anything in this list can be swapped if your context demands it — but you'll get a written reason first.
Backend
Laravel · Go · Node
Boring where boring works. Go for high-concurrency; Laravel for domain-heavy CRUD; Node where the team's strong on TS.
↪ default
Frontend
React · Inertia · Vue
Inertia for ops dashboards (one mental model, two render targets). React for product surfaces. Vue when the team already knows it.
↪ default
Database
PostgreSQL
Strong defaults, JSON when you need it, mature tooling. We don't reach for NoSQL early — it almost never solves the problem teams think it does.
↪ default
Queue · cache
Redis · RabbitMQ
Redis until throughput shape demands a real broker. Picked by load profile, not preference.
↪ default
Cloud
AWS · Hetzner · GCP
Cost-aware. We don't put a startup's seed round on AWS managed everything. Multi-region only when the operation actually needs it.
↪ default
Observability
OpenTelemetry · Grafana
Vendor-neutral by design. Whatever you're paying Datadog this year, you can replace.
↪ default
Quality
Pest · Playwright · CI
Tests at the seams that matter. Continuous deploy from week one. Code review on every change.
↪ default
§ 06 / Engagement

Three shapes of working together.

Same senior team, different commitment depth. Most clients start with a Sprint and graduate when the diagnosis is right.

Tier 01Fixed scope

Sprint

A focused, fixed-fee engagement: pilot, prototype, integration, or technical spike. The right shape when the question is clear.

DURATION4–6 weeks
TEAM2 senior
PRICINGFixed fee
  • Two-week diagnostic included
  • Ships a working artifact
  • Written brief at handover
Brief a Sprint →
Tier 02 · most common

Build

End-to-end design and delivery of a production system. Senior team, two-week cycles, demoable from week four.

DURATION3–6 months
TEAM2–4 senior
PRICINGT&M with cap
  • Architecture, build, and shipped product
  • Continuous deploy from week one
  • Knowledge transfer to your team baked in
Scope a Build →
Tier 03Long-term

Build + Operate

We build the system and stay on as it grows — running, evolving, and eventually transferring it to a team you've hired with our help.

DURATION6+ months
TEAMEmbedded
PRICINGMonthly retainer
  • SLA-backed operations
  • Quarterly roadmap reviews
  • Hand-off plan from day one
Discuss Operate →

↪ Indicative ranges. Every engagement is scoped from a written brief — no per-seat surprises, no change-request theatre.

§ 07 / Proof

A custom system
replaced 14 SaaS seats and 6 spreadsheets
in 11 weeks.

Dispatch latency
3.2s
▼ 71% from baseline
SLA hit-rate
99.4%
▲ from 81%
Tooling cost
−63%
y/y
"By month three, the team didn't remember how they used to work."
— Operations Director · Iberian logistics · NDA
§ 08 / Objections

The questions we get every first call.

If your version of the question isn't here, we'll answer it — in writing — before the second meeting.

Q · 01

"Won't custom software cost more than SaaS?"

+
In the first year, almost always yes. Over five years, almost always no — once you account for per-seat scaling, integration glue, and the human cost of the workarounds. Our written briefs include a TCO model so you can see the crossover.
Q · 02

"What happens to the system if we disappear?"

+
You own the code from commit one. We architect for portability: standard frameworks, vendor-neutral cloud, documented runbooks, no proprietary glue. Any senior team should be able to take it over inside two weeks.
Q · 03

"How do you avoid the classic six-month delay?"

+
By scoping in a two-week diagnostic before kickoff, building in two-week cycles demoable from week four, and refusing engagements where the brief is a wishlist instead of a problem statement. Most slipped projects are scoping failures, not engineering ones.
Q · 04

"Do you work with our existing in-house team?"

+
Most engagements have an internal counterpart. We pair-build, share PRs, and treat your engineers as the eventual owners. The hand-off plan is part of the architecture from day one — not a closing slide.
Q · 05

"What about AI? Should we build it in?"

+
Sometimes. Sometimes a stored procedure does the job. We have an entire practice area on this — the test we use is whether the cost-of-being-wrong is acceptable against the time-to-being-right. If both numbers work, we ship it.
Currently accepting Q3 engagements

Bring us the brief
written on the
back of a napkin.

A 30-minute first call, a written diagnosis within ten working days, and a straight answer on whether we're the right team — or who is.