Method and system for securely managing inventory and profile information

The integrated inventory management system addresses data privacy and customer matching issues by using token-based access and semantic data matching, facilitating secure and efficient product recommendations across channels.

JP7750475B2Active Publication Date: 2025-10-07PREFERABLI INC
View PDF 10 Cites 0 Cited by

Patent Information

Application Number
JP2024083710
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2020-04-28
Filing Date
2024-05-23
Publication Date
2025-10-07
Estimated Expiration
2041-04-27

AI Technical Summary

Technical Problem

Existing inventory management systems fail to effectively match customers with inventory products and maintain data privacy across business entities, leading to inefficient data sharing and limited customer experience management.

Method used

An inventory management system that integrates consumer profile data with product information, allowing secure access and recommendation generation across channels while maintaining data privacy through token-based access control and semantic data matching.

Benefits of technology

Enables secure, efficient product recommendations and data sharing across channels, enhancing customer experience and inventory management without compromising privacy.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007750475000003
    Figure 0007750475000003
  • Figure 0007750475000004
    Figure 0007750475000004
  • Figure 0007750475000005
    Figure 0007750475000005
Patent Text Reader

Abstract

To provide methods and systems for inventory and customer relationship management systems that are used by producers, retailers and distributors of consumable items.SOLUTION: A system for secure management of inventory includes a product information data storage that holds product information associated with one or more channels, a consumer profile data storage for holding consumer-product interaction event information for each channel, and a channel manager user interface. The system receives, via the user interface, a consumer identifier from a channel manager user for a first channel, identifies products that are in an inventory of the first channel, and uses the consumer profile data to generate product recommendation information for products in the inventory. Among at least some of the consumers, and at least some of the products, only aggregate supplier information is shared across channels, and no personal information is shared when not authorized to access the personal information of the consumers.SELECTED DRAWING: Figure 4
Need to check novelty before this filing date? Find Prior Art

Description

[Technical Field]

[0001] CROSS-REFERENCE TO RELATED APPLICATIONS This patent application claims priority to U.S. Provisional Patent Application No. 63 / 016,413, filed April 28, 2020, the disclosure of which is incorporated herein by reference in its entirety. [Background technology]

[0002] This specification describes methods and systems for maintaining data protection in data management and distribution systems, and in particular for inventory and customer relationship management systems used by producers, retailers and distributors of consumable products.

[0003] Many inventory management systems are available to help product manufacturers, distributors, and retailers identify and manage inventory products at various locations. While these systems are useful for managing product receipt and storage, they are generally not useful for managing product delivery to actual or potential customers. For managing the customer experience, separate customer relationship management (CRM) systems are used. However, CRM systems typically only manage customer contact information and purchase history and cannot be used to match the right customers with inventory products.

[0004] Furthermore, CRM systems are typically limited to a single business entity or group of related business entities, such as a retail store chain, a hotel or other hospitality chain or group, or a restaurant chain or group. Due to privacy and data protection concerns, business entities such as retailers do not share CRM or product data with other retailers. Furthermore, when distributors and manufacturers provide supply chain-related data to business customers, they typically must create separate data sets for each customer, ensuring that each customer securely accesses only their own data and not data related to other customers. Thus, while CRM systems may be considered secure in that they keep a specific business entity's data within a firewall, they cannot fully share certain aspects of the data or form compelling connections between suppliers and customers while reasonably maintaining the privacy of the customers or businesses associated with the data.

[0005] For example, U.S. Patent Application Publication No. 2021 / 0012281, filed July 9, 2019, and published January 14, 2021, discloses an e-commerce order management method in which a merchant maintains an online store using multiple channels. The system uses an inventory database containing inventory information for multiple channels and locations. However, such a system requires each channel management program to clearly define the products in stock. While this maintains the security of the inventory data for each channel management program, it slows down data capture, requires a large amount of storage space to create channel-specific profile records for products handled by multiple channels, and prevents the system and users from utilizing non-confidential information that can be shared across multiple channels.

[0006] Furthermore, in an era where government regulations, health reasons (such as a pandemic), and safety concerns may limit consumers' ability to physically browse product inventory, technological solutions are needed to help suppliers identify products to recommend to consumers, especially when inventory is large and relying on individual memory to fulfill consumer orders is not practical.

[0007] SUMMARY OF THE INVENTION This specification describes an improved inventory control and customer relationship management (CRM) method and system that aims to solve at least the above-mentioned technical problems. Summary of the Invention [Means for solving the problem]

[0008] In various embodiments, an inventory management system is disclosed. The system includes an inventory management system including a processor and a computer-readable storage device having a product information data store. The product information data store includes inventory information for various products, each product associated with one or more channels. The system also includes a computer-readable storage device having a consumer profile data store. The consumer profile data store maintains interaction records between consumers and products, each record including consumer purchase information or other interaction event information and product rating information for one or more products. MultipleThe system also includes a computer-readable storage device containing programming instructions configured to cause a processor to generate and output a channel administrator user interface on a display device, the programming instructions causing the system to: (i) receive a consumer identifier from a user who is a channel administrator of a first channel; (ii) access the consumer profile data store to retrieve secured profile data for the consumer, the secured profile data having purchase records associated with a token corresponding to the first channel but not including any product interaction records associated with tokens corresponding to other channels; (iii) access the product information data store to identify products in inventory for the first channel; (iv) generate one or more product recommendation information for the consumer using consumer profile data including both the secured profile data and profile data associated with tokens corresponding to one or more other channels, the one or more product recommendation information being recommendations for one or more products in inventory; and (v) output the one or more product recommendation information on the display device.

[0009] In some embodiments, the programming instructions for outputting the secured profile data to the display device include instructions for displaying information for a plurality of products in a product interaction record for the consumer. For each product for which the consumer profile data store has a rating received from the consumer, the system can display the rating along with the product information. For products for which the consumer profile data store does not have a rating received from the consumer, the system generates a proxy rating for the unrated product and displays the proxy rating along with the unrated product information. can .

[0010] The system can generate the proxy rating using a function of the number of times the consumer has purchased the unrated product. Additionally or alternatively, the system can generate the proxy rating using the date the consumer purchased the unrated product. Additionally or alternatively, to generate the proxy rating, the system can access the product information data store to retrieve a plurality of feature values ​​for the unrated product and then determine whether the retrieved plurality of feature values ​​for the unrated product correspond to one or more preference indicators in the consumer's preference model, the preference model representing associations between the consumer's product ratings and a plurality of product features. Additionally or alternatively, to generate the proxy rating, the system can receive from a supplier an indicator (i.e., a digital signal) of the consumer's non-purchase interaction with the unrated product. If it is determined that the indicator indicates that the consumer has interacted with the unrated product, the system assigns a favorable proxy rating to the product.

[0011] In some embodiments, the system also includes additional programming instructions configured to cause the processor to generate and output a channel creation user interface on a display device. Through the channel creation user interface, the system receives product information for a plurality of inventory products from a user. For each inventory product for which the system receives product information, the system determines whether the inventory product is already stored in the product information data store. If the inventory product is not already stored in the product information data store, the system adds product information for the inventory product to the product information data store. If the inventory product is already stored in the product information data store, the system presents additional product information from the product information data store to the user for acceptance or modification, and upon receiving confirmation from the user, updates the product information data store to include product information for the inventory product and associates the inventory product with the first channel. To update the product information data store, the system adds a record for the inventory product to the product information data store. The record includes (i) a channel ID of the first channel and (ii) a mapping ID of a supplier associated with the first channel, where the mapping ID associates data elements in the record with data element fields in the product information data store. The system can also associate the inventory product with a landing page address for the inventory product on the website of the first channel.

[0012] In some embodiments, when receiving product information about the inventory products and determining whether the inventory product is in the product information data store, the system, for at least a first one of the inventory products, (i) causes a high-resolution camera to capture an image including the first product, (ii) defines a bounding box around a portion of the first product that includes a product representation, (iii) applies a recognition model to the image to extract the product representation from the portion of the image that is within the bounding box, and (iv) uses a classifier to determine whether the product information data store includes an inventory product having identification information that is likely to match the product representation.

[0013] In some embodiments, the system includes additional programming instructions configured to cause the processor to generate and output a customer preference manager. The system receives a consumer selection via the user interface via the customer preference manager. The system also receives one or more product selection criteria via the user interface. The system then uses the consumer profile data, including both the secured profile data and profile data associated with tokens corresponding to the one or more additional channels, to generate one or more product recommendations for the consumer. The one or more product recommendations relate to in-stock products that meet the selection criteria. The system then automatically generates a message for the consumer that includes the product recommendation and sends the message to the consumer.

[0014] In some embodiments, the system includes additional programming instructions configured to cause the processor to generate and output a customer selection manager. The system receives product selections via the user interface and accesses the consumer profile data to identify one or more consumers associated with the first channel through the customer selection manager. The system generates a predicted rating for a product for each of the identified consumers. The system selects a group of consumers from the identified consumers whose predicted rating exceeds a threshold. The system then automatically generates a message including information about the identified product for the group of consumers and sends the message to the group of consumers.

[0015] In some embodiments, the system, when generating one or more product recommendations for the consumer, determines that the consumer has requested products of a first product category. The system then identifies a second product category and uses one or more attributes of the requested products and the secured profile data to select one or more products of the second product category from the inventory. The system then includes the selected one or more products in the one or more product recommendations.

[0016] In some embodiments, the system identifies a channel ID for the first channel when accessing the product information data store to identify products in inventory for the first channel, and then retrieves from the product information data store product data records associated with the channel ID for the first channel while not retrieving any product data records associated with other channel IDs.

[0017] Optionally, to identify products in inventory for the first channel, the system identifies a channel ID of the first channel and retrieves from the product information data store product data records associated with the channel ID of the first channel, while not retrieving any product data records associated with other channel IDs.

[0018] Optionally, the channel manager user interface may include a channel collection user interface having one or more actuators whereby the system may receive from a user a definition of the first channel, the definition having one or more retailer locations. The system may also receive a definition of a collection of products available from the first channel, the definition of the collection of products comprising product description information received from a product description field and one or more access restrictions for the collection of products.

[0019] Optionally, the system may also receive inventory information for products handled via data feeds from each of a plurality of suppliers. The system may update the product information data store to include the extracted inventory information for each product associated with the supplier in the product information data store. The system may extract the inventory information from each data feed by mapping each of a plurality of data fields in the data feed to a predefined field mapping that matches a system field in the product information data store using semantic synonyms. The system may then extract data from each of the mapped data fields and store the extracted data in the matching system field.

[0020] In another embodiment, an inventory management system includes a processor and a computer-readable storage device having a product information data store containing inventory information for multiple products, each product associated with one or more channels. The system also includes a computer-readable storage device containing programming instructions configured to cause the processor to generate and output a channel administrator user interface on a display device. The programming instructions cause the system to receive data regarding a new product listing for a first consumable product from a user who is a channel administrator of a first channel via the channel administrator user interface. Upon receiving the data, the system searches the product information data store for candidate products having associated data that semantically matches the data regarding the new product listing. Upon identifying candidate products having associated data that semantically matches the data regarding the new product listing, the system automatically populates the new product listing with data regarding the candidate products. Next, if the system receives approval or correction for the new product listing from the user who is the channel administrator, the system stores the new product listing together with the data regarding the candidate products in the product information data store. The stored data includes a platform ID for the associated data of the candidate products and a channel ID for the first channel.

[0021] Optionally, the system also, upon receiving a query from a user who is the channel administrator of the first channel via the channel administrator user interface, (i) identifies a channel ID of the first channel, and (ii) retrieves from the product information data store product data records that are responsive to the query and associated with the channel ID of the first channel, but not with product data records associated with other channel IDs.

[0022] Optionally, the system may receive updated inventory information for various products via data feeds from suppliers. In this case, the system may use semantic analysis to extract the updated inventory information from each data feed. The system may use the supplier's mapping ID to identify product data records for products with the updated inventory information. The system then updates the identified product data records in the product information data store to include the updated inventory information. To extract the updated inventory information from each data feed using the semantic analysis, the system may use semantic synonyms to map each of a plurality of data fields in the data feed to a predefined field mapping that matches a system field in the product information data store.

[0023] In another embodiment, an inventory management system for consumables includes a processor and a computer-readable storage device having a product information data store. The product information data store contains inventory information for various products, each product associated with one or more channels. The system also includes a computer-readable storage device having a consumer profile data store, which stores consumer purchase records or other product interaction records for one or more products and holds consumer and product interaction events, each event associated with one of the channels. The system in this embodiment also includes a computer-readable storage device containing programming instructions configured to cause the processor to generate and output a channel manager user interface on a display device. The channel manager user interface is an interface through which the system receives data related to a new product list for a first consumable for a first channel. The system searches the product information data store for candidate products having associated data that semantically matches the data related to the new product list. Upon identifying a candidate product having associated data that semantically matches the data related to the new product list, the system automatically populates the new product list with data related to the candidate product. If the system receives approval or correction for the new product listing, it stores the data in the product information data storage device. The stored data includes the platform ID of the candidate product's associated data and the channel ID of the first channel. Next, if the system receives a consumer identifier from a user who is a channel administrator for the first channel, the system accesses the consumer profile data storage device to retrieve protected profile data for the consumer. In the retrieving step, only purchase records associated with tokens corresponding to the first channel are accessed, and any purchase records associated with tokens corresponding to other channels are excluded. Next, the system accesses the product information data storage device to identify products in inventory for the first channel.The system uses consumer profile data, including both the secured profile data and profile data associated with tokens corresponding to one or more other channels, to generate one or more product recommendations for the consumer, the one or more product recommendations being recommendations for one or more products in the inventory, and outputting the one or more product recommendations on the display device. [Brief explanation of the drawings]

[0024] [Figure 1] FIG. 1 illustrates exemplary components of a system for providing secure access to and distributing inventory and profile information. [Figure 2] Figure 2 shows the channel creation user interface. [Figure 3A] 3A and 3B show the association of product data in a channel to data fields defined by the platform. [Figure 3B] 3A and 3B show the association of product data in a channel to data fields defined by the platform. [Figure 4] FIG. 4 shows an exemplary encoding scheme for products in a product database. [Figure 5] FIG. 5 shows the channel collection user interface. [Figure 6] FIG. 6 shows the channel administrator user interface. [Figure 7] FIG. 7 illustrates a data structure that allows the system to securely separate protected profile data in a particular channel from profile data in another channel. [Figure 8] FIG. 8 illustrates a first element of an exemplary campaign administrator user interface. [Figure 9]FIG. 9 illustrates a second element of an exemplary campaign administrator user interface. [Figure 10] FIG. 10 illustrates an exemplary public relations manager user interface. [Figure 11] Figure 11 shows product information extracted from supplier inventory data feeds and stored in a structured dataset. [Figure 12] FIG. 12 illustrates an optional feature in the channel creation process that uses image recognition to update inventory and / or identify stock products. [Figure 13] FIG. 13 illustrates exemplary hardware that may be incorporated into the various elements of the system. DETAILED DESCRIPTION OF THE INVENTION

[0025] As used herein, the singular forms "a," "an," and "the" include the plural forms unless the context clearly dictates otherwise. All technical and scientific terms used herein have the same meaning as commonly understood by one of ordinary skill in the art unless otherwise defined. As used herein, the term "comprising" (or "comprises") means "including (or includes), but is not limited to." As used herein, the term "exemplary" is intended to mean "by way of example" and is not intended to indicate that any particular exemplary item is preferred or required.

[0026] As used herein, when terms such as "first" and "second" are used to modify a noun, they are intended merely to distinguish one item from another and are not intended to require ordering unless otherwise specified. When the term "about" is used in connection with a given numerical value, it is intended to include values ​​that are close to, but not identical to, that numerical value. For example, in some embodiments, the term "about" can include values ​​within ±10% of the numerical value.

[0027] Additional terms relevant to this disclosure are defined at the end of this detailed description.

[0028] FIG. 1 illustrates exemplary components of a system for providing secure access to and distributing inventory and profile information in a product management and distribution system.

[0029] A server 101, including one or more central or distributed computing devices, includes or has access to a consumer profile data store 102 and a product information data store 103. Any number of product supplier electronic devices 111a...111n can provide product information to the server 101 via one or more communication networks 141, 142. The product supplier electronic devices are electronic devices operated by product suppliers in the supply chain, such as retailers, restaurants or bars, hotels, other types of hospitality service providers, importers, distributors, or producers of the product. For example, if the product is wine, spirits, or other beverages, the product supplier may provide product-specific information to the central server, such as the product name, category, type, maturity (i.e., vintage), an identification code such as a stock-keeping unit (SKU) number or a vendor-specific code (such as the ASIN code used by Amazon.com), a suggested retail price, and / or other information. Some of the supplier's electronic devices, and in particular mobile devices such as mobile phones, tablet computing devices, or electronic scanning devices, may be equipped with high-resolution cameras for capturing product images, as described in more detail below.

[0030] One or more consumer electronic devices 121a...121n may also access the server 101 via one or more communication networks 141, 142. A consumer electronic device may, in some circumstances, be a device used by the actual product consumer. In other circumstances, the "consumer" may be an entity between the end consumer and an upstream supplier in the supply chain. Thus, some electronic devices (such as those used by retailers) may be considered both consumer electronic devices and supplier electronic devices, with the designation at a given time changing depending on whether the device is being used to provide information or to request information. This is discussed in more detail below.

[0031] The server 101 can associate consumer, supplier, and product information with one or more channels 161a-161n. A channel is a dedicated communications portal where a specified set of information is available for a particular subgroup, such as a particular supplier, one or more specific retail or distribution locations, a specific inventory or warehouse location, or any grouping thereof. For example, a channel may provide access to data elements for a particular retailer, a group of affiliated retailers, or products supplied by a particular supplier. Each channel is securely protected by a public and private key, and a user (whether consumer or supplier) must present a private key recognized by the channel to access the channel. Each user has a profile that establishes an account, and each account is associated with one or more channels. Then, when a user securely accesses the system, they receive access only to the channels to which they are authorized, and the system provides the user with access only to the data associated with those channels and not to data in other channels.

[0032] In addition to associating accounts with channels, different users may be granted different sets of privileges. For example, some users may be granted the right to edit and add data, such as inventory data or product descriptions, to the system, while other users may not be granted such rights. Furthermore, each user's access rights to certain classes of data may be limited to prevent users from accessing other users' personal data. For example, one supplier may not be granted access to another supplier's inventory, consumer-product interaction data or other consumer information, or sales data, and no consumer may be granted access to another consumer's profile data. To accomplish this, data elements are associated with one or more classes, and each class may be regulated by any suitable access control protocol. For example, a user's electronic device may present an authentication token to the system when initially accessing and / or making a request to the system. An example of such a token is an encrypted hash unique to the user's account and the duration of access. The system may process the token using any suitable authentication process based on the token, decrypting and validating the token. Only if the system can validate the token is the user granted access to one or more specific data elements, data classes, features, or services. This helps maintain the privacy of the entity from which each data element originates.

[0033] To associate data with channels, when storing data in the consumer profile data store 102 or the product information data store 103, the system may tag or associate each data element for each product with an identifier (ID) that indicates the channel or channels to which the data belongs. The data in the consumer profile data store 102 may include consumer-product interaction records for each profiled consumer, such as purchase records (e.g., product ID, quantity purchased, purchase date), along with consumer ratings for various products. The data in the product information data store 103 may include, for example, features and characteristics of products in a database, along with consumer ratings for the products. Methods for collecting and associating such information with products and consumers are described in U.S. Patent Nos. 8,838,517 and 9,026,484 to Dillon et al., entitled "Personal Taste Assessment System." The disclosures of U.S. Patent Nos. 8,838,517 and 9,026,484 are incorporated herein by reference in their entireties.

[0034] To associate data with a channel, the system can provide a channel creation user interface that allows a user acting on behalf of a supplier to select products to associate with one or more channels.

[0035] FIG. 2 illustrates a channel creation user interface through which a product supplier can associate products with a channel. This user interface may include data entry fields 201 for a user to enter product information, such as product name, supplier, brewing year, and type, for products in the supplier's inventory or planned for addition to the supplier's inventory. Alternatively, or in addition to manual data entry, the system may automatically capture product information via a data feed, as described in more detail below with reference to FIGS. 3 and 11. For example, the system may receive an electronic feed of product information from the supplier on a daily or periodic basis. The system may also capture this data into a database independent of the inventory management used by the supplier. For example, the system may obtain or receive a data feed in JavaScript Object Notation (JSON), Extensible Markup Language (XML), or other format from the supplier and use semantic analysis to extract information from the data feed relevant to the system's product information fields.

[0036] Once any field is completed, the system searches its product database for candidate products with associated data that semantically matches the product entered in the field.

[0037] Optionally, the data entry fields may include a supplier product code field and a product description field, among others. The supplier begins by entering a value in any field. When the supplier enters a value in the product code field, the system accesses the product database to determine whether the supplier has already associated a product with that code. If so, the system automatically populates other fields with data retrieved from the database for that product, such as the product description. Similarly, when the supplier enters a value in the product description field (such as a UPC code or product name), the system accesses the product database to determine whether there is a product that matches that description. If there is a match, the system populates other fields with the best-matching data, such as the product description, retrieved from the database. The supplier can then add or modify any missing information and select the "Validate" function when complete. Once validated, the system updates the product database by adding or deleting data elements that should be associated with the product.

[0038] Returning to Figure 2, in addition to the closest matching product, the system may also retrieve alternative potential matches and present candidate products to the user in candidate product details field 202. The user may select one of the candidate products by activating a selector, in which case the product is then added to the supplier's channel, at which point the supplier may add price and / or other information.

[0039] 3 illustrates an aspect in which the system associates a channel's products with channel-specific external information. For example, a supplier ID 301 for a product's data entry may be associated with a landing page address 302, such as the product's uniform resource locator (URL), on the supplier's website where the channel was created. In such an aspect, when a product is presented to a user authorized to access a particular channel, the system can present specific information published by the channel's supplier (e.g., pricing information, availability information, description, etc.) without actually having to retrieve, store, and associate it with the product or channel.

[0040] FIG. 4 illustrates how product data elements in a product database are encoded to enable rapid access to product data associated with a channel. When a user (e.g., a supplier representative or a consumer) is connected to a particular channel, that channel provides access to data elements common to all channels as well as data elements associated with that particular channel. For example, a user subscribing to a particular retailer's channel 401 can view only pricing information 411 and inventory information 421 (e.g., available units) for products carried by that supplier. A user subscribing to another channel 402 will view a different set of pricing information 412 and inventory information 422. A user subscribing to yet another channel 403 will view yet another set of pricing information 413 and inventory information 423. Various channels may be associated with different suppliers, and / or a single supplier may have multiple channels (e.g., each channel associated with a supplier subcategory, such as a unique store location). Each channel may also provide access only to consumer purchase history information 431, 432, 433, which contains purchase records of consumers who acquired products from the supplier or subcategory to which the channel applies. Consumer purchase history information may be included as part of or in addition to the data sets of consumer and product interaction records 441, 442, 443, including information such as records of other interactions consumers have with various products, such as searches that include the product name, number of visits to a product listing, number of clicks on a product hyperlink on a website or store app, store ratings or ratings of events where the product was presented, or other details describing the consumer's interaction with the product.

[0041] If a supplier has multiple channels, the system can optionally also include records from users who subscribe to the same channel. Furthermore, a single channel can have various subscribers assigned different access rights, so that subscribers can access only the data that they are authorized to see within the channel. For example, to maintain the privacy of consumer information, some users may have access to inventory information, while a more restricted set of users may have access to customer purchasing information. Access control may be implemented by access control lists or other suitable security structures.

[0042] Optionally, the system's central database may collect and / or link data contained in each channel's database. For example, a product associated with a unique product identifier may be stored in association with the channel identifier and, optionally, in association with the URL of a landing page on the channel's website where details about the product are posted. Each product has a unique identifier maintained by the system as a whole, and each channel may assign the product an ID (e.g., SKU), with the central server storing both IDs. To provide flexibility in data entry and avoid the need for users to enter exact matching information for every data element, the system allows users to enter inventory items into the system using various descriptive fields, such as UPC codes or other identifiers, product names, or other information. Once the system receives one or more data points that match an item in the system's database, it may present the remaining data points to the user as candidate information that the user can accept or reject. The system ultimately requests confirmation from the user if all data is correct, and this confirmation is saved in the database along with the data.

[0043] When the system receives product ratings from consumers (as described by way of example in the prior art systems mentioned above), it associates the rating information with the product, but this information is only available to the appropriate supplier via a particular channel. Optionally, the system may aggregate rating information from multiple consumers within a single channel or across multiple channels on the platform. Optionally, the system may include third-party rating information, such as expert ratings or expert tasting notes. One or more administrators or other persons with master authentication information can access product rating data from all channels using processes such as those described in the prior art documents mentioned above.

[0044] In addition to channel-specific information, some common information 451 may be made available to all channels. Such common information may be general product information stored in memory, such as product identification codes 452, product identification information such as product descriptions (such as supplier name, brand name, product category, year of production, etc.) 453, and / or images 454, such as product label images, that include product identification information. Such common information may also be non-personally identifiable and / or aggregate data provided by users of the system, such as collective product ratings 455, rankings of overall best-selling products available from multiple suppliers 456, etc.

[0045] FIG. 5 illustrates a channel collection user interface 501 that allows a user, such as a retailer or other supplier, to create a channel-specific product collection. Prior to arriving at this interface, or as part of this interface, a user or administrator can define a channel to include a single retail location (e.g., a store or restaurant) or a collection of locations. A single user may access and manage multiple channels. For example, an administrator of multiple restaurants may define one channel for the entire group and additional, individual channels for each restaurant in the group. Other users may be given the opportunity to access a channel by passing a secure authentication token to the user, who may then receive the secure authentication token when the user requests access to the channel.

[0046] The channel collection user interface 501 may include actuators that allow a user to define a collection of products that a consumer may purchase through the channel and / or from suppliers associated with the channel. The system may also include one or more product description fields 502 that allow suppliers to provide product information for in-stock products and define the characteristics of each product (retrieved from a product database) to display to consumers accessing the channel. The product information may also include details that may or may not be displayed to the consumer, such as the actual inventory quantity of the product that the channel currently has in stock. Optionally, before reaching this field, the system may provide the user with the ability to identify the products in stock through an automated label or package definition process, as described in more detail below in the discussion of FIG. 12. Optionally, the system may include a privacy definition field 503 for suppliers to define access restrictions for the collection, such as by limiting access to the supplier's inventory information to consumers who present a code, by allowing the collection to be viewed only during certain times and / or when the consumer's device is in a certain location indicated by global positioning system or other location sensor data (such as a private or time-limited event), or by removing the access restrictions and making the collection public. Thereafter, when a consumer logs into a channel, they are given access only to information about products they have purchased and / or that are available from the channel's suppliers. This allows information from other channels to be securely shielded from consumers, without disrupting their experience by viewing products that are not available from that channel when they log into that channel.

[0047] Channel creators can use the system to create recommendations and manage profiles for associated consumers. Figure 6 shows a channel administrator user interface 601 through which a channel administrator accesses consumer profiles 602 of consumers who subscribe to a channel and uses the profiles to generate product recommendations for the consumers. The consumer profile includes identifiers 603 of products the consumer has previously purchased and, optionally, ratings 604 if the consumer has rated those products. The system stores all purchase information from all channels in the consumer's profile. Optionally, a particular channel administrator may be presented with protected profile information, i.e., only information about the consumer's purchases from suppliers in that channel, but not from suppliers in other channels. Each purchase record in a consumer's profile includes a token corresponding to the channel and / or supplier where the purchase was made, which can be used to select products to recommend to the consumer for that particular channel. This helps ensure data security and protect the privacy of individual consumers and other suppliers by limiting the channel administrator's access to details of a consumer's interactions with suppliers in that particular channel, rather than interactions with suppliers in third-party channels. The system does this by associating a channel identifier with each purchase in a consumer profile, and when extracting data from the consumer profile and presenting it to a particular channel manager, it does this only for data points associated with the associated channel identifier, along with data designated as common (or public) information.

[0048] However, when generating product recommendation information (defined below), the system may consider all data in the consumer profile, including protected profile information and information from other channels, regardless of the channel with which the data is associated. To maintain consumer privacy when making recommendations, the system may not provide the considered consumer profile information and / or consumer-specific digital signal to the channel administrator. Instead, the system provides only the results of the recommendation process to the channel administrator.

[0049] If a consumer does not provide the system with a rating for a particular purchased product, the system may optionally generate a proxy rating 605 for that product. The system may present the proxy rating 605 in a manner that is visually distinguishable from the actual consumer rating 604, such as by a different color, a different icon, or other different identifier. The system may apply any suitable set of rules to generate the proxy ratings. For example, the system may automatically assign a proxy rating of "like" to products that the consumer has purchased or that the consumer has purchased a minimum number of times, such as at least two times (for purposes of this description, a four-level rating scheme of "love," "like," "so-so," and "dislike" is used, but other rating schemes, such as numerical and / or letter ratings with any number of levels, may be used). As another example, the system may automatically assign a proxy rating of "love" to any product that the consumer has purchased at least a threshold number of times (e.g., three times) (optionally within a predetermined time period). Thus, the system may also take purchase date into account when generating the proxy ratings, for example, by assigning a "like" rating if the consumer purchased the product within a recent time frame and a "dislike" or mediocre rating if the consumer purchased the product before a minimum time and has not repurchased the product. Alternatively, the system may generate a predicted rating using other ratings received from consumers for other products and characteristics of those products and the purchased products, such as by a process such as that described in U.S. Pat. No. 9,046,484 (the entire disclosure of which is incorporated herein by reference). In another embodiment, the system can generate a proxy rating using other data received from the supplier corresponding to the customer's non-purchase-related interactions. Examples of non-purchase interaction information include a customer's search or bid history data received by the supplier on the supplier's web platform or dedicated application. If the supplier's data indicates that a customer searched for or bid on a product, the system can assign a favorable proxy rating (e.g., "like") to that product in the customer's profile, even if the customer did not actually purchase or rate the product. Furthermore, the system can assign a degree of attractiveness to the product (e.g., "love" vs. "like," or a numerical measure of attractiveness) depending on the nature of the customer interaction. For example, if a consumer bids on a product but does not win, a relatively high degree of attractiveness (e.g., "love" rather than "like") may be displayed. In this way, virtually any digital signal can be considered when relevant to a proxy rating.In each case, the system optionally requires that the digital signal (i.e., an unrated product interaction) occurred within a threshold period, so that the signal is a true proxy rating, rather than a past one that may indicate that the consumer tried the product previously but did not like it enough to repurchase. In some embodiments, the system allows channel administrators to define or modify proxy rating rules.

[0050] The consumer profile 602 page of the channel administrator user interface 601 includes a product recommendation window, which allows users to access product-specific information, such as specific ratings of products purchased by the consumer from a channel 610, optionally categorized by product category, as shown in FIG. 6 . The product recommendation window may also include a tab for receiving product recommendations 611 for products in the channel's inventory that the consumer is likely to prefer. For example, if the system receives a product request from a channel and the channel's inventory data indicates that the product is in limited supply or unavailable, the system can recommend alternative products that (a) have similar attributes to the requested product and (b) are in stock. The system can also start with the requested product (which may be considered a "baseline" product) and recommend alternative products with similar or complementary attributes, or alternative products with some attributes similar to the base product and other attributes that the consumer's profile indicates are preferred, even if the base product is in the channel's inventory. This functionality allows consumers who are unable to physically browse inventory to be offered the opportunity to try products they would not have selected if they had not happened to discover them while browsing in a physical store. The products may be in a similar category (e.g., different types of wine) or in a different category (e.g., wine and food pairings). For example, if a consumer selects a particular food item, the system can recommend a wine that pairs well with that food. If the consumer accepts the recommended wine, the system may recommend another food item that the consumer can enjoy with that wine at their next meal. This process helps suppliers introduce new products to consumers. It also helps consumers discover new products they would not have thought to inquire about, even if they cannot access a supplier's physical store due to distance issues or other physical constraints.

[0051] The system can select and recommend products by processes such as those described in US Pat. Nos. 8,838,517 and 10,127,598, the disclosures of which are incorporated herein by reference in their entireties.

[0052] Additionally, the product recommendation window may include a tab for receiving requests for predictive ratings 612 for products in the channel's inventory to identify whether a consumer is likely to like a particular product. The system can predict consumer preferences for specified products by processes such as those described in U.S. Pat. No. 9,046,484 (the entire disclosure of which is incorporated herein by reference).

[0053] Figure 7 shows a data structure that allows the system to securely separate protected profile data for a particular channel from profile data for other channels. Figure 7 shows consumer profile records, each of which includes a channel profile ID 701 and a contact address 702 (e.g., email or mobile phone number) for each user. Some consumers may have multiple profiles, and each profile may be associated with a different channel. However, if the system identifies a consumer as belonging to multiple channels, it generates a unified profile ID 703 for the consumer. The unified profile ID 703 is known to the system and / or system administrator, but not to the individual channels. The system then uses the consumer's unified profile ID 703 to access all of the consumer's profiles (individual profiles for each ID, or the unified profile) and generate product recommendation information for the consumer. However, no profile information about the consumer other than the information the system receives through the channels is provided to the channels. When a consumer chooses to create a profile on the system and self-identifies the channels to which they subscribe, it becomes known to the system that a single consumer is associated with multiple channels. Additionally or alternatively, the system may identify consumers based on profile data (such as email address, phone number, name, and location) and automatically generate an integrated profile if two consumer profile entries contain common identifying data for the consumer.

[0054] FIG. 8 shows exemplary elements of a customer selection user interface 801 through which a channel administrator can select customers who should receive communications, such as a product information campaign, and identify products to sell to the customers through the campaign. This interface includes a customer selection field 802 that allows the channel administrator to select customers from among those who have profiles associated with the channel. The customer selection field may allow free-form entry of data, may be a search field, or may be a drop-down or other field that allows user input. The system then uses the consumer profile information to search a product database for products that are in stock at the channel and that the consumer is likely to like. Selections may be either (a) products for which the consumer has provided ratings indicating their preference, or (b) products that the system predicts the consumer will likely like using preference prediction methods such as those described above. The system then presents candidate products in a product selection field 804. Optionally, the system may include a filter field 803 in which the channel administrator can provide one or more criteria for limiting the products recommended by the system; if such criteria are received, the system limits the recommendations to products that meet the criteria. For example, such criteria may be product groups, price ranges, inventory levels, or other criteria.

[0055] FIG. 9 shows another element of a customer selection user interface 901 through which a channel manager selects customers who should receive communications, such as a product information campaign. In this example, instead of selecting customers, the channel manager selects a product that will be the subject of the campaign. The interface includes a product selection field 902 through which the channel manager can select a product that will be the topic of the campaign. The system then uses the product information for the product and profile information of consumers associated with the channel to identify either (a) consumers who have provided ratings indicating that they like the product, or (b) consumers that the system predicts, using preference prediction methods such as those described above, are likely to rate the product above a threshold (i.e., are expected to like the product). The system includes a candidate consumer suggestion field 903 for presenting the identified consumers to the channel manager. Optionally, the system can rank and present the identified consumers, for example, by first presenting consumers known to like the product, and then presenting consumers likely to enjoy the product in descending order of predicted preference ratings.

[0056] Figure 10 shows a public relations campaign manager user interface 1001. Through this interface, a channel manager can deploy communications to consumers identified through the processes described above in connection with the descriptions of Figures 8 and 9. On this interface, the channel manager can select consumers to receive personalized marketing campaigns. The channel manager may provide template information for the communications, and the system then populates this template with the results of the processes described above (such as the personalized product recommendation process of Figure 8). The system then interfaces with an electronic message campaign manager via an application programming interface (API) or other suitable connection to pass information to consumers.

[0057] As discussed above in the description of FIG. 2, the system can automatically ingest product information via data feeds. For example, the system can receive daily or periodic electronic feeds of product information from various retailers or other suppliers. For example, the system can read or receive a JSON, XML, or other formatted data feed from each supplier and use semantic analysis to extract information from this feed that is relevant to the system's product information fields. The data feeds may include information such as inventory counts of products that a supplier actually holds in stock. Alternatively, or in addition, a particular supplier's data feed may include information about products ordered by the supplier or products that are in production and therefore expected to be in stock soon.

[0058] To effectively process, handle, and integrate supplier inventory, customer data, and transaction data into the platform, the system can streamline disparate data formats and organizational structures. It is impractical to require suppliers to change their business practices, nor is it efficient to require manual intervention to adapt all of the supplier's different data formats to the system's structure. Therefore, the system can ingest data into the database regardless of the supplier's inventory management system by using semantic analysis to identify data fields that semantically match data fields in the system's product database and storing the values ​​of those fields in the product information database. Any suitable semantic matching algorithm can be used, such as Wordnet, a system using the S-match framework, or any of a variety of string-based matchers. This allows the system to ingest data into a consistent data structure regardless of the format or system in which it is received. The system can also consider symbols, such as numeric representations (e.g., mapping IDs or product IDs), instead of words. When the term "semantic" is used in the context of semantic similarity, it is intended to include the symbolic similarity discussed above. The words or symbols to be matched can be received via text input from a user, a data feed, or extracted from an image via a label recognition process as described below in the description of FIG.

[0059] To this end, the system performs a series of processing steps that allow different data formats to be manipulated and streamlined into a standardized format. Ultimately, all data is represented in a relational database, where data values ​​reside in row-column pairs, and can then be reorganized into matrices similar to a spreadsheet grid. Each column (or row) in the matrix represents a different field of the related transaction, customer, or product (as the case may be).

[0060] To facilitate this process, the system assigns one or more "mapping IDs" to each product as it is added to the database. A mapping ID is a string (e.g., a numeric or alphanumeric string) that correlates fields in a particular merchant, retailer, or other supplier's product data feed to fields known to the system as part of the system's data structure. This is illustrated by way of example in FIG. 3, where five products with different supplier IDs 301 are listed in five rows of the data set. Each product may also have a supplier ID 301 field value that uniquely associates the product with a particular supplier. In this example, two of the listed products are two variants of the same product (as indicated by the product name attribute 312 field) and therefore share a common platform ID 308. Additionally, each data entry includes a mapping ID 307, an identifier that maps supplier-specific data fields to platform data fields. Each channel ID 309 attribute indicates that two of the products are associated with one channel, while the third product is connected to a different channel.

[0061] Using the mapping ID 307, the system can quickly generate a supplier-specific product dataset and enter that data into the system database once it identifies a group of mapping IDs for a particular supplier. In this manner, a supplier is granted access to its mapping ID-specific product dataset without receiving access to data not associated with the mapping ID (such as pricing or inventory data from another supplier for the same product). For example, the data field shown in FIG. 3 is the product name attribute 312. The system has a standard data field for the product name attribute, which in this example is the first list of suppliers for channel "714," with the supplier's unique identifier for the product mapped to the mapping ID value "20" and corresponding product attributes (e.g., product name, website URL, etc.) mapped to each field. Data streams from multiple suppliers can use the mapping ID value "20" to represent the independent, unique identifiers of multiple suppliers, even if the products share the same product attributes. In some situations, specific suppliers may have a shared unique identifier that can be mapped to a specific mapping ID. In the example shown in Figure 3, the supplier on channel "2" has a unique product name attribute field that the system associates with a mapping ID value of "400," which is shared with other suppliers as a shared unique ID. This allows the system to automatically match the supplier's products using that unique ID with the product match from the supplier on channel "2." In Figure 3, channel "714," mapping ID value "20," indicates that the unique ID used by the system for the supplier on that channel should only be used by that supplier. Other data element fields in each channel's data stream can be associated with different mapping IDs, allowing the system to associate each data element in the data stream with the appropriate system data field or fields.

[0062] Similarly, the use of Channel ID 309 allows the system, once it has identified the Channel ID to which a particular user subscribes, to access the product information data store to generate a dataset of product listings within that channel and provide that information to the user, while suppressing the provision of any information for other channels to which the user does not subscribe. The use of Platform ID 308 allows a system operator to use the Product ID to search and retrieve all data associated with a particular product. This data may include multiple entries for products from multiple suppliers and / or multiple channels.

[0063] Using semantic synonyms, suppliers can map specified fields (columns) to one of the system's predefined field mappings associated with the applicable data category. For example, a supplier can establish in a data feed configuration that a supplier field called "customer email" is equal to the system's data mapping ID "203" ("merchant_user_email"). By creating a mapping from data feed fields to system fields, the system knows that when it reads a data element with a parameter header of "customer email," it should be mapped to "merchant_user_email" in the system.

[0064] When data is provided by a supplier in CSV (comma separated values) or "spreadsheet file" format, the data exists in a two-dimensional row / column structure and can be easily broken down into corresponding values ​​for each row / column key pair combination.

[0065] However, as is more common in internet-based data feeds, data is often formatted as JSON or XML. JSON and XML (extensible markup languages) allow for more complex data structures, such as embedding arrays of objects within arbitrary data objects, or arrays of objects within arrays of objects. This results in "multi-dimensional" structures that need to be decomposed or flattened before being converted into two-dimensional data structures like matrices.

[0066] For example, as shown below, one supplier's transaction history is organized by date, with each product sold on each date represented by a separate row.

[0067] [Table 1]

[0068] This data can easily be represented as a simple matrix of rows and columns. However, other suppliers may group transactions by customer and represent products purchased on a particular day in an array, as shown below:

[0069] [Table 2]

[0070] In this example, under the parent object "Customer," there is an array of objects representing individual transactions and the products the customer purchased. Any child objects may also have arrays, with Transaction 1 having multiple products under it. To convert this structure into a two-dimensional matrix, decomposition and flattening are performed. First, the system duplicates the parent object "n" times, "decomposing" it once each time to create a row. Then, the system copies the child elements into the newly decomposed parent and "flattens" it. In the simple example above, a row for another ABC customer (with corresponding product 23456) is created in Transaction 2 and flattened into another row of parent ABC, resulting in three rows. Rows can link matrix cells containing data points related to a particular product. For complex arrays with multiple subarrays, this can be a highly iterative process. By providing a mechanism for suppliers to pre-establish the relevance (or non-relevance) of each data element in a data feed structure for ingestion into inventory, customer lists, or transaction histories, the system can automate the data ingestion process and automatically iterate through the data structure.

[0071] Additionally, including certain "unique" identifier types (i.e., unique product ID, unique customer ID, etc.) within data element fields allows future captures to automatically assign products and customers previously matched by one capture.

[0072] An example of product information extracted from such a feed and stored in a structured dataset is shown in Figure 11. Depending on the situation, when extracting data, the system may decide whether the data to store is hierarchical (i.e., an array with three or more dimensions) or flat (two-dimensional). When the system receives data for a new product that does not exist in the database, it creates a new entry for that product using the mapping IDs assigned to the product's supplier channel and stores the product's data elements in the system fields that correspond to those mapping IDs.

[0073] FIG. 12 illustrates potential functionality for a system to receive product information for a product. For example, the functionality illustrated in FIG. 12 may be used to initially receive product information in the process of FIG. 5, which may then be used to define channel inventory, create channels, or create campaigns for individual products. As illustrated in FIG. 12, a high-resolution camera on a user device captures an image 1201 containing one or more products 1205. The system defines a bounding box 1202 around a portion of one of the products 1205 that contains a label or other product indicia. This bounding box may be manually defined by the user, automatically determined by an image processing system using an edge detector and / or classifier, or a combination of the two processes in which the system suggests a bounding box and the user modifies or accepts the suggestion. The system then applies a recognition model to the image to extract product indicia (i.e., product identification information such as a product name, logo, barcode, or other identification information) from portions of the image that are within the bounding box and contain labels or other product indicia. The system then accesses the product information data store and searches the store using the classifier to determine whether the product information data store contains an inventory product having identification information that likely matches the product description of the first product. The recognition model and classifier may be stored in memory of any of the electronic devices shown in FIG. 1. Any suitable image recognition model may be used, such as very deep convolutional networks for large-scale image recognition known as the VGG-16 model and the ResNet50 model. Also, various known classifiers using convolutional neural networks may be used, including, but not limited to, ImageNet.

[0074] FIG. 13 illustrates an example of the internal hardware contained in any of the system's electronic components, such as a user's smartphone or a local or remote computing device within the system. An electrical bus 1300 serves as an information highway interconnecting the other illustrated components of the hardware. Processor 1305 is the system's central processing unit and is configured to perform the calculations and logical operations necessary to execute programming instructions. As used herein and in the claims, the terms "processor" and "processing device" refer to any number of processors, either a single processor or a series of processors, that collectively perform a series of operations, such as a central processing unit (CPU), a graphics processing unit (GPU), a remote server, or a combination thereof. Read-only memory (ROM), random access memory (RAM), flash memory, hard drives, and other devices capable of storing electronic data constitute examples of storage device 1325. Storage device may include a single device or a collection of devices on which data and / or instructions are stored.

[0075] An optional display interface 1330 allows information from the bus 1300 to be displayed in visual, graphical, or alphanumeric form on a display device 1335. An audio interface and audio output (e.g., a speaker) may also be provided. Communication with external devices may occur using various communication devices 1340, such as wireless antennas, radio frequency identification (RFID) tags, and / or short-range or near-field communication transceivers, each of which may optionally be communicatively coupled to other components of the device via one or more communication systems. The communication devices 1340 may be configured to be communicatively coupled to a communication network, such as the Internet, a local area network, or a cellular data network.

[0076] The hardware may also include user interface sensors 1345 that allow for receiving data from input devices 1350, such as a keyboard, mouse, joystick, touchscreen, touchpad, remote control, pointing device, and / or microphone. It may also receive digital image frames from a camera 1320 capable of capturing video and / or still images, such as a high-resolution camera integrated into any of the user electronic devices of FIG. 1. The system may also include a position sensor 1380 and / or a motion sensor 1370 for detecting the position and movement of the device. Examples of a motion sensor 1370 include a gyroscope or accelerometer. Examples of a position sensor 1380 include a global positioning system (GPS) sensor device that receives location data from an external GPS network.

[0077] Terms relevant to this disclosure include the following:

[0078] As used herein, the term "connected," when referring to two physical structures, means that the two physical structures are in contact with each other. Connected devices may be fixed to each other, or may simply be in contact with each other but not fixed to each other.

[0079] As used herein, the term "electrically connected," when referring to two electrical components, means that a conductive path exists between the two components, which may be a direct path or an indirect path through one or more intermediate components.

[0080] An "electronic device" or "computing device" refers to a device or system that includes a processor and memory. Each device may have its own processor and / or memory, or the processor and / or memory may be shared with other devices, such as in a virtual machine or container configuration. The memory stores or receives programming instructions that, when executed by the processor, cause the electronic device to perform one or more operations in accordance with the programming instructions. Examples of electronic devices include personal computers, servers, mainframes, virtual machines, containers, gaming systems, televisions, digital home assistants, and mobile electronic devices such as smartphones, fitness tracking devices, wearable virtual reality devices, internet-connected wearable devices such as smart watches and smart eyewear, personal digital assistants, cameras, tablet computers, laptops, and media players. Electronic devices may also include appliances and other devices capable of communicating in an internet-of-things configuration, such as smart thermostats, refrigerators, and connected light bulbs. Electronic devices may also include automotive components, such as dashboard entertainment systems, navigation systems, and on-board diagnostic and operating systems. In a client-server configuration, the client device and the server are electronic devices, and in this configuration, the server contains instructions and / or data that the client device accesses via one or more communication links in one or more communication networks. In a virtual machine configuration, the server may be an electronic device, and each virtual machine or container is also considered an electronic device. In the above description, the client device, server device, virtual machine, or container may be referred to simply as a "device" for brevity. Additional elements included in an electronic device are described in the description of FIG. 13.

[0081] The terms "processor" and "processing device" refer to hardware components of an electronic device configured to execute programming instructions. Unless otherwise specified, the singular terms "processor" and "processing device" are intended to include both single processing device embodiments and embodiments in which multiple processing devices together or collectively perform processing.

[0082] The terms "memory," "storage," "data storage," "data storage facility," and the like each refer to a non-transitory device in which computer-readable data, programming instructions, or both are stored. Unless otherwise specified, the terms "memory," "storage," "data storage," "data storage facility," and the like are intended to include embodiments of a single device, embodiments in which multiple memory devices together or collectively store a set of data or instructions, and individual sectors within the device.

[0083] As used herein, the terms "communication link" and "communication path" refer to a wired or wireless path along which a first device transmits communication signals to one or more other devices and / or receives communication signals from other devices. Devices are "communicatively coupled" if the devices can transmit and / or receive data over the communication link. "Electronic communication" refers to the transmission of data by one or more signals between two or more electronic devices over a wired or wireless network, and directly or indirectly through one or more intermediary devices.

[0084] The term "classifier" refers to an automated process that enables an artificial intelligence system to assign a label or category to one or more data points. Classifiers include algorithms that are trained by automated processes, such as machine learning. A classifier typically starts with a set of labeled or unlabeled training data and applies one or more algorithms to detect one or more features and / or patterns in the data that correspond to various labels or classes. Algorithms can include (but are not limited to) simple ones such as decision trees, complex ones such as naive Bayes classification, and / or intermediate algorithms such as k-nearest neighbor. A classifier may include an artificial neural network (ANN), a support vector machine classifier, and / or any of a number of different types of classifiers. Once trained, a classifier can classify new data points using the knowledge base learned during training. Once trained, a classifier can classify new data points using the knowledge base learned during training. The classifier's learning process evolves over time because the classifier is trained on periodically updated data and learns by being provided with information about data that it may have misclassified. Classifiers are implemented by processors that execute programming instructions and operate on large datasets such as images, documents, and / or other data.

[0085] The term "model" refers to a set of algorithmic routines and parameters stored on a computer-readable medium that, without being explicitly programmed, can predict the output(s) of a real-world process based on a set of input features (e.g., recognizing products by their labels or predicting appropriate product recommendations based on a user's search query). The structure of the software routines (e.g., the number of subroutines and the relationships between them) and / or parameter values ​​can be determined in a training process that utilizes actual results of the real-world process being modeled. Such systems or models are considered necessarily computer-based and, indeed, could not be implemented or even exist without computer technology. Machine learning models utilize various types of statistical analysis, but are distinguished from statistical analysis by their ability to learn without explicit programming and their computer-based nature.

[0086] The term "bounding box" refers to a rectangular box that represents the location of an object. A bounding box is a box that, in the data, has x- and y-coordinates [x max , y max ] and the x- and y-coordinates [x min , y min ]. The bounding box may be calculated as the smallest rectangle that contains all points of interest, optionally with additional space added to allow for error. The points of interest may be detected by one or more sensors, such as pixels in an image taken by a camera, or may be detected from user input identifying the points.

[0087] Thus, various embodiments include an inventory management system including a processor and a computer-readable storage device having a product information data store. The product information data store includes inventory information for various products, each product associated with one or more channels. The system also includes a computer-readable storage device having a consumer profile data store. The consumer profile data store maintains interaction records between consumers and products, each record having consumer purchase information or other interaction event information and product rating information for one or more products. Multiple The system also includes a computer-readable storage device containing programming instructions configured to cause a processor to generate and output a channel administrator user interface on a display device, the programming instructions causing the system to: (i) receive a consumer identifier from a user who is a channel administrator of a first channel; (ii) access the consumer profile data store to retrieve secured profile data for the consumer, the secured profile data having purchase records associated with a token corresponding to the first channel but not including any product interaction records associated with tokens corresponding to other channels; (iii) access the product information data store to identify products in inventory for the first channel; (iv) generate one or more product recommendation information for the consumer using consumer profile data including both the secured profile data and profile data associated with tokens corresponding to one or more other channels, the one or more product recommendation information being recommendations for one or more products in inventory; and (v) output the one or more product recommendation information on the display device.

[0088] Another embodiment includes a system for securely managing inventory data, the system including a processor and a computer-readable storage device having a product information data store. The product information data store contains inventory information for a plurality of products. Each product in the product information data store is associated with one or more secure channels, and the inventory information for each product includes a mapping ID for each channel with which the product is associated. The mapping ID associates data elements in the records with data element fields in the product information data store, enabling secure retrieval of new product data and secure retrieval of data associated with a particular channel. The system also includes a consumer profile data store. The consumer profile data store maintains consumer-product interaction records, each interaction record including consumer-product interaction event information and rating information for one or more products and associated with one of the channels.The system also includes a computer-readable storage device containing programming instructions configured to cause a processor to generate and output a channel administrator user interface on a display device, the programming instructions causing the system to: (i) receive a consumer identifier from a user who is a channel administrator of a first channel; (ii) access the consumer profile data storage device to retrieve protected profile data about the consumer, wherein the system accesses only consumer-product interaction records associated with a token corresponding to the first channel and excludes any consumer-product interaction records associated with a token corresponding to another channel; (iii) access the product information data storage device to identify products in inventory for the first channel; (iv) generate one or more product recommendation information for the consumer using consumer profile data including both the protected profile data and profile data associated with tokens corresponding to one or more other channels, the one or more product recommendation information being recommendations for one or more products in inventory; and (v) output the one or more product recommendation information on the display device.

[0089] Optionally, the programming instructions for receiving product information for a plurality of inventory products and determining whether the inventory product is in the product information data store may include, for at least a first product of the plurality of inventory products, instructions for causing a high-resolution camera to capture an image including the first product. The capturing may include defining a bounding box around a portion of the first product that includes a product representation. The system may apply a recognition model to the image to extract a product representation from a portion of the image that is within the bounding box. The system uses a classifier to determine whether the product information data store includes an inventory product having identification information that likely matches the product representation.

[0090] Optionally, the instructions for accessing the product information data store to identify products in inventory for the first channel may include instructions for (i) identifying a channel ID for the first channel, and (ii) extracting from the product information data store product data records associated with the channel ID for the first channel while not extracting any product data records associated with another channel ID, thereby maintaining data security.

[0091] Optionally, the channel administrator user interface may include a channel collection user interface having one or more actuators, whereby the system receives from the user, the channel administrator, for the first channel: (i) a definition of the first channel including subgroups associated with the first channel, and (ii) a definition of a collection of products available from the first channel, the product collection definition including product description information received from a product description field and one or more access restrictions for the collection of products.

[0092] Optionally, the instructions for outputting the protected profile data on the display device may include instructions for (i) displaying information about a plurality of products in the consumer-product interaction record for the consumer, (ii) for each product for which the consumer profile data store has a rating received from the consumer, displaying the rating along with the product information, and (iii) generating a proxy rating for an unrated product for which the consumer profile data store has not a rating received from the consumer, and displaying the proxy rating along with the unrated product information. The instructions for generating the proxy rating may include instructions for generating the proxy rating using one or more of: (a) a function of the number of times the consumer has purchased the unrated product; or (b) a date the consumer purchased the unrated product. The instructions for generating the proxy rating may also include instructions for accessing the product information data store to retrieve a plurality of feature values ​​for the unrated product, and then determining whether the retrieved plurality of feature values ​​for the unrated product correspond to one or more preference indicators in a preference model for the consumer, the preference model representing associations between the consumer's product ratings and a plurality of product features. Additionally, as another option, the instructions for generating the proxy rating may include instructions for (x) receiving from a supplier an indication of a non-purchase interaction by the consumer with the unrated product, and (y) if the indication is determined to indicate that the consumer has interacted with the unrated product, assigning a favorable proxy rating to the product.

[0093] Optionally, the system also includes additional programming instructions configured to cause the processor to generate and output a channel creation user interface on a display device, wherein the programming instructions cause the system to: (i) receive product information for a plurality of inventory products from a user; (ii) for each inventory product for which product information is received, determine whether the inventory product is already stored in the product information data store; (iii) if the inventory product is not already stored in the product information data store, add product information for the inventory product to the product information data store; (iv) if the inventory product is already stored in the product information data store, present additional product information from the product information data store to the user for acceptance or modification; and (v) upon receiving confirmation from the user, update the product information data store to include product information for the inventory product and associate the inventory product with the first channel. The programming instructions for updating the product information data store with product information for the inventory product and associating the inventory product with the first channel can include instructions for adding the record for the inventory product to the product information data store by identifying a channel ID of the first channel and using a mapping ID of the record for the inventory product to associate data elements in the record with data element fields of the first channel in the product information data store. The system can also include programming instructions configured to cause the processor to perform a step of associating the inventory product with a landing page address for the inventory product on a website of the first channel.

[0094] Optionally, the system includes additional programming instructions configured to cause the processor to generate and output a customer selection manager, the system performing the following steps with the customer selection manager: (i) receiving a consumer selection via the channel administrator user interface; (ii) receiving one or more product selection criteria via the channel administrator user interface; (iii) using the consumer profile data, including both the secured profile data and profile data associated with tokens corresponding to the one or more other channels, to generate one or more product recommendation information for the consumer, the one or more product recommendation information relating to in-stock products that meet the selection criteria; (iv) automatically generating a message including the product recommendation information; and (v) sending the message to the consumer.

[0095] Optionally, the system includes additional programming instructions configured to cause the processor to generate and output a customer selection manager, the system performing the following steps using the customer selection manager: (i) receiving a product selection via the channel administrator user interface; (ii) accessing the consumer profile data to identify one or more consumers associated with the first channel; (iii) generating a predicted rating for a product for each of the identified consumers; (iv) selecting from among the identified consumers a group of consumers whose predicted rating exceeds a threshold; (v) automatically generating a message including information about the identified product; and (vi) sending the message to the group of consumers.

[0096] Optionally, the programming instructions for generating one or more product recommendation information for the consumer include instructions for (i) determining that the consumer has requested a product of a first product category; (ii) identifying a second product category; (iii) selecting one or more products of the second product category from the inventory using one or more attributes of the requested product and the protected profile data; and (iv) including the selected one or more products in the one or more product recommendation information.

[0097] Optionally, the system may include additional programming instructions to cause the processor to: (i) receive inventory information for a plurality of products via data feeds from each of a plurality of suppliers; (ii) extract inventory information for each of the plurality of suppliers from each data feed by using semantic synonyms to map each of a plurality of data fields in the data feed to a predefined field mapping that matches a system field in the product information data store, extracting data from each of the mapped data fields, and storing the extracted data in the matching system field; and (iii) update the product information data store to include the extracted inventory information for each product associated with the supplier in the product information data store.

[0098] The above-described features and functions, and alternative embodiments, may be combined into a variety of other different systems or applications. Various alternatives, modifications, variations, or improvements may be possible, such as may occur to those skilled in the art, and each of which is intended to be encompassed by the disclosed embodiments.

Claims

1. 1. A method for managing product inventory, comprising: Executing programming instructions by a processor, the processor being included in a management system, the programming instructions causing the processor to: generating a channel administrator user interface and causing a display device to output the channel administrator user interface, wherein the management system receives data regarding a new product list for a first product from a user who is a channel administrator of a first channel among a plurality of channels via the channel administrator user interface; accessing a product information data store having inventory information for a plurality of products, each product being associated with one or more of the plurality of channels; searching said product information data store for candidate products having associated data that semantically matches data relating to said new product list; upon identifying candidate products having associated data that semantically matches data related to the new product list, populating one or more fields of the new product list with data related to the candidate products; storing the new product list having data regarding the candidate products in the product information data store, the new product list being associated with channel-specific information regarding the first channel; When displaying the information contained in the new product list to the user, if the user is subscribed to the first channel, displaying to the user channel-specific information about the first channel; if the user is not subscribed to the first channel, instead of displaying channel-specific information for the first channel, displaying channel-specific information for a different channel to which the user is subscribed; 20. A method comprising: executing the programming instructions to cause a

2. 10. The method of claim 1, storing the new product list associated with channel-specific information for the first channel in the product information data store; identifying a supplier ID for the first product that uniquely associates the first product with a first supplier; assigning a mapping ID that correlates supplier-specific fields in the data related to the new product listing with platform data fields; the supplier-specific field contains data specific to the first supplier; the platform data field contains information about the first product that is not specific to the first supplier; the allocating step; including the mapping ID and the supplier ID in the new product list when saving the new product list; A method comprising:

3. The method of claim 2 further comprising: using the mapping ID to identify a supplier-specific data set for a product specific to the first supplier in the product information data store; granting the first supplier access to data in the supplier-specific data set without granting access to data not associated with the mapping ID; A method comprising:

4. The method of claim 2 further comprising: identifying a channel ID of the first channel; including the channel ID in the new product list when storing the new product list in the product information data store; In response to a user subscribing to the first channel, displaying to the user product listing information regarding another product in the first channel; A method comprising:

5. 3. The method of claim 2, wherein the step of assigning a mapping ID comprises using a mapping ID already assigned to the first channel for the first supplier.

6. The method of claim 1 further comprising: The method further comprising, prior to associating the new product listing with channel-specific information for the first channel, obtaining the channel-specific information from an external source other than from the product information data store.

7. 2. The method of claim 1, wherein the step of receiving data regarding the new product listing comprises: receiving an image of the first product; defining a bounding box surrounding the label of the first product in the image; applying a recognition model to extract a product representation from a portion of the image that is within the bounding box; A method comprising:

8. The method of claim 1 further comprising: prior to the step of storing the new product list in the product information data store; The method includes receiving, from a user of the channel manager user interface, an approval or correction to the one or more fields of the new product listing.

9. 1. A method for managing product inventory, comprising: Executing programming instructions by a processor, the processor being included in a management system, the programming instructions causing the processor to: generating a channel manager user interface and causing a display device to output the channel manager user interface; the management system receives, via the channel administrator user interface, data regarding a new product listing for a first product from a user who is a channel administrator for a first channel of a plurality of channels; the data includes a product description of the first product; the generating and outputting step; accessing a product information data store having inventory information for a plurality of products, each product being associated with one or more of the plurality of channels; searching the product information data store using the product description of the first product and a classifier to identify inventory products having identification information that is likely to match the product description of the first product; upon identifying an inventory product having identification information that likely matches the product description of the first product, populating one or more fields of the new product list with data about the inventory product; storing the new product list having data regarding the inventory products in the product information data store, the new product list being associated with channel-specific information regarding the first channel; When displaying the information contained in the new product list to the user, if the user is subscribed to the first channel, displaying to the user channel-specific information about the first channel; if the user is not subscribed to the first channel, instead of displaying channel-specific information for the first channel, displaying channel-specific information for a different channel to which the user is subscribed; 20. A method comprising: executing the programming instructions to cause a

10. 10. The method of claim 9, wherein the step of receiving data regarding the new product listing comprises: receiving an image of the first product; defining a bounding box surrounding the label of the first product in the image; applying a recognition model to extract the product representation from a portion of the image that is within the bounding box; A method comprising:

11. 10. The method of claim 9, storing the new product list associated with channel-specific information for the first channel in the product information data store; identifying a supplier ID for the first product that uniquely associates the first product with a first supplier; assigning a mapping ID that correlates supplier-specific fields in the data related to the new product listing with platform data fields; the supplier-specific field contains data specific to the first supplier; the platform data field contains information about the first product that is not specific to the first supplier; the allocating step; including the mapping ID and the supplier ID in the new product list when saving the new product list; A method comprising:

12. 12. The method of claim 11, further comprising: using the mapping ID to identify a supplier-specific data set for a product specific to the first supplier in the product information data store; granting the first supplier access to data in the supplier-specific data set without granting access to data not associated with the mapping ID; A method comprising:

13. 12. The method of claim 11, further comprising: identifying a channel ID of the first channel; including the channel ID in the new product list when storing the new product list in the product information data store; In response to a user subscribing to the first channel, displaying to the user product listing information regarding another product in the first channel; A method comprising:

14. 12. The method of claim 11, wherein assigning the mapping ID comprises using a mapping ID already assigned to the first channel for the first supplier.

15. 12. The method of claim 11, further comprising: The method further comprising, prior to associating the new product listing with channel-specific information for the first channel, obtaining the channel-specific information from an external source other than from the product information data store.

16. 12. The method of claim 11, further comprising: prior to the step of storing the new product list in the product information data store; The method includes receiving, from a user of the channel manager user interface, an approval or correction to the one or more fields of the new product listing.

17. 1. A storage device comprising: including programming instructions executed by a processor; The processor is included in a management system, and the programming instructions cause the processor to: generating a channel administrator user interface and causing a display device to output the channel administrator user interface, wherein the management system receives data regarding a new product list for a first product from a user who is a channel administrator of a first channel among a plurality of channels via the channel administrator user interface; accessing a product information data store having inventory information for a plurality of products, each product being associated with one or more of the plurality of channels; searching said product information data store for candidate products, said step comprising: searching for inventory products having associated data that semantically match data related to the new product listing; or using the product description of the first product and a classifier to identify in-stock products in the product information data store that have identification information that likely matches the product description of the first product; the searching step being performed by upon identifying the candidate product, populating one or more fields of the new product list with data related to the candidate product; storing the new product list having data regarding the candidate products in the product information data store, the new product list being associated with channel-specific information regarding the first channel; When displaying the information contained in the new product list to the user, if the user is subscribed to the first channel, displaying to the user channel-specific information about the first channel; if the user is not subscribed to the first channel, instead of displaying channel-specific information for the first channel, displaying channel-specific information for a different channel to which the user is subscribed; A storage device that executes the above.

18. 18. The storage device of claim 17, The instructions for storing the new product list associated with channel-specific information for the first channel in the product information data store include: instructions for identifying a supplier ID for the first product that uniquely associates the first product with a first supplier; instructions for assigning a mapping ID correlating supplier-specific fields and platform data fields in the data related to the new product listing; the supplier-specific field contains data specific to the first supplier; the platform data field contains information about the first product that is not specific to the first supplier; instructions for allocating; instructions for including the mapping ID and the supplier ID in the new product list when saving the new product list; A storage device having:

19. 20. The storage device of claim 18, further comprising: additional instructions for using the mapping ID to identify a supplier-specific data set for a product specific to the first supplier in the product information data store; additional instructions for granting the first supplier access to data in the supplier-specific data set without granting access to data not associated with the mapping ID; A storage device having:

20. 20. The storage device of claim 18, further comprising: additional instructions for specifying a channel ID for the first channel; additional instructions for including the channel ID in the new product list when storing the new product list in the product information data store; additional instructions for, in response to a user subscribing to the first channel, displaying to the user product listing information regarding another product in the first channel; A storage device having:

Citation Information

Patent Citations

  • Recommendation engine, recommendation method and recommendation program

    JP2002334257A

  • Methods and apparatus for providing fulfillment services

    JP2010529536A

  • Product sales system

    JP2016201055A

  • Personalized products recommendation using deep learning

    JP2018181326A

  • Management device, control method, and program

    JP2019046108A