Blog
Engineering notes from real production work
Practical writing on AI in production, modernizing legacy systems and delivering software with dedicated teams — the thinking behind the platforms we build.
Latest
Fresh off the keyboard
Our most recent long-form article.
Building AI agents that call tools safely
An agent that can call tools can also delete a row, send an email or spend money. Safety comes from the boundary you build around it, not from asking the model to behave.
An agent that can call tools can also delete a row, send an email or spend money. Safety comes from the boundary you build around it, not from asking the model to behave.
More articles
From the archive
Engineering lessons from delivery, architecture and AI work.
RAG that holds up under real queries
Retrieval-augmented generation is easy to demo and hard to keep accurate. Most failures happen in retrieval, long before the model sees a token.
Shipping AI features that survive production
Most AI demos never become products. The gap is rarely the model — it is evaluation, guardrails and the boring integration work around it.
Cutting LLM cost and latency without cutting quality
The default model on the default settings is rarely the right production choice. Most of the savings come from routing, caching and not sending tokens you did not need to send.
Modernizing legacy systems without betting the company on a rewrite
Big-bang rewrites fail for predictable reasons. Here is the incremental path we use to modernize systems that cannot go offline.
Choosing and tuning a vector database
The embedding model gets the attention, but retrieval quality and cost live in the index. Recall, latency and memory are a triangle you cannot fully win.
What actually makes a dedicated development team work
Staff augmentation fails quietly, through unclear ownership and timezone drift, long before anyone admits it is failing.
Multi-tenant SaaS architecture decisions
How you isolate tenants is the decision everything else inherits. Get it wrong and you find out the day one customer's data shows up in another's dashboard.
Building a document and OCR pipeline that scales
Extracting structured data from PDFs and scans is where a lot of AI value hides — and where a lot of pipelines quietly return garbage on the messy inputs.
Authorization that does not fall apart
Authentication proves who you are; authorization decides what you can touch. The second one is where the breaches live, and where scattered permission checks quietly rot.
Postgres schema design for performance that lasts
The queries that kill a database at scale were made slow by decisions taken on day one. Good schema design is mostly about the indexes and constraints you commit to early.
React architecture that survives a growing team
The Next.js app that felt clean with three developers turns into a merge-conflict machine at fifteen. The fix is boundaries and data-fetching discipline, not another state library.
Background jobs and queues done right
Anything slow, flaky or third-party belongs off the request path. The hard part is not moving work to a queue — it is making that work idempotent and observable.
Want the full stories behind the builds?
Our case studies go deep on real production systems — the client problem on one side, the architecture and engineering on the other.
Have a system you need built or rescued?
We help with medical operations, CRM automation, telephony, AI-assisted documents, customer portals, SaaS platforms and cloud infrastructure.