{"id":8026,"date":"2026-10-08T19:17:48","date_gmt":"2026-10-08T17:17:48","guid":{"rendered":"https:\/\/implementi.ai\/en\/?post_type=product&#038;p=8026"},"modified":"2026-10-08T19:18:11","modified_gmt":"2026-10-08T17:18:11","slug":"ai-batch-traceability-recall-router","status":"publish","type":"product","link":"http:\/\/implementi.ai\/en\/product\/ai-batch-traceability-recall-router\/","title":{"rendered":"AI Batch Traceability &#038; Recall Router"},"content":{"rendered":"<style>\n:root{--imp-primary-blue:#C0D9F7;--imp-soft-blue:#DAE9FA;--imp-white:#F9F9F9;--imp-red:#FF554C;--imp-navy:#183457}\n.implementi-pf,.implementi-pf *{box-sizing:border-box}\n.implementi-pf{width:min(1180px,100%);max-width:100%;margin:0 auto;color:var(--imp-navy);font-family:\"Noto Sans\",Arial,sans-serif}\n.implementi-pf h2,.implementi-pf h3,.implementi-pf h4,.implementi-pf .button,.implementi-pf .tab-title,.woocommerce-tabs ul.tabs li a{font-family:\"Poppins\",Arial,sans-serif}\n.implementi-pf h2{margin:0 0 18px;color:var(--imp-navy);font-size:clamp(25px,3vw,36px);line-height:1.18}\n.implementi-pf h3{margin:24px 0 10px;color:var(--imp-navy);font-size:clamp(19px,2vw,24px);line-height:1.25}\n.implementi-pf p,.implementi-pf li{font-family:\"Noto Sans\",Arial,sans-serif;color:var(--imp-navy);font-size:16px;line-height:1.78}\n.implementi-pf p:last-child{margin-bottom:0}\n.implementi-pf ul,.implementi-pf ol{padding-left:24px;margin:16px 0}\n.implementi-pf li{margin:10px 0}\n.imp-kicker{font-family:\"Poppins\",Arial,sans-serif;font-size:13px;font-weight:800;letter-spacing:.09em;text-transform:uppercase;color:var(--imp-red);margin-bottom:14px}\n.imp-card{margin:24px 0;padding:clamp(24px,4vw,44px);border-radius:28px;background:var(--imp-white);border:1px solid rgba(24,52,87,.10);overflow:hidden}\n.imp-card-soft{background:var(--imp-soft-blue)}\n.imp-card-blue{background:var(--imp-primary-blue)}\n.imp-card-dark{background:var(--imp-navy);color:var(--imp-white)}\n.imp-card-dark h2,.imp-card-dark h3,.imp-card-dark p,.imp-card-dark li,.imp-card-dark strong{color:var(--imp-white)}\n.imp-media{margin-top:28px;padding-top:24px;border-top:1px solid rgba(24,52,87,.12)}\n.imp-media img{display:block;width:100%;max-width:100%;height:auto;margin:14px 0 0;border-radius:24px;background:var(--imp-white);border:1px solid rgba(24,52,87,.10)}\n.imp-benefits ul,.imp-scope ul,.imp-target ul{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;list-style:none;padding:0;margin:20px 0 0}\n.imp-benefits li,.imp-scope li,.imp-target li{min-width:0;margin:0;padding:20px;border-radius:20px;background:var(--imp-white);border:1px solid rgba(24,52,87,.10)}\n.imp-tab-source{display:none!important}<\/p>\n<p>\/* LIGHT PRODUCT HERO: native Woo price stays in its normal place *\/\n.single-product .summary p.price,.woocommerce div.product .summary p.price{position:static!important;width:auto!important;height:auto!important;overflow:visible!important;clip:auto!important;white-space:normal!important;margin:8px 0 14px!important;color:var(--imp-navy)!important;font-family:\"Poppins\",Arial,sans-serif!important;font-size:clamp(24px,2.5vw,32px)!important;font-weight:800!important;line-height:1.2!important}\n.single-product .summary p.price .imp-native-monthly-price{color:var(--imp-navy)!important;font:inherit!important}\n.single-product .summary form.cart,.woocommerce div.product .summary form.cart{display:none!important}\n.single-product .summary .product_meta{display:none!important}\n.imp-hero-compact{margin:12px 0 18px;color:var(--imp-navy);font-family:\"Noto Sans\",Arial,sans-serif}\n.imp-hero-meta{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 14px}\n.imp-hero-chip{display:inline-flex;align-items:center;min-width:0;padding:6px 11px;border-radius:999px;background:var(--imp-white);border:1px solid rgba(24,52,87,.12);color:var(--imp-navy);font-family:\"Poppins\",Arial,sans-serif;font-size:12px;font-weight:700}\n.imp-hero-short{margin:0 0 18px;font-size:15px;line-height:1.65;color:var(--imp-navy)}\n.imp-hero-short p{margin:0 0 8px!important;font:inherit!important;color:inherit!important}\n.imp-hero-calendly{display:block;width:100%;padding:14px 18px;background:var(--imp-red)!important;color:var(--imp-white)!important;border-radius:999px;text-align:center;text-decoration:none!important;font-family:\"Poppins\",Arial,sans-serif;font-weight:800;box-sizing:border-box}\n.imp-hero-contact-grid{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:12px!important;width:100%!important;margin-top:12px!important}\n.imp-hero-contact-grid>a{display:flex!important;align-items:center!important;justify-content:center!important;width:100%!important;min-width:0!important;min-height:44px!important;padding:10px 12px!important;border:1px solid rgba(24,52,87,.16)!important;border-radius:999px!important;background:var(--imp-white)!important;color:var(--imp-navy)!important;text-decoration:none!important;text-align:center!important;font-family:\"Poppins\",Arial,sans-serif!important;font-weight:700!important;overflow-wrap:anywhere!important}\n.imp-hero-contact-grid>a:hover{border-color:var(--imp-red)!important}<\/p>\n<p>\/* FIVE TABS \u2014 fixed horizontal navigation matching the approved layout *\/\nbody.single-product .woocommerce div.product .woocommerce-tabs ul.tabs,\nbody.single-product .woocommerce-tabs ul.tabs,\nbody.single-product .wc-tabs-wrapper ul.wc-tabs{\n display:flex!important;\n flex-direction:row!important;\n flex-wrap:nowrap!important;\n align-items:center!important;\n justify-content:flex-start!important;\n gap:8px!important;\n width:100%!important;\n max-width:100%!important;\n min-width:0!important;\n height:auto!important;\n min-height:56px!important;\n padding:6px!important;\n margin:0 0 24px!important;\n list-style:none!important;\n background:var(--imp-navy)!important;\n border:0!important;\n border-radius:22px!important;\n overflow-x:auto!important;\n overflow-y:hidden!important;\n overscroll-behavior-x:contain!important;\n -webkit-overflow-scrolling:touch!important;\n white-space:nowrap!important;\n box-sizing:border-box!important;\n}\nbody.single-product .woocommerce div.product .woocommerce-tabs ul.tabs:before,\nbody.single-product .woocommerce div.product .woocommerce-tabs ul.tabs:after,\nbody.single-product .woocommerce-tabs ul.tabs:before,\nbody.single-product .woocommerce-tabs ul.tabs:after{display:none!important;content:none!important}\nbody.single-product .woocommerce div.product .woocommerce-tabs ul.tabs>li,\nbody.single-product .woocommerce-tabs ul.tabs>li,\nbody.single-product .wc-tabs-wrapper ul.wc-tabs>li{\n float:none!important;\n display:block!important;\n position:relative!important;\n flex:0 0 auto!important;\n flex-basis:auto!important;\n flex-grow:0!important;\n flex-shrink:0!important;\n width:auto!important;\n min-width:0!important;\n max-width:none!important;\n height:auto!important;\n margin:0!important;\n padding:0!important;\n border:0!important;\n background:transparent!important;\n border-radius:18px!important;\n box-shadow:none!important;\n clear:none!important;\n box-sizing:border-box!important;\n}\nbody.single-product .woocommerce div.product .woocommerce-tabs ul.tabs>li:before,\nbody.single-product .woocommerce div.product .woocommerce-tabs ul.tabs>li:after,\nbody.single-product .woocommerce-tabs ul.tabs>li:before,\nbody.single-product .woocommerce-tabs ul.tabs>li:after{display:none!important;content:none!important}\nbody.single-product .woocommerce div.product .woocommerce-tabs ul.tabs>li>a,\nbody.single-product .woocommerce-tabs ul.tabs>li>a,\nbody.single-product .wc-tabs-wrapper ul.wc-tabs>li>a{\n display:flex!important;\n align-items:center!important;\n justify-content:center!important;\n width:auto!important;\n min-width:max-content!important;\n height:44px!important;\n padding:0 18px!important;\n margin:0!important;\n color:var(--imp-navy)!important;\n background:var(--imp-white)!important;\n border:1px solid rgba(24,52,87,.12)!important;\n font-family:\"Poppins\",Arial,sans-serif!important;\n font-weight:700!important;\n font-size:14px!important;\n line-height:1!important;\n text-decoration:none!important;\n white-space:nowrap!important;\n border-radius:18px!important;\n box-sizing:border-box!important;\n}\nbody.single-product .woocommerce div.product .woocommerce-tabs ul.tabs>li>a:hover,\nbody.single-product .woocommerce-tabs ul.tabs>li>a:hover{\n border-color:var(--imp-red)!important;\n color:var(--imp-navy)!important;\n background:var(--imp-white)!important;\n}\nbody.single-product .woocommerce div.product .woocommerce-tabs ul.tabs>li.active,\nbody.single-product .woocommerce-tabs ul.tabs>li.active{background:transparent!important}\nbody.single-product .woocommerce div.product .woocommerce-tabs ul.tabs>li.active>a,\nbody.single-product .woocommerce-tabs ul.tabs>li.active>a{\n background:var(--imp-navy)!important;\n color:var(--imp-white)!important;\n border-color:var(--imp-navy)!important;\n}\n.woocommerce div.product .woocommerce-tabs .woocommerce-Tabs-panel,.woocommerce-tabs .woocommerce-Tabs-panel{padding:0!important;margin:0!important}\n.imp-pf-tab-panel{width:min(1180px,100%);max-width:100%;margin:0 auto}\n@media(max-width:767px){\n body.single-product .woocommerce div.product .woocommerce-tabs ul.tabs,\n body.single-product .woocommerce-tabs ul.tabs,\n body.single-product .wc-tabs-wrapper ul.wc-tabs{border-radius:18px!important;gap:6px!important;padding:5px!important;min-height:52px!important;scrollbar-width:none!important}\n body.single-product .woocommerce div.product .woocommerce-tabs ul.tabs::-webkit-scrollbar,\n body.single-product .woocommerce-tabs ul.tabs::-webkit-scrollbar{display:none!important}\n body.single-product .woocommerce div.product .woocommerce-tabs ul.tabs>li>a,\n body.single-product .woocommerce-tabs ul.tabs>li>a{height:42px!important;padding:0 14px!important;font-size:13px!important;border-radius:15px!important}\n}<\/p>\n<p>\/* PRICE TAB *\/\n.imp-price-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;margin:22px 0}\n.imp-price-card{min-width:0;padding:26px;border-radius:24px;background:var(--imp-white);border:1px solid rgba(24,52,87,.12)}\n.imp-price-label{font-family:\"Poppins\",Arial,sans-serif;font-size:13px;font-weight:800;letter-spacing:.07em;text-transform:uppercase;color:var(--imp-red);margin-bottom:9px}\n.imp-price-value{font-family:\"Poppins\",Arial,sans-serif;font-size:clamp(24px,3vw,34px);font-weight:800;color:var(--imp-navy);line-height:1.2;overflow-wrap:anywhere}\n.imp-price-explain{margin-top:18px}<\/p>\n<p>\/* FIXED FINAL CONTACT *\/\n.imp-contact{width:min(1180px,100%);max-width:100%;margin:34px auto 0;padding:clamp(26px,4vw,46px);border-radius:30px;background:var(--imp-soft-blue);border:1px solid rgba(24,52,87,.12);box-sizing:border-box;color:var(--imp-navy)}\n.imp-contact h2{font-family:\"Poppins\",Arial,sans-serif;color:var(--imp-navy);font-size:clamp(26px,3vw,38px);line-height:1.15;margin:0 0 14px}\n.imp-contact p{font-family:\"Noto Sans\",Arial,sans-serif;color:var(--imp-navy);font-size:16px;line-height:1.7;margin:0 0 12px}\n.imp-contact-main{display:block;width:100%;margin-top:24px;padding:17px 22px;background:var(--imp-red)!important;color:var(--imp-white)!important;border-radius:999px;text-align:center;text-decoration:none!important;font-family:\"Poppins\",Arial,sans-serif;font-weight:800;font-size:17px;box-sizing:border-box}\n.imp-contact-main:hover{opacity:.92;color:var(--imp-white)!important}\n.imp-contact-grid{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:24px!important;width:100%!important;margin-top:24px!important}\n.imp-contact-grid>.imp-contact-card{display:flex!important;flex-direction:column!important;justify-content:center!important;width:100%!important;min-width:0!important;min-height:132px!important;box-sizing:border-box!important;background:var(--imp-white)!important;border:1px solid rgba(24,52,87,.12)!important;border-radius:24px!important;padding:28px!important;text-decoration:none!important}\n.imp-contact-card:hover{border-color:var(--imp-red)!important}\n.imp-contact-label{display:block;color:var(--imp-red);font-family:\"Poppins\",Arial,sans-serif;font-size:13px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;margin-bottom:8px}\n.imp-contact-value{display:block;color:var(--imp-navy);font-family:\"Poppins\",Arial,sans-serif;font-size:20px;font-weight:700;line-height:1.35;overflow-wrap:anywhere;min-width:0}<\/p>\n<p>@media(max-width:767px){\n .imp-card{margin:16px 0;padding:22px;border-radius:22px}\n .imp-benefits ul,.imp-scope ul,.imp-target ul{grid-template-columns:1fr;gap:12px}\n .imp-hero-contact-grid{grid-template-columns:1fr!important;gap:10px!important}\n .imp-price-grid{grid-template-columns:1fr;gap:12px}\n .imp-contact{margin-top:24px;padding:22px;border-radius:24px}\n .imp-contact-grid{grid-template-columns:1fr!important;gap:14px!important;margin-top:16px!important}\n .imp-contact-grid>.imp-contact-card{min-height:108px!important;padding:20px!important;border-radius:20px!important}\n .imp-contact-value{font-size:17px}\n .woocommerce div.product .woocommerce-tabs ul.tabs li a,.woocommerce-tabs ul.tabs li a{padding:9px 12px!important;font-size:13px!important}\n}<\/p>\n<p>\/* v4.5.4 stable contact guard: no DOM reordering *\/\n.imp-hero-contact-grid,.imp-contact-grid{box-sizing:border-box!important}\n.imp-hero-contact-grid>* ,.imp-contact-grid>*{box-sizing:border-box!important;float:none!important;clear:none!important}\n@media(max-width:767px){\n .imp-hero-contact-grid,.imp-contact-grid{grid-template-columns:1fr!important}\n .imp-contact-grid{gap:12px!important}\n .imp-contact-grid>.imp-contact-card{min-height:0!important;padding:20px!important}\n}<\/p>\n<p>\/* v4.5.5 contact layout: table-based to survive WooCommerce\/wpautop *\/\n.imp-hero-contact-table,.imp-contact-table{width:100%!important;table-layout:fixed!important;border-collapse:collapse!important;border:0!important;background:transparent!important}\n.imp-hero-contact-table tbody,.imp-hero-contact-table tr,.imp-contact-table tbody,.imp-contact-table tr{border:0!important;background:transparent!important}\n.imp-hero-contact-cell,.imp-contact-cell{box-sizing:border-box!important;border:0!important;background:transparent!important}\n.imp-hero-contact-cell a,.imp-contact-cell a{box-sizing:border-box!important}\n@media(max-width:767px){\n .imp-hero-contact-table,.imp-hero-contact-table tbody,.imp-hero-contact-table tr,.imp-hero-contact-table td,.imp-contact-table,.imp-contact-table tbody,.imp-contact-table tr,.imp-contact-table td{display:block!important;width:100%!important;max-width:100%!important}\n .imp-hero-contact-cell{padding:0 0 10px!important}\n .imp-contact-cell{padding:0 0 12px!important}\n .imp-contact-table{margin-top:16px!important}\n .imp-contact-cell .imp-contact-card{min-height:0!important;padding:20px!important}\n}\n<\/style>\n<div class=\"implementi-pf\" data-product-factory=\"yes\" data-base-price=\"299\">\n<div id=\"imp-description-root\">\n<section class=\"imp-card imp-card-soft\">\n<div class=\"imp-kicker\">Managed automation by implementi.ai<\/div>\n<p>The AI Batch Traceability &#038; Recall Router continuously links batch\/lot identifiers across your ERP, warehouse and sales channels, turning scattered records into a single, actionable recall view. When a quality issue, regulator alert or supplier notification arrives, the system identifies impacted stock, open orders and sold units so teams act quickly and consistently.<\/p>\n<p>implementi.ai operates and maintains the solution as a managed service: we configure connections, tune matching rules to your data, monitor operation, and handle automation errors so your teams focus on containment and communications rather than spreadsheets and manual searches.<\/p>\n<\/section>\n<section class=\"imp-card\">\n<h2>The problem<\/h2>\n<p>Without automation, tracing a recalled batch is manual, slow and error-prone. Teams must search multiple systems for lot numbers, correlate delivery and manufacturing records, identify outstanding shipments and contact customers one-by-one. As catalog size, sales channels and supplier networks grow, manual lookup times multiply, communications become inconsistent and audit trails are incomplete. Missed orders or late notifications increase risk to customers, create regulatory headaches and drive costly recall logistics.<\/p>\n<div class=\"imp-media\">\n<div class=\"imp-kicker\">The challenge<\/div>\n<p><img decoding=\"async\" src=\"https:\/\/implementi.ai\/wp-content\/uploads\/2026\/10\/ai-batch-traceability-recall-router-support-1.jpg\" alt=\"Illustration of a stressed operator surrounded by disconnected spreadsheets and systems searching for batch numbers.\" \/><\/div>\n<\/section>\n<section class=\"imp-card imp-card-blue imp-scope\">\n<h2>What this solution automates<\/h2>\n<p>This managed solution automates the end-to-end trace and recall routing tasks that normally require manual cross-checks and phone or spreadsheet follow-up. It consolidates batch data, assesses affected items and initiates the agreed set of actions for each recall event.<\/p>\n<ul>\n<li>Locate affected inventory across ERP\/WMS and mark stock as quarantined or flagged.<\/li>\n<li>Match sold units to customer orders, shipments and marketplace sales to build an impact list.<\/li>\n<li>Generate targeted notification tasks for customer service, distribution and returns teams.<\/li>\n<li>Create exception queues for ambiguous matches or missing lot numbers for human review.<\/li>\n<li>Log every recall action to preserve an auditable event history.<\/li>\n<li>Optionally trigger pick\/return orders or return-label generation where integrations allow.<\/li>\n<\/ul>\n<\/section>\n<section class=\"imp-card imp-benefits\">\n<h2>What your business gains<\/h2>\n<ul>\n<li><strong>Faster containment.<\/strong> Automated identification of affected stock and orders shortens the time between detection and action, reducing the scope of a recall event and easing operations pressure.<\/li>\n<li><strong>Consistent communications.<\/strong> Notifications and task routing follow pre-agreed rules so customers, sales teams and warehouses receive consistent instructions and next steps.<\/li>\n<li><strong>Reduced manual effort.<\/strong> Teams spend less time searching systems and compiling lists, freeing staff to manage physical containment, returns and vendor discussions.<\/li>\n<li><strong>Auditable recall trail.<\/strong> All matches, decisions and routed actions are recorded so your quality and compliance teams have a clear, exportable history.<\/li>\n<li><strong>Scoped human review.<\/strong> Ambiguous matches are surfaced as exceptions so staff only review records that truly need human judgement, improving accuracy and speed.<\/li>\n<\/ul>\n<div class=\"imp-media\">\n<div class=\"imp-kicker\">The result<\/div>\n<p><img decoding=\"async\" src=\"https:\/\/implementi.ai\/wp-content\/uploads\/2026\/10\/ai-batch-traceability-recall-router-support-2.jpg\" alt=\"Illustration of a calm dashboard showing quarantined inventory, notifications and a completed recall checklist.\" \/><\/div>\n<\/section>\n<section class=\"imp-card imp-card-soft\">\n<h2>A practical use case<\/h2>\n<p>For a mid-sized food distributor selling through its own webstore and several marketplaces, a supplier notifies them of contamination affecting a specific lot number. The distributor needs to quickly identify warehouse locations, isolate remaining stock, stop outbound shipments, and contact customers who received the affected units. With this product the operations team receives a consolidated list of affected SKUs, order references and customer contacts; exceptions where lot data is missing are routed to quality assurance for manual verification. The result is a faster, more controlled recall with an auditable record of steps taken.<\/p>\n<\/section>\n<section class=\"imp-card imp-target\">\n<h2>Who is it for?<\/h2>\n<ul>\n<li>Manufacturers with lot-controlled production \u2014 need traceability across production batches and downstream orders.<\/li>\n<li>Distributors handling multi-supplier stock \u2014 require fast identification and isolation of affected lots across warehouses.<\/li>\n<li>Multi-channel retailers \u2014 need to find sold units across e-commerce, marketplaces and physical store returns.<\/li>\n<li>Quality, compliance and supply-chain teams \u2014 require reliable audit trails and consistent task routing during recall events.<\/li>\n<\/ul>\n<\/section>\n<section class=\"imp-card imp-card-blue\">\n<h2>What is included in the monthly service<\/h2>\n<p>The monthly subscription covers operation and ongoing maintenance of the recall automation and the integrations we agree before launch. implementi.ai runs the automation, monitors its health, applies routine configuration updates, and handles and fixes automation errors as they appear. The service includes the AI processing required to match batches to orders and the monitoring needed to keep the solution running as your systems or data formats change.<\/p>\n<ul>\n<li>Managed automation operation and monitoring<\/li>\n<li>Agreed system connections and their maintenance<\/li>\n<li>AI matching and exception generation<\/li>\n<li>Handling and fixing automation errors and reasonable configuration updates<\/li>\n<\/ul>\n<\/section>\n<section class=\"imp-card\">\n<h2>When this solution may not be necessary<\/h2>\n<ul>\n<li>Businesses with few batch-controlled SKUs and very low order volume \u2014 the solution may be more capability than required for small, one-off recalls.<\/li>\n<li>Organisations without any electronic lot\/batch records \u2014 if lot numbers are not captured in any digital system, automated tracing is not possible until data capture is improved.<\/li>\n<\/ul>\n<\/section><\/div>\n<div id=\"imp-tab-how-source\" class=\"imp-tab-source\">\n<div class=\"imp-pf-tab-panel\">\n<section class=\"imp-card imp-card-soft\">\n<h2>How it works<\/h2>\n<ol>\n<li><strong>Data consolidation.<\/strong> The automation ingests batch and lot records from agreed systems and builds a normalized index of batch identifiers, locations and linked transactions.<\/li>\n<li><strong>Event intake.<\/strong> A recall trigger arrives via supplier notification, QA input, or manual entry; the system registers the recall event and the identifiers or criteria that define affected stock.<\/li>\n<li><strong>Impact matching.<\/strong> AI-assisted matching searches inventory, open orders and historical shipments to assemble an impacted list; fuzzy matching rules surface potential matches when identifiers are incomplete.<\/li>\n<li><strong>Action routing.<\/strong> Based on your rules, the router quarantines stock, flags orders, creates return or pick tasks and notifies customer support or third-party logistics partners.<\/li>\n<li><strong>Exception handling.<\/strong> Records with low-confidence matches are placed into an exception queue with suggested next actions for human review and approval.<\/li>\n<li><strong>Audit and closure.<\/strong> All actions, approvals and communications are logged; when containment is complete the recall event is marked closed and a summary report is prepared.<\/li>\n<\/ol>\n<\/section>\n<section class=\"imp-card\">\n<h2>Example workflow<\/h2>\n<p>For example, imagine a company that receives a supplier alert naming lot 1234 as contaminated. The system ingests that lot number, locates remaining units in two warehouses via the WMS and finds matching shipped orders in the e-commerce platform and ERP. It automatically flags outbound orders for cancellation, places remaining inventory on quarantine, and generates customer-contact tasks for the support team with pre-filled order references. Three sales orders have incomplete lot data \u2014 those are routed to an exception queue for manual verification. The automation logs every action and compiles an impact summary for quality and regulatory teams.<\/p>\n<\/section><\/div>\n<\/div>\n<div id=\"imp-tab-integrations-source\" class=\"imp-tab-source\">\n<div class=\"imp-pf-tab-panel\">\n<section class=\"imp-card imp-card-soft\">\n<h2>Integrations<\/h2>\n<h3>Typical systems<\/h3>\n<p>Typical systems that hold batch and order data include ERP systems (for example SAP S\/4HANA or Oracle NetSuite), warehouse management systems (WMS) and order management platforms, e-commerce platforms (Shopify, Magento) and CRM or customer-service systems (Salesforce, Zendesk). We can also work with CSV exports, SFTP feeds or database tables where APIs are not available. Exact compatibility is confirmed during scoping.<\/p>\n<\/section>\n<section class=\"imp-card\">\n<h3>Connection methods<\/h3>\n<p>Possible connection methods include native APIs or webhooks where available, scheduled CSV or SFTP imports\/exports, database or read-replica access, and email-triggered feeds for supplier notifications. We select the method(s) that fit your systems and security model; the final approach is agreed before implementation.<\/p>\n<\/section>\n<section class=\"imp-card imp-card-blue\">\n<h3>What we need from your company<\/h3>\n<p>Before launch we agree the systems to connect, sample data extracts (batch\/lot, inventory locations, order and shipment records), the trigger events that start a recall, and decision rules for quarantine, customer notification and returns. We also need a named technical contact and a test environment or sample files to validate matching logic. Compatibility, access method and the exact integration plan are confirmed before work begins.<\/p>\n<\/section><\/div>\n<\/div>\n<div id=\"imp-tab-faq-source\" class=\"imp-tab-source\">\n<div class=\"imp-pf-tab-panel\">\n<section class=\"imp-card\">\n<h2>FAQ<\/h2>\n<h3>Which systems can you connect to for batch data?<\/h3>\n<p>We typically connect to ERP, WMS and order\/e-commerce platforms via APIs when available. If an API is not present we can work with scheduled CSV\/SFTP feeds or database extracts. Final connectivity is agreed during scoping.<\/p>\n<h3>How are ambiguous matches handled?<\/h3>\n<p>Ambiguous or low-confidence matches are sent to an exception queue with suggested matches and contextual data for human review. You define who reviews exceptions and what approval steps are required before an automated action runs.<\/p>\n<h3>Can the system send customer communications?<\/h3>\n<p>Yes \u2014 where integrations exist we can generate notification tasks and pre-filled messages for your customer-service system or push data to an email\/SMS service. Implementi.ai configures the routing; actual message templates and regulatory wording are supplied by your team.<\/p>\n<h3>How does the system keep an audit trail?<\/h3>\n<p>Every recall event, match decision, routed task and manual action is recorded in the recall event history. The managed service compiles this into an exportable summary for quality and compliance reviews.<\/p>\n<h3>What level of customization is possible?<\/h3>\n<p>Matching rules, quarantine actions, notification recipients and exception workflows are configured to your needs. The solution requires customer-specific configuration to map batch identifiers, warehouses and business rules; implementi.ai performs and maintains those configurations as part of the monthly service.<\/p>\n<h3>How do we start an implementation?<\/h3>\n<p>We begin with a scoping conversation to list systems, sample data and recall scenarios. From that we confirm required connections, integration methods and the project scope. Launch time depends on systems and agreed scope and is confirmed before work starts.<\/p>\n<\/section><\/div>\n<\/div>\n<div id=\"imp-tab-price-source\" class=\"imp-tab-source\">\n<div class=\"imp-pf-tab-panel\">\n<section class=\"imp-card imp-card-soft\">\n<h2 class=\"imp-i18n-price-title\">Price<\/h2>\n<div class=\"imp-price-grid\">\n<div class=\"imp-price-card\">\n<div class=\"imp-price-label imp-i18n-monthly-label\">Monthly subscription<\/div>\n<div class=\"imp-price-value imp-price-monthly\">299 PLN net \/ month<\/div>\n<\/div>\n<div class=\"imp-price-card\">\n<div class=\"imp-price-label imp-i18n-activation-label\">Activation fee<\/div>\n<div class=\"imp-price-value imp-price-activation\" data-base-price=\"299\">3 \u00d7 monthly subscription<\/div>\n<\/div><\/div>\n<div class=\"imp-price-explain\">\n<p class=\"imp-i18n-activation-copy\">The activation fee covers the initial setup, implementation and launch of the agreed automation scope.<\/p>\n<p class=\"imp-i18n-monthly-copy\">The monthly subscription covers the ongoing operation, maintenance and management of the automation service.<\/p>\n<p class=\"imp-i18n-price-confirm\">The exact scope and final monthly subscription are confirmed before launch.<\/p>\n<\/p><\/div>\n<\/section><\/div>\n<\/div>\n<section id=\"implementation-contact\" class=\"imp-contact\">\n<div class=\"imp-contact-copy-card\">\n<h2 class=\"imp-i18n-contact-title\">Ready to automate this process?<\/h2>\n<p>Tell us which ERP, warehouse and order systems hold your batch\/lot data and recall history.<\/p>\n<p class=\"imp-i18n-contact-copy\">We\u2019ll confirm how this solution can be connected, its scope and the final monthly subscription.<\/p>\n<\/p><\/div>\n<p>    <a class=\"imp-contact-main imp-i18n-calendly\" href=\"https:\/\/calendly.com\/d\/cv3s-28d-54k\/30-minutowe-spotkanie\" target=\"_blank\" rel=\"noopener\">Book a 30-minute call<\/a><\/p>\n<table class=\"imp-contact-table\" role=\"presentation\" cellspacing=\"0\" cellpadding=\"0\" style=\"width:100%!important;table-layout:fixed!important;border-collapse:collapse!important;margin:24px 0 0!important;border:0!important;background:transparent!important;\">\n<tbody>\n<tr>\n<td class=\"imp-contact-cell imp-contact-cell-email\" style=\"width:50%!important;padding:0 12px 0 0!important;border:0!important;background:transparent!important;vertical-align:top!important;\"><a class=\"imp-contact-card\" href=\"mailto:contact@implementi.ai\" style=\"display:flex!important;flex-direction:column!important;justify-content:center!important;width:100%!important;min-width:0!important;min-height:132px!important;margin:0!important;box-sizing:border-box!important;background:#F9F9F9!important;border:1px solid rgba(24,52,87,.12)!important;border-radius:24px!important;padding:28px!important;text-decoration:none!important;\"><span class=\"imp-contact-label imp-i18n-email-label\">Email us<\/span><span class=\"imp-contact-value\">contact@implementi.ai<\/span><\/a><\/td>\n<td class=\"imp-contact-cell imp-contact-cell-phone\" style=\"width:50%!important;padding:0 0 0 12px!important;border:0!important;background:transparent!important;vertical-align:top!important;\"><a class=\"imp-contact-card\" href=\"tel:%2B48660983178\" style=\"display:flex!important;flex-direction:column!important;justify-content:center!important;width:100%!important;min-width:0!important;min-height:132px!important;margin:0!important;box-sizing:border-box!important;background:#F9F9F9!important;border:1px solid rgba(24,52,87,.12)!important;border-radius:24px!important;padding:28px!important;text-decoration:none!important;\"><span class=\"imp-contact-label imp-i18n-phone-label\">Call us<\/span><span class=\"imp-contact-value\">&#43;48 660 983 178<\/span><\/a><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/section>\n<\/div>\n<p><script>(function(){\nvar impBusy=false;\nfunction impLang(){var l=(document.documentElement.lang||'en').toLowerCase();return l.indexOf('pl')===0?'pl':'en';}\nfunction impText(){return impLang()==='pl'?{description:'Opis',how:'Jak to dzia\u0142a',integrations:'Integracje',faq:'FAQ',price:'Cena',contactTitle:'Chcesz zautomatyzowa\u0107 ten proces?',contactCopy:'Potwierdzimy spos\u00f3b pod\u0142\u0105czenia rozwi\u0105zania, zakres oraz ostateczny miesi\u0119czny abonament.',calendly:'Um\u00f3w 30-minutow\u0105 rozmow\u0119',email:'Napisz e-mail',phone:'Zadzwo\u0144',monthly:'Abonament miesi\u0119czny',activation:'Op\u0142ata aktywacyjna',activationCopy:'Op\u0142ata aktywacyjna obejmuje pocz\u0105tkow\u0105 konfiguracj\u0119, wdro\u017cenie i uruchomienie uzgodnionego zakresu automatyzacji.',monthlyCopy:'Abonament miesi\u0119czny obejmuje bie\u017c\u0105ce dzia\u0142anie, utrzymanie i obs\u0142ug\u0119 automatyzacji.',priceConfirm:'Dok\u0142adny zakres i ostateczny miesi\u0119czny abonament potwierdzamy przed uruchomieniem.',pricePrefix:'Od ',priceSuffix:' netto \/ miesi\u0105c',tabMonthlySuffix:' netto \/ miesi\u0105c',tabActivationSuffix:' netto'}:{description:'Description',how:'How it works',integrations:'Integrations',faq:'FAQ',price:'Price',contactTitle:'Ready to automate this process?',contactCopy:'We\u2019ll confirm how this solution can be connected, its scope and the final monthly subscription.',calendly:'Book a 30-minute call',email:'Email us',phone:'Call us',monthly:'Monthly subscription',activation:'Activation fee',activationCopy:'The activation fee covers the initial setup, implementation and launch of the agreed automation scope.',monthlyCopy:'The monthly subscription covers the ongoing operation, maintenance and management of the automation service.',priceConfirm:'The exact scope and final monthly subscription are confirmed before launch.',pricePrefix:'From ',priceSuffix:' net \/ month',tabMonthlySuffix:' net \/ month',tabActivationSuffix:' net'};}\nfunction clean(v){return(v||'').replace(\/\u00a0\/g,' ').replace(\/\\s+\/g,' ').trim();}\nfunction money(raw){raw=clean(raw).replace(\/^From\\s+\/i,'').replace(\/^Od\\s+\/i,'').replace(\/\\s+netto\\s*\\\/\\s*miesi\u0105c$\/i,'').replace(\/\\s+net\\s*\\\/\\s*month$\/i,'');var m=raw.match(\/([\\d\\s.,]+)\/);if(!m)return null;var n=m[1].replace(\/\\s\/g,'');var lc=n.lastIndexOf(','),ld=n.lastIndexOf('.'),sep='';if(lc>=0||ld>=0)sep=lc>ld?',':'.';var frac=sep?(n.split(sep)[1]||''):'';var decimals=(frac&&parseInt(frac,10)!==0)?Math.min(frac.length,2):0;var norm=n;if(sep===',')norm=norm.replace(\/\\.\/g,'').replace(',','.');else if(sep==='.')norm=norm.replace(\/,\/g,'');var val=parseFloat(norm);if(isNaN(val))return null;var idx=raw.indexOf(m[1]);var pre=clean(raw.slice(0,idx));var post=clean(raw.slice(idx+m[1].length));if(impLang()==='en'&&post.toLowerCase()==='z\u0142')post='PLN';return{value:val,decimals:decimals,prefix:pre,suffix:post,decimal:sep||'.'};}\nfunction fmt(v,f){var s=Number(v).toFixed(f.decimals);if(f.decimal===',')s=s.replace('.',',');return(f.prefix?f.prefix:'')+s+(f.suffix?' '+f.suffix:'');}\nfunction currentMoney(){var p=document.querySelector('.summary p.price');var root=document.querySelector('.implementi-pf');var fallback=(root&&root.getAttribute('data-base-price')?root.getAttribute('data-base-price'):'299')+' PLN';if(!p)return money(fallback);var txt=clean(p.textContent||p.innerText||'');if(\/^(From|Od)\\s\/i.test(txt)&&p.getAttribute('data-imp-raw'))txt=p.getAttribute('data-imp-raw');else if(txt&&!\/^(From|Od)\\s\/i.test(txt))p.setAttribute('data-imp-raw',txt);return money(txt)||money(fallback);}\nfunction localize(){var t=impText();var map=[['.imp-i18n-contact-title',t.contactTitle],['.imp-i18n-contact-copy',t.contactCopy],['.imp-i18n-calendly',t.calendly],['.imp-i18n-email-label',t.email],['.imp-i18n-phone-label',t.phone],['.imp-i18n-price-title',t.price],['.imp-i18n-monthly-label',t.monthly],['.imp-i18n-activation-label',t.activation],['.imp-i18n-activation-copy',t.activationCopy],['.imp-i18n-monthly-copy',t.monthlyCopy],['.imp-i18n-price-confirm',t.priceConfirm]];map.forEach(function(x){document.querySelectorAll(x[0]).forEach(function(el){el.textContent=x[1];});});document.querySelectorAll('.imp-hero-calendly').forEach(function(a){a.textContent=t.calendly;});document.querySelectorAll('.imp-hero-email').forEach(function(a){a.textContent=t.email;});document.querySelectorAll('.imp-hero-phone').forEach(function(a){a.textContent=t.phone;});}\nfunction updatePrice(){if(impBusy)return;var t=impText(),p=document.querySelector('.summary p.price'),f=currentMoney();if(!f)return;var base=fmt(f.value,f),desired=t.pricePrefix+base+t.priceSuffix;impBusy=true;if(p&&clean(p.textContent)!==desired){p.innerHTML='<span class=\"imp-native-monthly-price\">'+desired+'<\/span>';}document.querySelectorAll('.imp-price-monthly').forEach(function(el){el.textContent=base+t.tabMonthlySuffix;});document.querySelectorAll('.imp-price-activation').forEach(function(el){el.textContent=fmt(f.value*3,f)+t.tabActivationSuffix;});impBusy=false;}\nfunction enforceImpTabsLayout(){\n var wrap=document.querySelector('.woocommerce-tabs, .wc-tabs-wrapper');\n if(!wrap)return;\n var tabs=wrap.querySelector('ul.tabs, ul.wc-tabs');\n if(!tabs)return;\n var important=function(el,prop,val){try{el.style.setProperty(prop,val,'important');}catch(e){}};\n important(tabs,'display','flex');important(tabs,'flex-direction','row');important(tabs,'flex-wrap','nowrap');important(tabs,'align-items','center');important(tabs,'justify-content','flex-start');important(tabs,'gap','8px');important(tabs,'width','100%');important(tabs,'max-width','100%');important(tabs,'min-width','0');important(tabs,'height','auto');important(tabs,'padding','6px');important(tabs,'margin','0 0 24px');important(tabs,'overflow-x','auto');important(tabs,'overflow-y','hidden');important(tabs,'white-space','nowrap');important(tabs,'background','#183457');important(tabs,'border','0');important(tabs,'border-radius','22px');\n Array.from(tabs.children).forEach(function(li){\n  if(li.style.display==='none')return;\n  important(li,'float','none');important(li,'display','block');important(li,'flex','0 0 auto');important(li,'flex-basis','auto');important(li,'flex-grow','0');important(li,'flex-shrink','0');important(li,'width','auto');important(li,'min-width','0');important(li,'max-width','none');important(li,'margin','0');important(li,'padding','0');important(li,'clear','none');important(li,'border','0');important(li,'background','transparent');\n  var a=li.querySelector('a');if(!a)return;\n  important(a,'display','flex');important(a,'align-items','center');important(a,'justify-content','center');important(a,'width','auto');important(a,'min-width','max-content');important(a,'height','44px');important(a,'padding','0 18px');important(a,'margin','0');important(a,'white-space','nowrap');important(a,'font-family','Poppins, Arial, sans-serif');important(a,'font-weight','700');important(a,'font-size','14px');important(a,'text-decoration','none');important(a,'border-radius','18px');\n  if(li.classList.contains('active')){important(a,'background','#183457');important(a,'color','#F9F9F9');important(a,'border-color','#183457');}\n  else{important(a,'background','#F9F9F9');important(a,'color','#183457');important(a,'border','1px solid rgba(24,52,87,.12)');}\n });\n}\nfunction buildTabs(){var wrap=document.querySelector('.woocommerce-tabs, .wc-tabs-wrapper');if(!wrap)return;var tabs=wrap.querySelector('ul.tabs, ul.wc-tabs');var desc=wrap.querySelector('#tab-description, .woocommerce-Tabs-panel--description');if(!tabs||!desc)return;var t=impText();var da=tabs.querySelector('.description_tab a, a[href=\"#tab-description\"]');if(da)da.textContent=t.description;tabs.querySelectorAll('.imp-pf-custom-tab').forEach(function(el){el.remove();});wrap.querySelectorAll('.imp-pf-custom-panel').forEach(function(el){el.remove();});var specs=[['how-it-works',t.how,'imp-tab-how-source'],['integrations',t.integrations,'imp-tab-integrations-source'],['faq',t.faq,'imp-tab-faq-source'],['price',t.price,'imp-tab-price-source']];specs.forEach(function(s){var src=document.getElementById(s[2]);if(!src)return;var li=document.createElement('li');li.className='imp-pf-custom-tab '+s[0]+'_tab';var a=document.createElement('a');a.href='#tab-'+s[0];a.textContent=s[1];li.appendChild(a);tabs.appendChild(li);var panel=document.createElement('div');panel.id='tab-'+s[0];panel.className='woocommerce-Tabs-panel woocommerce-Tabs-panel--'+s[0]+' panel entry-content wc-tab imp-pf-custom-panel';panel.innerHTML=src.innerHTML;panel.style.display='none';wrap.appendChild(panel);});Array.from(tabs.children).forEach(function(li){if(!li.classList.contains('description_tab')&&!li.classList.contains('imp-pf-custom-tab'))li.style.display='none';});Array.from(wrap.querySelectorAll('.woocommerce-Tabs-panel')).forEach(function(panel){if(panel!==desc&&!panel.classList.contains('imp-pf-custom-panel'))panel.style.display='none';});function activate(id){Array.from(tabs.querySelectorAll('li')).forEach(function(li){li.classList.remove('active');});Array.from(wrap.querySelectorAll('.woocommerce-Tabs-panel')).forEach(function(panel){panel.style.display='none';});var a=tabs.querySelector('a[href=\"#'+id+'\"]');if(a&&a.parentElement)a.parentElement.classList.add('active');var panel=wrap.querySelector('#'+id);if(panel)panel.style.display='block';enforceImpTabsLayout();}tabs.addEventListener('click',function(e){var a=e.target.closest('a');if(!a)return;var h=a.getAttribute('href')||'';if(h==='#tab-description'||h==='#tab-how-it-works'||h==='#tab-integrations'||h==='#tab-faq'||h==='#tab-price'){e.preventDefault();e.stopImmediatePropagation();activate(h.slice(1));}},true);if(!tabs.querySelector('li.active'))activate('tab-description');enforceImpTabsLayout();setTimeout(enforceImpTabsLayout,80);var contact=document.getElementById('implementation-contact');if(contact)wrap.insertAdjacentElement('afterend',contact);}\nfunction init(){buildTabs();enforceImpTabsLayout();localize();updatePrice();document.querySelectorAll('.paypal-buttons,.ppc-button-wrapper,.wc-stripe-payment-request-wrapper,.express-payment-button,.wcpay-payment-request-wrapper').forEach(function(el){el.style.display='none';});}\ndocument.addEventListener('DOMContentLoaded',init);window.addEventListener('load',init);setTimeout(init,400);setTimeout(init,1200);setTimeout(init,2400);var s=document.querySelector('.summary');if(s&&window.MutationObserver){new MutationObserver(function(){setTimeout(updatePrice,30);}).observe(s,{childList:true,subtree:true,characterData:true});}\n})();<\/script><\/p>\n<style id=\"imp-v4510-ui-fix\">\n\/* v4.5.10 \u2014 keep light blue only as page background, not inside framed content *\/\n.imp-card-soft,\n.imp-card-blue{\n  background:#F9F9F9!important;\n}<\/p>\n<p>\/* Direct spacing between the end of the implementi product content\/contact and related products *\/\nbody.single-product #implementation-contact{\n  margin-bottom:140px!important;\n}<\/p>\n<p>\/* Hero contact container \u2014 JS below unwraps any wpautop <\/p>\n<p>\/<br \/> wrappers first *\/\nbody.single-product .summary .imp-hero-contact-inline,\nbody.single-product .summary .imp-hero-contact-grid{\n  display:grid!important;\n  grid-template-columns:minmax(0,1fr) minmax(0,1fr)!important;\n  gap:12px!important;\n  width:100%!important;\n  max-width:100%!important;\n  margin:12px 0 0!important;\n  padding:0!important;\n  box-sizing:border-box!important;\n}\nbody.single-product .summary .imp-hero-contact-inline>.imp-hero-email,\nbody.single-product .summary .imp-hero-contact-inline>.imp-hero-phone,\nbody.single-product .summary .imp-hero-contact-grid>.imp-hero-email,\nbody.single-product .summary .imp-hero-contact-grid>.imp-hero-phone{\n  display:flex!important;\n  align-items:center!important;\n  justify-content:center!important;\n  width:100%!important;\n  max-width:none!important;\n  min-width:0!important;\n  min-height:44px!important;\n  margin:0!important;\n  padding:10px 12px!important;\n  float:none!important;\n  clear:none!important;\n  box-sizing:border-box!important;\n  border:1px solid rgba(24,52,87,.16)!important;\n  border-radius:999px!important;\n  background:#F9F9F9!important;\n  color:#183457!important;\n  text-decoration:none!important;\n  text-align:center!important;\n  font-family:\"Poppins\",Arial,sans-serif!important;\n  font-size:16px!important;\n  font-weight:700!important;\n}<\/p>\n<p>\/* Related products *\/\nbody.single-product .related.products,\nbody.single-product .upsells.products{\n  clear:both!important;\n}\nbody.single-product .related.products ul.products,\nbody.single-product .upsells.products ul.products{\n  width:100%!important;\n  max-width:100%!important;\n  box-sizing:border-box!important;\n}\nbody.single-product .related.products .imp-related-title,\nbody.single-product .upsells.products .imp-related-title,\nbody.single-product .related.products .woocommerce-loop-product__title,\nbody.single-product .upsells.products .woocommerce-loop-product__title{\n  display:block!important;\n  visibility:visible!important;\n  opacity:1!important;\n  height:auto!important;\n  max-height:none!important;\n  overflow:visible!important;\n  margin:14px 0 8px!important;\n  padding:0!important;\n  color:#183457!important;\n  font-family:\"Poppins\",Arial,sans-serif!important;\n  font-size:18px!important;\n  font-weight:700!important;\n  line-height:1.35!important;\n  text-align:center!important;\n}\nbody.single-product .related.products ul.products li.product .price,\nbody.single-product .upsells.products ul.products li.product .price{\n  display:block!important;\n  margin:8px 0 14px!important;\n  text-align:center!important;\n}<\/p>\n<p>@media(max-width:767px){\n  body.single-product #implementation-contact{\n    margin-bottom:72px!important;\n  }\n  body.single-product .summary .imp-hero-contact-inline,\n  body.single-product .summary .imp-hero-contact-grid{\n    grid-template-columns:1fr!important;\n    gap:10px!important;\n  }\n}\n<\/style>\n<p><script id=\"imp-v4510-ui-fix-js\">\n(function(){\n  function impImportant(el, prop, value){\n    if(!el) return;\n    try{ el.style.setProperty(prop,value,'important'); }catch(e){}\n  }<\/p>\n<p>  function fixHeroContact(){\n    var wrap=document.querySelector('.summary .imp-hero-contact-inline, .summary .imp-hero-contact-grid');\n    if(!wrap) return;<\/p>\n<p>    var email=wrap.querySelector('.imp-hero-email');\n    var phone=wrap.querySelector('.imp-hero-phone');\n    if(!email || !phone) return;<\/p>\n<p>    \/* Woo short-description filters can insert <\/p>\n<p>\/<br \/>. Put the two anchors\n       back as DIRECT children so no wrapper can push Call us to the next row. *\/\n    if(email.parentElement!==wrap || phone.parentElement!==wrap || wrap.children.length!==2){\n      wrap.innerHTML='';\n      wrap.appendChild(email);\n      wrap.appendChild(phone);\n    }<\/p>\n<p>    impImportant(wrap,'display','grid');\n    impImportant(wrap,'width','100%');\n    impImportant(wrap,'max-width','100%');\n    impImportant(wrap,'gap',window.innerWidth<=767?'10px':'12px');\n    impImportant(wrap,'grid-template-columns',window.innerWidth<=767?'1fr':'minmax(0,1fr) minmax(0,1fr)');\n\n    [email,phone].forEach(function(a){\n      impImportant(a,'display','flex');\n      impImportant(a,'align-items','center');\n      impImportant(a,'justify-content','center');\n      impImportant(a,'width','100%');\n      impImportant(a,'max-width','none');\n      impImportant(a,'min-width','0');\n      impImportant(a,'margin','0');\n      impImportant(a,'float','none');\n      impImportant(a,'clear','none');\n      impImportant(a,'box-sizing','border-box');\n    });\n  }\n\n  function visibleProductName(li){\n    var title=li.querySelector('.woocommerce-loop-product__title, .product-title, h2.woocommerce-loop-product__title');\n    if(title &#038;&#038; title.textContent.trim()) return {text:title.textContent.trim(), node:title};\n\n    var link=li.querySelector('a.woocommerce-LoopProduct-link, a.woocommerce-loop-product__link, a[href]');\n    var aria=link ? (link.getAttribute('aria-label') || '') : '';\n    if(aria){\n      aria=aria.replace(\/^(Read more about|View product|Select options for)\\s*\/i,'').replace(\/^[\"']|[\"']$\/g,'').trim();\n      if(aria) return {text:aria,node:null};\n    }\n\n    var img=li.querySelector('img');\n    var alt=img ? (img.getAttribute('alt') || '').trim() : '';\n    return {text:alt,node:null};\n  }\n\n  function fixRelatedProducts(){\n    document.querySelectorAll('.related.products, .upsells.products').forEach(function(section){\n      var list=section.querySelector('ul.products');\n      if(!list) return;\n\n      \/* Tell Woo\/theme this is a 3-column list instead of a 4-column list. *\/\n      Array.from(list.classList).forEach(function(c){\n        if(\/^columns-\\d+$\/.test(c)) list.classList.remove(c);\n      });\n      list.classList.add('columns-3');\n\n      var items=Array.from(list.querySelectorAll(':scope > li.product'));\n      items.slice(3).forEach(function(li){ li.remove(); });\n      items=Array.from(list.querySelectorAll(':scope > li.product'));<\/p>\n<p>      \/* Only force our own grid dimensions when the theme doesn't produce\n         a usable 3-column row after changing to columns-3. *\/\n      if(window.innerWidth>900){\n        impImportant(list,'display','grid');\n        impImportant(list,'grid-template-columns','repeat(3,minmax(0,1fr))');\n        impImportant(list,'gap','30px');\n      }else if(window.innerWidth>767){\n        impImportant(list,'display','grid');\n        impImportant(list,'grid-template-columns','repeat(2,minmax(0,1fr))');\n        impImportant(list,'gap','24px');\n      }else{\n        impImportant(list,'display','grid');\n        impImportant(list,'grid-template-columns','1fr');\n        impImportant(list,'gap','22px');\n      }<\/p>\n<p>      items.forEach(function(li){\n        impImportant(li,'width','auto');\n        impImportant(li,'max-width','none');\n        impImportant(li,'min-width','0');\n        impImportant(li,'float','none');\n        impImportant(li,'clear','none');\n        impImportant(li,'margin','0');<\/p>\n<p>        var info=visibleProductName(li);\n        var title=info.node;<\/p>\n<p>        if(title){\n          title.classList.add('imp-related-title');\n        }else if(info.text && !li.querySelector('.imp-related-title')){\n          title=document.createElement('div');\n          title.className='imp-related-title';\n          title.textContent=info.text;\n          var price=li.querySelector('.price');\n          if(price) li.insertBefore(title,price);\n          else li.appendChild(title);\n        }<\/p>\n<p>        if(title){\n          impImportant(title,'display','block');\n          impImportant(title,'visibility','visible');\n          impImportant(title,'opacity','1');\n          impImportant(title,'height','auto');\n          impImportant(title,'max-height','none');\n          impImportant(title,'overflow','visible');\n          impImportant(title,'margin','14px 0 8px');\n          impImportant(title,'color','#183457');\n          impImportant(title,'font-family','Poppins, Arial, sans-serif');\n          impImportant(title,'font-size','18px');\n          impImportant(title,'font-weight','700');\n          impImportant(title,'line-height','1.35');\n          impImportant(title,'text-align','center');\n        }\n      });\n    });\n  }<\/p>\n<p>  function run(){\n    fixHeroContact();\n    fixRelatedProducts();\n  }<\/p>\n<p>  document.addEventListener('DOMContentLoaded',run);\n  window.addEventListener('load',run);\n  window.addEventListener('resize',function(){setTimeout(run,50);});\n  setTimeout(run,250);\n  setTimeout(run,700);\n  setTimeout(run,1600);\n  setTimeout(run,3000);<\/p>\n<p>  if(window.MutationObserver){\n    var mo=new MutationObserver(function(){setTimeout(run,40);});\n    document.addEventListener('DOMContentLoaded',function(){\n      if(document.body) mo.observe(document.body,{childList:true,subtree:true});\n    });\n  }\n})();\n<\/script><\/p>\n<style id=\"imp-v4512-bottom-fix\">\n\/* All customer-facing content cards stay white against the light-blue page background *\/\nbody.single-product .implementi-pf #imp-description-root > .imp-card,\nbody.single-product .implementi-pf .imp-pf-tab-panel > .imp-card,\nbody.single-product .implementi-pf .imp-auto-card{\n  background:#F9F9F9!important;\n  border:1px solid rgba(24,52,87,.10)!important;\n  border-radius:28px!important;\n}<\/p>\n<p>\/* Lower contact copy must never sit loose on the blue page background *\/\nbody.single-product .implementi-pf .imp-contact-copy-card{\n  display:block!important;\n  width:100%!important;\n  margin:0 0 26px!important;\n  padding:clamp(24px,4vw,40px)!important;\n  box-sizing:border-box!important;\n  background:#F9F9F9!important;\n  border:1px solid rgba(24,52,87,.10)!important;\n  border-radius:28px!important;\n}\nbody.single-product .implementi-pf .imp-contact-copy-card h2{\n  margin-top:0!important;\n}<\/p>\n<p>\/* The recommendation area is deliberately separated from Email\/Call cards *\/\nbody.single-product .imp-related-zone{\n  display:block!important;\n  clear:both!important;\n  width:min(1420px,calc(100% - 40px))!important;\n  max-width:100%!important;\n  margin:150px auto 60px!important;\n  padding:38px!important;\n  box-sizing:border-box!important;\n  background:#F9F9F9!important;\n  border:1px solid rgba(24,52,87,.10)!important;\n  border-radius:30px!important;\n}<\/p>\n<p>body.single-product .imp-related-heading{\n  display:block!important;\n  margin:0 0 34px!important;\n  padding:0!important;\n  color:#183457!important;\n  font-family:\"Poppins\",Arial,sans-serif!important;\n  font-size:30px!important;\n  font-weight:800!important;\n  line-height:1.2!important;\n  text-align:left!important;\n}<\/p>\n<p>\/* Exactly 3 products on desktop *\/\nbody.single-product .imp-related-list{\n  display:grid!important;\n  grid-template-columns:repeat(3,minmax(0,1fr))!important;\n  gap:30px!important;\n  width:100%!important;\n  max-width:100%!important;\n  margin:0!important;\n  padding:0!important;\n  box-sizing:border-box!important;\n}\nbody.single-product .imp-related-list > li.product{\n  display:block!important;\n  width:auto!important;\n  max-width:none!important;\n  min-width:0!important;\n  margin:0!important;\n  padding:0!important;\n  float:none!important;\n  clear:none!important;\n}\nbody.single-product .imp-related-list > li.product:nth-of-type(n+4){\n  display:none!important;\n}<\/p>\n<p>\/* Product titles must remain visible *\/\nbody.single-product .imp-related-list .woocommerce-loop-product__title,\nbody.single-product .imp-related-list .product-title,\nbody.single-product .imp-related-list .imp-related-title{\n  display:block!important;\n  visibility:visible!important;\n  opacity:1!important;\n  height:auto!important;\n  max-height:none!important;\n  overflow:visible!important;\n  margin:16px 0 8px!important;\n  color:#183457!important;\n  font-family:\"Poppins\",Arial,sans-serif!important;\n  font-size:18px!important;\n  font-weight:700!important;\n  line-height:1.35!important;\n  text-align:center!important;\n}\nbody.single-product .imp-related-list .price{\n  display:block!important;\n  margin:8px 0 14px!important;\n  text-align:center!important;\n}<\/p>\n<p>@media(max-width:900px){\n  body.single-product .imp-related-zone{\n    width:min(100% - 24px,1100px)!important;\n    margin-top:110px!important;\n    padding:28px!important;\n  }\n  body.single-product .imp-related-list{\n    grid-template-columns:repeat(2,minmax(0,1fr))!important;\n    gap:24px!important;\n  }\n}\n@media(max-width:767px){\n  body.single-product .imp-related-zone{\n    width:calc(100% - 20px)!important;\n    margin-top:80px!important;\n    padding:20px!important;\n    border-radius:24px!important;\n  }\n  body.single-product .imp-related-heading{\n    margin-bottom:24px!important;\n    font-size:24px!important;\n  }\n  body.single-product .imp-related-list{\n    grid-template-columns:1fr!important;\n    gap:22px!important;\n  }\n}\n<\/style>\n<p><script id=\"imp-v4512-bottom-fix-js\">\n(function(){\n  function directProducts(list){\n    return Array.prototype.filter.call(list.children,function(el){\n      return el && el.classList && el.classList.contains('product');\n    });\n  }<\/p>\n<p>  function textForProduct(li){\n    var title=li.querySelector('.woocommerce-loop-product__title,.product-title,h2,h3');\n    if(title && title.textContent.trim()) return {node:title,text:title.textContent.trim()};\n    var img=li.querySelector('img');\n    var alt=img ? (img.getAttribute('alt')||'').trim() : '';\n    if(alt) return {node:null,text:alt};\n    var link=li.querySelector('a[aria-label]');\n    var ar=link ? (link.getAttribute('aria-label')||'').trim() : '';\n    return {node:null,text:ar};\n  }<\/p>\n<p>  function wrapOrphanDescriptionText(){\n    var roots=document.querySelectorAll('#imp-description-root,.imp-pf-tab-panel');\n    roots.forEach(function(root){\n      var group=[];\n      function flush(){\n        if(!group.length) return;\n        var card=document.createElement('section');\n        card.className='imp-card imp-auto-card';\n        root.insertBefore(card,group[0]);\n        group.forEach(function(n){ card.appendChild(n); });\n        group=[];\n      }\n      Array.prototype.slice.call(root.childNodes).forEach(function(n){\n        if(n.nodeType===3){\n          if((n.textContent||'').trim()) group.push(n);\n          return;\n        }\n        if(n.nodeType!==1) return;\n        if(n.matches('section.imp-card,.imp-card,script,style,.imp-tab-source')) {\n          flush();\n        } else if(n.matches('p,h1,h2,h3,h4,ul,ol,blockquote,div:not(.imp-card)')) {\n          group.push(n);\n        } else {\n          flush();\n        }\n      });\n      flush();\n    });\n  }<\/p>\n<p>  function findRecommendationList(){\n    var contact=document.getElementById('implementation-contact');\n    var lists=Array.prototype.slice.call(document.querySelectorAll('ul.products'));\n    if(!lists.length) return null;<\/p>\n<p>    if(contact){\n      var following=lists.filter(function(list){\n        try{\n          return !!(contact.compareDocumentPosition(list) & Node.DOCUMENT_POSITION_FOLLOWING);\n        }catch(e){ return false; }\n      });\n      if(following.length) return following[0];\n    }<\/p>\n<p>    return document.querySelector('.related.products ul.products,.upsells.products ul.products,section.related ul.products,section.upsells ul.products');\n  }<\/p>\n<p>  function fixRecommendations(){\n    var list=findRecommendationList();\n    if(!list) return;<\/p>\n<p>    list.classList.add('imp-related-list');<\/p>\n<p>    Array.prototype.slice.call(list.classList).forEach(function(c){\n      if(\/^columns-\\d+$\/.test(c)) list.classList.remove(c);\n    });\n    list.classList.add('columns-3');<\/p>\n<p>    var items=directProducts(list);<\/p>\n<p>    \/* Physical removal + CSS nth-of-type fallback = exactly 3 visible products. *\/\n    for(var i=items.length-1;i>=3;i--){\n      items[i].remove();\n    }\n    items=directProducts(list);<\/p>\n<p>    var zone=list.closest('section,.related,.upsells');\n    if(!zone) zone=list.parentElement;\n    if(zone){\n      zone.classList.add('imp-related-zone');<\/p>\n<p>      var existing=zone.querySelector(':scope > h2,:scope > h3');\n      if(existing){\n        existing.textContent='Customers also choose';\n        existing.classList.add('imp-related-heading');\n      }else if(!zone.querySelector(':scope > .imp-related-heading')){\n        var h=document.createElement('h2');\n        h.className='imp-related-heading';\n        h.textContent='Customers also choose';\n        zone.insertBefore(h,list);\n      }\n    }<\/p>\n<p>    items.forEach(function(li){\n      var info=textForProduct(li);\n      if(info.node){\n        info.node.classList.add('imp-related-title');\n      }else if(info.text && !li.querySelector('.imp-related-title')){\n        var t=document.createElement('div');\n        t.className='imp-related-title';\n        t.textContent=info.text;\n        var price=li.querySelector('.price');\n        if(price) li.insertBefore(t,price);\n        else li.appendChild(t);\n      }\n    });\n  }<\/p>\n<p>  function run(){\n    wrapOrphanDescriptionText();\n    fixRecommendations();\n  }<\/p>\n<p>  document.addEventListener('DOMContentLoaded',run);\n  window.addEventListener('load',run);\n  window.addEventListener('resize',function(){setTimeout(fixRecommendations,60);});\n  setTimeout(run,250);\n  setTimeout(run,800);\n  setTimeout(run,1800);\n  setTimeout(run,3500);<\/p>\n<p>  if(window.MutationObserver){\n    var queued=false;\n    var mo=new MutationObserver(function(){\n      if(queued) return;\n      queued=true;\n      setTimeout(function(){\n        queued=false;\n        fixRecommendations();\n      },100);\n    });\n    document.addEventListener('DOMContentLoaded',function(){\n      if(document.body) mo.observe(document.body,{childList:true,subtree:true});\n    });\n  }\n})();\n<\/script><\/p>\n","protected":false},"excerpt":{"rendered":"<div class=\"imp-hero-compact\">\n<div class=\"imp-hero-meta\"><span class=\"imp-hero-chip\">Operations<\/span><span class=\"imp-hero-chip\">implementi.ai<\/span><\/div>\n<div class=\"imp-hero-short\">Detect affected batches, find impacted inventory and customer orders, and automatically route recall tasks and notifications. Built for manufacturers, distributors and retailers that must move quickly and keep an auditable trail.<\/div>\n<p>  <a class=\"imp-hero-calendly\" href=\"https:\/\/calendly.com\/d\/cv3s-28d-54k\/30-minutowe-spotkanie\" target=\"_blank\" rel=\"noopener\">Book a 30-minute call<\/a><\/p>\n<div class=\"imp-hero-contact-grid\"><a class=\"imp-hero-email\" href=\"mailto:contact@implementi.ai\">Email us<\/a><a class=\"imp-hero-phone\" href=\"tel:%2B48660983178\">Call us<\/a><\/div>\n<\/div>\n","protected":false},"featured_media":8023,"comment_status":"closed","ping_status":"closed","template":"","meta":[],"product_brand":[32],"product_cat":[38],"product_tag":[],"class_list":["post-8026","product","type-product","status-publish","has-post-thumbnail","product_brand-implementi-ai","product_cat-operations","first","instock","virtual","taxable","product-type-external"],"ams_default_variation_id":0,"ams_product_points_reward":[],"ams_product_discount_percentage":0,"ams_price_to_display":299,"ams_acf":[],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"http:\/\/implementi.ai\/en\/wp-json\/wp\/v2\/product\/8026","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/implementi.ai\/en\/wp-json\/wp\/v2\/product"}],"about":[{"href":"http:\/\/implementi.ai\/en\/wp-json\/wp\/v2\/types\/product"}],"replies":[{"embeddable":true,"href":"http:\/\/implementi.ai\/en\/wp-json\/wp\/v2\/comments?post=8026"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/implementi.ai\/en\/wp-json\/wp\/v2\/media\/8023"}],"wp:attachment":[{"href":"http:\/\/implementi.ai\/en\/wp-json\/wp\/v2\/media?parent=8026"}],"wp:term":[{"taxonomy":"product_brand","embeddable":true,"href":"http:\/\/implementi.ai\/en\/wp-json\/wp\/v2\/product_brand?post=8026"},{"taxonomy":"product_cat","embeddable":true,"href":"http:\/\/implementi.ai\/en\/wp-json\/wp\/v2\/product_cat?post=8026"},{"taxonomy":"product_tag","embeddable":true,"href":"http:\/\/implementi.ai\/en\/wp-json\/wp\/v2\/product_tag?post=8026"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}