Case studies

What we built, and what it changed.

Every story here starts with a problem a real team had, on a plant floor, in a product, or in the systems around them. It says what we built, and ends with what is different now. Start with the one that sounds like yours.

Every engagement

The work, one story at a time.

Each card says what the team was up against, what we built, and what changed. Open the one closest to your own situation.

linear-gradient(150deg,#2b2f9e,#141a5c)
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1096 1424" width="1096" height="1424" role="img" aria-labelledby="t d" xmlns:c2pa="http://c2pa.org/manifest"><metadata><c2pa:manifest>AAAWgmp1bWIAAAAeanVtZGMycGEAEQAQgAAAqgA4m3EDYzJwYQAAABZcanVtYgAAAEdqdW1kYzJtYQARABCAAACqADibcQN1cm46YzJwYTo4OWZlYjJiZC00NzhkLTRjMzgtOWRkZS1lNGU2MmIwZmU4ZDMAAAADl2p1bWIAAAApanVtZGMyYXMAEQAQgAAAqgA4m3EDYzJwYS5hc3NlcnRpb25zAAAAALxqdW1iAAAARGp1bWRjYm9yABEAEIAAAKoAOJtxE2MycGEuaW5ncmVkaWVudC52MwAAAAAYYzJzaOPvRCvpMmBPfsADt+rmE44AAABwY2JvcqNpZGM6Zm9ybWF0bWltYWdlL3N2Zyt4bWxqaW5zdGFuY2VJRHgseG1wOmlpZDozYzRkYmRmOS00NmRhLTQyZGYtYTI0Zi1lNTA0ZjIzMzZmZThscmVsYXRpb25zaGlwaHBhcmVudE9mAAAB4mp1bWIAAABBanVtZGNib3IAEQAQgAAAqgA4m3ETYzJwYS5hY3Rpb25zLnYyAAAAABhjMnNovH4EAuTcwLvSq5oQijDkuQAAAZljYm9yomdhY3Rpb25zgqJmYWN0aW9ua2MycGEub3BlbmVkanBhcmFtZXRlcnOha2luZ3JlZGllbnRzgaJjdXJseC1zZWxmI2p1bWJmPWMycGEuYXNzZXJ0aW9ucy9jMnBhLmluZ3JlZGllbnQudjNkaGFzaFgg7WFVV1K1ceonZ3381RmTyMblLFBCIFw1jjD7CPOF/N6kZmFjdGlvbngdY29tLmFudGhyb3BpYy5jbGF1ZGUucHJvdmlkZWRqcGFyYW1ldGVyc6F4H2NvbS5hbnRocm9waWMub3JpZ2luLWNvbmZpZGVuY2VndW5rbm93bmtkZXNjcmlwdGlvbnhmQ2xhdWRlIHByb3ZpZGVkIHRoaXMgZmlsZSBhdCB0aGUgcmVxdWVzdCBvZiBhIHVzZXIgYW5kIG1heSBoYXZlIGNyZWF0ZWQgb3IgbW9kaWZpZWQgdGhlIGZpbGUgY29udGVudHMubXNvZnR3YXJlQWdlbnShZG5hbWVmQ2xhdWRlcmFsbEFjdGlvbnNJbmNsdWRlZPUAAADIanVtYgAAAEBqdW1kY2JvcgARABCAAACqADibcRNjMnBhLmhhc2guZGF0YQAAAAAYYzJzaK+XXvbTiAKLzwT27ib646IAAACAY2JvcqVjYWxnZnNoYTI1NmNwYWRNAAAAAAAAAAAAAAAAAGRoYXNoWCDO4L/jvtEbKCdIzy0p7JwnSQ5A1oBhMh7CeOxsSc+YV2RuYW1lbmp1bWJmIG1hbmlmZXN0amV4Y2x1c2lvbnOBomVzdGFydBi7Zmxlbmd0aBkeBAAAAj5qdW1iAAAAJ2p1bWRjMmNsABEAEIAAAKoAOJtxA2MycGEuY2xhaW0udjIAAAACD2Nib3KlY2FsZ2ZzaGEyNTZpc2lnbmF0dXJleE1zZWxmI2p1bWJmPS9jMnBhL3VybjpjMnBhOjg5ZmViMmJkLTQ3OGQtNGMzOC05ZGRlLWU0ZTYyYjBmZThkMy9jMnBhLnNpZ25hdHVyZWppbnN0YW5jZUlEeCx4bXA6aWlkOjVhMGMxZTJkLWE3ZGMtNDMxNS1iNzc2LTZjNWIwYWIxYTcyNHJjcmVhdGVkX2Fzc2VydGlvbnODomN1cmx4LXNlbGYjanVtYmY9YzJwYS5hc3NlcnRpb25zL2MycGEuaW5ncmVkaWVudC52M2RoYXNoWCDtYVVXUrVx6idnffzVGZPIxuUsUEIgXDWOMPsI84X83qJjdXJseCpzZWxmI2p1bWJmPWMycGEuYXNzZXJ0aW9ucy9jMnBhLmFjdGlvbnMudjJkaGFzaFgga48KW1pDWKz5OR8bXI2HrJcIROkUjAS80Mou1fWzGRuiY3VybHgpc2VsZiNqdW1iZj1jMnBhLmFzc2VydGlvbnMvYzJwYS5oYXNoLmRhdGFkaGFzaFggPv2TbWzCikpHp0Zute0KwQjtAkmHq68s3xTXWywJIX90Y2xhaW1fZ2VuZXJhdG9yX2luZm+jZG5hbWVvQW50aHJvcGljIEZpbGVzZ3ZlcnNpb25lMS4wLjBrc3BlY1ZlcnNpb25lMi40LjAAABA4anVtYgAAAChqdW1kYzJjcwARABCAAACqADibcQNjMnBhLnNpZ25hdHVyZQAAABAIY2JvctKEWQISogEmGCFZAgowggIGMIIBjaADAgECAhRA5aAK7sI50L64g/oGQgU9Z1UTADAKBggqhkjOPQQDAzBJMRcwFQYDVQQKEw5BbnRocm9waWMsIFBCQzEuMCwGA1UEAxMlQW50aHJvcGljIENvbnRlbnQgQ3JlZGVudGlhbHMgUm9vdCBDQTAeFw0yNjA4MDcxODQzNTZaFw0yODA4MDYxOTQzNTZaMEQxFzAVBgNVBAoTDkFudGhyb3BpYywgUEJDMSkwJwYDVQQDEyBBbnRocm9waWMgQ2xhdWRlIENvbnRlbnQgU2lnbmluZzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABJh6CmvLUBgFFNU0vUKlOVtE6djd17L5SuwX0LemFisBM3dkd/3cyjxFA3Qo5S46fX0/ihY0VZ7mfb9KF703t5OjWDBWMA4GA1UdDwEB/wQEAwIHgDAVBgNVHSUEDjAMBgorBgEEAYPoXgIBMAwGA1UdEwEB/wQCMAAwHwYDVR0jBBgwFoAUzlHiBIFOZFsj+OPEz5o+nMHXXMIwCgYIKoZIzj0EAwMDZwAwZAIwMXMdFJ4BetLLVY7ORuE9noqbbAZOZn/aArXyTwFAZfKrPzxF2vPoJNf1+UCdg1XGAjBwX1zd9WGqYkqmL5SFqw1QySjr1zJfpJM9+1rdDwSPLMOPOjKuiXjoU/pUUeG9RwmhY3BhZFkNngAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPZYQAdUgJlxd7I7qt/+3FKIuBPIey0bPlZVT925V0Bu57Obehag71Vqf9l5aJdzDSVWCdPkI9LjSEuY6r4/MFqnXac=</c2pa:manifest></metadata> <title id="t">Six years and still running, across plants</title> <desc id="d">Three plants feed one plant-applications platform: test-order planning, production-line configuration, supplier risk across four divisions, and the daily report.</desc> <style> /* Self-contained: this file animates on its own, with no page CSS. --d on an element is its cue. Everything respects reduced motion. */ .f{font-family:Poppins,"Segoe UI",Roboto,Helvetica,Arial,sans-serif} .lab{font-weight:600;letter-spacing:.12em;fill:#c7cffe} .dim{fill:rgba(255,255,255,.55)} .ax{opacity:0;animation:fadeUp .6s cubic-bezier(.22,.61,.36,1) var(--d,0s) both} .pop{opacity:0;animation:pop .5s cubic-bezier(.2,1.4,.4,1) var(--d,0s) both; transform-box:fill-box;transform-origin:center} .gx{animation:growX .55s cubic-bezier(.22,.61,.36,1) var(--d,0s) both; transform-box:fill-box;transform-origin:left center} .draw{stroke-dasharray:1;stroke-dashoffset:1; animation:draw .9s cubic-bezier(.22,.61,.36,1) var(--d,0s) both} .flow{opacity:0;animation:fade .5s ease var(--d,0s) both,march 1.1s linear var(--d,0s) infinite} .knob{animation:slide .5s cubic-bezier(.2,1.4,.4,1) var(--d,0s) both; transform-box:fill-box;transform-origin:center} .ring{opacity:0;animation:ring 2.6s ease-out var(--d,0s) infinite; transform-box:fill-box;transform-origin:center} .breathe{animation:breathe 3s ease-in-out var(--d,0s) infinite} @keyframes fade{to{opacity:1}} @keyframes fadeUp{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}} @keyframes pop{from{opacity:0;transform:scale(.55)}to{opacity:1;transform:scale(1)}} @keyframes growX{from{transform:scaleX(0)}to{transform:scaleX(1)}} @keyframes draw{to{stroke-dashoffset:0}} @keyframes march{to{stroke-dashoffset:-16}} @keyframes slide{from{transform:translateX(-22px);opacity:.4}to{transform:none;opacity:1}} @keyframes ring{0%{opacity:.7;transform:scale(1)}100%{opacity:0;transform:scale(2.6)}} @keyframes breathe{0%,100%{opacity:1}50%{opacity:.45}} @media (prefers-reduced-motion:reduce){ .ax,.pop,.gx,.draw,.flow,.knob,.ring,.breathe{ animation:none !important;opacity:1 !important;transform:none !important; stroke-dashoffset:0 !important} .ring{opacity:0 !important} } </style> <defs> <linearGradient id="bg" x1="0" y1="0" x2="1" y2="1"> <stop offset="0" stop-color="#2b2f9e"/><stop offset="1" stop-color="#141a5c"/> </linearGradient> <linearGradient id="gold" x1="0" y1="0" x2="1" y2="1"> <stop offset="0" stop-color="#fff3c4"/><stop offset=".55" stop-color="#fbbf24"/><stop offset="1" stop-color="#f59e0b"/> </linearGradient> <radialGradient id="sheen" cx="18%" cy="0%" r="70%"> <stop offset="0" stop-color="#fff" stop-opacity=".16"/><stop offset="1" stop-color="#fff" stop-opacity="0"/> </radialGradient> <pattern id="dots" width="18" height="18" patternUnits="userSpaceOnUse"> <circle cx="1" cy="1" r="1.1" fill="#fff" fill-opacity=".13"/> </pattern> <clipPath id="round"><rect width="1096" height="1424" rx="28"/></clipPath> </defs> <g clip-path="url(#round)"> <rect width="1096" height="1424" fill="url(#bg)"/> <rect width="1096" height="1424" fill="url(#dots)"/> <rect width="1096" height="1424" fill="url(#sheen)"/> <!-- ══ top row: industry, and the two badges ══ --> <g class="ax f" style="--d:.05s"> <rect x="28" y="36" width="404" height="44" rx="22" fill="#fff" fill-opacity=".14" stroke="#fff" stroke-opacity=".3"/> <text x="52" y="64" class="lab" font-size="17" fill="#fff">MANUFACTURING &amp; ENGINEERING</text> </g> <g class="pop f" style="--d:.5s"> <rect x="680" y="36" width="224" height="44" rx="22" fill="url(#gold)" stroke="#fff" stroke-opacity=".55"/> <path d="M711 50.5l3.1 6.6 7.2.8-5.3 4.9 1.4 7.1-6.4-3.5-6.4 3.5 1.4-7.1-5.3-4.9 7.2-.8z" fill="#3b2a00"/> <text x="730" y="64" class="lab" font-size="17" font-weight="700" fill="#3b2a00">FORTUNE 500</text> </g> <g class="pop f" style="--d:.62s"> <rect x="916" y="36" width="152" height="44" rx="22" fill="#fff"/> <text x="992" y="64" class="lab" font-size="17" font-weight="700" fill="#2b2f9e" text-anchor="middle">FEATURED</text> </g> <!-- ══ the three plants ══ --> <g class="ax" style="--d:.2s"> <path d="M92 455V378l22 16v-16l22 16v-16l22 16v-16l52 38v39z" fill="#fff" fill-opacity=".07" stroke="#c7cffe" stroke-width="3" stroke-linejoin="round"/> <rect x="100" y="352" width="14" height="30" rx="2" fill="#c7cffe" fill-opacity=".9"/> <rect x="118" y="420" width="16" height="16" rx="2" fill="#c7cffe" fill-opacity=".55"/> <rect x="156" y="420" width="16" height="16" rx="2" fill="#c7cffe" fill-opacity=".55"/> <text x="148" y="488" class="f lab dim" font-size="16" text-anchor="middle">PLANT 1</text> </g> <g class="ax" style="--d:.32s"> <path d="M92 635V558l22 16v-16l22 16v-16l22 16v-16l52 38v39z" fill="#fff" fill-opacity=".07" stroke="#c7cffe" stroke-width="3" stroke-linejoin="round"/> <rect x="100" y="532" width="14" height="30" rx="2" fill="#c7cffe" fill-opacity=".9"/> <rect x="118" y="600" width="16" height="16" rx="2" fill="#c7cffe" fill-opacity=".55"/> <rect x="156" y="600" width="16" height="16" rx="2" fill="#c7cffe" fill-opacity=".55"/> <text x="148" y="668" class="f lab dim" font-size="16" text-anchor="middle">PLANT 2</text> </g> <g class="ax" style="--d:.44s"> <path d="M92 815V738l22 16v-16l22 16v-16l22 16v-16l52 38v39z" fill="#fff" fill-opacity=".07" stroke="#c7cffe" stroke-width="3" stroke-linejoin="round"/> <rect x="100" y="712" width="14" height="30" rx="2" fill="#c7cffe" fill-opacity=".9"/> <rect x="118" y="780" width="16" height="16" rx="2" fill="#c7cffe" fill-opacity=".55"/> <rect x="156" y="780" width="16" height="16" rx="2" fill="#c7cffe" fill-opacity=".55"/> <text x="148" y="848" class="f lab dim" font-size="16" text-anchor="middle">PLANT 3</text> </g> <!-- ══ what the plants send, and where it collects ══ --> <path class="flow" style="--d:.7s" d="M228 414H302" stroke="#c7cffe" stroke-width="3" stroke-dasharray="8 8" opacity=".75"/> <path class="flow" style="--d:.82s" d="M228 594H352" stroke="#c7cffe" stroke-width="3" stroke-dasharray="8 8" opacity=".75"/> <path class="flow" style="--d:.94s" d="M228 774H302" stroke="#c7cffe" stroke-width="3" stroke-dasharray="8 8" opacity=".75"/> <path class="draw" style="--d:.95s" d="M303 414V774" stroke="#c7cffe" stroke-width="3" opacity=".55" pathLength="1"/> <path class="flow" style="--d:1.05s" d="M352 594H372" stroke="#c7cffe" stroke-width="3" stroke-dasharray="8 8"/> <!-- ══ the platform the plants open ══ --> <g class="ax" style="--d:.9s"> <rect x="370" y="300" width="642" height="562" rx="26" fill="#fff" fill-opacity=".05" stroke="#fff" stroke-opacity=".16" stroke-width="2"/> <text x="400" y="353" class="f lab" font-size="20" font-weight="700">PLANT APPLICATIONS</text> <text x="982" y="353" class="f lab dim" font-size="17" text-anchor="end">EUROPE / GLOBAL</text> <path d="M400 371H982" stroke="#fff" stroke-opacity=".12" stroke-width="2"/> <text x="400" y="404" class="f lab dim" font-size="16">TEST-ORDER PLANNING &#183; CAPACITY &#183; SITE CALENDARS</text> </g> <!-- the work in the queue: three rows, each bar drawing in from the left --> <g fill="#c7cffe"> <rect class="gx" style="--d:1.15s" x="400" y="418" width="58" height="22" rx="7" opacity=".9"/> <rect class="gx" style="--d:1.19s" x="474" y="418" width="42" height="22" rx="7" opacity=".9"/> <rect class="gx" style="--d:1.23s" x="556" y="418" width="58" height="22" rx="7" opacity=".9"/> <rect class="gx" style="--d:1.27s" x="632" y="418" width="26" height="22" rx="7" opacity=".9"/> <rect class="gx" style="--d:1.31s" x="710" y="418" width="58" height="22" rx="7" opacity=".9"/> <rect class="gx" style="--d:1.35s" x="788" y="418" width="46" height="22" rx="7" opacity=".9"/> <rect class="gx" style="--d:1.39s" x="866" y="418" width="58" height="22" rx="7" opacity=".9"/> <rect class="gx" style="--d:1.43s" x="400" y="456" width="34" height="22" rx="7" opacity=".62"/> <rect class="gx" style="--d:1.47s" x="478" y="456" width="58" height="22" rx="7" opacity=".62"/> <rect class="gx" style="--d:1.51s" x="556" y="456" width="24" height="22" rx="7" opacity=".62"/> <rect class="gx" style="--d:1.55s" x="624" y="456" width="58" height="22" rx="7" opacity=".62"/> <rect class="gx" style="--d:1.59s" x="702" y="456" width="58" height="22" rx="7" opacity=".62"/> <rect class="gx" style="--d:1.63s" x="788" y="456" width="30" height="22" rx="7" opacity=".62"/> <rect class="gx" style="--d:1.67s" x="866" y="456" width="52" height="22" rx="7" opacity=".62"/> <rect class="gx" style="--d:1.71s" x="400" y="494" width="58" height="22" rx="7" opacity=".42"/> <rect class="gx" style="--d:1.75s" x="474" y="494" width="30" height="22" rx="7" opacity=".42"/> <rect class="gx" style="--d:1.79s" x="556" y="494" width="58" height="22" rx="7" opacity=".42"/> <rect class="gx" style="--d:1.83s" x="632" y="494" width="52" height="22" rx="7" opacity=".42"/> <rect class="gx" style="--d:1.87s" x="710" y="494" width="22" height="22" rx="7" opacity=".42"/> <rect class="gx" style="--d:1.91s" x="788" y="494" width="58" height="22" rx="7" opacity=".42"/> <rect class="gx" style="--d:1.95s" x="866" y="494" width="40" height="22" rx="7" opacity=".42"/> </g> <!-- what a process engineer sets: three switches, thrown in turn --> <text class="ax f lab dim" style="--d:2s" x="400" y="558" font-size="16">PRODUCTION-LINE CONFIGURATION</text> <g class="ax" style="--d:2.05s"> <rect x="400" y="575" width="78" height="32" rx="16" fill="#c7cffe" fill-opacity=".3"/> <circle class="knob" style="--d:2.2s" cx="459" cy="591" r="11" fill="#fff"/> <rect x="498" y="575" width="78" height="32" rx="16" fill="#c7cffe" fill-opacity=".3"/> <circle class="knob" style="--d:2.32s" cx="519" cy="591" r="11" fill="#fff"/> <rect x="596" y="575" width="78" height="32" rx="16" fill="#c7cffe" fill-opacity=".3"/> <circle class="knob" style="--d:2.44s" cx="655" cy="591" r="11" fill="#fff"/> </g> <!-- four divisions, and the one currently carrying risk --> <text class="ax f lab dim" style="--d:2.5s" x="400" y="646" font-size="16">SUPPLIER RISK &#183; FOUR OPERATING DIVISIONS</text> <g class="f"> <g class="pop" style="--d:2.6s"> <rect x="400" y="663" width="128" height="36" rx="18" fill="#c7cffe" fill-opacity=".22" stroke="#c7cffe" stroke-opacity=".6" stroke-width="2"/> <text x="464" y="688" font-size="17" font-weight="700" letter-spacing=".08em" fill="#fff" text-anchor="middle">DIV A</text> </g> <g class="pop" style="--d:2.72s"> <rect x="542" y="663" width="128" height="36" rx="18" fill="#c7cffe" fill-opacity=".22" stroke="#c7cffe" stroke-opacity=".6" stroke-width="2"/> <text x="606" y="688" font-size="17" font-weight="700" letter-spacing=".08em" fill="#fff" text-anchor="middle">DIV B</text> </g> <g class="pop" style="--d:2.84s"> <rect class="breathe" style="--d:3.4s" x="684" y="663" width="128" height="36" rx="18" fill="#f5b04c" fill-opacity=".38" stroke="#f5b04c" stroke-opacity=".75" stroke-width="2"/> <text x="748" y="688" font-size="17" font-weight="700" letter-spacing=".08em" fill="#ffd28a" text-anchor="middle">DIV C</text> </g> <g class="pop" style="--d:2.96s"> <rect x="826" y="663" width="128" height="36" rx="18" fill="#c7cffe" fill-opacity=".22" stroke="#c7cffe" stroke-opacity=".6" stroke-width="2"/> <text x="890" y="688" font-size="17" font-weight="700" letter-spacing=".08em" fill="#fff" text-anchor="middle">DIV D</text> </g> </g> <!-- the thing they open every morning --> <g class="ax" style="--d:3.1s"> <rect x="400" y="730" width="574" height="108" rx="18" fill="#c7cffe" fill-opacity=".12" stroke="#c7cffe" stroke-opacity=".5" stroke-width="2"/> <text x="428" y="774" class="f lab" font-size="19" font-weight="700" fill="#fff">DAILY REPORTING</text> <path d="M428 794h164M428 806h108" stroke="#fff" stroke-opacity=".22" stroke-width="5" stroke-linecap="round"/> <text x="876" y="810" class="f lab dim" font-size="16" text-anchor="end">EVERY MORNING</text> </g> <circle class="ring" style="--d:3.6s" cx="934" cy="784" r="22" fill="none" stroke="#12a56a" stroke-width="3"/> <g class="pop" style="--d:3.5s"> <circle cx="934" cy="784" r="22" fill="#12a56a"/> <path d="M923 784l8 8 14-16" stroke="#fff" stroke-width="5" stroke-linecap="round" stroke-linejoin="round" fill="none"/> </g> <!-- ══ the client's own benchmark ══ --> <g class="ax" style="--d:3.8s"> <rect x="28" y="1078" width="1040" height="184" rx="22" fill="#fff" fill-opacity=".1" stroke="#fff" stroke-opacity=".22" stroke-width="2"/> <path d="M66 1118c-5.8 3.5-9.3 9-9.3 16.5 0 7.5 4.8 13.5 11.5 13.5 5.3 0 9.3-3.8 9.3-9 0-5-3.5-8.5-8.3-8.5-1 0-2 .3-2.8.5.8-4.3 3.5-7.8 7.5-10zm23.5 0c-5.8 3.5-9.3 9-9.3 16.5 0 7.5 4.8 13.5 11.5 13.5 5.3 0 9.3-3.8 9.3-9 0-5-3.5-8.5-8.3-8.5-1 0-2 .3-2.8.5.8-4.3 3.5-7.8 7.5-10z" fill="#c7cffe"/> <text x="118" y="1140" class="f" font-size="27" font-style="italic" fill="#fff">&#8220;Six years in, it is still the first thing the plants open in the</text> <text x="118" y="1184" class="f" font-size="27" font-style="italic" fill="#fff">morning. That is the only benchmark I trust.&#8221;</text> <text x="118" y="1232" class="f lab" font-size="16" fill="rgba(255,255,255,.78)">&#8212; HEAD OF PLANT IT, TIER 1 AUTOMOTIVE SAFETY SUPPLIER</text> </g> <!-- ══ the stack, in the client's words ══ --> <g class="f" font-size="17" fill="rgba(255,255,255,.92)"> <g class="ax" style="--d:4s"> <rect x="28" y="1294" width="236" height="46" rx="10" fill="#fff" fill-opacity=".12" stroke="#fff" stroke-opacity=".22" stroke-width="2"/> <text x="146" y="1323" text-anchor="middle">Plant applications</text> </g> <g class="ax" style="--d:4.08s"> <rect x="280" y="1294" width="250" height="46" rx="10" fill="#fff" fill-opacity=".12" stroke="#fff" stroke-opacity=".22" stroke-width="2"/> <text x="405" y="1323" text-anchor="middle">Test-order planning</text> </g> <g class="ax" style="--d:4.16s"> <rect x="546" y="1294" width="240" height="46" rx="10" fill="#fff" fill-opacity=".12" stroke="#fff" stroke-opacity=".22" stroke-width="2"/> <text x="666" y="1323" text-anchor="middle">Line configuration</text> </g> <g class="ax" style="--d:4.24s"> <rect x="802" y="1294" width="190" height="46" rx="10" fill="#fff" fill-opacity=".12" stroke="#fff" stroke-opacity=".22" stroke-width="2"/> <text x="897" y="1323" text-anchor="middle">Supplier risk</text> </g> <g class="ax" style="--d:4.32s"> <rect x="28" y="1356" width="200" height="46" rx="10" fill="#fff" fill-opacity=".12" stroke="#fff" stroke-opacity=".22" stroke-width="2"/> <text x="128" y="1385" text-anchor="middle">Daily reporting</text> </g> </g> </g> </svg>
Automotive · Tier 1 safety supplier · Europe / Global

HeadingSix years and still running, across plants

For a Fortune 500 Tier 1 automotive safety supplier, the applications and data its European and global plants run on day to day: test-order planning, production-line configuration, supplier risk across four divisions, and the daily reporting.

The problem
Planning, line configuration and supplier risk lived in spreadsheets and email, plant by plant, and the morning report was assembled by hand.
What we built
Test-order planning across plants that schedules around equipment capacity and site calendars, production-line configuration for process engineers, supplier risk tracked across four operating divisions, and the daily reporting the plants open every morning.
What changed
Six years on, the plants still run on it, and the relationship is still going.
6+ yrs
working relationship, and counting
4
operating divisions
Year six
in production
In production · year six
Green
Read the case study
linear-gradient(150deg, #2b2f9e,#141a5c)
Automotive · Tier 1 safety supplier · Europe / Global

HeadingSix years and still running, across plants

For a Fortune 500 Tier 1 automotive safety supplier, the applications and data its European and global plants run on day to day: test-order planning, production-line configuration, supplier risk across four divisions, and the daily reporting.

The Problem
Planning, line configuration and supplier risk lived in spreadsheets and email, plant by plant, and the morning report was assembled by hand.
What we built
Test-order planning across plants that schedules around equipment capacity and site calendars, production-line configuration for process engineers, supplier risk tracked across four operating divisions, and the daily reporting the plants open every morning.
What changed
Six years on, the plants still run on it, and the relationship is still going.
6+ yrs
working relationship, and counting
4
operating divisions
Year Six
in production
In production · year six
Green
Read the case study