Project delivery
A defined scope, timeline and acceptance criteria. Suited to work with a clear end state, such as a new application or a specific integration.
Best when requirements are stable enough to be written down in advance.
Information Technology Services
House and Garden Services Ltd designs, builds, integrates and maintains software for organisations whose day-to-day work depends on their systems behaving correctly. We work in small, accountable teams and write everything down.

Most business software is not replaced when it stops working. It is replaced when nobody can safely change it any more. That observation shapes how we work: we treat readability, documentation and test coverage as part of the product rather than as overhead to be trimmed when a deadline approaches.
Our work spans the full lifecycle of a system. That includes the early conversations where a requirement is still vague, the design decisions that fix its shape, the engineering that makes it real, and the unglamorous years afterwards when it must keep running while the organisation around it changes.
We do not sell a fixed product. Each engagement begins with understanding what already exists, because in nearly every organisation something already exists — a tool, a process, a set of files — that describes how the work is currently done.
A detailed description of every service is on the Services page.
Applications designed around a specific operational problem rather than around a generic product template, built to be maintained over years.
Browser-based systems with considered information architecture, resilient state handling and predictable performance on modest connections.
Applications for phones and tablets that respect platform conventions, offline conditions and the constraints of small screens.
Interface and interaction design grounded in the tasks people actually perform, documented as a reusable system rather than a set of screens.
Environment design, deployment automation and observability so that releases are routine events instead of scheduled risks.
Independent assessment of an existing estate: what to keep, what to replace, what to leave alone, and in which order.
Software problems rarely stay inside one discipline. A reporting requirement becomes a data-modelling question; an interface change becomes a permissions question. Keeping these capabilities together avoids the delays that appear when work is handed between separate groups.

Structured interviews, process mapping and written specifications that make scope visible before code is written.
Service boundaries, data models and integration contracts chosen for the size of the problem, not for fashion.
Accessible, responsive interfaces built on component systems that stay consistent as the product grows.
APIs, business logic and data storage designed for correctness under concurrency and for straightforward debugging.
Scheduled jobs, event-driven workflows and reporting pipelines that remove repetitive manual handling.
Schema design, migration strategy and reporting structures that keep historical information usable.
We start with the operational reality: who does the work, which constraints are fixed, what has already been attempted, and what must not break.
Findings become a written scope with explicit assumptions, dependencies and acceptance criteria, so that agreement is recorded rather than assumed.
Interface flows and technical architecture are produced together, because a decision in one usually constrains the other.
Delivery proceeds in short increments with review at each boundary. Working software is available for inspection throughout, not only at the end.
Automated and exploratory testing run against defined criteria. Defects are triaged transparently, with severity agreed rather than negotiated late.
Deployment is automated and reversible. After release, monitoring, maintenance and iteration continue under an agreed support arrangement.
Technology choices are reversible only for a short window, so we make them deliberately and record the reasoning. The list below describes areas we work in regularly; where a project requires something outside it, we say so rather than improvise at your expense.


Coverage is directed at the logic that carries financial, legal or safety consequences rather than pursued as a uniform percentage.
Access to systems and data is granted narrowly and reviewed, both for the software we build and for the environments we work in.
Dependencies are inventoried, pinned and monitored for known vulnerabilities, with a defined route for applying updates.
Personal and sensitive data is identified during design, encrypted in transit and at rest, and retained only as long as there is a reason to keep it.
Structured logging, metrics and alerting are treated as delivery requirements so that problems are found before users report them.
Code review, automated checks and reproducible builds apply to all changes, including small ones, because small changes cause outages too.
A defined scope, timeline and acceptance criteria. Suited to work with a clear end state, such as a new application or a specific integration.
Best when requirements are stable enough to be written down in advance.
A consistent allocation of engineering and design time working alongside your own people, following your priorities as they change.
Best for continuous product development over an extended period.
Time-boxed review of architecture, code quality, security posture or delivery process, concluding with a written report and options.
Best when a decision needs an independent technical view.
Ongoing responsibility for an existing system: monitoring, corrective work, dependency updates and incremental improvement.
Best when a system is live and must remain dependable.

Scope, assumptions and decisions are documented. You should never have to reconstruct why something was built a particular way.
The people who design and build a system are the people who test, release and support it.
We optimise for the second year of a system's life, not only for the first release.
You speak with the engineers doing the work, in plain language, without an account-management layer in between.
If something is unwise, unnecessary or outside our competence, we say so before it becomes expensive.
Source code, infrastructure definitions and documentation belong to you and are handed over in a usable state.
Describing the situation in writing gives us enough context to respond with something useful rather than a generic reply. Helpful details include the problem you are trying to solve, any systems already in place, constraints you know about, and the timeframe you are working to. A form is available on the Contacts page if you prefer it.
The Services page describes each service in detail, including delivery approach and the business need it addresses. The About Us page sets out how the company works.
This site uses semantic HTML, keyboard-operable navigation, visible focus indicators and text contrast intended to remain readable at small sizes. It respects the reduced-motion preference set in your operating system.
Our Privacy Policy and Terms of Service are published in full.