MenuClose

Calculate a credible ROI and TCO

Present an ROI the buyer's finance team can check. Cobl calculates ROI, TCO and payback from their own figures, with every assumption sourced.

ROI calculator
ROI, TCO and payback from the buyer's figures, every assumption shown.
true
true
true
Pricing (opt.); ROI model (opt.)
Client figures (opt.)
Which deal is the calculation for?
{"$schema": "https://app.cobl.ai/embed/form-schema.json", "fields": [{"type": "Question", "label": "Which deal is the calculation for?", "placeholder": "Ex: Helix Logistics, 3 warehouses"}, {"type": "Select", "label": "Calculation", "choices": ["ROI", "TCO", "Both"]}, {"type": "Files", "label": "Client documents", "choices": ["Client figures (opt.)"]}, {"type": "Files", "label": "Your documents", "choices": ["Pricing (opt.)", "ROI model (opt.)"]}, {"type": "Website", "label": "Your website"}]}

Trusted by 1700+ teams to close deals faster.

Customer logos: Vinci Energies, Orano, Econocom, Ayming, Paragon, Randstad, Free, Adista, Alcatel-Lucent

Buyers don't trust vendor ROI numbers

Built backward from the price

You start from your price and stretch the gains until the ROI looks good. The buyer can tell.

Assumptions nobody can see

A big ROI figure on a slide, no source behind it. Finance asks where each number comes from.

Costs left out

Licenses are in. Setup, training and the months before adoption are not. The TCO falls apart in review.

ROI math that shows its work

Cobl takes the figures the buyer shared on calls, in emails and in documents. It calculates the gain, the full cost and the payback, and lists each assumption with its source so Finance can test it.

<!doctype html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>ROI calculator · flow</title><style>@font-face{font-family:"STK Bureau Serif Variable Complete";src:url(https://cdn.prod.website-files.com/68ee0ef582e0631038583e04/6a85b5fbe174d6db1359e4af_STKBureauSerifVariableComplete.woff2) format("woff2");font-weight:150 700;font-style:normal;font-display:swap}</style><link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&family=Instrument+Sans:wght@400;500&display=swap" rel="stylesheet"><style>:root{--tp:#181818;--ts:#545352;--tt:#767473;--bd:#e8e7e6;--ac:#9eff78;--ok:#2ebd43;--oktx:#1d7a2e;--warn:#f08a24;--warntx:#9a4f0a;--risk:#d9453d;--vi:#6e3eff;--serif:"STK Bureau Serif Variable Complete","STK Bureau Serif",Georgia,serif;--ui:Inter,system-ui,-apple-system,"Segoe UI",sans-serif;--meta:"Instrument Sans",Inter,sans-serif;--ease:cubic-bezier(.22,1,.36,1);--io:cubic-bezier(.65,0,.35,1)}*{box-sizing:border-box;margin:0;padding:0}html,body{width:100%;height:100%;overflow:hidden}body{font-family:var(--ui);color:var(--tp);-webkit-font-smoothing:antialiased}#bg{position:fixed;inset:0;background-repeat:no-repeat;background-size:cover}#bg::after{content:"";position:absolute;inset:0}#stage{position:absolute;left:50%;top:50%;transform-origin:center}[data-a]{opacity:0}.play [data-a]{animation-duration:calc(var(--t,550) * 1ms);animation-delay:calc(var(--d,0) * 1ms);animation-fill-mode:both;animation-timing-function:var(--ease);animation-iteration-count:1}.play [data-a=rise]{animation-name:rise}.play [data-a=fade]{animation-name:fade}.play [data-a=pop]{animation-name:pop}@keyframes rise{from{opacity:0;translate:0 calc(var(--y,10) * 1px)}to{opacity:1}}@keyframes fade{from{opacity:0}to{opacity:1}}@keyframes pop{from{opacity:0;scale:var(--sc,.92)}to{opacity:1}}.rv{opacity:0;translate:0 7px;transition:opacity .45s var(--ease),translate .55s var(--ease)}.rv.in{opacity:1;translate:0 0}.sw{display:inline-grid;vertical-align:top}.sw>*{grid-area:1/1;transition:opacity .3s var(--ease),translate .4s var(--ease)}.sw>.s1{opacity:0;translate:0 6px}.sw.on>.s0{opacity:0;translate:0 -6px}.sw.on>.s1{opacity:1;translate:0 0}#cur{position:absolute;left:0;top:0;width:22px;height:30px;z-index:50;pointer-events:none;opacity:0;transition:transform 850ms var(--io),opacity 300ms ease}#cur.on{opacity:1}#cur svg{width:20px;display:block;filter:drop-shadow(0 2px 3px rgba(0,0,0,.3));transform-origin:3px 3px;transition:transform 140ms var(--ease)}#cur.down svg{transform:scale(.86)}.ic{width:15px;height:15px;flex:none;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.lg{flex:none;width:32px;height:32px;border-radius:9px;background:#fff;display:grid;place-items:center;box-shadow:inset 0 0 0 1px rgba(0,0,0,.07)}.lg svg{width:17px;height:17px;display:block}.lg.ico{color:#fff;box-shadow:none}.lg.sm{width:20px;height:20px;border-radius:6px}.lg.sm svg{width:12px;height:12px}.lg.sm .ic{width:11px;height:11px}.st{flex:none;display:inline-flex;align-items:center;gap:6px;height:24px;padding:0 10px;border-radius:99px;font:500 12px/1 var(--meta);white-space:nowrap;background:#f1f0ef;color:var(--ts)}.st i{flex:none;width:7px;height:7px;border-radius:50%;background:currentColor}.card{position:relative;border-radius:14px;padding:16px 18px;--c1:#181818;--c2:#545352;--c3:#767473;--ln:#ebeae9;--chip:#f1f0ef;color:var(--c1)}.k-white{background:rgba(255,255,255,.96);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);box-shadow:0 18px 40px rgba(16,24,48,.2)}.mt{display:flex;align-items:center;gap:8px;font:400 12.5px/16px var(--meta);color:var(--c3);white-space:nowrap}.tg{padding:3px 9px;border-radius:99px;background:var(--chip);color:var(--c2);font-weight:500}@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}[data-a]{opacity:1}#cur{display:none}}html,body{background:#e9a58f}#bg{background-image:url("https://cdn.prod.website-files.com/68ee0ef582e0631038583e04/6abfb2c0a5552aefc231695e_background.jpg");background-position:55% 40%}#bg::after{background:linear-gradient(180deg,rgba(8,12,30,0.0),rgba(8,12,30,0.14))}#stage>*{position:absolute}.hd{height:30px;display:flex;align-items:center;justify-content:center;padding:0 14px;border-radius:11px;background:rgba(22,30,58,.3);border:1px solid rgba(255,255,255,.18);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);color:#fff;font:500 11px/1 var(--meta);letter-spacing:.66px;text-transform:uppercase;white-space:nowrap}.col{display:flex;flex-direction:column;justify-content:center;gap:10px}.ip{position:relative;height:58px;display:flex;align-items:center;gap:12px;padding:0 12px;border-radius:12px;white-space:nowrap}.ip .pt{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.ip .pt b{font-size:14px;line-height:18px;font-weight:500;overflow:hidden;text-overflow:ellipsis}.ip .pt small{font:400 11.5px/14px var(--meta);opacity:.72;overflow:hidden;text-overflow:ellipsis}.ip .ps{display:none;font-size:12.5px;font-weight:500}.P-glass .ip{background:linear-gradient(90deg,rgba(255,255,255,.2),rgba(255,255,255,.08)),rgba(18,26,56,.2);border:1px solid rgba(255,255,255,.3);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);box-shadow:0 5px 12px rgba(16,24,48,.08);color:#fff;text-shadow:0 1px 2px rgba(0,0,0,.12)}.node{padding:18px 20px;border-radius:16px;color:#fff;background:rgba(18,16,28,.86);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border:1px solid rgba(255,255,255,.16);box-shadow:0 22px 50px rgba(10,10,30,.3);display:flex;flex-direction:column;gap:14px}.nh{display:flex;align-items:center;gap:12px}.cobl-mark{flex:none;width:36px;height:36px;display:block}.nl{font-family:var(--serif);font-size:19px;line-height:23px}.nst{margin-top:4px;display:flex;align-items:center;gap:7px;font:500 12px/14px var(--meta);color:var(--ac);white-space:nowrap}.nst i{width:7px;height:7px;border-radius:50%;background:var(--ac);animation:pulse 1.4s ease-in-out infinite}.node.done .nst i{animation:none}@keyframes pulse{50%{opacity:.3}}.nk{display:flex;flex-direction:column;gap:9px;padding-top:13px;border-top:1px solid rgba(255,255,255,.12)}.ck{display:flex;align-items:center;gap:9px;font-size:13.5px;line-height:18px;color:rgba(255,255,255,.5);white-space:nowrap;transition:color .4s var(--ease)}.ck>i{flex:none;width:17px;height:17px;border-radius:50%;border:1.5px solid rgba(255,255,255,.3);display:grid;place-items:center;transition:background-color .3s var(--ease),border-color .3s var(--ease)}.ck>i svg{width:10px;height:10px;opacity:0;transition:opacity .2s}.ck.on{color:rgba(255,255,255,.94)}.ck.on>i{background:var(--ac);border-color:var(--ac)}.ck.on>i svg{opacity:1}.wr{left:0;top:0;width:1px;height:1px;pointer-events:none;overflow:visible}.wr svg{position:absolute;left:0;top:0;width:1px;height:1px;overflow:visible}.w{fill:none;stroke:#fff;stroke-width:1.5;stroke-linecap:round;opacity:.85}.fd{position:absolute;left:0;top:0;width:10px;height:10px;offset-anchor:50% 50%;offset-rotate:0deg;border-radius:50%;background:var(--ac);border:2px solid #181818;opacity:0}.play .fd{animation:flow 3000ms cubic-bezier(.45,0,.25,1) calc(740ms + var(--dl)) infinite both}@keyframes flow{0%{offset-distance:0%;opacity:0}3%{opacity:1}22%{opacity:1}26%,100%{offset-distance:100%;opacity:0}}.wl{translate:-50% -50%;padding:0 8px;border-radius:99px;border:1px solid rgba(255,255,255,.75);background:rgba(255,255,255,.82);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);color:#2b2b2b;font:500 11.5px/20px var(--ui);white-space:nowrap;z-index:2}.cout{gap:14px}@media (prefers-reduced-motion:reduce){.fd{opacity:1;offset-distance:55%}}.L-w .hd{top:36px}.L-w .h1,.L-w .cin{left:75px;width:290px}.L-w .h2,.L-w .cmid{left:495px;width:300px}.L-w .h3,.L-w .cout{left:925px;width:360px}.L-w .col{top:76px;height:320px}.L-m .hd{top:28px}.L-m .h1,.L-m .cin{left:14px;width:184px}.L-m .h2,.L-m .cmid{left:218px;width:228px}.L-m .h3,.L-m .cout{left:466px;width:340px}.L-m .col{top:70px;height:386px}.L-m .wl{display:none}.L-m .ip{height:52px;gap:10px;padding:0 10px}.L-m .ip .pt b{font-size:13px}.L-m .ip .st{display:none}.L-m .node{padding:16px 17px}.L-m .nl{font-size:17px;line-height:21px}.L-m .ck{font-size:12.5px}.L-c #stage{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:28px}.L-c #stage>.col{position:relative;left:auto;top:auto;height:auto}.L-c .hd,.L-c .wl,.L-c .ip .st,.L-c .ip .pt{display:none}.L-c .ip .ps{display:block}.L-c .cin{flex-direction:row;gap:8px;width:404px;justify-content:center}.L-c .ip{height:38px;gap:7px;padding:0 11px 0 6px;border-radius:10px}.L-c .ip .lg{width:26px;height:26px;border-radius:7px}.L-c .ip .lg svg{width:14px;height:14px}.L-c .cmid{width:330px}.L-c .node{padding:13px 16px;gap:10px}.L-c .nk{display:none}.L-c .nl{font-size:17px;line-height:21px}.L-c .cobl-mark{width:30px;height:30px}.L-c .cout{width:330px}.src{display:inline-flex;align-items:center;gap:7px;padding:3px 11px 3px 3px;border-radius:99px;background:var(--chip);font:500 12px/16px var(--meta);color:var(--c2);white-space:nowrap}.kp .kg{display:grid;grid-template-columns:repeat(var(--n),1fr);gap:8px;margin-top:12px}.kp .kt{padding:10px 12px;border-radius:10px;background:var(--chip)}.kp .kv{font-family:var(--serif);font-size:27px;line-height:31px;white-space:nowrap}.kp .kv b{font-weight:400}.kp .kl{font:400 12px/15px var(--meta);color:var(--c3);margin-top:2px;white-space:nowrap}.kp .src{margin-top:12px}</style></head><body class="P-glass"><div id="bg" aria-hidden="true"></div><div id="stage" role="img" aria-label="Cobl reads the figures Helix shared on a call, in an email and in your pricing, and calculates a 3-year ROI of 3.1x, a payback of 7 months and a full cost of 412k euros."><span class="hd h1" data-a="fade" data-d="0">What Cobl reads</span><span class="hd h2" data-a="fade" data-d="80">What Cobl calculates</span><span class="hd h3" data-a="fade" data-d="160">What you get</span><div class="wr" aria-hidden="true" data-a="fade" data-d="590" data-t="500"><svg></svg><div class="dots"></div></div><div class="col cin" aria-hidden="true"><div class="ip" data-a="rise" data-d="100"><span class="lg ico " style="background:#6e3eff"><svg class="ic" viewBox="0 0 24 24" aria-hidden="true"><path d="m16 13 5.2 3.5a.5.5 0 0 0 .8-.4V7.9a.5.5 0 0 0-.8-.4L16 11"/><rect x="2" y="6" width="14" height="12" rx="2"/></svg></span><span class="pt"><b>Call with Tom R.</b></span><span class="ps">Call</span><span class="st "><i></i>80 FTE</span></div><div class="ip" data-a="rise" data-d="220"><span class="lg "><svg viewBox="0 0 24 24" aria-hidden="true"><path fill="#EA4335" d="M24 5.457v13.909c0 .904-.732 1.636-1.636 1.636h-3.819V11.73L12 16.64l-6.545-4.91v9.273H1.636A1.636 1.636 0 0 1 0 19.366V5.457c0-2.023 2.309-3.178 3.927-1.964L5.455 4.64 12 9.548l6.545-4.91 1.528-1.145C21.69 2.28 24 3.434 24 5.457z"/></svg></span><span class="pt"><b>Re: volumes 2026</b></span><span class="ps">Email</span><span class="st "><i></i>2 sites</span></div><div class="ip" data-a="rise" data-d="340"><span class="lg "><svg viewBox="0 0 24 24" aria-hidden="true"><path fill="#34A853" d="M11.318 12.545H7.91v-1.909h3.41v1.91zM14.728 0v6h6l-6-6zm1.363 10.636h-3.41v1.91h3.41v-1.91zm0 3.273h-3.41v1.91h3.41v-1.91zM20.727 6.5v15.864c0 .904-.732 1.636-1.636 1.636H4.909a1.636 1.636 0 0 1-1.636-1.636V1.636C3.273.732 4.005 0 4.909 0h9.318v6.5h6.5zm-3.273 2.773H6.545v7.909h10.91v-7.91zm-6.136 4.636H7.910v1.91h3.410v-1.91z"/></svg></span><span class="pt"><b>Pricing grid</b></span><span class="ps">Pricing</span><span class="st "><i></i>2026</span></div></div><div class="col cmid" aria-hidden="true"><div class="node" data-a="pop" data-d="520"><div class="nh"><svg class="cobl-mark" aria-hidden="true" viewBox="3 3 31 32" fill="none"><g clip-path="url(#cc1)"><mask id="cm1" style="mask-type:alpha" maskUnits="userSpaceOnUse" x="3" y="3" width="31" height="32"><path d="M18.7946 3.89411C27.149 3.89411 33.9214 10.6667 33.9215 19.0211C33.9215 27.3756 27.1491 34.148 18.7946 34.148C10.4401 34.1479 3.6676 27.3755 3.6676 19.0211C3.66772 10.6667 10.4402 3.89423 18.7946 3.89411ZM24.0895 18.5455C21.9817 18.5455 20.2733 20.2542 20.2731 22.3619C20.2731 24.4698 21.9816 26.1793 24.0895 26.1793C26.1973 26.1792 27.9059 24.4698 27.9059 22.3619C27.9056 20.2542 26.1972 18.5455 24.0895 18.5455Z" fill="#D7D6D5"/></mask><g mask="url(#cm1)"><path d="M23.5704 1.17863L25.8687 43.3989" stroke="#0C0C0C" stroke-width=".9"/><path d="M38.3215 43.1413L11.1179 1.43636" stroke="#0C0C0C" stroke-width=".9"/><path d="M3.86743 35.8913L45.5724 8.6877" stroke="#0C0C0C" stroke-width=".9"/><path d="M23.8672 22.5342L20.4264 35.9259" stroke="#2D69FF" stroke-width="5.76"/><path d="M22.6978 1.05368L23.9048 23.227" stroke="#2D69FF" stroke-width="3.68"/><path d="M27.2203 22.2772L2.96823 23.5974" stroke="#F79797" stroke-width="6.94"/><path d="M25.6162 23.2476L3.13122 11.8482" stroke="#FF3131" stroke-width="6.45"/><path d="M23.3252 25.3431L32.4365 1.2181" stroke="#5934FF" stroke-width="2.98"/><path d="M37.6289 43.1794L10.4253 1.47442" stroke="#4AD35B" stroke-width="5.07"/><path d="M3.17432 35.929L44.8793 8.72543" stroke="#FFCB31" stroke-width="6.25"/></g></g><defs><clipPath id="cc1"><rect width="29.15" height="24.98" fill="white" transform="translate(3.73 3.51)"/></clipPath></defs></svg><div><p class="nl">ROI over 3 years</p><p class="nst"><i></i><span class="sw"><span class="s0">Calculating</span><span class="s1">Ready</span></span></p></div></div><div class="nk"><p class="ck"><i><svg viewBox="0 0 24 24" fill="none" stroke="#181818" stroke-width="3.2" stroke-linecap="round" stroke-linejoin="round"><path d="m5 12.5 4.5 4.5L19 7"/></svg></i>12 assumptions sourced</p><p class="ck"><i><svg viewBox="0 0 24 24" fill="none" stroke="#181818" stroke-width="3.2" stroke-linecap="round" stroke-linejoin="round"><path d="m5 12.5 4.5 4.5L19 7"/></svg></i>3 scenarios</p></div></div></div><div class="col cout" aria-hidden="true"><div class="card k-white kp" id="c1" data-a="pop" data-d="1910" data-t="600"><div class="mt"><span class="tg">Helix Logistics</span>Expected case</div><div class="kg" style="--n:3"><div class="kt rv"><p class="kv"><b>3.1x</b></p><p class="kl">ROI, 3 years</p></div><div class="kt rv"><p class="kv"><b data-count data-to="7" data-at="2410" data-dur="900">7</b> mo</p><p class="kl">payback</p></div><div class="kt rv"><p class="kv">€<b data-count data-to="412" data-at="2560" data-dur="900">412</b>k</p><p class="kl">full cost</p></div></div><div class="rv src"><span class="lg ico sm" style="background:#6e3eff"><svg class="ic" viewBox="0 0 24 24" aria-hidden="true"><path d="m16 13 5.2 3.5a.5.5 0 0 0 .8-.4V7.9a.5.5 0 0 0-.8-.4L16 11"/><rect x="2" y="6" width="14" height="12" rx="2"/></svg></span>Figures from Tom R. · Oct 21</div></div></div><span class="wl wl1" data-a="fade" data-d="840">Reads</span><span class="wl wl2" data-a="fade" data-d="840">Calculates</span></div><script> (function(){ var st=document.getElementById('stage'),root=document.body; var still=matchMedia('(prefers-reduced-motion: reduce)').matches; var LAY=[["w",1000,2.6,1360,420],["m",560,0,820,470],["c",0,0,420,440]],TL=[[1390,".ck:nth-child(1)","on"],[1720,".ck:nth-child(2)","on"],[2110,"#c1 .kt:nth-child(1)","in"],[2260,"#c1 .kt:nth-child(2)","in"],[2360,".node","done"],[2360,".nst .sw","on"],[2410,"#c1 .kt:nth-child(3)","in"],[3410,"#c1 .src","in"]],END=null,k=1,lay=LAY[0]; [].forEach.call(document.querySelectorAll('[data-d],[data-t]'),function(e){if(e.dataset.d)e.style.setProperty('--d',e.dataset.d);if(e.dataset.t)e.style.setProperty('--t',e.dataset.t);}); function fit(){var w=innerWidth,h=innerHeight; lay=LAY.filter(function(l){return w>=l[1]&&w/h>=l[2];})[0]||LAY[LAY.length-1]; LAY.forEach(function(l){root.classList.toggle('L-'+l[0],l===lay);}); st.style.width=lay[3]+'px';st.style.height=lay[4]+'px'; k=Math.min(w/lay[3],h/lay[4]);if(lay[5])k=Math.min(k,lay[5]); st.style.transform='translate(-50%,-50%) scale('+k+')';wire();} function box(el){var x=0,y=0,e=el;while(e&&e!==st){x+=e.offsetLeft;y+=e.offsetTop;e=e.offsetParent;}return{x:x,y:y,w:el.offsetWidth,h:el.offsetHeight};} function P(a,b,c,d){return 'M'+a+' C'+b+' '+c+' '+d;} function wire(){var r=st.querySelector('.wr');if(!r)return; var c=lay[0]==='c',ins=st.querySelectorAll('.cin>.ip'),nd=st.querySelector('.node'),outs=st.querySelectorAll('.cout>*'),ws=[],n=box(nd); [].forEach.call(ins,function(el,i){var b=box(el),a,z,m,o=i-(ins.length-1)/2; if(c){a=[b.x+b.w/2,b.y+b.h];z=[n.x+n.w/2+o*30,n.y];m=(a[1]+z[1])/2;ws.push([P(a,[a[0],m],[z[0],m],z),i*180]);} else{a=[b.x+b.w,b.y+b.h/2];z=[n.x,n.y+n.h/2+o*8];m=(a[0]+z[0])/2;ws.push([P(a,[m,a[1]],[m,z[1]],z),i*180]);}}); [].forEach.call(outs,function(el,j){var b=box(el),a,z,m,o=(j-(outs.length-1)/2); if(c){a=[n.x+n.w/2,n.y+n.h];z=[b.x+b.w/2,b.y];m=(a[1]+z[1])/2;ws.push([P(a,[a[0],m],[z[0],m],z),1050+j*160]);} else{a=[n.x+n.w,n.y+n.h/2+o*10];z=[b.x,b.y+b.h/2];m=(a[0]+z[0])/2;ws.push([P(a,[m,a[1]],[m,z[1]],z),1050+j*160]);}}); r.querySelector('svg').innerHTML=ws.map(function(w){return '<path class="w" d="'+w[0]+'"/>';}).join(''); r.querySelector('.dots').innerHTML=ws.map(function(w){return '<i class="fd" style="offset-path:path(\''+w[0]+'\');--dl:'+w[1]+'ms"></i>';}).join(''); var l1=st.querySelector('.wl1'),l2=st.querySelector('.wl2'),ci=ins[0]?box(ins[0]):n; if(l1){l1.style.left=(ci.x+ci.w+n.x)/2+'px';l1.style.top=(n.y+n.h/2-24)+'px';} if(l2&&outs[0]){var o=box(outs[0]);l2.style.left=(n.x+n.w+o.x)/2+'px';l2.style.top=(n.y+n.h/2-24)+'px';}} fit();addEventListener('resize',fit);if(document.fonts&&document.fonts.ready)document.fonts.ready.then(fit); var timers=[];function later(f,t){timers.push(setTimeout(f,t));} function act(e){var sel=e[1],c=e[2]; [].forEach.call(st.querySelectorAll(sel),function(el){c.split(' ').forEach(function(x){if(x[0]==='-')el.classList.remove(x.slice(1));else el.classList.add(x);});});} function count(el){var to=+el.dataset.to,at=+(el.dataset.at||0),dur=+(el.dataset.dur||1000);if(still){el.textContent=to;return;} el.textContent='0';later(function(){var t0=performance.now();(function step(now){var p=Math.min(1,(now-t0)/dur);p=1-Math.pow(1-p,3);el.textContent=Math.round(to*p);if(p<1)requestAnimationFrame(step);})(t0);},at);} var started=false; function play(){if(started)return;started=true;root.classList.add('play'); if(still){TL.forEach(function(e){if(e[1][0]!=='@')act(e);});[].forEach.call(document.querySelectorAll('[data-count]'),count);return;} [].forEach.call(document.querySelectorAll('[data-count]'),count); TL.forEach(function(e){later(function(){act(e);},e[0]);});} if('IntersectionObserver' in window){new IntersectionObserver(function(es){es.forEach(function(e){if(e.isIntersecting)play();});},{threshold:.3}).observe(document.body);}else play(); })(); </script></body></html>

Starts from today's cost

What the current process costs the buyer in time, people and errors, before any price is added.

Full cost, not just licenses

Setup, training, internal time and ramp-up, year by year over 3 years.

Scenarios you can change

Conservative, expected and best case. Change one assumption and see the new result.

Try it with Cobl

Calculate the ROI of our offer for Helix Logistics over 3 years.

Covered by

Get the gain, the total cost, the ROI and the payback period, year by year.

What will Helix really pay in year 1, setup and training included?

Covered by

See the full year 1 cost by type: licenses, setup, training and internal time.

What if adoption is 50% lower than planned?

Covered by

Get the ROI and payback in a conservative, expected and best case.

Give me the model in Excel so their finance team can check it.

Covered by

Receive an Excel file with every input and formula visible.

Try for free

A return Finance can check line by line

A modest ROI that Finance can verify beats a big one nobody believes. Clear numbers keep the talk on value, not on discount.

<!doctype html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>ROI calculator · pillar 1</title><style>@font-face{font-family:"STK Bureau Serif Variable Complete";src:url(https://cdn.prod.website-files.com/68ee0ef582e0631038583e04/6a85b5fbe174d6db1359e4af_STKBureauSerifVariableComplete.woff2) format("woff2");font-weight:150 700;font-style:normal;font-display:swap}</style><link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&family=Instrument+Sans:wght@400;500&display=swap" rel="stylesheet"><style>:root{--tp:#181818;--ts:#545352;--tt:#767473;--bd:#e8e7e6;--ac:#9eff78;--ok:#2ebd43;--oktx:#1d7a2e;--warn:#f08a24;--warntx:#9a4f0a;--risk:#d9453d;--vi:#6e3eff;--serif:"STK Bureau Serif Variable Complete","STK Bureau Serif",Georgia,serif;--ui:Inter,system-ui,-apple-system,"Segoe UI",sans-serif;--meta:"Instrument Sans",Inter,sans-serif;--ease:cubic-bezier(.22,1,.36,1);--io:cubic-bezier(.65,0,.35,1)}*{box-sizing:border-box;margin:0;padding:0}html,body{width:100%;height:100%;overflow:hidden}body{font-family:var(--ui);color:var(--tp);-webkit-font-smoothing:antialiased}#bg{position:fixed;inset:0;background-repeat:no-repeat;background-size:cover}#bg::after{content:"";position:absolute;inset:0}#stage{position:absolute;left:50%;top:50%;transform-origin:center}[data-a]{opacity:0}.play [data-a]{animation-duration:calc(var(--t,550) * 1ms);animation-delay:calc(var(--d,0) * 1ms);animation-fill-mode:both;animation-timing-function:var(--ease);animation-iteration-count:1}.play [data-a=pop]{animation-name:pop}@keyframes pop{from{opacity:0;scale:var(--sc,.92)}to{opacity:1}}.rv{opacity:0;translate:0 7px;transition:opacity .45s var(--ease),translate .55s var(--ease)}.rv.in{opacity:1;translate:0 0}.hl{border-radius:5px;padding:0 4px;margin:0 -4px;transition:background-color .5s var(--ease)}.hl.on{background:rgba(158,255,120,.55)}#cur{position:absolute;left:0;top:0;width:22px;height:30px;z-index:50;pointer-events:none;opacity:0;transition:transform 850ms var(--io),opacity 300ms ease}#cur.on{opacity:1}#cur svg{width:20px;display:block;filter:drop-shadow(0 2px 3px rgba(0,0,0,.3));transform-origin:3px 3px;transition:transform 140ms var(--ease)}#cur.down svg{transform:scale(.86)}.ic{width:15px;height:15px;flex:none;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.lg{flex:none;width:32px;height:32px;border-radius:9px;background:#fff;display:grid;place-items:center;box-shadow:inset 0 0 0 1px rgba(0,0,0,.07)}.lg svg{width:17px;height:17px;display:block}.lg.ico{color:#fff;box-shadow:none}.lg.sm{width:20px;height:20px;border-radius:6px}.lg.sm svg{width:12px;height:12px}.lg.sm .ic{width:11px;height:11px}.card{position:relative;border-radius:14px;padding:16px 18px;--c1:#181818;--c2:#545352;--c3:#767473;--ln:#ebeae9;--chip:#f1f0ef;color:var(--c1)}.k-white{background:rgba(255,255,255,.96);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);box-shadow:0 18px 40px rgba(16,24,48,.2)}.mt{display:flex;align-items:center;gap:8px;font:400 12.5px/16px var(--meta);color:var(--c3);white-space:nowrap}.av{flex:none;width:24px;height:24px;border-radius:50%;color:#fff;display:grid;place-items:center;font:600 9px/1 var(--ui);box-shadow:0 0 0 2px #fff}@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}[data-a]{opacity:1}#cur{display:none}}html,body{background:#e9a58f}#bg{background-image:url("https://cdn.prod.website-files.com/68ee0ef582e0631038583e04/6abfb2c0a5552aefc231695e_background.jpg");background-position:0% 55%;background-size:max(170.0vw,calc(170.0vh * 2.841)) auto}#bg::after{background:linear-gradient(180deg,rgba(8,12,30,0.0),rgba(8,12,30,0.14))}#stage>*{position:absolute}.focal{left:60px;top:0px;width:300px}.pn .ph2{display:flex;align-items:center;gap:11px}.pn .av{width:36px;height:36px;font-size:12px}.pn .pnm{font-family:var(--serif);font-size:18px;line-height:22px}.pn .pq{font-size:15px;line-height:21px;margin-top:12px}.pn .es{display:flex;align-items:center;gap:7px;margin-top:12px;font:400 12px/16px var(--meta);color:var(--c3);white-space:nowrap}.focal{top:50%;transform:translateY(-50%);margin-top:0px}</style></head><body class=""><div id="bg" aria-hidden="true"></div><div id="stage" role="img" aria-label="Tom R., CFO of Helix, gives the volumes on a call and Cobl highlights 80 planners at 40 euros an hour."><div class="focal" aria-hidden="true" data-a="pop" data-d="150" data-t="650"><div class="card k-white pn" id="c1"><div class="ph2"><span class="av " style="background:#5e8a48">TR</span><div><p class="pnm">Tom R.</p><p class="mt">CFO · Helix Logistics</p></div></div><p class="pq">“We have <span class="hl">80 planners at €40</span> an hour.”</p><p class="es rv"><span class="lg ico sm" style="background:#6e3eff"><svg class="ic" viewBox="0 0 24 24" aria-hidden="true"><path d="m16 13 5.2 3.5a.5.5 0 0 0 .8-.4V7.9a.5.5 0 0 0-.8-.4L16 11"/><rect x="2" y="6" width="14" height="12" rx="2"/></svg></span>Discovery call · Oct 21</p></div></div></div><script> (function(){ var st=document.getElementById('stage'),root=document.body; var still=matchMedia('(prefers-reduced-motion: reduce)').matches; var LAY=[["p",0,0,420,260]],TL=[[650,"#c1 .hl","on"],[1100,"#c1 .es","in"]],END=null,k=1,lay=LAY[0]; [].forEach.call(document.querySelectorAll('[data-d],[data-t]'),function(e){if(e.dataset.d)e.style.setProperty('--d',e.dataset.d);if(e.dataset.t)e.style.setProperty('--t',e.dataset.t);}); function fit(){var w=innerWidth,h=innerHeight; lay=LAY.filter(function(l){return w>=l[1]&&w/h>=l[2];})[0]||LAY[LAY.length-1]; LAY.forEach(function(l){root.classList.toggle('L-'+l[0],l===lay);}); st.style.width=lay[3]+'px';st.style.height=lay[4]+'px'; k=Math.min(w/lay[3],h/lay[4]);if(lay[5])k=Math.min(k,lay[5]); st.style.transform='translate(-50%,-50%) scale('+k+')';} function box(el){var x=0,y=0,e=el;while(e&&e!==st){x+=e.offsetLeft;y+=e.offsetTop;e=e.offsetParent;}return{x:x,y:y,w:el.offsetWidth,h:el.offsetHeight};} function P(a,b,c,d){return 'M'+a+' C'+b+' '+c+' '+d;} fit();addEventListener('resize',fit);if(document.fonts&&document.fonts.ready)document.fonts.ready.then(fit); var timers=[];function later(f,t){timers.push(setTimeout(f,t));} function act(e){var sel=e[1],c=e[2]; [].forEach.call(st.querySelectorAll(sel),function(el){c.split(' ').forEach(function(x){if(x[0]==='-')el.classList.remove(x.slice(1));else el.classList.add(x);});});} var started=false; function play(){if(started)return;started=true;root.classList.add('play'); if(still){TL.forEach(function(e){if(e[1][0]!=='@')act(e);});return;} TL.forEach(function(e){later(function(){act(e);},e[0]);});} if('IntersectionObserver' in window){new IntersectionObserver(function(es){es.forEach(function(e){if(e.isIntersecting)play();});},{threshold:.3}).observe(document.body);}else play(); })(); </script></body></html>

The buyer's figures

Volumes, costs and headcount from discovery, not an average pulled from a vendor study.

<!doctype html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>ROI calculator · pillar 2</title><style>@font-face{font-family:"STK Bureau Serif Variable Complete";src:url(https://cdn.prod.website-files.com/68ee0ef582e0631038583e04/6a85b5fbe174d6db1359e4af_STKBureauSerifVariableComplete.woff2) format("woff2");font-weight:150 700;font-style:normal;font-display:swap}</style><link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&family=Instrument+Sans:wght@400;500&display=swap" rel="stylesheet"><style>:root{--tp:#181818;--ts:#545352;--tt:#767473;--bd:#e8e7e6;--ac:#9eff78;--ok:#2ebd43;--oktx:#1d7a2e;--warn:#f08a24;--warntx:#9a4f0a;--risk:#d9453d;--vi:#6e3eff;--serif:"STK Bureau Serif Variable Complete","STK Bureau Serif",Georgia,serif;--ui:Inter,system-ui,-apple-system,"Segoe UI",sans-serif;--meta:"Instrument Sans",Inter,sans-serif;--ease:cubic-bezier(.22,1,.36,1);--io:cubic-bezier(.65,0,.35,1)}*{box-sizing:border-box;margin:0;padding:0}html,body{width:100%;height:100%;overflow:hidden}body{font-family:var(--ui);color:var(--tp);-webkit-font-smoothing:antialiased}#bg{position:fixed;inset:0;background-repeat:no-repeat;background-size:cover}#bg::after{content:"";position:absolute;inset:0}#stage{position:absolute;left:50%;top:50%;transform-origin:center}[data-a]{opacity:0}.play [data-a]{animation-duration:calc(var(--t,550) * 1ms);animation-delay:calc(var(--d,0) * 1ms);animation-fill-mode:both;animation-timing-function:var(--ease);animation-iteration-count:1}.play [data-a=pop]{animation-name:pop}@keyframes pop{from{opacity:0;scale:var(--sc,.92)}to{opacity:1}}.rv{opacity:0;translate:0 7px;transition:opacity .45s var(--ease),translate .55s var(--ease)}.rv.in{opacity:1;translate:0 0}#cur{position:absolute;left:0;top:0;width:22px;height:30px;z-index:50;pointer-events:none;opacity:0;transition:transform 850ms var(--io),opacity 300ms ease}#cur.on{opacity:1}#cur svg{width:20px;display:block;filter:drop-shadow(0 2px 3px rgba(0,0,0,.3));transform-origin:3px 3px;transition:transform 140ms var(--ease)}#cur.down svg{transform:scale(.86)}.st{flex:none;display:inline-flex;align-items:center;gap:6px;height:24px;padding:0 10px;border-radius:99px;font:500 12px/1 var(--meta);white-space:nowrap;background:#f1f0ef;color:var(--ts)}.st i{flex:none;width:7px;height:7px;border-radius:50%;background:currentColor}.st.dark{background:#181818;color:#fff}.st.dark i{background:var(--ac)}.st.big{height:28px;padding:0 12px;font-size:12.5px;box-shadow:0 8px 20px rgba(0,0,0,.18)}.card{position:relative;border-radius:14px;padding:16px 18px;--c1:#181818;--c2:#545352;--c3:#767473;--ln:#ebeae9;--chip:#f1f0ef;color:var(--c1)}.k-white{background:rgba(255,255,255,.96);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);box-shadow:0 18px 40px rgba(16,24,48,.2)}@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}[data-a]{opacity:1}#cur{display:none}}html,body{background:#e9a58f}#bg{background-image:url("https://cdn.prod.website-files.com/68ee0ef582e0631038583e04/6abfb2c0a5552aefc231695e_background.jpg");background-position:50% 55%;background-size:max(170.0vw,calc(170.0vh * 2.841)) auto}#bg::after{background:linear-gradient(180deg,rgba(8,12,30,0.0),rgba(8,12,30,0.14))}#stage>*{position:absolute}.focal{left:54px;top:0px;width:312px}.sec{z-index:3}.shx .fh{display:flex;align-items:center;gap:9px;font:500 13.5px/18px var(--ui);white-space:nowrap}.shx .fh small{margin-left:auto;font:400 12px/1 var(--meta);color:var(--c3)}.xb{flex:none;height:20px;padding:0 6px;border-radius:5px;color:#fff;font:700 9.5px/20px var(--ui);letter-spacing:.4px}.shx .gt{margin-top:12px;border:1px solid var(--ln);border-radius:8px;overflow:hidden;font-size:12.5px}.shx .gr{display:grid;grid-template-columns:var(--gc);height:33px;border-top:1px solid var(--ln)}.shx .gr:first-child{border-top:0;background:var(--chip);height:26px;font:500 11px/1 var(--meta);color:var(--c3)}.shx .gr>span{padding:0 9px;white-space:nowrap;display:flex;align-items:center;border-left:1px solid var(--ln);transition:background-color .5s var(--ease)}.shx .gr>span:first-child{border-left:0;color:var(--c3);justify-content:center;padding:0}.shx .gr em{font-style:normal;display:flex;align-items:center;gap:6px}.shx .gr.on .f{background:rgba(158,255,120,.26)}.focal{top:50%;transform:translateY(-50%);margin-top:0px}</style></head><body class=""><div id="bg" aria-hidden="true"></div><div id="stage" role="img" aria-label="The ROI sheet lists each assumption with its source and whether Helix confirmed it."><div class="focal" aria-hidden="true" data-a="pop" data-d="150" data-t="650"><div class="card k-white shx" id="c1"><div class="fh"><span class="xb" style="background:#1f9d48">XLS</span><b>Helix-ROI.xlsx</b><small>Assumptions</small></div><div class="gt" style="--gc:24px 1fr .6fr 1fr"><div class="gr"><span></span><span>Input</span><span>Value</span><span>Source</span></div><div class="gr r1"><span class=""><em class="">4</em></span><span class=""><em class="">Planners</em></span><span class=""><em class="">80</em></span><span class="f"><em class="rv">Call, confirmed</em></span></div><div class="gr r2"><span class=""><em class="">5</em></span><span class=""><em class="">Time saved</em></span><span class=""><em class="">15%</em></span><span class="f"><em class="rv">Northwind case</em></span></div></div><span class="st big sec rv dark" style="position:absolute;bottom:-13px;right:-12px"><i></i>Hard and soft gains apart</span></div></div></div><script> (function(){ var st=document.getElementById('stage'),root=document.body; var still=matchMedia('(prefers-reduced-motion: reduce)').matches; var LAY=[["p",0,0,420,260]],TL=[[650,"#c1 .r1 .rv","in"],[800,"#c1 .r1","on"],[1030,"#c1 .r2 .rv","in"],[1180,"#c1 .r2","on"],[1510,"#c1 .src","in"],[1860,".sec","in"]],END=null,k=1,lay=LAY[0]; [].forEach.call(document.querySelectorAll('[data-d],[data-t]'),function(e){if(e.dataset.d)e.style.setProperty('--d',e.dataset.d);if(e.dataset.t)e.style.setProperty('--t',e.dataset.t);}); function fit(){var w=innerWidth,h=innerHeight; lay=LAY.filter(function(l){return w>=l[1]&&w/h>=l[2];})[0]||LAY[LAY.length-1]; LAY.forEach(function(l){root.classList.toggle('L-'+l[0],l===lay);}); st.style.width=lay[3]+'px';st.style.height=lay[4]+'px'; k=Math.min(w/lay[3],h/lay[4]);if(lay[5])k=Math.min(k,lay[5]); st.style.transform='translate(-50%,-50%) scale('+k+')';} function box(el){var x=0,y=0,e=el;while(e&&e!==st){x+=e.offsetLeft;y+=e.offsetTop;e=e.offsetParent;}return{x:x,y:y,w:el.offsetWidth,h:el.offsetHeight};} function P(a,b,c,d){return 'M'+a+' C'+b+' '+c+' '+d;} fit();addEventListener('resize',fit);if(document.fonts&&document.fonts.ready)document.fonts.ready.then(fit); var timers=[];function later(f,t){timers.push(setTimeout(f,t));} function act(e){var sel=e[1],c=e[2]; [].forEach.call(st.querySelectorAll(sel),function(el){c.split(' ').forEach(function(x){if(x[0]==='-')el.classList.remove(x.slice(1));else el.classList.add(x);});});} var started=false; function play(){if(started)return;started=true;root.classList.add('play'); if(still){TL.forEach(function(e){if(e[1][0]!=='@')act(e);});return;} TL.forEach(function(e){later(function(){act(e);},e[0]);});} if('IntersectionObserver' in window){new IntersectionObserver(function(es){es.forEach(function(e){if(e.isIntersecting)play();});},{threshold:.3}).observe(document.body);}else play(); })(); </script></body></html>

Every assumption stated

Each input shows its source and if the buyer confirmed it. Hard gains and soft gains stay apart.

<!doctype html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>ROI calculator · pillar 3</title><style>@font-face{font-family:"STK Bureau Serif Variable Complete";src:url(https://cdn.prod.website-files.com/68ee0ef582e0631038583e04/6a85b5fbe174d6db1359e4af_STKBureauSerifVariableComplete.woff2) format("woff2");font-weight:150 700;font-style:normal;font-display:swap}</style><link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&family=Instrument+Sans:wght@400;500&display=swap" rel="stylesheet"><style>:root{--tp:#181818;--ts:#545352;--tt:#767473;--bd:#e8e7e6;--ac:#9eff78;--ok:#2ebd43;--oktx:#1d7a2e;--warn:#f08a24;--warntx:#9a4f0a;--risk:#d9453d;--vi:#6e3eff;--serif:"STK Bureau Serif Variable Complete","STK Bureau Serif",Georgia,serif;--ui:Inter,system-ui,-apple-system,"Segoe UI",sans-serif;--meta:"Instrument Sans",Inter,sans-serif;--ease:cubic-bezier(.22,1,.36,1);--io:cubic-bezier(.65,0,.35,1)}*{box-sizing:border-box;margin:0;padding:0}html,body{width:100%;height:100%;overflow:hidden}body{font-family:var(--ui);color:var(--tp);-webkit-font-smoothing:antialiased}#bg{position:fixed;inset:0;background-repeat:no-repeat;background-size:cover}#bg::after{content:"";position:absolute;inset:0}#stage{position:absolute;left:50%;top:50%;transform-origin:center}[data-a]{opacity:0}.play [data-a]{animation-duration:calc(var(--t,550) * 1ms);animation-delay:calc(var(--d,0) * 1ms);animation-fill-mode:both;animation-timing-function:var(--ease);animation-iteration-count:1}.play [data-a=pop]{animation-name:pop}@keyframes pop{from{opacity:0;scale:var(--sc,.92)}to{opacity:1}}.rv{opacity:0;translate:0 7px;transition:opacity .45s var(--ease),translate .55s var(--ease)}.rv.in{opacity:1;translate:0 0}#cur{position:absolute;left:0;top:0;width:22px;height:30px;z-index:50;pointer-events:none;opacity:0;transition:transform 850ms var(--io),opacity 300ms ease}#cur.on{opacity:1}#cur svg{width:20px;display:block;filter:drop-shadow(0 2px 3px rgba(0,0,0,.3));transform-origin:3px 3px;transition:transform 140ms var(--ease)}#cur.down svg{transform:scale(.86)}.card{position:relative;border-radius:14px;padding:16px 18px;--c1:#181818;--c2:#545352;--c3:#767473;--ln:#ebeae9;--chip:#f1f0ef;color:var(--c1)}.k-glass{background:rgba(16,22,42,.56);border:1px solid rgba(255,255,255,.22);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);box-shadow:0 18px 40px rgba(0,0,0,.2);--c1:#fff;--c2:rgba(255,255,255,.82);--c3:rgba(255,255,255,.64);--ln:rgba(255,255,255,.16);--chip:rgba(255,255,255,.14)}.mt{display:flex;align-items:center;gap:8px;font:400 12.5px/16px var(--meta);color:var(--c3);white-space:nowrap}.tg{padding:3px 9px;border-radius:99px;background:var(--chip);color:var(--c2);font-weight:500}@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}[data-a]{opacity:1}#cur{display:none}}html,body{background:#e9a58f}#bg{background-image:url("https://cdn.prod.website-files.com/68ee0ef582e0631038583e04/6abfb2c0a5552aefc231695e_background.jpg");background-position:100% 55%;background-size:max(170.0vw,calc(170.0vh * 2.841)) auto}#bg::after{background:linear-gradient(180deg,rgba(8,12,30,0.0),rgba(8,12,30,0.14))}#stage>*{position:absolute}.focal{left:65px;top:0px;width:290px}.sdk .sv{position:relative;margin-top:12px;aspect-ratio:16/9;border-radius:6px;background:#fff;color:#181818;box-shadow:0 0 0 1px rgba(0,0,0,.08),0 6px 14px rgba(16,24,48,.08);padding:13px 16px 12px 22px;overflow:hidden}.sdk .sv::before{content:"";position:absolute;left:0;top:0;bottom:0;width:6px;background:var(--br);transform-origin:top;transition:transform .7s var(--io)}.sdk .kk{font:500 10.5px/13px var(--meta);color:#767473;white-space:nowrap}.sdk .stl{font-family:var(--serif);font-size:16px;line-height:19px;margin-top:3px}.sdk .bb{margin-top:10px;display:flex;flex-direction:column;gap:7px}.sdk .br{display:flex;align-items:center;gap:8px;font-size:11.5px;line-height:14px;white-space:nowrap}.sdk .bk{width:34px;flex:none;color:#767473}.sdk .bt2{flex:1;height:10px;border-radius:3px;background:#f1f0ef;overflow:hidden}.sdk .bt2 i{display:block;height:100%;width:0;background:var(--br);border-radius:3px;transition:width .9s var(--io)}.sdk .br+.br .bt2 i{transition-delay:.12s}.sdk .br+.br+.br .bt2 i{transition-delay:.24s}.sdk .bb.on .bt2 i{width:var(--v)}.sdk .bv{width:38px;flex:none;font-weight:600;text-align:right}.sdk .pgn{position:absolute;right:12px;bottom:9px;font:400 10px/1 var(--meta);color:#9a9897}.focal{top:50%;transform:translateY(-50%);margin-top:0px}</style></head><body class=""><div id="bg" aria-hidden="true"></div><div id="stage" role="img" aria-label="A slide shows the payback by adoption rate: 4 months at 100%, 6 months at 75% and 9 months at 50%."><div class="focal" aria-hidden="true" data-a="pop" data-d="150" data-t="650"><div class="card k-glass sdk" id="c1"><div class="mt"><span class="tg">Scenarios</span>Helix ROI</div><div class="sv" style="--br:#1f9d48"><p class="kk">Payback by adoption</p><p class="stl">Still positive at 50%</p><div class="bb"><div class="br"><span class="bk">100%</span><span class="bt2"><i style="--v:92%"></i></span><span class="bv rv">4 mo</span></div><div class="br"><span class="bk">75%</span><span class="bt2"><i style="--v:70%"></i></span><span class="bv rv">6 mo</span></div><div class="br"><span class="bk">50%</span><span class="bt2"><i style="--v:46%"></i></span><span class="bv rv">9 mo</span></div></div><span class="pgn">9 / 14</span></div></div></div></div><script> (function(){ var st=document.getElementById('stage'),root=document.body; var still=matchMedia('(prefers-reduced-motion: reduce)').matches; var LAY=[["p",0,0,420,260]],TL=[[650,"#c1 .bb","on"],[1150,"#c1 .br:nth-child(1) .bv","in"],[1310,"#c1 .br:nth-child(2) .bv","in"],[1470,"#c1 .br:nth-child(3) .bv","in"]],END=null,k=1,lay=LAY[0]; [].forEach.call(document.querySelectorAll('[data-d],[data-t]'),function(e){if(e.dataset.d)e.style.setProperty('--d',e.dataset.d);if(e.dataset.t)e.style.setProperty('--t',e.dataset.t);}); function fit(){var w=innerWidth,h=innerHeight; lay=LAY.filter(function(l){return w>=l[1]&&w/h>=l[2];})[0]||LAY[LAY.length-1]; LAY.forEach(function(l){root.classList.toggle('L-'+l[0],l===lay);}); st.style.width=lay[3]+'px';st.style.height=lay[4]+'px'; k=Math.min(w/lay[3],h/lay[4]);if(lay[5])k=Math.min(k,lay[5]); st.style.transform='translate(-50%,-50%) scale('+k+')';} function box(el){var x=0,y=0,e=el;while(e&&e!==st){x+=e.offsetLeft;y+=e.offsetTop;e=e.offsetParent;}return{x:x,y:y,w:el.offsetWidth,h:el.offsetHeight};} function P(a,b,c,d){return 'M'+a+' C'+b+' '+c+' '+d;} fit();addEventListener('resize',fit);if(document.fonts&&document.fonts.ready)document.fonts.ready.then(fit); var timers=[];function later(f,t){timers.push(setTimeout(f,t));} function act(e){var sel=e[1],c=e[2]; [].forEach.call(st.querySelectorAll(sel),function(el){c.split(' ').forEach(function(x){if(x[0]==='-')el.classList.remove(x.slice(1));else el.classList.add(x);});});} var started=false; function play(){if(started)return;started=true;root.classList.add('play'); if(still){TL.forEach(function(e){if(e[1][0]!=='@')act(e);});return;} TL.forEach(function(e){later(function(){act(e);},e[0]);});} if('IntersectionObserver' in window){new IntersectionObserver(function(es){es.forEach(function(e){if(e.isIntersecting)play();});},{threshold:.3}).observe(document.body);}else play(); })(); </script></body></html>

Scenarios to test

Adoption, price and time to value. See how far the return can move before it breaks.

Questions about this use case

How do you calculate ROI for a B2B purchase?

ROI is the net gain divided by the total cost. The net gain is the value the buyer gets, such as hours saved, costs avoided or extra revenue, minus what they pay. Payback is the number of months the gains take to cover the cost. Use the buyer's own figures over 3 years, and count setup and internal time in the cost.

What is the difference between ROI and TCO?

TCO, or total cost of ownership, adds up everything the buyer will pay over time: licenses, setup, training, maintenance and internal time. ROI compares that cost with the value the purchase brings. TCO answers "what will this really cost us?". ROI answers "is it worth it?".

Why don't buyers trust vendor ROI calculators?

Many vendor calculators start from the price and use generic benchmarks, so the result looks skewed. The assumptions are often hidden, and costs like setup or ramp-up time are left out. Buyers trust a calculation built on their own figures, with each assumption visible and easy to change.

What inputs do you need to calculate ROI for a deal?

Start with the cost of the current situation: time spent, people involved, error rates and what the buyer already pays for tools. Then add the expected change, the full cost of your offer and the time to value. Most of these come from discovery calls. Cobl takes them from your calls and emails and flags the ones the buyer still has to confirm.