[{"data":1,"prerenderedAt":164},["ShallowReactive",2],{"blog":3},[4,54,113],{"id":5,"title":6,"body":7,"date":43,"description":44,"extension":45,"meta":46,"navigation":47,"path":48,"readingTime":49,"seo":50,"stem":51,"tag":52,"__hash__":53},"blog\u002Fblog\u002Ffrom-brief-to-production.md","From initial brief to production release",{"type":8,"value":9,"toc":36},"minimark",[10,14,19,22,26,29,33],[11,12,13],"p",{},"Most software projects begin with an incomplete picture. A founder or product owner has a clear sense of the problem and a rough outline of the solution, but many of the details that determine success have yet to be defined. Our role is to establish those details quickly, and at a cost low enough that early course corrections remain inexpensive.",[15,16,18],"h2",{"id":17},"discovery","Discovery",[11,20,21],{},"Every engagement begins with a short discovery phase. The objective is not an exhaustive specification; it is a shared, accurate understanding of the critical user journey and the most significant technical risk. Both are documented in plain language and agreed upon before any production code is written.",[15,23,25],{"id":24},"prototyping-the-critical-workflow","Prototyping the critical workflow",[11,27,28],{},"We then prototype the single workflow that matters most. A working, clickable version of the core journey surfaces more insight in an afternoon than weeks of discussion. It is also where scope is refined, and reducing scope early remains the most cost-effective optimization available.",[15,30,32],{"id":31},"weekly-delivery","Weekly delivery",[11,34,35],{},"Development proceeds in weekly increments, each deployed to a staging environment that stakeholders can use directly. Demonstrable progress in working software provides a far clearer picture than any status report.",{"title":37,"searchDepth":38,"depth":38,"links":39},"",2,[40,41,42],{"id":17,"depth":38,"text":18},{"id":24,"depth":38,"text":25},{"id":31,"depth":38,"text":32},"2026-09-18","How we turn a one-paragraph brief into production software within weeks, using a structured discovery and delivery process.","md",{},true,"\u002Fblog\u002Ffrom-brief-to-production",1,{"title":6,"description":44},"blog\u002Ffrom-brief-to-production","Process","0AHZSdtGfpVDd7b-50sYo9a_yzI8PhhdIgkuk44eSAU",{"id":55,"title":56,"body":57,"date":105,"description":106,"extension":45,"meta":107,"navigation":47,"path":108,"readingTime":49,"seo":109,"stem":110,"tag":111,"__hash__":112},"blog\u002Fblog\u002Fwhy-nuxt-is-our-default.md","Why Nuxt is our default web framework",{"type":8,"value":58,"toc":100},[59,62,66,69,73,76,80,97],[11,60,61],{},"We are technology-agnostic in principle but deliberate in practice. For the majority of the web products we deliver, Nuxt is our default framework, and the reasons are practical rather than fashionable.",[15,63,65],{"id":64},"rendering-and-performance","Rendering and performance",[11,67,68],{},"Server-side rendering and static generation are built in, which addresses search visibility and first-load performance from the outset. File-based routing and auto-imports keep teams productive without unnecessary configuration.",[15,70,72],{"id":71},"a-unified-backend","A unified backend",[11,74,75],{},"Nitro, the server engine behind Nuxt, allows a lightweight backend to sit alongside the front end. This removes an entire category of integration code and simplifies deployment.",[15,77,79],{"id":78},"when-we-recommend-an-alternative","When we recommend an alternative",[81,82,83,91],"ul",{},[84,85,86,90],"li",{},[87,88,89],"strong",{},"Next.js"," — when the client's team works primarily in React, or plans to share components with a React Native mobile app.",[84,92,93,96],{},[87,94,95],{},"Astro"," — when a site consists almost entirely of static content.",[11,98,99],{},"The framework is never the objective. The objective is the most direct route to a fast, maintainable product.",{"title":37,"searchDepth":38,"depth":38,"links":101},[102,103,104],{"id":64,"depth":38,"text":65},{"id":71,"depth":38,"text":72},{"id":78,"depth":38,"text":79},"2026-08-02","The reasons Nuxt is our standard choice for web products, and the circumstances in which we recommend an alternative.",{},"\u002Fblog\u002Fwhy-nuxt-is-our-default",{"title":56,"description":106},"blog\u002Fwhy-nuxt-is-our-default","Engineering","lRhC0dylERPd7oIWRUMEAiHCXKmD1boZA0PHpuM0gyM",{"id":114,"title":115,"body":116,"date":156,"description":157,"extension":45,"meta":158,"navigation":47,"path":159,"readingTime":49,"seo":160,"stem":161,"tag":162,"__hash__":163},"blog\u002Fblog\u002Fautomation-with-measurable-return.md","Building automation that delivers a measurable return",{"type":8,"value":117,"toc":152},[118,121,125,128,132,135,149],[11,119,120],{},"Automation is an attractive investment, but it is easy to commit resources before the return is clear. Our guiding principle is to automate first the tasks that are both high in frequency and low in judgment.",[15,122,124],{"id":123},"reliability-is-the-real-engineering-work","Reliability is the real engineering work",[11,126,127],{},"Data extraction pipelines, including scrapers and crawlers, illustrate this well. They can save substantial time, but the meaningful engineering effort does not lie in the first version that works on a developer's machine. It lies in a system that continues to operate when target sites change, proxies are blocked and volumes increase.",[15,129,131],{"id":130},"designing-for-failure","Designing for failure",[11,133,134],{},"We therefore design for failure from the first day:",[81,136,137,140,143,146],{},[84,138,139],{},"Retries with exponential backoff",[84,141,142],{},"Proxy rotation and rate limiting",[84,144,145],{},"Structured logging for every run",[84,147,148],{},"Alerts when extraction rates fall below expected levels",[11,150,151],{},"This operational groundwork is what turns a useful script into a dependable business system.",{"title":37,"searchDepth":38,"depth":38,"links":153},[154,155],{"id":123,"depth":38,"text":124},{"id":130,"depth":38,"text":131},"2026-06-21","A practical framework for deciding what to automate first, and how to keep data extraction pipelines reliable in production.",{},"\u002Fblog\u002Fautomation-with-measurable-return",{"title":115,"description":157},"blog\u002Fautomation-with-measurable-return","Automation","WJtVmvnxn6ogDYlVDCgMKXVbRRhEQ10Je9Huwt8Hy6Q",1792002393579]