Custom development
We build web applications for the part of your business that no off-the-shelf product covers. The starting point is intrapp.io, our own business operating system, not because it is the only way we work, but because it removes the work of building the same foundations a second time.
final class OrderApproval{ protected array $steps = [ 'submitted' => Reviewer::class, 'approved' => Warehouse::class, ]; public function onApproved(Order $order): void { $order->reserveStock(); $order->notify(new ReadyToShip); }}
Where enquiries come from
Situations that may sound familiar
Most enquiries start from one of four situations. None of them begins as a software question: somebody simply notices that the work is going slower than it should.
-
Outgrown spreadsheet
A spreadsheet carried the process while only a few people worked on it. Now many people open it, everyone has saved their own copy, and at closing nobody can say which row is the true one. The formula is not the problem: the work built around it grew larger than it.
-
Systems that do not talk
Invoicing lives in one, projects in another, stock in a third. The route between them is held in one person's head, with exports and emails. While that person is working everything is fine; when they take leave, the process stops.
-
Done by hand
There is a sequence somebody works through every morning: copy data, check it, send an email, update a status. No single step is hard, but together they take the day, and the work the person was actually hired for is what gets dropped.
-
Off-the-shelf, almost right
They bought it, they learned it, and it does work. It is just that their most important process does not fit inside it. Around the remainder they either build a spreadsheet or bend their own operation to the software. Both cost more than they look like they do.
If one of those sounds familiar, the first conversation is about whether writing software for it is worth it at all. Sometimes it is not.
The problem
The problem with starting from zero
Most of a custom business system is the same in every project. Before anyone writes a single line about your actual work, somebody has to build:
- permissions and roles, down to the field level
- users, invitations, password resets, sessions
- company and organisational data, multiple entities, multiple sites
- audit logging: who changed what, and when
- notifications by email and in the application
- search, filtering, exports, reporting
All of it is time and money spent before anything specific to your business exists. All of it has to be tested, secured and maintained afterwards.
public function update(User $user, Order $order): bool{ return $user->can('orders.update') && $user->company_id === $order->company_id;}// Down to field level: the margin is visible to finance only.protected array $hiddenFor = ['margin' => 'finance.read'];
None of this is visible to the person who commissioned the system.
How it runs
The team is complete: design and front-end are in house, so you do not need to line up a designer or a front-end developer alongside the project.
The four stages are not a project-management ceremony. They exist so that at the end of each one you have something in your hands that you can look at, and decide from whether this is going the right way.
-
Conversation
You describe what the system has to do and what exists today: what you work with, where the process stalls, who would use it. We say whether intrapp.io fits, roughly what shape the work would take, and also if we think it is not worth starting. This conversation costs nothing.
-
Assessment
We go through the process in detail: screen by screen, role by role, integration by integration. At the end you hold a document covering the scope, the constraints and the estimate, broken down so you can see what each part carries. From there you can also decide what stays out of the first round.
-
MVP
The smallest version that is genuinely usable goes live first. Real users, real data, a real deployment, not a demo. This is the point where you stop looking at a plan and start looking at your own system.
-
Iteration
From there we extend in short cycles, guided by what the users actually hit. At the start of each cycle you say what comes next. Every release is deployable and reversible: if a direction turns out to be wrong, you do not have to live with it.
References
Systems we built and also run
A few examples from our work. We developed each of them and we hold the runtime as well, so they run in containers, on infrastructure described in code, with automated releases.
-
Telefonszám tudakozó
A community phone lookup running since 2003. Someone who gets a call from an unknown number can see here what others reported about it, whether a scam, telemarketing or a real call.
-
¿Quién llamó?
The same service for Spain, built the same way on feedback from other users.
-
Rentiago
A car rental booking system, where the booking runs through four steps, in several languages and currencies, with full insurance.
From your side
Who owns the code, and where it runs
What we write for you is yours. You get the source code together with the repository and its history, continuously, not as a zip file at the end of the project.
- the code written for the project: yours, without restriction
- intrapp.io as the foundation: licensed to you for as long as the system runs
- the accounts: servers, domain and services registered in your name
- the write-up: architecture, deployment and backup in the repository, not in someone's head
If our paths part, you should not have to ask us anything. The environment is described in files, so another team can build it: that is exactly what the work on the Docker page means when you look at it from your side.
Where it runs is your decision: on our infrastructure, at a provider you choose, or on your own servers if your rules say the data cannot leave the company. The architecture is the same in all three cases, and moving is not a rewrite.
What it costs to run afterwards
The price of a system does not end at handover. It is better said at the start than discussed a year later, which is why our proposals list the build and what follows it on separate lines.
It has to run on something: a server or cloud, a database, storage, backups. That line grows with usage, and it can already be estimated during the assessment, because by then we know how many users and how much data are involved.
It has to be maintained: security updates for the framework and the runtime, the dependencies, the certificates. This is the part that gets skipped when nobody owns it, and turns into a large job later. intrapp.io makes it cheaper here: a fix is written once and arrives in every system built on it, yours included.
And it will keep growing. A system in use always attracts requests, because the company changes too. You do not have to hold a budget for that, but it is worth counting on, and how much of it happens stays your decision, not ours.
When not to choose us
Sometimes the honest answer is that you should not work with us. We say it at the first conversation, while it is still free, not halfway through the project:
- If an existing product covers your case. Off-the-shelf software that many companies use is cheaper and better tested than anything we would write once, for you.
- If what you need is a campaign site or a webshop. That is a different trade, and there are people who do it better than we would.
- If you need a native mobile application in the stores. We write web applications that work on a phone, but we are not the ones who will be publishing to the app stores.
- If the process that would be covered is changing inside the company right now. Development does not settle that argument, it casts it into code.
We say no to these not because the work is uninteresting, but because a project started in the wrong direction costs both of us more than an order that never happened.
Tell us what the system has to do
A few sentences are enough to start: the process, what you use today, and the deadline you are working to. We will tell you whether we are the right company for it.