{"id":25,"date":"2026-02-09T09:39:55","date_gmt":"2026-02-09T09:39:55","guid":{"rendered":"https:\/\/digiom.fi\/kradi\/?page_id=25"},"modified":"2026-10-14T22:49:02","modified_gmt":"2026-10-14T19:49:02","slug":"koti","status":"publish","type":"page","link":"https:\/\/marshallai.com\/fi\/","title":{"rendered":"Teko\u00e4lypohjainen n\u00e4k\u00f6kyky ja anturi\u00e4lykkyys"},"content":{"rendered":"\n<div class=\"gb-element-c3c27ae8\">\n<div class=\"gb-element-59e7f6fa\">\n<section class=\"gb-element-44e4cf8c\">\n<div class=\"gb-element-ba427392\">\n<div class=\"gb-element-7fcccdc2\">\n<div>\n<p class=\"gb-text gb-text-1eda8d34 mai-concept mai-c-eyebrow\">AI-POWERED INDUSTRIAL INSPECTION<\/p>\n\n\n\n<h2 class=\"gb-text gb-text-732a12c8 mai-headline\">Automated quality control at  <em>production speed<\/em>.<\/h2>\n\n\n\n<p class=\"has-base-color has-text-color has-link-color wp-elements-1 wp-block-paragraph\">Detect defects, check product markings and remove faulty products automatically. <br>We design and deliver inspection systems for your products and production line.<\/p>\n\n\n\n<div class=\"gb-element-a1c376a6\">\n<a class=\"gb-text mai-button-primary-block\" href=\"https:\/\/marshallai.com\/solutions\/\">Explore solutions<\/a>\n\n\n\n<a class=\"gb-text mai-button-secondary-block hs-cta-trigger-button hs-cta-trigger-button-476059702504\" href=\"https:\/\/marshallai.com\/contact\/\">Book a demo<\/a>\n<\/div>\n\n\n\n<div class=\"gb-element-919a09ae\">\n<span class=\"gb-text-7c475a84\"><span class=\"gb-shape\"><svg aria-hidden=\"true\" role=\"img\" height=\"1em\" width=\"1em\" viewBox=\"0 0 512 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path fill=\"currentColor\" d=\"M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z\"><\/path><\/svg><\/span><span class=\"gb-text\">Turnkey inspection systems<\/span><\/span>\n\n\n\n<span class=\"gb-text-4e16ffac\"><span class=\"gb-shape\"><svg aria-hidden=\"true\" role=\"img\" height=\"1em\" width=\"1em\" viewBox=\"0 0 512 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path fill=\"currentColor\" d=\"M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z\"><\/path><\/svg><\/span><span class=\"gb-text\">Secure on-site data processing<\/span><\/span>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n\n\n\n<div class=\"gb-element-ef8dcb80\">\n<style>\n.mai-inspection {\n  --mai-demo-accent: #ff742e;\n  --mai-demo-bg: #0b1d29;\n  --mai-demo-border: rgba(255,255,255,.16);\n  --mai-demo-muted: #b2c1cc;\n  --mai-demo-font: 'Aspekta', Arial, sans-serif;\n  --mai-demo-mono: 'JetBrains Mono', ui-monospace, monospace;\n  width: 100%; max-width: 100%; margin: 0; padding: 0;\n  color: #f5f8fa; background: var(--mai-demo-bg);\n  border: 1px solid var(--mai-demo-border); border-radius: 2px;\n  font: 400 16px\/1.5 var(--mai-demo-font);\n  text-align: left; isolation: isolate; container-type: inline-size;\n}\n.mai-inspection *, .mai-inspection *::before, .mai-inspection *::after { box-sizing: border-box; }\n.mai-inspection [hidden] { display: none !important; }\n.mai-inspection button {\n  appearance: none; -webkit-appearance: none; box-shadow: none;\n  min-width: 0; margin: 0; padding: 0; border: 0; border-radius: 0;\n  background: transparent; color: inherit;\n  font: inherit; font-size: 14px; font-weight: 400;\n  text-align: left; text-transform: none; letter-spacing: normal;\n  line-height: 1.3; cursor: pointer; touch-action: manipulation;\n  transition: color .2s, background .2s;\n}\n.mai-inspection button::before, .mai-inspection button::after { content: none; }\n.mai-inspection button:disabled { opacity: .5; cursor: default; }\n.mai-inspection button:focus-visible { outline: 2px solid var(--mai-demo-accent); outline-offset: -4px; }\n.mai-inspection svg { display: block; width: 20px; height: 20px; flex-shrink: 0; fill: none; stroke: currentColor; stroke-width: 1.6; stroke-linecap: round; stroke-linejoin: round; }\n.mai-inspection__toolbar {\n  display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between;\n  gap: 10px 20px; min-height: 62px; padding: 15px 20px;\n  border-bottom: 1px solid var(--mai-demo-border);\n}\n.mai-inspection__identity { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 18px; }\n.mai-inspection__number { font: 400 12px\/1.5 var(--mai-demo-mono); color: var(--mai-demo-muted); letter-spacing: .05em; }\n.mai-inspection__type { font-size: 14px; color: #f5f8fa; }\n.mai-inspection__badge { color: var(--mai-demo-muted); font-size: 12px; white-space: nowrap; }\n.mai-inspection__frame { position: relative; }\n.mai-inspection__stage { position: relative; width: 100%; aspect-ratio: 16\/10; overflow: hidden; background: #060f17; }\n.mai-inspection__plane { position: absolute; inset: 0; width: 100%; height: 100%; margin: auto; }\n.mai-inspection .mai-inspection__image { display: block; width: 100%; height: 100%; max-width: none; margin: 0; border: 0; border-radius: 0; box-shadow: none; object-fit: contain; }\n.mai-inspection__scan { position: absolute; inset: 0; overflow: hidden; pointer-events: none; }\n.mai-inspection .mai-inspection__scan::after { content: ''; position: absolute; left: 0; right: 0; height: 2px; background: var(--mai-demo-accent); box-shadow: 0 0 18px rgba(255,116,46,.65); animation: mai-inspection-scan-v1 1s linear both; }\n.mai-inspection [data-mai-scan][data-restart=\"true\"]::after { animation: none; }\n@keyframes mai-inspection-scan-v1 { from { top: 12%; } to { top: 86%; } }\n.mai-inspection[data-playing=\"false\"] .mai-inspection__scan::after { animation-play-state: paused; }\n.mai-inspection__box { position: absolute; border: 1px solid var(--mai-demo-accent); color: var(--mai-demo-accent); background: rgba(255,116,46,.04); pointer-events: none; }\n.mai-inspection__box::before, .mai-inspection__box::after { content: ''; position: absolute; inset: -2px; background: linear-gradient(currentColor,currentColor) left top\/16px 2px no-repeat, linear-gradient(currentColor,currentColor) right top\/16px 2px no-repeat, linear-gradient(currentColor,currentColor) left bottom\/16px 2px no-repeat, linear-gradient(currentColor,currentColor) right bottom\/16px 2px no-repeat; }\n.mai-inspection__box::after { background-size: 2px 16px; }\n.mai-inspection__box-label { position: absolute; bottom: calc(100% + 5px); left: -1px; padding: 4px 8px; color: #071520; background: var(--mai-demo-accent); font: 500 12px\/1.4 var(--mai-demo-mono); white-space: nowrap; }\n.mai-inspection__result {\n  position: absolute; bottom: 16px; left: 16px; right: 16px;\n  display: flex; align-items: center; gap: 12px; padding: 12px 14px;\n  background: rgba(7,23,34,.96); border: 1px solid var(--mai-demo-border);\n}\n.mai-inspection__result-icon { display: flex; align-items: center; justify-content: center; flex-shrink: 0; width: 38px; height: 38px; background: rgba(255,116,46,.12); color: var(--mai-demo-accent); }\n.mai-inspection__result-text { min-width: 0; flex: 1; }\n.mai-inspection__phase { display: block; margin: 0 0 2px; font: 400 12px\/1.4 var(--mai-demo-mono); letter-spacing: .08em; color: var(--mai-demo-muted); }\n.mai-inspection__message { display: block; margin: 0; color: #f5f8fa; font: 500 15px\/1.4 var(--mai-demo-font); }\n.mai-inspection .mai-inspection__play { display: flex; align-items: center; justify-content: center; flex-shrink: 0; width: 44px; min-height: 44px; border: 1px solid var(--mai-demo-border); border-radius: 2px; }\n.mai-inspection .mai-inspection__play:hover { background: rgba(255,255,255,.1); }\n.mai-inspection[data-playing=\"true\"] .mai-inspection__icon-play, .mai-inspection[data-playing=\"false\"] .mai-inspection__icon-pause { display: none; }\n.mai-inspection__steps { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); border-top: 1px solid var(--mai-demo-border); }\n.mai-inspection .mai-inspection__step { display: flex; align-items: center; gap: 12px; min-height: 60px; padding: 16px 20px; color: var(--mai-demo-muted); border-right: 1px solid var(--mai-demo-border); }\n.mai-inspection .mai-inspection__step:last-child { border-right: 0; }\n.mai-inspection .mai-inspection__step[aria-pressed=\"true\"] { color: #fff; background: rgba(255,255,255,.035); box-shadow: inset 0 -2px var(--mai-demo-accent); }\n.mai-inspection__step-number { font: 400 12px\/1.4 var(--mai-demo-mono); color: #9cafbc; }\n.mai-inspection__step[aria-pressed=\"true\"] .mai-inspection__step-number { color: var(--mai-demo-accent); }\n.mai-inspection__step svg { width: 16px; height: 16px; margin-left: auto; color: #8da1af; }\n.mai-inspection .mai-inspection__step:hover, .mai-inspection .mai-inspection__view:hover { color: #fff; background: rgba(255,255,255,.07); }\n.mai-inspection__views { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); gap: 1px; margin: 14px; border: 1px solid var(--mai-demo-border); background: var(--mai-demo-border); }\n.mai-inspection .mai-inspection__view { min-height: 46px; padding: 12px 8px; background: var(--mai-demo-bg); text-align: center; color: var(--mai-demo-muted); font-size: 14px; }\n.mai-inspection .mai-inspection__view[aria-pressed=\"true\"] { background: #29404e; color: #fff; }\n.mai-inspection__sr { position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px; clip-path: inset(50%); overflow: hidden; white-space: nowrap; border: 0; }\n.mai-inspection__noscript { display: block; padding: 14px 20px; font-size: 14px; color: var(--mai-demo-muted); }\n@container (max-width: 580px) {\n  .mai-inspection__toolbar { padding: 12px 14px; }\n  .mai-inspection__identity { gap: 3px; flex-direction: column; align-items: flex-start; }\n  .mai-inspection__result { position: relative; bottom: auto; left: auto; right: auto; gap: 9px; padding: 10px 12px; border-left: 0; border-right: 0; border-bottom: 0; }\n  .mai-inspection__result-icon { width: 30px; height: 30px; }\n  .mai-inspection__message { font-size: 14px; }\n  .mai-inspection .mai-inspection__step { min-height: 54px; padding: 14px 12px; gap: 8px; }\n  .mai-inspection__step svg { display: none; }\n  .mai-inspection__views { grid-template-columns: repeat(2,minmax(0,1fr)); margin: 10px; }\n}\n@container (max-width: 390px) {\n  .mai-inspection__result-icon { display: none; }\n  .mai-inspection__box-label { padding: 3px 5px; font-size: 12px; }\n  .mai-inspection__type { font-size: 14px; }\n}\n@media (max-width: 580px) {\n  .mai-inspection__views { grid-template-columns: repeat(2,minmax(0,1fr)); }\n  .mai-inspection .mai-inspection__step { padding: 14px 10px; gap: 7px; }\n  .mai-inspection__step svg { display: none; }\n}\n@media (prefers-reduced-motion: reduce) {\n  .mai-inspection *, .mai-inspection *::before, .mai-inspection *::after { transition: none !important; animation: none !important; }\n  .mai-inspection__scan::after { top: 45%; }\n}\n\n.mai-inspection .mai-inspection__speed-note {\n  margin: 0;\n  padding: 0 20px 18px;\n  color: var(--mai-demo-muted);\n  font: 400 13px\/1.6 var(--mai-demo-font);\n  text-align: left;\n}\n<\/style>\n\n<section class=\"mai-inspection\" data-mai-inspection=\"\" data-playing=\"false\" aria-label=\"MarshallAI inspection demonstration\">\n  <div class=\"mai-inspection__toolbar\">\n    <div class=\"mai-inspection__identity\">\n      <span class=\"mai-inspection__number\">INSPECTION VIEW \/ <span data-mai-number=\"\">01<\/span><\/span>\n      <!-- The inspection type (formerly image-meta) is now in the toolbar. -->\n      <span class=\"mai-inspection__type\" data-mai-type=\"\">Product identity<\/span>\n    <\/div>\n    <span class=\"mai-inspection__badge\">Illustrative demo<\/span>\n  <\/div>\n  <div class=\"mai-inspection__frame\">\n  <div class=\"mai-inspection__stage\" data-mai-stage=\"\">\n    <div class=\"mai-inspection__plane\" data-mai-plane=\"\">\n      <img loading=\"lazy\" class=\"mai-inspection__image\" data-mai-image=\"\" src=\"https:\/\/marshallai.com\/wp-content\/uploads\/2026\/09\/MarshallAI_beverage-identity.webp\" width=\"1586\" height=\"992\" alt=\"Closely packed beverage cans, with one rogue IMPORT label among DOMESTIC labels.\" decoding=\"async\">\n      <div class=\"mai-inspection__scan\" data-mai-scan=\"\" hidden=\"\" aria-hidden=\"true\"><\/div>\n      <div class=\"mai-inspection__box\" data-mai-box=\"\" hidden=\"\" aria-hidden=\"true\"><span class=\"mai-inspection__box-label\" data-mai-box-label=\"\">IMPORT \u2260 DOMESTIC<\/span><\/div>\n    <\/div>\n  <\/div>\n    <div class=\"mai-inspection__result\">\n      <span class=\"mai-inspection__result-icon\" aria-hidden=\"true\">\n        <svg viewBox=\"0 0 24 24\"><path d=\"M4 8V4h4m8 0h4v4M4 16v4h4m8 0h4v-4M4 12h16\"><\/path><\/svg>\n      <\/span>\n      <div class=\"mai-inspection__result-text\"><span class=\"mai-inspection__phase\" data-mai-phase=\"\">INSPECT<\/span><strong class=\"mai-inspection__message\" data-mai-message=\"\">Acquiring product image<\/strong><\/div>\n      <button class=\"mai-inspection__play\" type=\"button\" data-mai-play=\"\" disabled=\"\" aria-label=\"Play demonstration\">\n        <svg class=\"mai-inspection__icon-pause\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M8 5v14M16 5v14\"><\/path><\/svg>\n        <svg class=\"mai-inspection__icon-play\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"m8 5 11 7-11 7Z\"><\/path><\/svg>\n      <\/button>\n    <\/div>\n  <\/div>\n  <div class=\"mai-inspection__steps\" role=\"group\" aria-label=\"Inspection process steps\">\n    <button class=\"mai-inspection__step\" type=\"button\" data-mai-step=\"0\" aria-pressed=\"true\" disabled=\"\"><span class=\"mai-inspection__step-number\">01<\/span>Inspect<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M4 12h16m-5-5 5 5-5 5\"><\/path><\/svg><\/button>\n    <button class=\"mai-inspection__step\" type=\"button\" data-mai-step=\"1\" aria-pressed=\"false\" disabled=\"\"><span class=\"mai-inspection__step-number\">02<\/span>Detect<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M4 12h16m-5-5 5 5-5 5\"><\/path><\/svg><\/button>\n    <button class=\"mai-inspection__step\" type=\"button\" data-mai-step=\"2\" aria-pressed=\"false\" disabled=\"\"><span class=\"mai-inspection__step-number\">03<\/span>Trigger action<\/button>\n  <\/div>\n  <div class=\"mai-inspection__views\" role=\"group\" aria-label=\"Choose an inspection view\">\n    <button class=\"mai-inspection__view\" type=\"button\" data-mai-view=\"beverage\" aria-pressed=\"true\" disabled=\"\">Beverage cans<\/button>\n    <button class=\"mai-inspection__view\" type=\"button\" data-mai-view=\"dates\" aria-pressed=\"false\" disabled=\"\">Date &amp; Lot codes<\/button>\n    <button class=\"mai-inspection__view\" type=\"button\" data-mai-view=\"parts\" aria-pressed=\"false\" disabled=\"\">Metal parts<\/button>\n    <button class=\"mai-inspection__view\" type=\"button\" data-mai-view=\"aerosol\" aria-pressed=\"false\" disabled=\"\">Cosmetic aerosols<\/button>\n  <\/div>\n  <p class=\"mai-inspection__speed-note\">Actual inspection speed is measured in milliseconds. MarshallAI can comfortably inspect over 150,000 units per hour.<\/p>\n  <span class=\"mai-inspection__sr\" data-mai-announcement=\"\" role=\"status\" aria-live=\"polite\" aria-atomic=\"true\"><\/span>\n  <noscript>&amp;amp;amp;amp;amp;amp;amp;amp;lt;span class=&#8221;mai-inspection__noscript&#8221;&amp;amp;amp;amp;amp;amp;amp;amp;gt;Enable JavaScript to switch views and play the inspection demonstration.&amp;amp;amp;amp;amp;amp;amp;amp;lt;\/span&amp;amp;amp;amp;amp;amp;amp;amp;gt;<\/noscript>\n<\/section>\n\n<script>\n(function () {\n  'use strict';\n  function initialise(root) {\n    if (root.dataset.maiReady === 'true') return;\n    root.dataset.maiReady = 'true';\n    var find = function (selector) { return root.querySelector(selector); };\n    var image = find('[data-mai-image]');\n    var stage = find('[data-mai-stage]');\n    var plane = find('[data-mai-plane]');\n    var box = find('[data-mai-box]');\n    var scan = find('[data-mai-scan]');\n    var play = find('[data-mai-play]');\n    var message = find('[data-mai-message]');\n    var announcement = find('[data-mai-announcement]');\n    var viewButtons = Array.from(root.querySelectorAll('[data-mai-view]'));\n    var stepButtons = Array.from(root.querySelectorAll('[data-mai-step]'));\n\n    \/* VIEW CONFIGURATION\n       box = [left, top, width, height] as percentages of the ORIGINAL image.\n       Images are contained, never cropped; overlay coordinates follow the image.\n       Replace src values with WordPress Media Library URLs if desired.\n       messages are a scripted demonstration, not measured model outputs.\n    *\/\n    var views = {\n      beverage: {\n        number: '01', type: 'Product identity',\n        src: image.getAttribute('src'),\n        alt: 'Closely packed NORTHLINE cans, with one IMPORT label among DOMESTIC labels.',\n        label: 'IMPORT \u2260 DOMESTIC', box: [50.8, 56.8, 12.5, 9],\n        messages: ['Acquiring product image', 'Import can on a domestic run', 'Reject signal \u2192 production line']\n      },\n      dates: {\n        number: '02', type: 'Best before validation',\n        src: 'https:\/\/marshallai.com\/wp-content\/uploads\/2026\/09\/MarshallAI_bb-expiry-date_inspection1-P1043300-scaled.webp',\n        alt: 'Real MarshallAI inspection photograph of inkjet date and batch codes on an aluminium can base.',\n        label: 'INCORRECT CODE PLACEMENT', box: [35.4, 37.5, 30.5, 17.2],\n        \/\/ No pass\/fail claim: the photograph alone does not establish the production rules.\n        messages: ['Date, batch and lot code', 'Readability & logic against production rules', 'Results \u2192 production system']\n      },\n      parts: {\n        number: '03', type: 'Surface inspection',\n        src: 'https:\/\/marshallai.com\/wp-content\/uploads\/2026\/10\/MarshallAI_metal-part_defect-burr_crop.webp',\n        alt: 'Metal power-tool gearbox casing with a visible scratch on its front surface.',\n        label: 'THREAD BURR', box: [48.5, 45, 9, 11],\n        messages: ['Acquiring component image', 'Burr detected', 'Part flagged for operator review']\n      },\n      aerosol: {\n        number: '04', type: 'Dent inspection',\n        src: 'https:\/\/marshallai.com\/wp-content\/uploads\/2026\/09\/MarshallAI_cosmetic-aerosol_dent.webp',\n        alt: 'Aluminium aerosol hair spray cans on a conveyor, with a dent in the front of the central can.',\n        label: 'DENT DETECTED', box: [58.6, 50.5, 7.5, 12.8],\n        messages: ['Acquiring aerosol image', 'Dent detected in aluminium wall', 'Reject signal \u2192 production line']\n      }\n    };\n    var phaseNames = ['INSPECT', 'DETECT', 'ACT'];\n    var phaseDurations = [1000, 2600, 2600]; \/\/ Inspect, Detect, Act (milliseconds).\n    var selected = 'beverage';\n    var phase = 0;\n    var timer = null;\n    var loaded = false;\n    var failed = false;\n    var visible = true;\n    var reduced = window.matchMedia('(prefers-reduced-motion: reduce)');\n    var playing = !reduced.matches;\n    if (!playing) phase = 1;\n\n    function fitImage() {\n      if (!image.naturalWidth || !stage.clientWidth) return;\n      var scale = Math.min(stage.clientWidth \/ image.naturalWidth, stage.clientHeight \/ image.naturalHeight);\n      plane.style.width = (image.naturalWidth * scale) + 'px';\n      plane.style.height = (image.naturalHeight * scale) + 'px';\n    }\n    function clearTimer() { window.clearTimeout(timer); timer = null; }\n    function schedule() {\n      clearTimer();\n      if (!root.isConnected || !playing || !visible || document.hidden || !loaded) return;\n      \/\/ Restart the CSS sweep together with the Capture timer, including\n      \/\/ cached images, repeated view clicks, and resuming a paused capture.\n      if (phase === 0) {\n        scan.dataset.restart = 'true';\n        void scan.offsetWidth;\n        delete scan.dataset.restart;\n      }\n      timer = window.setTimeout(function () {\n        phase = (phase + 1) % 3;\n        render(false);\n        schedule();\n      }, phaseDurations[phase]);\n    }\n    function render(announce) {\n      var view = views[selected];\n      root.dataset.playing = String(playing);\n      root.dataset.phase = String(phase);\n      find('[data-mai-number]').textContent = view.number;\n      find('[data-mai-type]').textContent = view.type;\n      find('[data-mai-phase]').textContent = phaseNames[phase];\n      message.textContent = failed ? 'Image unavailable \u2014 choose another view' : loaded ? view.messages[phase] : 'Loading inspection image\u2026';\n      find('[data-mai-box-label]').textContent = view.label;\n      ['left', 'top', 'width', 'height'].forEach(function (property, index) { box.style[property] = view.box[index] + '%'; });\n      box.hidden = !loaded || phase === 0;\n      scan.hidden = !loaded || phase !== 0;\n      play.setAttribute('aria-label', playing ? 'Pause demonstration' : 'Play demonstration');\n      stepButtons.forEach(function (button, index) { button.setAttribute('aria-pressed', String(index === phase)); });\n      viewButtons.forEach(function (button) { button.setAttribute('aria-pressed', String(button.dataset.maiView === selected)); });\n      if (announce) announcement.textContent = view.type + '. ' + message.textContent;\n    }\n    function imageReady() {\n      if (!image.complete || !image.naturalWidth) return;\n      loaded = true; failed = false;\n      fitImage(); render(false); schedule();\n    }\n    image.addEventListener('load', imageReady);\n    image.addEventListener('error', function () {\n      loaded = false; failed = true; clearTimer(); render(true);\n    });\n    function chooseView(key) {\n      if (!views[key]) return;\n      clearTimer();\n      if (selected !== key) {\n        selected = key; loaded = false; failed = false;\n        image.alt = views[key].alt;\n        image.src = views[key].src;\n      }\n      \/\/ A deliberate view selection always starts a fresh sequence.\n      \/\/ Reduced-motion CSS still suppresses the moving scan line.\n      playing = true;\n      phase = 0;\n      render(true);\n      imageReady();\n    }\n    viewButtons.forEach(function (button) {\n      button.disabled = false;\n      button.addEventListener('click', function () { chooseView(button.dataset.maiView); });\n    });\n    stepButtons.forEach(function (button) {\n      button.disabled = false;\n      button.addEventListener('click', function () {\n        playing = false; clearTimer(); phase = Number(button.dataset.maiStep); render(true);\n      });\n    });\n    play.disabled = false;\n    play.addEventListener('click', function () { playing = !playing; render(true); schedule(); });\n    document.addEventListener('visibilitychange', schedule);\n    function reducedChanged(event) { if (event.matches) { playing = false; phase = 1; render(false); schedule(); } }\n    if (reduced.addEventListener) reduced.addEventListener('change', reducedChanged);\n    if ('ResizeObserver' in window) new ResizeObserver(fitImage).observe(stage);\n    else window.addEventListener('resize', fitImage);\n    if ('IntersectionObserver' in window) {\n      new IntersectionObserver(function (entries) {\n        visible = entries[0].isIntersecting; schedule();\n      }, { threshold: 0.05 }).observe(root);\n    }\n    render(false);\n    imageReady();\n  }\n  function boot() { document.querySelectorAll('[data-mai-inspection]').forEach(initialise); }\n  \/\/ Works inline, with defer\/delayed script execution, and with multiple block copies.\n  if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', boot, { once: true });\n  else boot();\n})();\n<\/script>\n<\/div>\n<\/section>\n<\/div>\n<\/div>\n\n\n\n<div class=\"mai-section gb-element-d67b15cd\">\n<div class=\"mai-container_inner-content\">\n<div class=\"gb-element-3b3ef8b1\">\n<div>\n<p class=\"gb-text gb-text-cb07e466\">Trusted by<\/p>\n<\/div>\n\n\n\n<div class=\"gb-element-5b212367\">\n<section class=\"mai-logo-slider-section\">\n  <div class=\"mai-logo-slider-container\">\n    <div class=\"mai-logo-track\">\n      \n      <!-- Primary List -->\n      <div class=\"mai-logo-list\">\n        <img decoding=\"async\" src=\"https:\/\/marshallai.com\/wp-content\/uploads\/2026\/02\/Stockholms-stad-logo.png\" alt=\"Stockholms stad\">\n        <img decoding=\"async\" src=\"https:\/\/marshallai.com\/wp-content\/uploads\/2026\/02\/Helsingin-kaupunki-logo-svg.svg\" alt=\"Helsingin kaupunki\">\n        <img decoding=\"async\" src=\"https:\/\/marshallai.com\/wp-content\/uploads\/2026\/02\/Securitas-Technology-logo-svg.svg\" alt=\"Securitas Technology\">\n        <img decoding=\"async\" src=\"https:\/\/marshallai.com\/wp-content\/uploads\/2026\/02\/Savox-logo-svg.svg\" alt=\"Savox\">\n        <img decoding=\"async\" src=\"https:\/\/marshallai.com\/wp-content\/uploads\/2026\/02\/Taerosol-logo.png\" alt=\"Taerosol\">\n        <img decoding=\"async\" src=\"https:\/\/marshallai.com\/wp-content\/uploads\/2026\/02\/Turvanasta-logo.png\" alt=\"Turvanasta\">\n        <img decoding=\"async\" src=\"https:\/\/marshallai.com\/wp-content\/uploads\/2026\/02\/Lappeenranta-kaupunki-logo.png\" alt=\"Lappeenranta kaupunki\">\n        <img decoding=\"async\" src=\"https:\/\/marshallai.com\/wp-content\/uploads\/2026\/02\/Hartwall-logo-svg.svg\" alt=\"Hartwall\">\n        <img decoding=\"async\" src=\"https:\/\/marshallai.com\/wp-content\/uploads\/2026\/02\/Telia-logo-svg.svg\" alt=\"Telia\">\n        <img decoding=\"async\" src=\"https:\/\/marshallai.com\/wp-content\/uploads\/2026\/02\/Port-of-turku-logo-svg.svg\" alt=\"Port of Turku\">\n        <img decoding=\"async\" src=\"https:\/\/marshallai.com\/wp-content\/uploads\/2026\/02\/Cinia-logo-svg.svg\" alt=\"Cinia\">\n        <img decoding=\"async\" src=\"https:\/\/marshallai.com\/wp-content\/uploads\/2026\/02\/Finnish_customs_Tulli_logo_svg.svg\" alt=\"Tulli\">\n      <\/div>\n\n      <!-- Duplicated List for seamless infinite looping -->\n      <div class=\"mai-logo-list\">\n        <img decoding=\"async\" src=\"https:\/\/marshallai.com\/wp-content\/uploads\/2026\/02\/Stockholms-stad-logo.png\" alt=\"Stockholms stad\">\n        <img decoding=\"async\" src=\"https:\/\/marshallai.com\/wp-content\/uploads\/2026\/02\/Helsingin-kaupunki-logo-svg.svg\" alt=\"Helsingin kaupunki\">\n        <img decoding=\"async\" src=\"https:\/\/marshallai.com\/wp-content\/uploads\/2026\/02\/Securitas-Technology-logo-svg.svg\" alt=\"Securitas Technology\">\n        <img decoding=\"async\" src=\"https:\/\/marshallai.com\/wp-content\/uploads\/2026\/02\/Savox-logo-svg.svg\" alt=\"Savox\">\n        <img decoding=\"async\" src=\"https:\/\/marshallai.com\/wp-content\/uploads\/2026\/02\/Taerosol-logo.png\" alt=\"Taerosol\">\n        <img decoding=\"async\" src=\"https:\/\/marshallai.com\/wp-content\/uploads\/2026\/02\/Turvanasta-logo.png\" alt=\"Turvanasta\">\n        <img decoding=\"async\" src=\"https:\/\/marshallai.com\/wp-content\/uploads\/2026\/02\/Lappeenranta-kaupunki-logo.png\" alt=\"Lappeenranta kaupunki\">\n        <img decoding=\"async\" src=\"https:\/\/marshallai.com\/wp-content\/uploads\/2026\/02\/Hartwall-logo-svg.svg\" alt=\"Hartwall\">\n        <img decoding=\"async\" src=\"https:\/\/marshallai.com\/wp-content\/uploads\/2026\/02\/Telia-logo-svg.svg\" alt=\"Telia\">\n        <img decoding=\"async\" src=\"https:\/\/marshallai.com\/wp-content\/uploads\/2026\/02\/Port-of-turku-logo-svg.svg\" alt=\"Port of Turku\">\n        <img decoding=\"async\" src=\"https:\/\/marshallai.com\/wp-content\/uploads\/2026\/02\/Cinia-logo-svg.svg\" alt=\"Cinia\">\n        <img decoding=\"async\" src=\"https:\/\/marshallai.com\/wp-content\/uploads\/2026\/02\/Finnish_customs_Tulli_logo_svg.svg\" alt=\"Tulli\">\n      <\/div>\n\n    <\/div>\n  <\/div>\n<\/section>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n\n\n\n<style>\n.mai-bb-banner {\n  --mai-bb-orange: #ff742e;\n  --mai-bb-navy: #081722;\n  --mai-bb-font: 'Aspekta', Arial, Helvetica, sans-serif;\n  --mai-bb-mono: 'JetBrains Mono', ui-monospace, monospace;\n  width: 100%; max-width: 1280px; margin: 0 auto; padding: 0;\n  background: var(--mai-bb-navy); color: #fff;\n  border: 1px solid #ffffff26; border-top: 3px solid var(--mai-bb-orange);\n  font: 400 16px\/1.55 var(--mai-bb-font); text-align: left;\n  container-type: inline-size;\n}\n.mai-bb-banner, .mai-bb-banner *, .mai-bb-banner *::before, .mai-bb-banner *::after { box-sizing: border-box; }\n.mai-bb-banner .mai-bb-banner__inner { display: grid; grid-template-columns: 1.15fr 1fr; align-items: stretch; }\n.mai-bb-banner .mai-bb-banner__copy { display: flex; flex-direction: column; align-items: flex-start; justify-content: center; padding: 28px 32px; }\n.mai-bb-banner .mai-bb-banner__eyebrow { display: flex; align-items: center; gap: 10px; margin: 0 0 22px; padding: 0; color: #b8c5ce; font: 500 12px\/1.5 var(--mai-bb-mono); letter-spacing: .08em; text-transform: uppercase; }\n.mai-bb-banner .mai-bb-banner__eyebrow::before { content: ''; width: 6px; height: 6px; flex: 0 0 6px; background: var(--mai-bb-orange); }\n.mai-bb-banner .mai-bb-banner__title { margin: 0; padding: 0; color: #fff; font: 500 clamp(32px,3.4vw,48px)\/1.08 var(--mai-bb-font); font-size: clamp(30px, 3vw, 40px); letter-spacing: -.045em; text-transform: none; }\n.mai-bb-banner .mai-bb-banner__title span { color: var(--mai-bb-orange); }\n.mai-bb-banner .mai-bb-banner__details { display: flex; align-items: center; flex-wrap: wrap; gap: 8px 18px; margin: 23px 0 28px; padding: 0; color: #d4dfe6; font: 400 16px\/1.6 var(--mai-bb-font); }\n.mai-bb-banner .mai-bb-banner__location { padding-left: 18px; border-left: 1px solid #ffffff40; }\n.mai-bb-banner .mai-bb-banner__cta { display: inline-flex; align-items: center; justify-content: space-between; gap: 28px; min-height: 54px; padding: 16px 22px; border: 1px solid var(--mai-bb-orange); border-radius: 2px; background: var(--mai-bb-orange); color: var(--mai-bb-navy); font: 600 15px\/1.4 var(--mai-bb-font); text-decoration: none; box-shadow: none; transition: background .2s; touch-action: manipulation; }\n.mai-bb-banner .mai-bb-banner__cta:hover { background: #ff8f56; border-color: #ff8f56; color: var(--mai-bb-navy); text-decoration: none; }\n.mai-bb-banner .mai-bb-banner__cta svg { display: block; width: 20px; height: 20px; flex: 0 0 auto; fill: none; stroke: currentColor; stroke-width: 1.6; stroke-linecap: round; stroke-linejoin: round; }\n.mai-bb-banner a:focus-visible { outline: 3px solid #fff; outline-offset: 5px; }\n.mai-bb-banner .mai-bb-banner__visual { min-width: 0; margin: 0; padding: 16px; background: #122631; border-left: 1px solid #ffffff1c; }\n.mai-bb-banner .mai-bb-banner__map-card { background: #f6f3ee; }\n.mai-bb-banner .mai-bb-banner__map-head { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 12px 20px; padding: 10px 16px; border-bottom: 1px solid #d9dfdf; background: #fff; }\n.mai-bb-banner .mai-bb-banner__logo { display: block; width: 90px; height: auto; max-width: 100%; margin: 0; padding: 0; border: 0; border-radius: 0; box-shadow: none; }\n.mai-bb-banner .mai-bb-banner__stand { color: #101d27; font: 500 12px\/1.6 var(--mai-bb-mono); letter-spacing: .04em; }\n.mai-bb-banner .mai-bb-banner__map-link { display: block; padding: 0; margin: 0; color: #101d27; text-decoration: none; box-shadow: none; }\n.mai-bb-banner .mai-bb-banner__map-link:focus-visible { outline-color: var(--mai-bb-orange); outline-offset: -3px; }\n.mai-bb-banner .mai-bb-banner__map { display: block; width: 100%; height: 220px; object-fit: contain; max-width: 100%; margin: 0; padding: 0; border: 0; border-radius: 0; box-shadow: none; }\n.mai-bb-banner .mai-bb-banner__caption { display: flex; justify-content: space-between; gap: 12px; margin: 0; padding: 10px 16px; border-top: 1px solid #d9dfdf; color: #43535e; background: #fff; font: 400 12px\/1.5 var(--mai-bb-font); }\n.mai-bb-banner .mai-bb-banner__map-link:hover .mai-bb-banner__caption span:last-child { text-decoration: underline; text-underline-offset: 3px; }\n\n@container (max-width: 760px) {\n  .mai-bb-banner .mai-bb-banner__inner { grid-template-columns: minmax(0,1fr); }\n  .mai-bb-banner .mai-bb-banner__visual { border-left: 0; border-top: 1px solid #ffffff1c; padding: 20px; }\n  .mai-bb-banner .mai-bb-banner__map-card { max-width: 500px; margin-inline: auto; }\n  .mai-bb-banner .mai-bb-banner__title { font-size: clamp(32px,6cqw,44px); }\n}\n@container (max-width: 420px) {\n  .mai-bb-banner .mai-bb-banner__copy { padding: 28px 22px; }\n  .mai-bb-banner .mai-bb-banner__details { flex-direction: column; align-items: flex-start; gap: 5px; }\n  .mai-bb-banner .mai-bb-banner__location { padding-left: 0; border-left: 0; }\n  .mai-bb-banner .mai-bb-banner__visual { padding: 14px; }\n  .mai-bb-banner .mai-bb-banner__map-head { padding: 12px; }\n  .mai-bb-banner .mai-bb-banner__logo { width: 100px; }\n  .mai-bb-banner .mai-bb-banner__stand { font-size: 11px; }\n}\n@supports not (container-type: inline-size) {\n  @media (max-width: 760px) {\n    .mai-bb-banner .mai-bb-banner__inner { grid-template-columns: minmax(0,1fr); }\n    .mai-bb-banner .mai-bb-banner__visual { border-left: 0; }\n    .mai-bb-banner .mai-bb-banner__details { flex-direction: column; align-items: flex-start; }\n    .mai-bb-banner .mai-bb-banner__location { border-left: 0; padding-left: 0; }\n  }\n}\n@media (prefers-reduced-motion: reduce) {\n  .mai-bb-banner .mai-bb-banner__cta { transition: none; }\n}\n<\/style>\n\n<section class=\"mai-bb-banner\" aria-label=\"Meet MarshallAI at BrauBeviale 2026\">\n  <div class=\"mai-bb-banner__inner\">\n    <div class=\"mai-bb-banner__copy\">\n      <p class=\"mai-bb-banner__eyebrow\">MarshallAI \/ Live at BrauBeviale<\/p>\n      <h2 class=\"mai-bb-banner__title\">Meet us at<br><span>BrauBeviale 2026.<\/span><\/h2>\n      <p class=\"mai-bb-banner__details\">\n        <span><time datetime=\"2026-11-10\">10<\/time>\u2013<time datetime=\"2026-11-12\">12 November 2026<\/time><\/span>\n        <span class=\"mai-bb-banner__location\">Hall 10 \u00b7 Stand 10-139<\/span>\n      <\/p>\n      <a class=\"mai-bb-banner__cta\" href=\"https:\/\/marshallai.com\/braubeviale-2026\/\">\n        Book a live demo\n        <svg viewBox=\"0 0 24 24\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M4 12h16m-6-6 6 6-6 6\"><\/path><\/svg>\n      <\/a>\n    <\/div>\n    <div class=\"mai-bb-banner__visual\">\n      <div class=\"mai-bb-banner__map-card\">\n        <div class=\"mai-bb-banner__map-head\">\n          <img class=\"mai-bb-banner__logo\" src=\"https:\/\/marshallai.com\/wp-content\/uploads\/2026\/09\/BB_Logo_RGB_black-scaled.webp\" alt=\"BrauBeviale\" width=\"2560\" height=\"1380\" loading=\"lazy\" decoding=\"async\">\n          <span class=\"mai-bb-banner__stand\">HALL 10 \/ 10-139<\/span>\n        <\/div>\n        <a class=\"mai-bb-banner__map-link\" href=\"https:\/\/marshallai.com\/wp-content\/uploads\/2026\/09\/MarshallAI_BrauBeviale2026_floor-plan.webp\" target=\"_blank\" rel=\"noopener\" aria-label=\"View the floor plan showing stand 10-139, opens in a new tab\">\n          <img class=\"mai-bb-banner__map\" src=\"https:\/\/marshallai.com\/wp-content\/uploads\/2026\/09\/MarshallAI_BrauBeviale2026_floor-plan.webp\" width=\"1564\" height=\"1240\" alt=\"Hall 10 floor plan with stand 10-139 highlighted in yellow.\" loading=\"lazy\" decoding=\"async\">\n          <span class=\"mai-bb-banner__caption\"><span>Find us in Hall 10<\/span><span>Enlarge floor plan \u2197<\/span><\/span>\n        <\/a>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/section>\n\n\n\n\n\n\n\n<div>\n<section class=\"mai-concept mai-c-section mai-applications\" aria-label=\"Inspection applications\">\n  <div class=\"mai-c-wrap\">\n    <header class=\"mai-c-section-heading\">\n      <div>\n        <p class=\"mai-c-eyebrow\">What do you need to inspect?<\/p>\n        <h2>Inspection solutions<\/h2>\n      <\/div>\n      <p>From product markings to surface defects, we configure each inspection around the features and faults that matter in your production.<\/p>\n    <\/header>\n    <div class=\"mai-c-app-grid\">\n      <a class=\"mai-c-app-card mai-c-app-card--photo\" href=\"https:\/\/marshallai.com\/solution\/lot-and-date-code-inspection\/\">\n        <img src=\"https:\/\/marshallai.com\/wp-content\/uploads\/2026\/09\/MarshallAI_bb-expiry-date_inspection1-P1043300-scaled.webp\" width=\"2560\" height=\"1707\" loading=\"lazy\" decoding=\"async\" alt=\"Printed date and batch codes on an aluminium can base.\">\n        <span class=\"mai-c-app-category\">READ &amp; VALIDATE<\/span>\n        <div class=\"mai-c-app-copy\">\n          <h3>Date &amp; Lot Code Inspection<\/h3>\n          <p>Check that markings are readable and contain the correct information.<\/p>\n        <\/div>\n        <svg class=\"mai-c-icon mai-c-app-arrow\" viewBox=\"0 0 24 24\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M4 12h16m-6-6 6 6-6 6\"><\/path><\/svg>\n      <\/a>\n      <a class=\"mai-c-app-card mai-c-app-card--photo\" href=\"https:\/\/marshallai.com\/solution\/automated-optical-inspection-aoi\/\">\n        <img src=\"https:\/\/marshallai.com\/wp-content\/uploads\/2026\/09\/MarshallAI_metal-part_defect_P1053399-scaled.webp\" width=\"1586\" height=\"992\" loading=\"lazy\" decoding=\"async\" alt=\"Moulded industrial component with a visible surface scratch.\">\n        <span class=\"mai-c-app-category\">DETECT &amp; CLASSIFY<\/span>\n        <div class=\"mai-c-app-copy\">\n          <h3>Surface &amp; component inspection<\/h3>\n          <p>Detect damage, surface defects and incorrectly assembled parts.<\/p>\n        <\/div>\n        <svg class=\"mai-c-icon mai-c-app-arrow\" viewBox=\"0 0 24 24\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M4 12h16m-6-6 6 6-6 6\"><\/path><\/svg>\n      <\/a>\n      <a class=\"mai-c-app-card mai-c-app-card--orange\" href=\"https:\/\/marshallai.com\/solutions\/\">\n        <svg class=\"mai-c-icon mai-c-app-symbol\" viewBox=\"0 0 24 24\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M4 8V4h4m8 0h4v4M4 16v4h4m8 0h4v-4M3 12h18\"><\/path><\/svg>\n        <span class=\"mai-c-app-category\">EXPLORE THE POSSIBILITIES<\/span>\n        <div class=\"mai-c-app-copy\">\n          <h3>Explore all<br>our solutions.<\/h3>\n          <p>See examples of the inspection tasks we can automate.<\/p>\n        <\/div>\n        <svg class=\"mai-c-icon mai-c-app-arrow\" viewBox=\"0 0 24 24\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M4 12h16m-6-6 6 6-6 6\"><\/path><\/svg>\n      <\/a>\n    <\/div>\n  <\/div>\n<\/section>\n<\/div>\n\n\n\n<div class=\"mai-section\">\n<div class=\"mai-container_inner-content\">\n<section class=\"mai-products\" aria-label=\"MarshallAI inspection products\">\n<p class=\"mai-products__eyebrow\">Flexible implementation options<\/p>\n<h2 class=\"mai-products__title\">Our products<\/h2>\n<p class=\"mai-products__intro\">Order a complete inspection system, use your existing cameras or develop your own applications with AFSA software.<\/p>\n<div class=\"mai-products__grid\">\n<article class=\"mai-products__card\">\n<header class=\"mai-products__head\"><h3>Turnkey inspection systems<\/h3><p class=\"mai-products__kicker\">Turnkey solution for your production line.<\/p><\/header>\n<figure class=\"mai-products__visual mai-products__visual\"><img src=\"https:\/\/marshallai.com\/wp-content\/uploads\/2026\/08\/MarshallAI_rogue-can_inspection-station.webp\" alt=\"MarshallAI Rogue Can Detector inspection station\" loading=\"lazy\" decoding=\"async\"><\/figure>\n<div class=\"mai-products__body\"><p class=\"mai-products__description\">We take care of system design, equipment, software and commissioning. The delivery includes integration with your production line and operator training.<\/p><ul><li>Cameras, lighting &amp; processing<\/li><li>AFSA software &amp; trained models<\/li><li>Installation &amp; system integration<\/li><li>Operator training &amp; support<\/li><\/ul><a class=\"mai-products__link\" href=\"https:\/\/marshallai.com\/contact\/\">Discuss a turnkey system<span aria-hidden=\"true\">\u2197<\/span><\/a><\/div><\/article><article class=\"mai-products__card\">\n<header class=\"mai-products__head\"><h3>Retrofit<\/h3><p class=\"mai-products__kicker\">Add intelligence into existing cameras.<\/p><\/header>\n<figure class=\"mai-products__visual mai-products__visual--retrofit\"><img src=\"https:\/\/marshallai.com\/wp-content\/uploads\/2026\/09\/MarshallAI_wood-processing_log-ident.webp\" alt=\"CCTV camera monitoring a sawmill conveyor with a skewed board\" loading=\"lazy\" decoding=\"async\"><figcaption>CCTV process monitoring<\/figcaption><\/figure>\n<div class=\"mai-products__body\"><p class=\"mai-products__description\">Use suitable existing cameras for automated inspection and process monitoring. We assess image quality, develop the analysis and connect the results to your systems.<\/p><ul><li>Existing camera &amp; video-stream assessment<\/li><li>Training data collection &amp; model development<\/li><li>Alerts &amp; automation integration<\/li><li>Operator training &amp; support<\/li><\/ul><a class=\"mai-products__link\" href=\"https:\/\/marshallai.com\/contact\/\">Discuss s retrofit solution<span aria-hidden=\"true\">\u2197<\/span><\/a><\/div><\/article>\n<article class=\"mai-products__card\">\n<header class=\"mai-products__head\"><h3>AFSA software license<\/h3><p class=\"mai-products__kicker\">Your team. Our technology.<\/p><\/header>\n<figure class=\"mai-products__visual mai-products__visual\"><img src=\"https:\/\/marshallai.com\/wp-content\/uploads\/2026\/08\/MarshallAI_AFSA-cv-platform-program-editor-1.webp\" alt=\"MarshallAI AFSA computer vision platform program editor\" loading=\"lazy\" decoding=\"async\"><\/figure>\n<div class=\"mai-products__body\"><p class=\"mai-products__description\">Build and manage inspection and monitoring applications with AFSA. Your team develops the applications, with model training and development services available separately.<\/p><ul><li>AFSA platform licence<\/li><\/ul><div class=\"mai-products__extras\"><p class=\"mai-products__extras-title\">Optional services<\/p><ul class=\"mai-products__extras-list\"><li>Annotation &amp; model training<\/li><li>Model evaluation &amp; analytics<\/li><li>Inspection application development<\/li><\/ul><p class=\"mai-products__extras-note\">Provided by MarshallAI on request.<\/p><\/div><a class=\"mai-products__link\" href=\"https:\/\/marshallai.com\/platform\/\">Explore AFSA software<span aria-hidden=\"true\">\u2197<\/span><\/a><\/div><\/article>\n<\/div><\/section>\n<\/div>\n<\/div>\n\n\n\n<div class=\"gb-element-9e024600 alignfull\">\n<div class=\"gb-element-7feaf244\">\n<div class=\"gb-element-a893140c\">\n<div>\n<figure>\n<figure class=\"wp-block-video\"><video height=\"1080\" style=\"aspect-ratio: 1920 \/ 1080;\" width=\"1920\" controls poster=\"https:\/\/marshallai.com\/wp-content\/uploads\/2026\/04\/MarshallAI_Taerosol_Testimoniaali_thumbnail1.webp\" src=\"https:\/\/marshallai.com\/wp-content\/uploads\/2026\/09\/MarshallAI_Taerosol_Testimoniaali_EN_Subtitled_V2-1080p-H264-4000-kbps-MP4.mp4\"><\/video><\/figure>\n<\/figure>\n<\/div>\n\n\n\n<div>\n<p class=\"gb-text gb-text-a4e15ac9\">Case study &#8211; Cosmetic aerosol inspection<\/p>\n\n\n\n<h2 class=\"gb-text gb-text-7b9739dc\">One production line.<br>Dozens of products.<br>One inspection station. <\/h2>\n\n\n\n<p class=\"gb-text gb-text-c2a11d09\">MarshallAI deployed an automated inline inspection station and rejection unit. Every SKU gets inspected automatically without any operator input or re-configuration between batches.<\/p>\n\n\n\n<div class=\"gb-element-caf59eaf\">\n<p class=\"gb-text gb-text-7519ebff\"><strong>+99%<\/strong><\/p>\n\n\n\n<p class=\"gb-text gb-text-e5563755\">errors caught<\/p>\n<\/div>\n\n\n\n<p class=\"gb-text-ad4b994d\"><span class=\"gb-text\"><a href=\"https:\/\/marshallai.com\/case-study\/taerosol-automated-qa-in-high-mix-manufacturing\/\" data-type=\"case-study\" data-id=\"853\">Read full case study<\/a><\/span><span class=\"gb-shape\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-arrow-up-right\" aria-hidden=\"true\"><path d=\"M7 7h10v10\"><\/path><path d=\"M7 17 17 7\"><\/path><\/svg><\/span><\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n\n\n\n<div class=\"mai-section\">\n<div class=\"mai-container_inner-content\">\n<style>\n\/*    GenerateBlocks controls all OUTER spacing and the container width. Only internal heading\/grid\/card spacing is defined here. *\/\n.mai-strengths {\n  --mai-strengths-ink: #101d27;\n  --mai-strengths-muted: #56656e;\n  --mai-strengths-accent: #dc5a1c;\n  --mai-strengths-border: #d9dfdf;\n  --mai-strengths-font: 'Aspekta', Arial, Helvetica, sans-serif;\n  --mai-strengths-mono: 'JetBrains Mono', ui-monospace, monospace;\n  margin: 0; padding: 0; width: 100%; max-width: none;\n  color: var(--mai-strengths-ink); background: transparent;\n  font: 400 16px\/1.65 var(--mai-strengths-font);\n  text-align: left; container-type: inline-size;\n}\n.mai-strengths, .mai-strengths *, .mai-strengths *::before, .mai-strengths *::after { box-sizing: border-box; }\n.mai-strengths .mai-strengths__header { display: grid; grid-template-columns: 1.4fr 1fr; align-items: end; gap: 24px 48px; margin: 0 0 42px; padding: 0; }\n.mai-strengths .mai-strengths__eyebrow { display: flex; align-items: center; gap: 10px; margin: 0 0 18px; padding: 0; color: var(--mai-strengths-muted); font: 500 12px\/1.5 var(--mai-strengths-mono); letter-spacing: .08em; text-transform: uppercase; }\n.mai-strengths .mai-strengths__eyebrow::before { content: ''; width: 6px; height: 6px; flex: 0 0 6px; background: #ff742e; }\n.mai-strengths .mai-strengths__title { margin: 0; padding: 0; color: var(--mai-strengths-ink); font: 500 clamp(32px,3.4vw,49px)\/1.1 var(--mai-strengths-font); letter-spacing: -.045em; text-transform: none; }\n.mai-strengths .mai-strengths__intro { margin: 0; padding: 0; max-width: 390px; color: var(--mai-strengths-muted); font: 400 16px\/1.7 var(--mai-strengths-font); }\n.mai-strengths .mai-strengths__grid { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); gap: 38px 32px; margin: 0; padding: 0; }\n.mai-strengths .mai-strengths__item { min-width: 0; margin: 0; padding: 26px 0 0; border: 0; border-top: 1px solid var(--mai-strengths-border); background: transparent; box-shadow: none; }\n.mai-strengths .mai-strengths__icon { display: block; width: 28px; height: 28px; margin: 0 0 22px; fill: none; stroke: var(--mai-strengths-accent); stroke-width: 1.5; stroke-linecap: round; stroke-linejoin: round; }\n.mai-strengths .mai-strengths__item h3 { margin: 0 0 13px; padding: 0; color: var(--mai-strengths-ink); font: 500 22px\/1.2 var(--mai-strengths-font); letter-spacing: -.025em; text-transform: none; }\n.mai-strengths .mai-strengths__item p { margin: 0; padding: 0; color: var(--mai-strengths-muted); font: 400 15px\/1.7 var(--mai-strengths-font); }\n.mai-strengths .mai-strengths__links { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 32px; margin: 34px 0 0; padding: 22px 0 0; border-top: 1px solid var(--mai-strengths-border); }\n.mai-strengths .mai-strengths__link { display: inline-flex; align-items: center; gap: 12px; min-height: 44px; padding: 0; margin: 0; color: var(--mai-strengths-ink); font: 500 14px\/1.5 var(--mai-strengths-font); text-decoration: none; box-shadow: none; touch-action: manipulation; }\n.mai-strengths .mai-strengths__link:hover { color: #ac4414; text-decoration: underline; text-underline-offset: 4px; }\n.mai-strengths .mai-strengths__link:focus-visible { outline: 2px solid var(--mai-strengths-accent); outline-offset: 5px; }\n.mai-strengths .mai-strengths__arrow { display: block; width: 18px; height: 18px; flex: 0 0 auto; fill: none; stroke: currentColor; stroke-width: 1.6; stroke-linecap: round; stroke-linejoin: round; }\n\/* These queries respond to the GenerateBlocks container's available width. *\/\n@container (max-width: 960px) {\n  .mai-strengths .mai-strengths__grid { grid-template-columns: repeat(2,minmax(0,1fr)); }\n  .mai-strengths .mai-strengths__header { grid-template-columns: 1fr; gap: 20px; }\n  .mai-strengths .mai-strengths__intro { max-width: 580px; }\n}\n@container (max-width: 480px) {\n  .mai-strengths .mai-strengths__grid { grid-template-columns: minmax(0,1fr); gap: 28px; }\n  .mai-strengths .mai-strengths__header { margin-bottom: 30px; }\n  .mai-strengths .mai-strengths__eyebrow { font-size: 11px; letter-spacing: .05em; }\n  .mai-strengths .mai-strengths__title { font-size: 32px; }\n  .mai-strengths .mai-strengths__icon { margin-bottom: 18px; }\n}\n@supports not (container-type: inline-size) {\n  @media (max-width: 960px) {\n    .mai-strengths .mai-strengths__grid { grid-template-columns: repeat(2,minmax(0,1fr)); }\n    .mai-strengths .mai-strengths__header { grid-template-columns: 1fr; gap: 20px; }\n  }\n  @media (max-width: 480px) { .mai-strengths .mai-strengths__grid { grid-template-columns: minmax(0,1fr); } }\n}\n<\/style>\n<section class=\"mai-strengths\" aria-label=\"MarshallAI inspection strengths\">\n  <header class=\"mai-strengths__header\">\n    <div>\n      <p class=\"mai-strengths__eyebrow\">Why MarshallAI<\/p>\n      <h2 class=\"mai-strengths__title\">Built for your production requirements<\/h2>\n    <\/div>\n    <p class=\"mai-strengths__intro\">We select the cameras, sensors and develop the AI model for your inspection task and integrate the system into your production. One partner, from the first call to a working system.<\/p>\n  <\/header>\n  <div class=\"mai-strengths__grid\">\n    <article class=\"mai-strengths__item\">\n      <svg class=\"mai-strengths__icon\" viewBox=\"0 0 24 24\" aria-hidden=\"true\" focusable=\"false\"><rect x=\"3\" y=\"3\" width=\"6\" height=\"6\" rx=\"1\"><\/rect><rect x=\"15\" y=\"15\" width=\"6\" height=\"6\" rx=\"1\"><\/rect><path d=\"M9 6h9v9M6 9v9h9\"><\/path><\/svg>\n      <h3>Complete delivery from one supplier<\/h3>\n      <p>From sensors and mounting to AI model training and system integrations. We deliver the whole inspection system.<\/p>\n    <\/article>\n    <article class=\"mai-strengths__item\">\n      <svg class=\"mai-strengths__icon\" viewBox=\"0 0 24 24\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M4 8V4h4m8 0h4v4M4 16v4h4m8 0h4v-4M3 12h5l3-4 3 8 3-4h4\"><\/path><\/svg>\n      <h3>Inspection at production speed<\/h3>\n      <p>Detect anomalies, measure objects and grade materials in real time.<\/p>\n    <\/article>\n    <article class=\"mai-strengths__item\">\n      <svg class=\"mai-strengths__icon\" viewBox=\"0 0 24 24\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M8 6l2-3h4l2 3h4v14H4V6h4Z\"><\/path><circle cx=\"12\" cy=\"12\" r=\"3\"><\/circle><\/svg>\n      <h3>The right sensors for the task<\/h3>\n      <p>Combine cameras (IP, GigE, 3D, line scan, SWIR\/NIR) and other sensors (e.g. audio, RF) to detect the features relevant to product quality.<\/p>\n    <\/article>\n    <article class=\"mai-strengths__item\">\n      <svg class=\"mai-strengths__icon\" viewBox=\"0 0 24 24\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M4 7h15m-4-4 4 4-4 4M20 17H5m4-4-4 4 4 4\"><\/path><\/svg>\n      <h3>Automatic product recognition<\/h3>\n      <p>Switch between products\/SKUs without manual reconfiguration between changeovers.<\/p>\n    <\/article>\n    <article class=\"mai-strengths__item\">\n      <svg class=\"mai-strengths__icon\" viewBox=\"0 0 24 24\" aria-hidden=\"true\" focusable=\"false\"><rect x=\"8\" y=\"3\" width=\"8\" height=\"5\" rx=\"1\"><\/rect><rect x=\"2\" y=\"16\" width=\"7\" height=\"5\" rx=\"1\"><\/rect><rect x=\"15\" y=\"16\" width=\"7\" height=\"5\" rx=\"1\"><\/rect><path d=\"M12 8v4H5.5v4M12 12h6.5v4\"><\/path><\/svg>\n      <h3>Integration with production systems<\/h3>\n      <p>Integrate with MES, SCADA, ERP and line automation. Trigger rejection, track results and investigate quality issues.<\/p>\n    <\/article>\n    <article class=\"mai-strengths__item\">\n      <svg class=\"mai-strengths__icon\" viewBox=\"0 0 24 24\" aria-hidden=\"true\" focusable=\"false\"><path d=\"m12 3 8 3v6c0 5-8 9-8 9s-8-4-8-9V6l8-3Z\"><\/path><path d=\"m8 12 3 3 5-6\"><\/path><\/svg>\n      <h3>Local data processing<\/h3>\n      <p>Analyse inspection data securely within your own facility, without relying on cloud processing or third party dependencies.<\/p>\n    <\/article>\n    <article class=\"mai-strengths__item\">\n      <svg class=\"mai-strengths__icon\" viewBox=\"0 0 24 24\" aria-hidden=\"true\" focusable=\"false\"><circle cx=\"12\" cy=\"13\" r=\"8\"><\/circle><path d=\"M12 9v4l3 2M9 2h6M12 2v3M18 5l2 2\"><\/path><\/svg>\n      <h3>A clear implementation schedule<\/h3>\n      <p>We agree the stages and schedule based on the inspection task, available data and integration requirements.<\/p>\n    <\/article>\n    <article class=\"mai-strengths__item\">\n      <svg class=\"mai-strengths__icon\" viewBox=\"0 0 24 24\" aria-hidden=\"true\" focusable=\"false\"><rect x=\"3\" y=\"14\" width=\"4\" height=\"7\" rx=\"1\"><\/rect><rect x=\"10\" y=\"10\" width=\"4\" height=\"11\" rx=\"1\"><\/rect><rect x=\"17\" y=\"5\" width=\"4\" height=\"16\" rx=\"1\"><\/rect><path d=\"M3 9 12 3h-5M12 3v5\"><\/path><\/svg>\n      <h3>Expand quickly<\/h3>\n      <p>Start with one inspection station and extend the system as your needs grow.<\/p>\n    <\/article>\n  <\/div>\n  <div class=\"mai-strengths__links\">\n    <a class=\"mai-strengths__link\" href=\"https:\/\/marshallai.com\/platform\/\">Learn more about our technology<svg class=\"mai-strengths__arrow\" viewBox=\"0 0 24 24\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M4 12h16m-6-6 6 6-6 6\"><\/path><\/svg><\/a>\n    <a class=\"mai-strengths__link\" href=\"https:\/\/marshallai.com\/capabilities\/\">Explore all capabilities<svg class=\"mai-strengths__arrow\" viewBox=\"0 0 24 24\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M4 12h16m-6-6 6 6-6 6\"><\/path><\/svg><\/a>\n  <\/div>\n<\/section>\n<\/div>\n<\/div>\n\n\n\n<div class=\"mai-section\">\n<div class=\"mai-container_inner-content\">\n<style>\n.mai-approach {\n  --mai-approach-ink: #101d27;\n  --mai-approach-muted: #56656e;\n  --mai-approach-accent: #c9531d;\n  --mai-approach-border: #ccd5d8;\n  --mai-approach-font: 'Aspekta', Arial, Helvetica, sans-serif;\n  --mai-approach-mono: 'JetBrains Mono', ui-monospace, monospace;\n  width: 100%; max-width: none; margin: 0; padding: 0;\n  background: transparent; color: var(--mai-approach-ink);\n  font: 400 16px\/1.7 var(--mai-approach-font);\n  text-align: left; container-type: inline-size;\n}\n.mai-approach, .mai-approach *, .mai-approach *::before, .mai-approach *::after { box-sizing: border-box; }\n.mai-approach .mai-approach__header { display: grid; grid-template-columns: 1.4fr 1fr; align-items: end; gap: 24px 48px; margin: 0 0 44px; padding: 0; }\n.mai-approach .mai-approach__eyebrow { display: flex; align-items: center; gap: 10px; margin: 0 0 18px; padding: 0; color: var(--mai-approach-muted); font: 500 12px\/1.5 var(--mai-approach-mono); letter-spacing: .08em; text-transform: uppercase; }\n.mai-approach .mai-approach__eyebrow::before { content: ''; width: 6px; height: 6px; flex: 0 0 6px; background: #ff742e; }\n.mai-approach .mai-approach__title { margin: 0; padding: 0; color: var(--mai-approach-ink); font: 500 clamp(32px,3.4vw,49px)\/1.1 var(--mai-approach-font); letter-spacing: -.045em; text-transform: none; }\n.mai-approach .mai-approach__intro { margin: 0; padding: 0; max-width: 390px; color: var(--mai-approach-muted); font: 400 16px\/1.7 var(--mai-approach-font); }\n.mai-approach .mai-approach__steps { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 40px; list-style: none; margin: 0; padding: 0; }\n.mai-approach .mai-approach__step { display: block; min-width: 0; margin: 0; padding: 24px 0 0; border: 0; border-top: 1px solid var(--mai-approach-border); background: transparent; box-shadow: none; }\n.mai-approach .mai-approach__step::before, .mai-approach .mai-approach__step::after { content: none; }\n.mai-approach .mai-approach__number { display: block; margin: 0 0 25px; color: var(--mai-approach-accent); font: 500 15px\/1.5 var(--mai-approach-mono); }\n.mai-approach .mai-approach__step h3 { margin: 0 0 15px; padding: 0; color: var(--mai-approach-ink); font: 500 25px\/1.2 var(--mai-approach-font); letter-spacing: -.025em; text-transform: none; }\n.mai-approach .mai-approach__step p { margin: 0; padding: 0; color: var(--mai-approach-muted); font: 400 16px\/1.7 var(--mai-approach-font); }\n.mai-approach .mai-approach__after { display: flex; align-items: flex-start; gap: 12px; margin: 36px 0 0; padding: 22px 0 0; border-top: 1px solid var(--mai-approach-border); color: var(--mai-approach-muted); font: 400 14px\/1.65 var(--mai-approach-font); }\n.mai-approach .mai-approach__after svg { display: block; flex: 0 0 auto; width: 20px; height: 20px; margin-top: 2px; fill: none; stroke: var(--mai-approach-accent); stroke-width: 1.5; stroke-linecap: round; stroke-linejoin: round; }\n.mai-approach .mai-approach__after strong { color: var(--mai-approach-ink); font-weight: 500; }\n@container (max-width: 900px) {\n  .mai-approach .mai-approach__header { grid-template-columns: 1fr; gap: 20px; }\n  .mai-approach .mai-approach__intro { max-width: 580px; }\n  .mai-approach .mai-approach__steps { gap: 26px; }\n  .mai-approach .mai-approach__step h3 { font-size: 23px; }\n}\n@container (max-width: 680px) {\n  .mai-approach .mai-approach__header { margin-bottom: 32px; }\n  .mai-approach .mai-approach__steps { grid-template-columns: minmax(0,1fr); gap: 26px; }\n  .mai-approach .mai-approach__step { position: relative; padding: 22px 0 0 43px; }\n  .mai-approach .mai-approach__number { position: absolute; left: 0; top: 23px; margin: 0; }\n  .mai-approach .mai-approach__step h3 { font-size: 25px; }\n  .mai-approach .mai-approach__after { margin-top: 28px; }\n}\n@container (max-width: 480px) {\n  .mai-approach .mai-approach__title { font-size: 32px; }\n  .mai-approach .mai-approach__eyebrow { font-size: 11px; letter-spacing: .05em; }\n}\n@supports not (container-type: inline-size) {\n  @media (max-width: 900px) { .mai-approach .mai-approach__header { grid-template-columns: 1fr; gap: 20px; } }\n  @media (max-width: 680px) { .mai-approach .mai-approach__steps { grid-template-columns: minmax(0,1fr); gap: 26px; } }\n}\n<\/style>\n\n<section class=\"mai-approach\" aria-label=\"Our approach to your inspection project\">\n  <header class=\"mai-approach__header\">\n    <div>\n      <p class=\"mai-approach__eyebrow\">Our process<\/p>\n      <h2 class=\"mai-approach__title\">How we plan your inspection system<\/h2>\n    <\/div>\n    <p class=\"mai-approach__intro\">Start by telling us what you need to inspect. We help define the requirements and assess a suitable technical approach.<\/p>\n  <\/header>\n  <ol class=\"mai-approach__steps\" role=\"list\">\n    <li class=\"mai-approach__step\">\n      <span class=\"mai-approach__number\" aria-hidden=\"true\">01<\/span>\n      <h3>Define the inspection requirements<\/h3>\n      <p>We review your products, production process and quality issues. Together, we identify what the system needs to detect and what results you want to achieve.<\/p>\n    <\/li>\n    <li class=\"mai-approach__step\">\n      <span class=\"mai-approach__number\" aria-hidden=\"true\">02<\/span>\n      <h3>Assess technical feasibility<\/h3>\n      <p>We evaluate suitable cameras, sensors and analysis methods. Where needed, we test the approach using sample products or images.<\/p>\n    <\/li>\n    <li class=\"mai-approach__step\">\n      <span class=\"mai-approach__number\" aria-hidden=\"true\">03<\/span>\n      <h3>Agree the scope and proposal<\/h3>\n      <p>We define the performance targets and prepare a proposal covering the delivery, schedule, price and support.<\/p>\n    <\/li>\n  <\/ol>\n  <p class=\"mai-approach__after\">\n    <svg viewBox=\"0 0 24 24\" aria-hidden=\"true\" focusable=\"false\"><circle cx=\"12\" cy=\"12\" r=\"9\"><\/circle><path d=\"m8 12 3 3 5-6\"><\/path><\/svg>\n    <span><strong>Once the proposal is approved:<\/strong> installation, data gathering, model training, integration, operator training and support.<\/span>\n  <\/p>\n<\/section>\n<\/div>\n<\/div>\n\n\n\n<div class=\"mai-section mai-bg-mesh\">\n<h2 class=\"gb-text gb-text-f63f3ab1 mai-headline mai-reveal\">Featured Industries<\/h2>\n\n\n\n<div class=\"mai-container_inner-content\">\n<div class=\"gb-element-12b98fbb\">\n<div class=\"mai-card-default\" href=\"https:\/\/marshallai.com\/industries\/manufacturing-industrial-qa\/\">\n<div class=\"gb-element-4a6070eb\"><\/div>\n\n\n\n<div class=\"gb-element-3686e151\">\n<div class=\"gb-text gb-text-a7a78bda\">Manufacturing &amp; Industrial QA<\/div>\n\n\n\n<div class=\"gb-text gb-text-92c4b36f\">Automated inspection of components, assemblies and finished products. Small, large and continuous part inspection at line at speed.<\/div>\n\n\n\n<div class=\"gb-element-54eaf74e\">\n<a class=\"gb-text mai-button-primary-block\" href=\"https:\/\/marshallai.com\/industries\/manufacturing-industrial-qa\/\">Explore<\/a>\n<\/div>\n<\/div>\n<\/div>\n\n\n\n<div class=\"mai-card-default\" href=\"https:\/\/marshallai.com\/industries\/manufacturing-industrial-qa\/\">\n<div class=\"gb-element-b16ed190\"><\/div>\n\n\n\n<div class=\"gb-element-6f8dbe5c\">\n<div class=\"gb-text gb-text-f28f70fd\">Beverage and Drink Manufacturing<\/div>\n\n\n\n<div class=\"gb-text gb-text-9f0bfeff\">Inspection of labels, date codes and packaging, including detection of incorrect cans on the line.<\/div>\n\n\n\n<div class=\"gb-element-87fa3696\">\n<a class=\"gb-text mai-button-primary-block\" href=\"https:\/\/marshallai.com\/industries\/smart-traffic-urban-mobility\/\">Explore<\/a>\n<\/div>\n<\/div>\n<\/div>\n\n\n\n<div class=\"mai-card-default\" href=\"https:\/\/marshallai.com\/industries\/manufacturing-industrial-qa\/\">\n<div class=\"gb-element-bbe84816\"><\/div>\n\n\n\n<div class=\"gb-element-85d02709\">\n<div class=\"gb-text gb-text-ee813209\">Sawmills and Wood Processing<\/div>\n\n\n\n<div class=\"gb-text gb-text-60980d28\">Automated timber quality grading, defect detection and production process monitoring.<\/div>\n\n\n\n<div class=\"gb-element-360576af\">\n<a class=\"gb-text mai-button-primary-block\" href=\"https:\/\/marshallai.com\/industries\/sawmills-wood-processing\/\">Explore<\/a>\n<\/div>\n<\/div>\n<\/div>\n\n\n\n<div class=\"mai-card-default\" href=\"https:\/\/marshallai.com\/industries\/manufacturing-industrial-qa\/\">\n<div class=\"gb-element-dd873d75\"><\/div>\n\n\n\n<div class=\"gb-element-9565ae76\">\n<div class=\"gb-text gb-text-1f1a554d\">Defence &amp; Tactical Operations<\/div>\n\n\n\n<div class=\"gb-text gb-text-fecfca4b\">Object detection (e.g. UAV\/drone), area surveillance and sensor data analysis to support situational awareness.<\/div>\n\n\n\n<div class=\"gb-element-0d6c5ec0\">\n<a class=\"gb-text mai-button-primary-block\" href=\"https:\/\/marshallai.com\/industries\/defence\/\">Explore<\/a>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n\n\n\n<div class=\"mai-section mai-bg-alt-1\">\n<h2 class=\"gb-text gb-text-ae80cab8 mai-headline mai-reveal\">What our technology can detect and measure<\/h2>\n\n\n\n<div class=\"gb-element-aaf8cc11\">\n<div class=\"cap-grid\">\n      <!-- 1. DEFECT DETECTION -->\n      <div class=\"cap-card\" style=\"--cap-color: var(--mai-accent); transition-delay: 0s;\">\n        <div class=\"cap-glow\"><\/div>\n        <div class=\"cap-icon-wrap\">\n          <svg width=\"22\" height=\"22\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n            <circle cx=\"11\" cy=\"11\" r=\"8\"><\/circle>\n            <line x1=\"21\" y1=\"21\" x2=\"16.65\" y2=\"16.65\"><\/line>\n            <line x1=\"11\" y1=\"8\" x2=\"11\" y2=\"14\"><\/line>\n            <line x1=\"8\" y1=\"11\" x2=\"14\" y2=\"11\"><\/line>\n          <\/svg>\n        <\/div>\n        <div class=\"cap-verb\">Defect and anomaly detection<\/div>\n        <div class=\"cap-desc\">Identify micro-cracks, surface blemishes, and structural flaws at full production speed.<\/div>\n      <\/div>\n\n      <!-- 2. ASSEMBLY VERIFICATION -->\n      <div class=\"cap-card\" style=\"--cap-color: var(--mai-accent); transition-delay: 0.08s;\">\n        <div class=\"cap-glow\"><\/div>\n        <div class=\"cap-icon-wrap\">\n          <svg width=\"22\" height=\"22\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n            <polyline points=\"9 11 12 14 22 4\"><\/polyline>\n            <path d=\"M21 12v7a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11\"><\/path>\n          <\/svg>\n        <\/div>\n        <div class=\"cap-verb\">Component presence and position check<\/div>\n        <div class=\"cap-desc\">Ensure every component is present, correctly oriented, and properly seated.<\/div>\n      <\/div>\n\n      <!-- 3. LABEL & PACKAGING -->\n      <div class=\"cap-card\" style=\"--cap-color: var(--mai-accent); transition-delay: 0.16s;\">\n        <div class=\"cap-glow\"><\/div>\n        <div class=\"cap-icon-wrap\">\n          <svg width=\"22\" height=\"22\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n            <path d=\"M3 7V5a2 2 0 0 1 2-2h2\"><\/path>\n            <path d=\"M17 3h2a2 2 0 0 1 2 2v2\"><\/path>\n            <path d=\"M21 17v2a2 2 0 0 1-2 2h-2\"><\/path>\n            <path d=\"M7 21H5a2 2 0 0 1-2-2v-2\"><\/path>\n            <line x1=\"7\" y1=\"12\" x2=\"17\" y2=\"12\"><\/line>\n          <\/svg>\n        <\/div>\n        <div class=\"cap-verb\">Text and code reading<\/div>\n        <div class=\"cap-desc\">Validate barcodes, read OCR text (dates\/batch\/lot codes), and detect misaligned or missing labels.<\/div>\n      <\/div>\n\n      <!-- 4. YIELD & THROUGHPUT -->\n      <div class=\"cap-card\" style=\"--cap-color: var(--mai-accent); transition-delay: 0.24s;\">\n        <div class=\"cap-glow\"><\/div>\n        <div class=\"cap-icon-wrap\">\n          <svg width=\"22\" height=\"22\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n            <line x1=\"18\" y1=\"20\" x2=\"18\" y2=\"10\"><\/line>\n            <line x1=\"12\" y1=\"20\" x2=\"12\" y2=\"4\"><\/line>\n            <line x1=\"6\" y1=\"20\" x2=\"6\" y2=\"14\"><\/line>\n            <rect x=\"2\" y=\"2\" width=\"20\" height=\"20\" rx=\"2\"><\/rect>\n          <\/svg>\n        <\/div>\n        <div class=\"cap-verb\">Product counting and flow monitoring<\/div>\n        <div class=\"cap-desc\">Generate real-time production statistics.<\/div>\n      <\/div>\n\n      <!-- 5. MATERIAL GRADING -->\n      <div class=\"cap-card\" style=\"--cap-color: var(--mai-accent); transition-delay: 0.32s;\">\n        <div class=\"cap-glow\"><\/div>\n        <div class=\"cap-icon-wrap\">\n          <svg width=\"22\" height=\"22\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n            <polygon points=\"12 2 2 7 12 12 22 7 12 2\"><\/polygon>\n            <polyline points=\"2 17 12 22 22 17\"><\/polyline>\n            <polyline points=\"2 12 12 17 22 12\"><\/polyline>\n          <\/svg>\n        <\/div>\n        <div class=\"cap-verb\">Material classificatin and quality grading<\/div>\n        <div class=\"cap-desc\">Automatically grade and sort raw materials like lumber, agricultural produce, or textiles based on visual quality, size, and color.<\/div>\n      <\/div>\n\n      <!-- 6. SAFETY COMPLIANCE -->\n      <div class=\"cap-card\" style=\"--cap-color: var(--mai-accent); transition-delay: 0.40s;\">\n        <div class=\"cap-glow\"><\/div>\n        <div class=\"cap-icon-wrap\">\n          <svg width=\"22\" height=\"22\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n            <path d=\"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z\"><\/path>\n            <line x1=\"12\" y1=\"8\" x2=\"12\" y2=\"12\"><\/line>\n            <circle cx=\"12\" cy=\"16\" r=\"1\"><\/circle>\n          <\/svg>\n        <\/div>\n        <div class=\"cap-verb\">Person detection and zone monitoring<\/div>\n        <div class=\"cap-desc\">Monitor factory floors for PPE violations (helmets, vests) and trigger machine-halts if persons are detected in restricted zones.<\/div>\n      <\/div>\n<\/div>\n<\/div>\n<\/div>\n\n\n\n<div class=\"mai-section mai-bg-alt-1\">\n<div class=\"mai-container__inner-narrow gb-element-7fa145ad\">\n<section>\n  <div class=\"faq-section\">\n\n    <!-- \u2500\u2500 LEFT: HEADER \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\n    <div class=\"faq-header faq-reveal\">\n\n      <div class=\"faq-eyebrow\">FAQ<\/div>\n      <h2 class=\"faq-title\">Common<br><em>Questions<\/em><\/h2>\n\n      <!-- Category nav -->\n\t\t<div class=\"faq-cats\">\n\t\t  <button class=\"faq-cat-btn active\" data-cat=\"all\">All questions<\/button>\n\t\t  <button class=\"faq-cat-btn\" data-cat=\"general\">General<\/button>\n\t\t  <button class=\"faq-cat-btn\" data-cat=\"deployment\">Deployment<\/button>\n\t\t  <button class=\"faq-cat-btn\" data-cat=\"hardware\">Hardware<\/button>\n\t\t  <button class=\"faq-cat-btn\" data-cat=\"security\">Security<\/button>\n\t\t<\/div>\n\n    <\/div>\n\n    <!-- \u2500\u2500 RIGHT: ACCORDION \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\n    <div class=\"faq-list faq-reveal\" style=\"transition-delay: 0.12s;\">\n\n      <!-- \u2550\u2550 GROUP: GENERAL \u2550\u2550 -->\n      <div class=\"faq-group\" data-group=\"general\">\n        <div class=\"faq-group-label\">\n          <span class=\"faq-group-label-dot\" style=\"background:#00d4ff;\"><\/span>\n          General\n        <\/div>\n\n        <div class=\"faq-item open\">\n          <button class=\"faq-question\">\n            <div class=\"faq-q-inner\">\n              <span class=\"faq-q-num\">01<\/span>\n              <span class=\"faq-q-text\">What is MarshallAI?<\/span>\n            <\/div>\n            <div class=\"faq-icon\">\n              <svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\">\n                <line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"><\/line><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"><\/line>\n              <\/svg>\n            <\/div>\n          <\/button>\n          <div class=\"faq-answer\">\n            <div class=\"faq-answer-inner\">\n              <p>MarshallAI is a computer vision and sensor intelligence company that provides turnkey solutions for automated optical inspection, process optimisation and signal analysis. MarshallAI utilises its proprietary AFSA (Agile Focused Signal Analysis), a node-based multimodal AI, platform for real-time sensor intelligence (eg. machine vision). AFSA can be used to build, deploy and manage deep learning pipelines very quickly.<\/p>\n              <p><a href=\"\/platform\/\">AFSA<\/a> ingests video, audio, thermal, radio and data streams simultaneously, processes them through configurable neural network pipelines, and outputs structured results to any industrial protocol including <span class=\"faq-tag\">OPC UA<\/span> <span class=\"faq-tag\">REST<\/span> <span class=\"faq-tag\">MQTT<\/span> and <span class=\"faq-tag\">MOXA<\/span>.<\/p>\n            <\/div>\n          <\/div>\n        <\/div>\n\n        <div class=\"faq-item\">\n          <button class=\"faq-question\">\n            <div class=\"faq-q-inner\">\n              <span class=\"faq-q-num\">02<\/span>\n              <span class=\"faq-q-text\">Are you a Large Language Model (LLM) company like OpenAI\/ChatGPT?<\/span>\n            <\/div>\n            <div class=\"faq-icon\">\n              <svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\">\n                <line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"><\/line><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"><\/line>\n              <\/svg>\n            <\/div>\n          <\/button>\n          <div class=\"faq-answer\">\n            <div class=\"faq-answer-inner\">\n              <p>No. <strong>MarshallAI is a computer vision and sensor intelligence company and AFSA is our deep learning platform<\/strong>. While LLMs excel at processing text, we utilize neural networks optimized for high-speed object and pattern recognition in real-time video streams.<\/p>\n              <p>Think of them as siblings: LLMs are the masters of language, while MarshallAI is the master of sight. Our system makes automated decisions in milliseconds, on tasks that are outside the current technical scope of standard language models.<\/p>\n            <\/div>\n          <\/div>\n        <\/div>\n\n        <div class=\"faq-item\">\n          <button class=\"faq-question\">\n            <div class=\"faq-q-inner\">\n              <span class=\"faq-q-num\">03<\/span>\n              <span class=\"faq-q-text\">What services or products does MarshallAI provide?<\/span>\n            <\/div>\n            <div class=\"faq-icon\">\n              <svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\">\n                <line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"><\/line><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"><\/line>\n              <\/svg>\n            <\/div>\n          <\/button>\n          <div class=\"faq-answer\">\n            <div class=\"faq-answer-inner\">\n              <p>MarshallAI can provide a variety of solutions for different industries. Here are some examples:<\/p>\n              <ul>\n                <li>Industrial quality inspection and defect detection on production lines<\/li>\n                <li>Assembly verification<\/li>\n                <li>Label &amp; Packaging verification<\/li>\n                <li>Yield &amp; Throughput monitoring<\/li>\n                <li>Material grading<\/li>\n                <li>Safety\/PPE Compliance<\/li>\n                <li>Vehicle and pedestrian tracking and classification<\/li>\n                <li>Predictive maintenance from audio and vibration sensors<\/li>\n                <li>Perimeter security and intruder detection<\/li>\n                <li>Tactical intelligence and surveillance at the edge<\/li>\n              <\/ul>\n              <p>We also sell licenses to our <a href=\"\/platform\/\">AFSA platform<\/a> and have our own <a href=\"\/reid-edge-device\/\">REID4 edge hardware<\/a>.<\/p>\n            <\/div>\n          <\/div>\n        <\/div>\n\n        <div class=\"faq-item\">\n          <button class=\"faq-question\">\n            <div class=\"faq-q-inner\">\n              <span class=\"faq-q-num\">04<\/span>\n              <span class=\"faq-q-text\">What level of technical expertise is required from us?<\/span>\n            <\/div>\n            <div class=\"faq-icon\">\n              <svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\">\n                <line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"><\/line><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"><\/line>\n              <\/svg>\n            <\/div>\n          <\/button>\n          <div class=\"faq-answer\">\n            <div class=\"faq-answer-inner\">\n              <p>This depends on how you work with us:<\/p>\n              <p><strong>Turnkey clients.<\/strong> If we deliver the full solution, no computer vision or coding background is needed on your side. We build, train and maintain the pipeline for you. Day-to-day, your team works with the results, dashboards and alerts configured for your systems, and any change to detection logic goes through our team under your support agreement. Operator training on the interface is included as part of onboarding.<\/p>\n              <p><strong>Platform license holders.<\/strong> If you&#8217;re running AFSA independently, the node-based editor is built for engineers and operators without a machine learning background. Building and modifying pipelines requires no coding: nodes are connected visually and configured through a web UI. For custom model training or integration work, a basic understanding of data collection and labelling helps. Training and onboarding are included as part of every deployment.<\/p>\n            <\/div>\n          <\/div>\n        <\/div>\n\n      <\/div><!-- group: platform -->\n\n      <!-- \u2550\u2550 GROUP: DEPLOYMENT \u2550\u2550 -->\n      <div class=\"faq-group\" data-group=\"deployment\">\n        <div class=\"faq-group-label\">\n          <span class=\"faq-group-label-dot\" style=\"background:#8b93ff;\"><\/span>\n          Deployment\n        <\/div>\n\n        <div class=\"faq-item\">\n          <button class=\"faq-question\">\n            <div class=\"faq-q-inner\">\n              <span class=\"faq-q-num\">05<\/span>\n              <span class=\"faq-q-text\">Do you offer turnkey deployment and what is included?<\/span>\n            <\/div>\n            <div class=\"faq-icon\">\n              <svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\">\n                <line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"><\/line><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"><\/line>\n              <\/svg>\n            <\/div>\n          <\/button>\n          <div class=\"faq-answer\">\n            <div class=\"faq-answer-inner\">\n              <p>Yes. A turnkey deployment includes <strong>hardware, software, installation, model training and operator onboarding<\/strong> \u2014 delivered as a single contract. Typical scope covers:<\/p>\n              <ul>\n                <li>Site survey and sensor placement planning<\/li>\n                <li>Hardware provisioned and pre-configured for your environment<\/li>\n                <li>Pipeline build and initial model training on your data<\/li>\n                <li>Integration with your existing SCADA, MES or output systems<\/li>\n                <li>On-site commissioning and acceptance testing<\/li>\n                <li>Operator training and documentation<\/li>\n                <li>Support and maintenance based on Service Level Agreement (SLA)<\/li>\n              <\/ul>\n              <p>Contact us for a scoping call \u2014 most industrial deployments are production-ready within <strong>6\u20138 weeks<\/strong> from project start.<\/p>\n            <\/div>\n          <\/div>\n        <\/div>\n\n        <div class=\"faq-item\">\n          <button class=\"faq-question\">\n            <div class=\"faq-q-inner\">\n              <span class=\"faq-q-num\">06<\/span>\n              <span class=\"faq-q-text\">How long does deployment take?<\/span>\n            <\/div>\n            <div class=\"faq-icon\">\n              <svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\">\n                <line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"><\/line><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"><\/line>\n              <\/svg>\n            <\/div>\n          <\/button>\n          <div class=\"faq-answer\">\n            <div class=\"faq-answer-inner\">\n              <p>Standard industrial deployments go from scoping call to production in <strong>6\u20138 weeks<\/strong>. The timeline depends primarily on data collection for model training and the complexity of output integrations.<\/p>\n              <p><strong>We can build proof-of-concept pilots in days<\/strong> using images and data from your sensors.<\/p>\n            <\/div>\n          <\/div>\n        <\/div>\n\n        <div class=\"faq-item\">\n          <button class=\"faq-question\">\n            <div class=\"faq-q-inner\">\n              <span class=\"faq-q-num\">07<\/span>\n              <span class=\"faq-q-text\">Can MarshallAI integrate with our existing systems?<\/span>\n            <\/div>\n            <div class=\"faq-icon\">\n              <svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\">\n                <line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"><\/line><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"><\/line>\n              <\/svg>\n            <\/div>\n          <\/button>\n          <div class=\"faq-answer\">\n            <div class=\"faq-answer-inner\">\n              <p>Yes. Our AFSA platform outputs to all major industrial protocols natively. If your system accepts <span class=\"faq-tag\">OPC UA<\/span>, <span class=\"faq-tag\">REST<\/span>, <span class=\"faq-tag\">MQTT<\/span>, <span class=\"faq-tag\">ModbusTCP<\/span>, <span class=\"faq-tag\">InfluxDB<\/span> or basic <span class=\"faq-tag\">TCP\/UDP<\/span>, integration is straightforward. MOXA relay and other digital outputs are also supported for direct hardware actuation.<\/p>\n            <\/div>\n          <\/div>\n        <\/div>\n\n      <\/div><!-- group: deployment -->\n\n      <!-- \u2550\u2550 GROUP: HARDWARE \u2550\u2550 -->\n      <div class=\"faq-group\" data-group=\"hardware\">\n        <div class=\"faq-group-label\">\n          <span class=\"faq-group-label-dot\" style=\"background:#ff8c35;\"><\/span>\n          Hardware\n        <\/div>\n\n        <div class=\"faq-item\">\n          <button class=\"faq-question\">\n            <div class=\"faq-q-inner\">\n              <span class=\"faq-q-num\">08<\/span>\n              <span class=\"faq-q-text\">What are the hardware requirements?<\/span>\n            <\/div>\n            <div class=\"faq-icon\">\n              <svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\">\n                <line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"><\/line><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"><\/line>\n              <\/svg>\n            <\/div>\n          <\/button>\n          <div class=\"faq-answer\">\n            <div class=\"faq-answer-inner\">\n              <p>Our solutions are hardware and OS agnostic. We can use <strong>ARM and x86 architectures<\/strong> and have deployed on laptops, mini-pcs, standard rack servers and our own <a href=\"\/reid-edge-device\/\">REID-4 Edge Device<\/a>.<\/p>\n            <\/div>\n          <\/div>\n        <\/div>\n\n        <div class=\"faq-item\">\n          <button class=\"faq-question\">\n            <div class=\"faq-q-inner\">\n              <span class=\"faq-q-num\">09<\/span>\n              <span class=\"faq-q-text\">What cameras and sensors do you use?<\/span>\n            <\/div>\n            <div class=\"faq-icon\">\n              <svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\">\n                <line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"><\/line><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"><\/line>\n              <\/svg>\n            <\/div>\n          <\/button>\n          <div class=\"faq-answer\">\n            <div class=\"faq-answer-inner\">\n              <p>We support virtually any <strong>industrial camera (GigE, USB3, RTSP)<\/strong> or sensor. If your existing infrastructure meets the necessary specifications for your use case, we can re-use your current hardware to reduce deployment costs and installation time.<\/p>\n            <\/div>\n          <\/div>\n        <\/div>\n\n        <div class=\"faq-item\">\n          <button class=\"faq-question\">\n            <div class=\"faq-q-inner\">\n              <span class=\"faq-q-num\">10<\/span>\n              <span class=\"faq-q-text\">What is REID-4 and do I need it?<\/span>\n            <\/div>\n            <div class=\"faq-icon\">\n              <svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\">\n                <line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"><\/line><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"><\/line>\n              <\/svg>\n            <\/div>\n          <\/button>\n          <div class=\"faq-answer\">\n            <div class=\"faq-answer-inner\">\n              <p>REID-4 is our purpose-built edge device, a ruggedised compute unit designed to run our AFSA-platform in demanding environments. It handles 5\u201315 simultaneous data streams, operates from \u201340\u00b0C to +50\u00b0C, is rated IP68, and connects via a single CAT6 cable for both power and data.<\/p>\n              <p>You do not need REID-4 to use AFSA. The platform also runs on <strong>standard server hardware or cloud infrastructure<\/strong>. REID-4 is the right choice when you need on-premise processing, disconnected operation, or MIL-STD-810H environmental resilience.<\/p>\n            <\/div>\n          <\/div>\n        <\/div>\n\n      <\/div><!-- group: hardware -->\n\n      <!-- \u2550\u2550 GROUP: SECURITY \u2550\u2550 -->\n      <div class=\"faq-group\" data-group=\"security\">\n        <div class=\"faq-group-label\">\n          <span class=\"faq-group-label-dot\" style=\"background:#00ff9d;\"><\/span>\n          Security\n        <\/div>\n\n        <div class=\"faq-item\">\n          <button class=\"faq-question\">\n            <div class=\"faq-q-inner\">\n              <span class=\"faq-q-num\">11<\/span>\n              <span class=\"faq-q-text\">Does data leave our facility?<\/span>\n            <\/div>\n            <div class=\"faq-icon\">\n              <svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\">\n                <line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"><\/line><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"><\/line>\n              <\/svg>\n            <\/div>\n          <\/button>\n          <div class=\"faq-answer\">\n            <div class=\"faq-answer-inner\">\n              <p><strong>No.<\/strong> Our AFSA-platform is designed for fully on-premise, air-gapped deployment. Sensor data, model weights and inference outputs never leave your network unless you explicitly configure an external output destination. There is no mandatory cloud connectivity, telemetry or licensing call-home.<\/p>\n            <\/div>\n          <\/div>\n        <\/div>\n\n        <div class=\"faq-item\">\n          <button class=\"faq-question\">\n            <div class=\"faq-q-inner\">\n              <span class=\"faq-q-num\">12<\/span>\n              <span class=\"faq-q-text\">What compliance standards does the platform meet?<\/span>\n            <\/div>\n            <div class=\"faq-icon\">\n              <svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\">\n                <line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"><\/line><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"><\/line>\n              <\/svg>\n            <\/div>\n          <\/button>\n          <div class=\"faq-answer\">\n            <div class=\"faq-answer-inner\">\n              <p>The platform software is deployable in classified environments and we work with customers on compliance documentation for defence and critical infrastructure procurement.<\/p>\n              <p>The REID-4 hardware is designed and tested to <span class=\"faq-tag\">MIL-STD-810H<\/span> and <span class=\"faq-tag\">AECTP 100-500<\/span> environmental standards.<\/p>\n              <p>For specific certification requirements, <a href=\"\/contact\/\">contact our team directly<\/a>.<\/p>\n            <\/div>\n          <\/div>\n        <\/div>\n\n      <\/div><!-- group: security -->\n\n    <\/div><!-- .faq-list -->\n\n  <\/div><!-- .faq-section -->\n<\/section>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>AI-POWERED INDUSTRIAL INSPECTION Automated quality control at production speed. Detect defects, check product markings and remove faulty products automatically. We design and deliver inspection systems for your products and production line. Explore solutions Book a demo Turnkey inspection systems Secure on-site data processing INSPECTION VIEW \/ 01 Product identity Illustrative demo IMPORT \u2260 DOMESTIC INSPECTAcquiring &#8230; <a title=\"Teko\u00e4lypohjainen n\u00e4k\u00f6kyky ja anturi\u00e4lykkyys\" class=\"read-more\" href=\"https:\/\/marshallai.com\/fi\/\" aria-label=\"Lue lis\u00e4\u00e4 aiheesta AI Computer Vision &amp; Sensor Intelligence\">Lue lis\u00e4\u00e4<\/a><\/p>","protected":false},"author":1,"featured_media":2272,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"content-type":"","page_theme":"","footnotes":""},"class_list":["post-25","page","type-page","status-publish","has-post-thumbnail"],"_links":{"self":[{"href":"https:\/\/marshallai.com\/fi\/wp-json\/wp\/v2\/pages\/25","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/marshallai.com\/fi\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/marshallai.com\/fi\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/marshallai.com\/fi\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/marshallai.com\/fi\/wp-json\/wp\/v2\/comments?post=25"}],"version-history":[{"count":15,"href":"https:\/\/marshallai.com\/fi\/wp-json\/wp\/v2\/pages\/25\/revisions"}],"predecessor-version":[{"id":4581,"href":"https:\/\/marshallai.com\/fi\/wp-json\/wp\/v2\/pages\/25\/revisions\/4581"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/marshallai.com\/fi\/wp-json\/wp\/v2\/media\/2272"}],"wp:attachment":[{"href":"https:\/\/marshallai.com\/fi\/wp-json\/wp\/v2\/media?parent=25"}],"curies":[{"name":"Hyvin pelattu","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}