Database architecture
Real constraints, indexes for the actual query patterns, partitioning, full-text and vector search, migrations that survive a multi-instance deploy.
Senior-only, distributed, opinionated. We take prototypes to production, then stay to maintain and improve them.
Houdrik is a distributed, senior-only studio. We take prototypes — AI-built, vibecoded, contractor-handed-off, or your own first attempt — and bring them to production-grade. Then we stay on to maintain and improve them.
The studio is led by engineers who have been shipping production software together for years. We are deliberately small, senior-only and distributed, working asynchronously across timezones with a synchronous touch-point every two weeks. The smallest team that can ship a serious product reliably is also the cheapest to coordinate, the easiest to keep aligned, and the fastest to move. The case studies on this site reflect engagements led together by the same engineers — under the studio and from prior work.
AI made it astonishingly easy to scaffold an application. A founder with no engineering background can produce a working prototype in an afternoon. A product manager can hand a model a screenshot and get back something that almost looks like a real product.
What AI has not made easy is the next part. The part where the prototype meets real users. The part where authentication has to actually be secure, the database schema has to support an audit, the deploy pipeline has to be reversible, the observability has to answer "why was it slow at 14:07 last Tuesday?", and the on-call runbook has to be readable by a half-asleep engineer.
That is roughly 90% of the work of running software. AI helps with parts of it, but not enough to ship without an experienced team. We are that team.
We are not for everybody, and we say so. We work best with:
We turn down engagements where:
Frontend or backend. TypeScript, Python, Go, or whatever else fits. Managed cloud or self-hosted. Postgres or another database where it earns its place. We refuse to list a stack on this page because the answer depends entirely on your timeline, your team's skills, your hosting constraints, and what failure looks like at 3am.
What is universal: we pick mature, well-maintained tools that your team will still be able to inherit and operate in three years. We name every choice clearly in the kickoff document and defend it in writing. If you have a stack preference we'll usually accommodate it.
Engagements are time-boxed. Even retainers have a defined monthly budget and a renewal cadence. There is always an off-ramp.
Demos at the end of every sprint. Two-week sprints. The demo is on a real URL, on real infrastructure — never a screenshot, never localhost. We do not perform mid-sprint progress; we ship at the end and let the artefact speak. If something needs an out-of-band conversation we have one, but the cadence stays calm.
Decisions are written down. Every architectural decision lives in the repo as a one-screen Architecture Decision Record. Future-us is grateful; clients can read along.
The work is yours from day one. Code, infrastructure, deploy pipelines, runbooks, observability dashboards. We use no proprietary middleware. We retain no lock-in. Walking away on day 91 is supported by design.
We don't disappear after launch. A monthly retainer for ongoing maintenance and improvement is the most common follow-on engagement. If you'd rather take it in-house we hand off cleanly. Either is fine.
The simplest path: send us a paragraph about what you want to build, fix, or take over. We reply within one business day. The first conversation is fifteen to thirty minutes, no obligation, with whoever from our team would lead the engagement. If we're not a fit we'll tell you, and usually we'll suggest someone who is.
We are also happy to do paid one-week scoping engagements — written architecture proposal, risk-ranked plan, fixed fee — for projects where the right shape isn't yet clear.
Find us via the contacts page.
No juniors, no bench-warmers. Every engagement draws on the same senior disciplines — the ones that decide whether a system survives its second year.
Real constraints, indexes for the actual query patterns, partitioning, full-text and vector search, migrations that survive a multi-instance deploy.
Service boundaries, queues, caching, idempotency, retries — the patterns that decide whether a feature scales or quietly degrades.
OWASP-clean authentication, multi-tenant isolation at the database level, secrets storage, audit trails, compliance for regulated clients.
Structured logs with correlated request IDs, metrics that map to user impact, distributed tracing, runbooks a half-asleep engineer can follow.
RAG pipelines, evaluation sets, cost ceilings, prompt structure, graceful refusal — the engineering that turns model output into a product feature.
Containerised deploys, reversible releases, performance budgets the team measures and defends.
Component systems, accessibility, front-end performance, the editorial polish that makes a tool feel finished.
CRM and back-office workflows replaced with reliable software — scheduling, reporting, finance pipelines that don't fail silently.
No juniors. No bench-warmers. The people on the first call are the people who write the code that reaches your production.
Frontend, backend, SQL by hand, infrastructure and CI configuration — without flinching, and without a hand-off to someone junior.
We grow the studio by ones, not fives. We would rather decline a profitable engagement than dilute the bar that makes it work.
Reply within one business day. Vibecoded MVP, AI-built draft, half-finished project, or a working product that's starting to crack — all welcome.
Start a project