Custom Software Engineering
Custom software engineering means building the system your operation actually needs instead of bending it around off-the-shelf software. Pruning Labs designs and ships high-performance web platforms, internal tools, and APIs - typically Next.js on the edge with Go or Python services and PostgreSQL - with performance budgets and handover documentation included.
Fewer moving parts, on purpose
The default architecture of 2026 is six services, four managed platforms, and a queue nobody remembers adding. It ships slowly and it breaks in ways nobody can reproduce.
We start from subtraction. One database until there is a measured reason for two. Server rendering until interactivity demands otherwise. A background worker only when a request genuinely cannot wait. Every component in the system has to justify its own operational cost.
Performance as a budget, not an afterthought
We set explicit budgets at the start of a build - server response time, Largest Contentful Paint, Interaction to Next Paint, bundle size - and treat a regression as a failing test rather than a follow-up ticket.
Deploying on the edge helps: static shells and cached data served from the network location nearest your user, with dynamic work kept small and close to the data.
- Core Web Vitals in the good band on real field data, not just lab scores
- Server components by default; client JavaScript only where interaction requires it
- Query budgets and indexes reviewed before launch, not after the first incident
- Observability wired in from the first deploy
Code you can own
You get the repository, the infrastructure definitions, the runbook, and an architecture document that explains why each decision was made - including the ones we would revisit.
We write for the engineer who inherits this in eighteen months. Boring names, obvious structure, tests where they carry weight, and comments only where the code cannot explain itself.
Where we fit
Greenfield products where the first version has to be right. Rescue work on a codebase that has become slow or fragile. And focused platform work alongside an existing team - usually the parts nobody has had time to fix.
What you get
- Architecture document with the trade-offs written down
- Production application with CI/CD and preview environments
- Performance budgets enforced in the pipeline
- Observability: logs, traces, and alerting that names an owner
- Runbook and handover sessions with your team
Typical stack
- Next.js
- React
- TypeScript
- Go
- Python / FastAPI
- PostgreSQL
- Cloudflare Workers
- Rust / WebAssembly
Related work
Heirview
How Pruning Labs replaced blunt dunning emails and fragile cron retries with a decline-code-aware retry state machine on Go and Temporal for Heirview.
Hireeing
How Pruning Labs built a direct ATS extraction pipeline, deterministic resume matching, and a zero-friction autofill extension for Hireeing's early-career recruitment platform.
Hindi PDF Editor
How Pruning Labs built a privacy-first PDF platform with Devanagari glyph shaping and OCR running entirely in the browser on Rust and WebAssembly - zero bytes uploaded.
Further reading
pgvector or a dedicated vector database
When PostgreSQL with pgvector is the right default for RAG, what actually breaks at scale, and the specific signals that justify moving to a dedicated vector store.
INP is the hard Core Web Vital, and it is a JavaScript problem
Interaction to Next Paint is the metric most sites fail, and image compression will not fix it. Where the long tasks come from, how to break them up, and what an INP budget looks like in practice.
Questions we get asked
Do you work with existing codebases?
Yes. A substantial share of our work is rescue and modernisation: profiling what is slow, isolating what is fragile, and shipping improvements incrementally rather than proposing a rewrite by reflex.
What does an engagement cost?
We scope per project after a discovery call rather than selling seat-hours. Most engagements fall into a two-week discovery, a six-to-twelve-week first release, and an optional ongoing retainer.
Who actually writes the code?
The founders and core engineers. There is no delivery layer between you and the engineers building the system, and no junior bench being trained on your budget.
