The spreadsheet is the system
It has grown formulas nobody dares touch, three tabs that must be updated together, and a copy on somebody's desktop that is now the real one. Nothing validates anything, and there is no record of who changed what.
Most small businesses run on a spreadsheet somebody inherited, a messaging group, and a person who remembers how it all fits together. That works until it does not — until two people edit the same row, until the person is on holiday, until nobody can answer how much is outstanding without an afternoon of adding up.
None of these is a failure of organisation. They are what happens when a business outgrows the tools it started with.
It has grown formulas nobody dares touch, three tabs that must be updated together, and a copy on somebody's desktop that is now the real one. Nothing validates anything, and there is no record of who changed what.
Orders in a chat, stock in a spreadsheet, invoices in a folder, customers in someone's phone. Every question that spans two of them is a manual reconciliation, and the answers quietly disagree.
It does eighty per cent, charges per seat for all of it, and the missing twenty per cent is the part specific to your business — which is to say the part that matters.
The accounting package, the online store and the till each have an export button, and joining them up is somebody's Monday morning.
One database that is the authoritative record, an interface that fits the people using it, and integrations that move data automatically rather than by export and re-import. Small enough to finish, structured well enough to extend.

A real relational database — normally PostgreSQL — with constraints that make invalid data impossible rather than merely discouraged. Two people cannot disagree about a total, because there is only one total.
A Telegram mini app for staff on their feet, a web interface for anyone at a desk, a bot for quick queries. Often all three against the same data, because the person taking an order and the person chasing payment want very different screens.
Data validated at the point of entry, so the reporting at the other end is trustworthy. Where people prefer to write in plain language, the message is parsed against your real catalogue and confirmed before anything is filed.
REST APIs, webhooks, scheduled syncs, CSV import and export for anything with no API at all. If a system can be reached programmatically, it can be joined up; if it cannot, the import path is at least made boring and repeatable.
Daily and weekly summaries pushed to Telegram or email on a schedule. A dashboard nobody opens is not reporting; a message at 23:30 with the day's numbers is.
Who changed what, when, and what the value was before. Cheap to build in from the start and effectively impossible to add retrospectively once it matters.
Every one of these is in production, not a proposal. Most of them run our own businesses, which is the strongest thing we can say about them.
A customer messages an order in plain language. It is parsed against the live catalogue, matched to a customer record, priced and filed. A real PDF invoice is generated in code and delivered to their chat, and a 09:00 digest chases anything still open.
A till running as a Telegram mini app against an action-routed API: catalogue, open tabs, checkout, live takings. Permissions resolve from the staff member's own account and are enforced at the API, and a sales summary is pushed nightly.
Inventory ledger, brewing, assets, maintenance and finance as modules of a single mini app. Every module is a set of Postgres functions, every mutation checks the caller's role and writes an audit row, and the app shell itself is versioned in the database — rollback is reposting the previous build.
Photograph a receipt and it is filed. Every three days the folder is reconciled against the ledger: gaps appended, duplicates and anomalies flagged, and a summary posted to the accounting group — bookkeeping that heals itself instead of drifting.
A darts team and a dominoes club run on the same platform pattern: schema, business logic as Postgres functions, a versioned app shell and one audited send gate. The second system took a day, because the first was built as a pattern rather than a one-off.
Sensor readings logged continuously with configurable alarm thresholds, escalating alerts until acknowledged, and history retained for trend analysis and compliance records.
Nothing here is fashionable. A relational database, a small amount of orchestration and interfaces people already know how to open. The point is that someone else can still maintain it in three years.
| Database | PostgreSQL, or MySQL where it is already in place |
|---|---|
| Integration & orchestration | n8n, with code where a workflow would be the wrong tool |
| Interfaces | Telegram mini apps, web apps, bots, PDF documents |
| Integration surfaces | REST, webhooks, scheduled sync, CSV in and out |
| AI, where it earns its place | Parsing messy input, transcription, drafting — never unreviewed decisions |
| Hosting | Your server or ours. Containerised, documented, portable |
| Handover | Schema documentation, credentials in your name, a written runbook |
Custom software is the right answer less often than people selling it suggest. These are the cases where we will say so.
A call or a Telegram thread about what actually goes wrong in your week. No discovery invoice.
A written scope with a price against it. If the honest answer is that automation is not worth it here, you get that instead.
Built in the open with something to look at early. You see it working before it is finished.
Documentation, credentials in your name, and a walkthrough. You own it whether or not we keep working together.
A conversation costs nothing and often ends with us saying automation is not worth it for a given job. That is a useful answer too.