[{"data":1,"prerenderedAt":191},["ShallowReactive",2],{"navigation-en":3,"language-switcher-\u002Fen\u002Fpricing":87,"cennik-en":93},{"services":4,"industries":48,"caseStudies":69},[5,10,14,19,23,27,31,35,39,43],{"slug":6,"navLabel":7,"navGroup":8,"heroHeadline":9},"web-applications","Web applications","build","A web application built around your process",{"slug":11,"navLabel":12,"navGroup":8,"heroHeadline":13},"erp-systems","ERP systems","An ERP system built for your company, not the other way round",{"slug":15,"navLabel":16,"navGroup":17,"heroHeadline":18},"integrations-and-api","Integrations and APIs","improve","Your systems stop being islands",{"slug":20,"navLabel":21,"navGroup":17,"heroHeadline":22},"ai-implementation","AI implementation","AI deployed where it actually saves time",{"slug":24,"navLabel":25,"navGroup":17,"heroHeadline":26},"process-automation","Process automation","Work no one should be doing by hand",{"slug":28,"navLabel":29,"navGroup":8,"heroHeadline":30},"websites","Websites","A site that loads instantly and brings in inquiries",{"slug":32,"navLabel":33,"navGroup":8,"heroHeadline":34},"mobile-applications","Mobile applications","One codebase, both platforms",{"slug":36,"navLabel":37,"navGroup":17,"heroHeadline":38},"code-audit-and-project-takeover","Code audit and takeover","The project stalled. We'll take it over and tell you the truth about its condition",{"slug":40,"navLabel":41,"navGroup":17,"heroHeadline":42},"maintenance-and-support","Maintenance and support","A system needs someone watching it after launch",{"slug":44,"navLabel":45,"navGroup":46,"heroHeadline":47},"discovery-workshop","Discovery workshop","start","Before you decide to build, find out exactly what you're building",[49,53,57,61,65],{"slug":50,"navLabel":51,"heroHeadline":52},"manufacturing","Manufacturing","The works order reaches the floor as a printout from an email",{"slug":54,"navLabel":55,"heroHeadline":56},"automotive","Automotive","The customer exists in three places at once",{"slug":58,"navLabel":59,"heroHeadline":60},"industrial-automation","Industrial automation","You sell competence that doesn't photograph",{"slug":62,"navLabel":63,"heroHeadline":64},"e-commerce","E-commerce","The shop works. What sits behind it comes apart",{"slug":66,"navLabel":67,"heroHeadline":68},"logistics","Transport and logistics","The job arrives by email, the status comes back by phone",[70,77,82],{"slug":71,"client":72,"tag":73,"year":74,"summary":75,"image":76},"dss-by-caredo","Caredo","Product",2025,"We build the whole DSS product together with the Caredo team — from the CRM and planner to the software behind the key lockers and totems.","\u002Fimg\u002Fcase-studies\u002Fdss\u002Fkluczykomat\u002Fframe_0169.webp",{"slug":78,"client":72,"tag":79,"year":74,"summary":80,"image":81},"dss-by-caredo-website","Product website","We built the DSS product website end to end — from design to launch — on Caredo's visual identity.","\u002Fimg\u002Fscreenshots\u002Fdss-desktop.jpg",{"slug":83,"client":83,"tag":84,"year":74,"summary":85,"image":86},"2motion","Brand and website","A whole brand from scratch — logo, colours, business cards — a company website and blog posts that position 2motion in search.","\u002Fimg\u002Fscreenshots\u002F2motion-desktop.jpg",[88],{"code":89,"label":90,"name":91,"to":92},"pl","PL","Polish","\u002Fcennik",{"id":94,"title":95,"body":96,"description":136,"extension":137,"factors":138,"faq":154,"heroHeadline":167,"heroSubline":168,"meta":169,"models":170,"navigation":186,"path":187,"seo":188,"stem":189,"__hash__":190},"pricingEn\u002Fen\u002Fcompany\u002Fpricing.md","Pricing and engagement models",{"type":97,"value":98,"toc":128},"minimark",[99,104,108,111,115,118,121,125],[100,101,103],"h2",{"id":102},"where-the-number-in-a-quote-comes-from","Where the number in a quote comes from",[105,106,107],"p",{},"A quote is built by breaking the scope into tasks, estimating each one separately and adding a buffer for risks we name out loud. Not by multiplying \"a big project\" by a rate.",[105,109,110],{},"That is why every quote we send has two parts: a figure and a list of assumptions. An assumption reads like \"the warehouse system exposes an API for stock levels and its documentation is current\". If it turns out to be false, it is clear exactly which line changes and why — instead of a conversation about whether a change order is justified at all.",[100,112,114],{"id":113},"three-offers-an-order-of-magnitude-apart","Three offers an order of magnitude apart",[105,116,117],{},"This isn't an anomaly, it's the norm, and it almost always means each one is pricing a different scope. One assumes a template with minor changes, another a build from scratch, a third a build from scratch plus migration and integrations.",[105,119,120],{},"They only become comparable once the scope is shared and written down. That is what the discovery workshop is for — and why its output is yours, including when you build it with someone else.",[100,122,124],{"id":123},"what-is-not-in-those-figures","What is not in those figures",[105,126,127],{},"A licence for our own engine, because we don't have one. A fee for access to your own code. A margin on hosting. The code, the rights and the infrastructure are yours from the first commit — not as a gesture, but because the project has to be transferable.",{"title":129,"searchDepth":130,"depth":130,"links":131},"",3,[132,134,135],{"id":102,"depth":133,"text":103},2,{"id":113,"depth":133,"text":114},{"id":123,"depth":133,"text":124},"Three billing models — fixed price, time and material, dedicated team. When each makes sense, what actually drives the cost, and where the number in a quote comes from.","md",[139,142,145,148,151],{"title":140,"body":141},"The number of exceptions in the process","The most consistently underestimated driver. A process described in three sentences usually has five exceptions nobody mentioned because \"everyone knows\". Each is a separate path through the system. The discovery workshop exists mainly to surface them before the quote rather than after it.",{"title":143,"body":144},"Integrations with systems you don't control","Integrating with an API that has documentation and a sandbox is a line in a schedule. Integrating with a system whose access has to be negotiated and whose documentation doesn't exist is a risk — and it is usually what explains the spread between competing offers.",{"title":146,"body":147},"Data migration","Moving data out of spreadsheets and an old system is often more expensive than the feature that data feeds. Historical data is always inconsistent; the only question is how badly, and how much of it has to be repaired before the system can trust it.",{"title":149,"body":150},"The number of roles and permissions","A system where everyone sees everything is many times cheaper than one where five roles see five different slices of the same data. This rarely appears in a requirements document and shows up sharply in a quote.",{"title":152,"body":153},"Availability and performance requirements","An internal tool for twenty people and a platform that has to survive a campaign are two different projects at the same feature list. Committed uptime and expected traffic change the architecture, not just the hosting bill.",[155,158,161,164],{"q":156,"a":157},"Why aren't there price ranges on the site?","Because a range without a scope carries no information, and with a scope it stops being a range. Any figure here would be either so wide as to be useless or so narrow as to be untrue for most projects. What drives the spread we do describe directly, in the article on what a web application costs.",{"q":159,"a":160},"What does the discovery workshop cost?","It depends on how complex the process is and how many people need to be in the room — we give a figure after the first, free call. It is the only stage we price before the workshop, because it is the only one with a predictable scope.",{"q":162,"a":163},"Does the workshop fee come off the project?","No, and deliberately so. Deducting it would turn the workshop into a deposit on a build, and its whole value is that its outcome can be \"don't build this\". You are paying for an answer, not for an introduction to an order.",{"q":165,"a":166},"Who pays for infrastructure?","You do, directly with the provider. Cloud accounts, domains and the repository are set up in your name, so there is no margin on reselling hosting and no situation where changing vendor means migrating everything.","There is no price per page. There are three ways to bill and a set of stated assumptions","Custom software has no list price because it has no list scope. It does have countable cost drivers — every one we work with is below.",{},[171,176,181],{"name":172,"bestFor":173,"billing":174,"body":175},"Fixed price","Projects with a closed scope, after a discovery workshop","One figure, agreed before the start","You know the number and the date before the first line of code. It requires a scope that can actually be closed, which in practice always means going through discovery first. Without it, fixed price is a quote for risk rather than for work — and either we overpay for the risk or you overpay for the buffer.",{"name":177,"bestFor":178,"billing":179,"body":180},"Time and material","Products that will evolve while they are being built","A rate against hours actually worked","Scope agreed iteratively, billed for real time. It makes sense when the direction is known but the details are still forming, and pinning them to paper would turn the project into a negotiation over change orders. It requires trust both ways, which is why progress is visible on staging every two weeks.",{"name":182,"bestFor":183,"billing":184,"body":185},"Dedicated team","Development measured in quarters, not weeks","A fixed monthly figure","An agreed team working on your side, billed monthly. It makes sense for a product that keeps growing after launch — cheaper and faster than commissioning each change separately, because the cost of re-learning the context each time disappears.",true,"\u002Fen\u002Fcompany\u002Fpricing",{"title":95,"description":136},"en\u002Fcompany\u002Fpricing","QtPG6PHbauJOT4UJDXYMYiIND3BIMiEH86O9ScDSt64",1790522540966]