Web applications
Dashboards, portals, internal tools and customer-facing products. Server-rendered for speed, typed end to end, with roles and permissions designed before the first screen.
Next.js · TypeScript · PostgreSQL
Loading…
Software & automation studio
Web systems, mobile apps and operational software, built around how your organisation actually works. Repetitive work is handled by automation and AI.
Built to software engineering standards, with no off-the-shelf template. Delivered with technical documentation and training for your team.
End-to-end delivery
Specification, architecture, build, deployment, hand-over.
You own the software and the data
Where it is hosted is decided per project and agreed before the contract.
Security by default
Access enforced at the database, not just the app.
No lock-in theatre
Defined scope, defined end. Support is optional.
Capabilities
Most engagements combine two or three. All of them are built to run in production for years, not to demo well.
Dashboards, portals, internal tools and customer-facing products. Server-rendered for speed, typed end to end, with roles and permissions designed before the first screen.
Next.js · TypeScript · PostgreSQL
The system a business actually runs on: order entry, production tracking, stock, purchasing, delivery and reporting — modelled on how your operation works rather than a generic template.
Inventory · Orders · CRM · Reporting
Systems that do not talk to each other, made to. Scheduled jobs, document pipelines, approvals and hand-offs that run without anyone remembering to start them.
Integrations · Jobs · Webhooks
Assistants answering from your own documents with citations, data extracted from invoices and forms, semantic search that understands a question, and incoming requests routed on arrival.
RAG · Embeddings · Extraction
Android and iOS apps that share one backend with your web system, so the floor, the office and the warehouse are looking at the same numbers.
iOS · Android · Offline-capable
Deployment, environments, backups, monitoring and scaling. Set up so a bad day is a rollback rather than an outage.
CI/CD · Monitoring · Backups
How we work
Nothing is built before the problem behind it is understood, and nothing is hidden until the end.
We map how the work moves today — who touches what, where it stalls, which systems disagree. You get a written picture of the process before anyone proposes software.
Process map · scope · estimate
Data model, architecture and screens, decided together. Where a simpler answer exists — an automation instead of a platform — that is what we recommend, even when it is the smaller project.
Technical spec · data model
Staged delivery in two-week increments, each one deployed and usable. The task causing the most pain ships first, so the work gets easier before the project ends.
Working increments · staging
The system is deployed on the agreed infrastructure. You get administrative access, documentation, and a training session for your team.
Production · docs · training
Engineering
Chosen because it is well understood and will still be maintained in five years — not because it is new.
TypeScript from the database schema to the browser. A column rename breaks the build instead of breaking a page at 2am.
Constraints, transactions and row-level security in the database — so a bug in a screen cannot hand one customer another customer's data.
Server-rendered pages arrive already drawn. Speed is not a polish step; a page that takes four seconds is one most people never scroll.
Every change runs through type checks, tests and a preview deploy before it reaches production. Releases stop being events.
Projects
A short description of each: the need behind it, what has been built, and the technology used.
Demand intelligence
A web application that turns a company's own sales and order history into a demand signal it can plan against — at SKU level, week by week, against the same weeks of previous years. It serves both sides of the same shelf: the manufacturer scheduling a production run, and the distributor raising a purchase order that has to clear a supplier's lead time before the season arrives. Veterinary pharmacological lines are the clearest case — antiparasitics, antibiotics and vaccines move on a seasonal curve set by herd cycles, husbandry calendars and weather, and the decision to make them or buy them is taken months before the demand appears.
See the projectsCommerce platform
An end-to-end retail system: the storefront a customer buys from, the order as it moves through picking, packing and delivery, the inventory it draws down, and the customer record that remembers all of it. The owner gets margin and stock; the support team gets open orders and history without touching the owner's numbers.
See the projectsNative desktop app
A native macOS application for writing Persian by speaking it. Built because dictation tools treat Persian as an afterthought: the text arrives without correct half-spaces, and half the work becomes repairing what was transcribed.
See the projectsCoaching platform
Coaches assign exercises to each student and record what was done, so a student arriving at the gym knows their programme without asking. Body measurements load into the athlete's record, turning progress into a history rather than a memory.
See the projectsWhat changes
Stock, orders and revenue agree across every screen, because they come from one system rather than three spreadsheets.
The reports, the syncing, the reminders — done before anyone opens a laptop.
Customers and staff get an answer from the real catalogue or the real policy, at any hour.
Every order and movement is history you can query, so next season is a decision instead of a guess.
Technical articles
Engineering notes on testing, delivery and the operational systems a business grows into — the failures, the mechanisms, and what each one costs.
12 min read
Taking the order is the part that works. Everything after it — stock that stops agreeing, a hundred orders each needing a different action, returns, receipts, the question of what actually sold this year — is where a shop either has a system behind it or does not.
Read the article9 min read
A feature can be finished for a week and still not be in anyone's hands. What sits in that gap is usually a person, a set of steps they remember, and an evening nobody wanted to spend. This is what a pipeline replaces, stage by stage.
Read the article13 min read
An application that runs in a demo and an application that holds up under real users are two different things. This is the gap between them: the families of failure that live in it, and which layer of testing catches which.
Read the articleStraight answers
A focused automation is two to four weeks. A full operational system is usually three to six months, delivered in two-week increments you can use as they land — you are not waiting until the end to see it.
It depends on scope, and we will not pretend otherwise. After the first stage you get a written scope with a fixed estimate, before any build work starts. If the work is not worth doing, we say so then.
You own the running software, the data and the infrastructure it sits on, with full administrative access. Source code transfer is a separate arrangement — ask and we will price it.
Before any AI work begins we put in writing which data leaves your organisation and where it goes. Your data is never used to train a model and never appears in another client's project. Where sensitivity demands it, running the model on internal infrastructure is assessed and implemented if feasible.
Usually. Anything with an API, a database or even a scheduled file export can be connected. Where a system is genuinely closed, we will tell you before you spend anything.
You get an admin panel for the things that change often. Beyond that, new features are a separate piece of work with their own estimate — never an open-ended retainer you forgot you were paying.
Next step
A thirty-minute conversation about how your work moves today and where software would actually help. No slides, no obligation — and if the answer is that you do not need us, we will tell you.