public override async Task DoWorkAsync(CancellationToken cancellationToken)
        {
            var inventoryItems = await _inventoryService.GetInventoryAsync();

            var cardsToSell = inventoryItems
                              .FilterByMarketable()
                              .FilterByCommodity()
                              .FilterByType(ItemType.TradingCard);

            _logger.LogDebug($"Filtered cards to sell: '{cardsToSell.Count}'");

            foreach (var card in cardsToSell)
            {
                _delayedExecutionPool.EnqueueTaskToPool(async() =>
                {
                    var price = await _marketService.GetItemPriceAsync(card);

                    if (price.LowestPrice == null && price.MedianPrice == null)
                    {
                        return;
                    }

                    var calculatedPrice = price.LowestPrice > PriceHelper.ExpensivePrice && price.LowestPrice < price.MedianPrice
                        ? PriceHelper.CalculateSellerPrice(price.LowestPrice, true)
                        : PriceHelper.CalculateSellerPrice(price.MedianPrice, true);

                    if (card.IsCardFoil())
                    {
                        _logger.LogInformation($"Sending foil '{card.MarketHashName}'. Cost '{calculatedPrice}', lowest price '{price.LowestPrice}', median price '{price.MedianPrice}'");
                    }

                    await _marketService.SellItemAsync(card, calculatedPrice);
                });
            }
        }