GAINES TOWNSHIP, Mich. (WOOD) – Product shortages have become a common problem during the COVID-19 crisis, but Meijer has a new tool to help eliminate empty shelves: Tally.

The autonomous robot now roams the aisles of 10 Meijer stores, looking for missing, misplaced and mispriced products.

As he walks through shelves, freezers and coolers, Tally uses his camera and sensors to capture images and scan RFID tags on products. The information Tally collects is transmitted in real time to Meijer employees “who can better spend their time filling in product gaps and correcting errors to improve the customer experience in store,” said Christina Fecher, senior manager of corporate communication at Meijer.

(An image from the video provided by Meijer shows Tally scanning the shelves at the Meijer store on Alpine Avenue NO to Walker.)

Fecher said Meijer hosted its first Tally in store earlier this summer as part of a pilot program, which was deemed a success. Tally now operates 10 Meijer stores across the Midwest daily, including the Meijer on Alpine Avenue NW in Walker and the store near Kalamazoo Avenue and M-6 in Gaines Township.

Fecher said Meijer would review the data before deciding to deploy Tally to other stores.

Simbe Robotics’ Original Tally was launched in the market in 2015. The company claims that its latest third generation robot has one of the most advanced optical systems in the world, using autofocus technology, dynamic range stabilization and High dynamic range imaging to capture 2D and 3D images.

Simbe Robotics says that using data from Tally, retailers identify out-of-stock items two to 15 times more often than manual store scans, and reduce empty shelves by 20-30% compared to stores without Tally .

As of June 10, more than a dozen retailers around the world have deployed Tally in their stores, including
Carrefour in France; Decathlon Sporting Goods and the Save Mart companies in California; Giant Eagle, based in Pennsylvania, and Schnuck Markets, headquartered in St. Louis.

`)); // Integrated Facebook script (function (d, s, id) {var js, fjs = d.getElementsByTagName (s)[0]; if (d.getElementById (id)) return; js = d.createElement (s); = identifier; js.src = “″; fjs.parentNode.insertBefore (js, fjs); } (document, ‘script’, ‘facebook-jssdk’)); // Integration of the Twitter script (function (d, s, id) {var js, tjs = d.getElementsByTagName (s)[0]; if (d.getElementById (id)) return; js = d.createElement (s); = identifier; js.setAttribute (‘async’, ”); js.src = “”; tjs.parentNode.insertBefore (js, tjs); } (document, ‘script’, ‘twitter-js’)); } // Simplify some iframe stuff var iframes = $ (‘iframe’); iframes .filter (‘.responsive’) .each (function (_, frame) {// 16×9 responsive ratio iframes var $ frame = $ (frame); $ (frame) .css ({position: ‘absolute’, top: 0, left: 0, right: 0, width: ‘100%’, height: ‘100%’,}). Parent (). AddClass (‘wood-responsive-container wood-responsive-container-16×9’);} ); var lazyFrames = iframes .filter (‘[data-lazy-src]’); function woodMakeLazyFrame (selector) {var observer; var options = {root: null, rootMargin: ‘0px’, threshold: 0,}; function handler (entries, observer) {entries.forEach (function (entry) {var ioR = entry.intersectionRatio; if (ioR> 0) { =; observer.unobserve ( entry .target);}}); } observer = new IntersectionObserver (manager, options); observe.observ (selector); } lazyFrames.each ((_, frame) => woodMakeLazyFrame (frame)); }); } (jQuery))