[{"data":1,"prerenderedAt":235},["ShallowReactive",2],{"home":3,"home:services":190,"home:work":207},{"id":4,"ai":5,"clients":53,"cta":93,"engagement":99,"experience":121,"extension":127,"faq":128,"hero":144,"howWeWork":165,"meta":177,"seo":178,"services":181,"stem":184,"work":185,"__hash__":189},"home\u002Fhome.yml",{"label":6,"title":7,"intro":8,"points":9,"link":22,"terminal":25},"How we use AI","Faster because of AI. Safe because of the rules around it.","We use AI coding agents on every project. They make us faster, and because we price by scope, that shows up on your side as a lower price and a shorter timeline. The rules below are what make it safe.",[10,13,16,19],{"title":11,"text":12},"Scoped credentials","Agents get their own credentials, scoped to the task and revoked when it ends. Never a person's keys.",{"title":14,"text":15},"Human review","Nothing an agent writes reaches production without a named engineer reviewing and merging it.",{"title":17,"text":18},"Your code, not training data","Client code is never used to train AI models and is deleted by the provider within 30 days.",{"title":20,"text":21},"Your cloud, if you prefer","Need code to stay inside your own cloud? We run the same tools through your AWS or Google account.",{"label":23,"to":24},"All the rules, on one page","\u002Fhow-we-use-ai",{"title":26,"command":27,"lines":28},"agent session · client repository","agent run --task \"add invoice export to the dashboard\"",[29,33,35,38,41,43,47,50],{"text":30,"pending":31,"note":32},"Scoped credential issued","Requesting a scoped credential","this repository, staging only, expires with the task",{"text":34},"Branch agent\u002Finvoice-export created",{"text":36,"pending":37},"Code and tests written","Writing code and tests",{"text":39,"pending":40},"Test suite passed","Running the test suite",{"text":42},"Pull request opened",{"text":44,"pending":45,"note":46},"Reviewed and merged by a named engineer","Waiting for review by a named engineer","the agent cannot merge on its own",{"text":48,"note":49},"Credential revoked","task finished",{"text":51,"info":52},"Production access: never granted",true,{"label":54,"title":55,"intro":56,"items":57},"Clients","Who we've built for.","From luxury travel to trucking and wholesale, in the US and Europe.",[58,66,74,82,90],{"name":59,"caption":60,"logo":61},"Vialuxury","Luxury travel · Netherlands",{"name":59,"src":62,"srcDark":63,"height":64,"ratio":65},"\u002Flogos\u002Fvialuxury.svg","\u002Flogos\u002Fvialuxury-light.svg",68,1.2633,{"name":67,"caption":68,"logo":69},"Corning","Manufacturing · United States",{"name":67,"src":70,"srcDark":71,"height":72,"ratio":73},"\u002Flogos\u002Fcorning.svg","\u002Flogos\u002Fcorning-light.svg",32,6.8157,{"name":75,"caption":76,"logo":77},"B2Bee","B2B wholesale · Serbia",{"name":75,"src":78,"srcDark":79,"height":80,"ratio":81},"\u002Flogos\u002Fb2bee.webp","\u002Flogos\u002Fb2bee-light.webp",38,3.33,{"name":83,"caption":84,"logo":85},"Trestle","Trucking · North America",{"name":83,"src":86,"srcDark":87,"height":88,"ratio":89},"\u002Flogos\u002Ftrestle.svg","\u002Flogos\u002Ftrestle-light.svg",28,5.6714,{"name":91,"caption":92},"National Bank of Serbia","Central bank · Serbia",{"title":94,"note":95,"button":96},"Tell us what you're building. We'll tell you what we'd do.","The first call is free, takes 30 minutes and commits you to nothing.",{"label":97,"to":98},"Book a call","\u002Fcontact",{"label":100,"note":101,"rows":102},"Every engagement includes","Fixed scope",[103,106,109,112,115,118],{"key":104,"value":105},"Scope","Written in plain language, agreed before we start",{"key":107,"value":108},"Price","One number. No hourly surprises",{"key":110,"value":111},"Timeline","Dated milestones with weekly demos",{"key":113,"value":114},"Team","Named senior engineers, no bait and switch",{"key":116,"value":117},"Handover","Docs, tests, and everything in your repository",{"key":119,"value":120},"AI use","Agent-assisted, human-reviewed, scoped access",{"before":122,"companies":123},"Before Software Sage, our engineers shipped software at",[124,125,126],"United Airlines","Starr Insurance","a US online lottery platform","yml",{"label":129,"title":130,"items":131},"Questions","The ones people ask first.",[132,135,138,141],{"title":133,"text":134},"Do you use AI to write code?","Yes, on every project. Every line is reviewed by a named engineer before it merges, agents never hold production access, and your code is never used to train anything. The full list of rules is on our AI page.",{"title":136,"text":137},"How do you price?","One price for an agreed scope, set before any work starts. Forward deployed engineers are priced per quarter.",{"title":139,"text":140},"Do you work with non-technical founders?","Yes. We explain the choices in plain language and make the call with you.",{"title":142,"text":143},"Who owns the code?","You do, from day one. We work in your repository and hand over documentation and tests with it.",{"eyebrow":145,"title":146,"intro":147,"primary":148,"secondary":149,"commits":152},"Software consulting and development · Belgrade","We advise on what to build, then build it for you.","A small team of senior engineers in Belgrade, working with companies across the US and EU. Fixed-scope engagements. No hand-holding needed.",{"label":97,"to":98},{"label":150,"to":151},"See our work","\u002Fwork",[153,154,155,156,157,158,159,160,161,162,163,164],"docs: agree scope for milestone 1","feat(checkout): add price check","test(checkout): cover expired cards","fix(pricing): round per night, not per stay","feat(search): index availability","refactor(payments): move to an outbox","chore(ci): cache dependencies","docs: weekly demo notes","feat(bookings): migrate cancellations","fix(sync): retry on timeout","test: add contract tests","docs: write the handover guide",{"label":166,"steps":167},"How we work",[168,171,174],{"title":169,"text":170},"A call","Thirty minutes. You talk, we ask questions. If we're not the right fit we'll say so and point you somewhere better.",{"title":172,"text":173},"A written proposal","Scope in plain language, dated milestones, one price. Agreed before anyone writes code.",{"title":175,"text":176},"Build, show, hand over","Weekly demos of working software. At the end: documentation, tests, and everything in your repository.",{},{"title":179,"description":180},"Software Sage · We advise on what to build, then build it for you.","Software consulting and development from Belgrade for companies across the US and EU. Fixed-scope engagements, led by senior engineers.",{"label":182,"title":183},"What we do","Consulting when you need a decision, development when you need it built, and often both in one engagement.","home",{"label":186,"link":187},"Selected work",{"label":188,"to":151},"All work","8OILNkwVFIxmTVYM09JbZViH1fH9V0coN60wrhZovgs",[191,195,199,203],{"number":192,"title":193,"summary":194},"01","Consulting and architecture","For when you're about to spend real money on software and want a second opinion first. We read the code, talk to the people, and write down what we'd do and why. You can hand the result to any team, including one that isn't us.",{"number":196,"title":197,"summary":198},"02","Product development","Web platforms, APIs, integrations and the infrastructure under them. We build in .NET and TypeScript on PostgreSQL, Kafka and AWS, and we build for the person who maintains it after us, with tests, documentation and code the next engineer can follow.",{"number":200,"title":201,"summary":202},"03","Modernisation and migrations","Replacing a system that still runs the business. We do it module by module: the old system keeps running, each new piece is proven in production, and there is never a weekend where everything switches at once. We've done this from Ruby to .NET on a live booking platform.",{"number":204,"title":205,"summary":206},"04","Forward deployed engineers","One or two of us join your team, in your tools and your stand-ups, for a quarter or longer. You get people who have led platform decisions before and will make them with you, rather than waiting to be told.",[208,219,228],{"path":209,"client":59,"title":210,"service":211,"stack":212},"\u002Fwork\u002Fvialuxury","Moving a live booking platform from Ruby to .NET without stopping it","Modernisation and migration",[213,214,215,216,217,218],".NET","PostgreSQL","Wolverine","Elasticsearch","Redis","Nuxt",{"path":220,"client":67,"title":221,"service":197,"stack":222},"\u002Fwork\u002Fcorning","One home for test data from Corning's outside manufacturers",[213,223,224,225,226,227],"Angular","Azure SQL","Azure Blob Storage","Cosmos DB","GitHub Actions",{"path":229,"client":75,"title":230,"service":231,"stack":232},"\u002Fwork\u002Fb2bee","The platform under an AI agent that takes wholesale orders in chat","AI and platform architecture",[233,234],"Azure Container Apps","Azure Service Bus",1793174665340]