Patent Publication Number: US-2013246581-A1

Title: System and Method of Rendering Content According To Availability Data for One or More Items

Description:
CROSS-REFERENCE TO RELATED APPLICATIONS 
     This application is a continuation of U.S. patent application Ser. No. 09/675,415 filed on Sep. 29, 2000 and entitled “System and Method for Rendering Content According to Availability Data for One or More Items.” U.S. patent application Ser. No. 09/675,415 was assigned to the assignee of the present application. The disclosed of U.S. patent application Ser. No. 09/675,415 are hereby incorporated by reference into the present disclosure as if fully set forth herein. 
    
    
     TECHNICAL FIELD OF THE INVENTION 
     This invention relates generally to content rendering, and more particularly to a system and method for rendering content according to availability data for one or more items. 
     BACKGROUND OF THE INVENTION 
     Web page content is commonly personalized for particular users based on one or more demographic, usage, or other characteristics of the particular users. For example, if a young male consumer requests a web page associated with an Internet website, and a determination of these characteristics (young and male) can be made at the website, the requested page might be rendered at the website to include an advertisement for a red sports car based on these characteristics. Such personalization allows advertisements to be presented to their target audiences—those most likely to purchase products, services, or other items in response to the advertisements—to increase sales of these items. When a consumer responds favorably to such a personalized advertisement, attempting to buy the item to which the advertisement is directed, but the item is not in stock, cannot be delivered within an acceptable time, or is otherwise unavailable, the consumer may often become disappointed, frustrated, or even angry with the seller. This may actually result in lower sales for the seller, as such consumers attempt to purchase the requested item, and perhaps future items, from other on-line sellers or decrease their on-line shopping in general. As a result of these or other disadvantages, previous techniques for rendering content have been inadequate for the needs of many sellers. 
     SUMMARY OF THE INVENTION 
     According to the present invention, problems and disadvantages associated with previous techniques for rendering content are substantially reduced or eliminated. 
     According to one embodiment of the present invention, a system for rendering content according to availability data for at least one item includes a server to receive a content request from a user and, in response, to retrieve requested content. A rendering engine coupled to the server identifies at least one rule associated with the content and concerning the item. A rules engine coupled to the rendering engine generates at least one availability request corresponding to the rule and concerning the item. The rules engine receives availability data for the item, retrieves additional content according to the availability data for the item, the additional content being selected from among one or more stored content elements that concern the item, and communicates the additional content concerning the item to the rendering engine for incorporation in the requested content. The rendering engine renders the requested content, including the additional content concerning the item. The server then communicates the rendered content to the user to satisfy the content request. 
     The present invention provides a number of technical advantages over previous techniques. The rendering of web-based or other content concerning a product, service, or other item based on availability data for the item obtained from one or more suppliers allows sellers to make more accurate commitments, dynamically adjust advertisements and other promotions, dynamically adjust pricing policies, and otherwise respond more effectively to the changing commercial landscape in which they operate. Customers that receive accurate commitments, which can be fulfilled in a timely manner as promised, may experience less disappointment, frustration, and anger with the seller. Sellers are able not only to personalize their marketing for particular types of customers, but may selectively market items that may be in excess in inventory, have higher profit margins, or are otherwise more desirable from the perspective of the sellers. As the availability data for items changes at one or more suppliers, sellers may be notified of the changes and content rendered to reflect these changes, providing these sellers with an edge over the competition. A seller may more effectively use available space, within a web page for example, by replacing content concerning an unavailable or otherwise less desirable item (from the seller&#39;s perspective) with content concerning an available or otherwise more desirable item. As communications channels continue to expand in number and type, the present invention may be increasingly effective in improving the profitability and overall success of sellers who market using these channels, based on an improved appreciation of fluctuating supply chain events and opportunities. 
     Systems and methods incorporating one or more of these or other advantages are well suited for modern commercial environments such as those associated with Internet websites or electronic marketplaces. Other technical advantages are readily apparent to those skilled in the art from the following figures, descriptions, and claims. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       To provide a more complete understanding of the present invention and features and advantages thereof, reference is made to the following description in conjunction with the accompanying drawings, in which: 
         FIG. 1  illustrates an exemplary system for rendering content according to availability data for one or more items; 
         FIG. 2  illustrates an exemplary web page including a container for one or more rules; and 
         FIG. 3  illustrates an exemplary method of rendering content according to availability data for one or more items. 
     
    
    
     DETAILED DESCRIPTION OF THE INVENTION 
       FIG. 1  illustrates an exemplary system  10  for rendering content according to availability data for one or more items. System  10  includes one or more users  12 , a content server  14 , an availability server  16 , and one or more suppliers  18 . In general, content server  14  receives a content request from user  12 , which may be a request for a particular web page of a website associated with the content server  14 . In response, content server  14  retrieves the requested web page and determines that the web page includes an advertisement or other content concerning a product, service, or other item. Content server  14  accesses availability server  16  to obtain availability data for the item, which may be obtained from one or more suppliers  18  of the item, and renders content for the web page according to the availability data. Content server  14  communicates the rendered web page to the user  12 . Rendering content concerning an item according to availability data for the item may greatly decrease the likelihood that the item will be unavailable for purchase, timely delivery, or otherwise in response to user  12  receiving the requested content. References herein to rendering content are meant to encompass generation, creation, formatting, or any other suitable operations relating to content to facilitate its communication and display to user  12 . 
     Content server  14  may generate, render, and communicate content to users  12  in the form of Hypertext Markup Language (HTML) pages, Extensible Markup Language (XML) pages, or in any other scripted page or other appropriate format. Although web pages are primarily described, the present invention contemplates any appropriate page, file, document, or other data representation. Therefore, where appropriate, references to a web page or web pages are intended to encompass all such representations and do not limit the scope of the invention to any particular representation. Furthermore, reference to a web page is intended, where appropriate, to include the displayed image of the web page (in a browser window of user  12  for example) in addition to underlying HTML or other code used in generating the displayed image. In one embodiment, users  12  may communicate Hypertext Transfer Protocol (HTTP) requests to the content server  14  to receive web pages. Each HTTP request identifies a stored web page using a Uniform Resource Locator (URL) or other address within the HTTP request. In response to user  12  connecting to content server  14  using the HTTP request, content server  14  retrieves the requested web page using the URL, renders the web page for display as described more fully below, and communicates the web page to user  12  where an associated web browser displays the web page for viewing. The request for, retrieval of, rendering of, and communication of web pages in Internet and other web-based environments is well known to those skilled in the art. 
     Users  12  may be any suitable entities that access content associated with content server  14 , either autonomously or according to input from associated persons. Content server  14  may be associated with one or more websites, electronic business-to-business (“B2B”) marketplaces that facilitate B2B transactions, or any other system operating to provide content to one or more users  12 . Availability server  16  may be any appropriate system, integral to or separate from content server  14 , that obtains availability data from one or more suppliers  18  and provides this availability data to content server  14  for the purposes described above. For example, the fulfillment server described in copending U.S. application Ser. No. 09/398,171, which is hereby incorporated by reference, may serve as availability server  16 . Suppliers  18  may be any suitable entities capable of providing availability data concerning one or more products, services, or other items to availability server  16 . Users  12 , content server  14 , availability server  16 , and suppliers  18  may be coupled to one another using links  20  that each include one or more local area networks (LANs), metropolitan area networks (MANs), wide area networks (WANs), a portion of a global computer network such as the Internet, or any other suitable wireline, wireless, or other links. 
     In one embodiment, availability data obtained from suppliers  18  may include any suitable information relating to an item, such as inventory data (e.g., the item is in excess or in short supply), delivery data (e.g., the item cannot be delivered until a certain date), pricing data (e.g., the current price of the item), or any other suitable availability data. Availability data for an item may vary, in whole or in part, between suppliers  18 . For example, a first supplier  18  may have twenty units of the item in inventory, priced at $100 per item, with delivery within two days of order. A second supplier  18  may have one hundred units of the item in inventory, priced at $80 per item, with delivery within one week of order. If content server  14  determines that the availability data from the second supplier  18  satisfies the needs of an associated seller, the content server  14  may render content reflecting a price of $80 per item and delivery within one week of order. The seller can reasonably expect to be able to fulfill these commitments. If neither of these suppliers had any units of the item in inventory, or could not procure a sufficient number of units within a certain time, content server  14  might instead render content for an alternative item for which availability data was satisfactory. As a result, the seller is better able to avoid promoting or making commitments that it cannot fulfill or are less desirable than other commitments. 
     Although availability data is described primarily as being obtained from one or more suppliers  18 , the present invention contemplates availability data from suppliers  18  being stored in association with availability server  16 , such that availability server  16  need not retrieve availability data from suppliers  18  each time the availability server  16  receives an availability request from content server  14 . Availability data at availability server  16  may be refreshed or otherwise updated periodically or in response to specific events, as appropriate. Moreover, although availability data is described primarily as being that of one or more suppliers  18 , the present invention contemplates availability data being that of a seller associated with content server  14  and not directly reflecting availability data of suppliers  18 . Availability data may further include an appropriate combination of seller availability data and supplier availability data. 
     Content server  14  may request availability data from availability server  16  for a variety of purposes. For example, before rendering a web page for communication to a user  12 , content server  14  may request availability data in order to determine whether to incorporate a particular advertisement within the web page. If the availability data for a product, service, or other item to which the advertisement relates does not satisfy one or more criteria, then content server  14  may replace the first advertisement with a second advertisement for an alternative item or totally withhold advertisements. Availability data may be requested in connection with various other promotional activities, such as coupons, rebates, giveaways, samples, frequent shopper programs, or other price related promotions. If availability data for the item to which the promotion applies does not satisfy one or more criteria, content server  14  may replace the promotion with another, modify the promotion in some suitable manner, or remove the promotion entirely when rendering the web page. Furthermore, content server  14  may request availability data in connection with recommendations for an item, as is described more fully below. The present invention contemplates content server  14  using availability data to render web pages incorporating any appropriate content concerning an item. 
     Content server  14  may incorporate one or more product recommendations in a web page being rendered based on an indication that user  12  has expressed interest in a trigger product or has otherwise exhibited trigger behavior in interacting with content server  14 . Expressions of interest in the trigger product might include selecting one or more hypertext or other links associated with the trigger product within a previous web page (for example, to view product details), placing the trigger product in a shopping cart, attempting to purchase the trigger product, purchasing the trigger product, or any other suitable trigger behavior. A cross-sell recommendation is a recommendation for one or more products that are complementary or otherwise related to a trigger product. For example, in response to user  12  purchasing a wireless telephone, content server  14  might render a web page confirming the purchase that includes a recommendation for a hands free unit for the telephone. An up-sell recommendation is a recommendation for one or more products that may replace a trigger product. This may allow the seller to promote an alternative product for which there is excess inventory, a higher price, a higher profit margin, or any other advantage relative to the trigger product. A re-sell recommendation is a recommendation to again purchase a trigger product, preferably communicated to user  12  an appropriate time after the previous purchase of the trigger product. For example, it may be desirable to communicate a web page incorporating a re-sell recommendation for printer paper to user  12  one month after user  12  previously purchased printer paper, and every month thereafter, until the user  12  again purchases printer paper. 
     A base product recommendation is a recommendation for a product, service, or other item that is not made according to the behavior of user  12  with respect to a trigger product or otherwise, but is made according to one or more other characteristics of the user  12 . For example, a base product recommendation may be made based on one or more demographic, “firmographic” (where user  12  represents a business), or other user characteristics. Similarly, a base product recommendation may be made based upon previous purchasing behavior, clickstream behavior, expressed interests, or any other information relating to user  12 . The present invention contemplates incorporating these or any other suitable recommendations, singly or in any appropriate combination, into web pages or other content communicated to users  12 . Although recommendations are primarily described, the content server  14  may analogously incorporate advertisements, promotions, or any other suitable targeted content in response to behavior of users  12  with respect to trigger products, other behavior of users  12 , or any other information associated with users  12 , according to particular needs. 
     Item recommendations may be sorted based on availability, profitability, or any other suitable information. For example, empirical evidence indicates that customers in web-based environments usually select the first or second recommendation within a list of recommendations. The third and later recommendations are often ignored. Thus, it may be desirable to sort multiple product recommendations within the rendered content such that the recommendations deemed most beneficial to the seller are presented at or near the top of the list or, where only a limited number of recommendations may be presented a time, are presented instead of less beneficial recommendations. Customer profile or other information may be weighed in sorting recommendations. For example, if only one recommendation may be presented to a customer, it is desirable to identify and present the recommendation that is most likely to result in a satisfactory sale based on characteristics of the customer, in addition to availability, profitability, or any other information. The present invention contemplates sorting among item recommendations for presentation to users according to any information bearing on the desirability of the recommendations from the perspective of sellers of the items. 
     Analogous capabilities may be provided with respect to dynamic promotional, auction, or other pricing. For example, to render content including pricing information for a product, service, or other item, the content server  14  may request availability data from availability server  16  indicating the prices for the item from one or more suppliers  18 . Content server  14  may then render content to include the lowest of these prices, in accordance with a suitable promising policy, to improve the likelihood that the user  12  will purchase the item. As another example, the content server  14  may render pricing content according to availability of an item, perhaps incorporating content reflecting a lower price if the item is in excess but a higher price if the item is in relatively short supply. In the context of an electronic marketplace, auction, or other environment in which pricing for an item may change dynamically according to various activities, the content server  14  may use availability data that includes pricing information to render pricing content. As an example, if pricing information returned from availability server  16  indicates that the price being offered by a seller within an electronic marketplace is higher than the price being offered by other competing sellers, then content server  14  might render alternative content reflecting a lower price to improve the likelihood of success for the seller. The present invention contemplates rendering content based on dynamic pricing information for any suitable purpose. 
     When a product to which a web page or other content relates includes multiple components, then the content server  14  may request availability data for one or more components before rendering the content. As an example, if the web page will include content constituting a promise to deliver a personal computer within a specified time, obtaining availability data for the associated hard disk, memory, or other components may allow the content server  14  to provide a more accurate commitment, which has a higher likelihood of being fulfilled in a timely manner. This may help the seller avoid disappointing, frustrating, or angering users  12 . Suppliers  18  may be selected for the components individually based on which supplier  18  will promise the most units, the fastest delivery, the most favorable pricing, or another advantage with respect to each component. As a result of these or analogous availability requests, content server  14  is able to render content that more accurately reflects the availability, pricing, and other information relating to items and which may more likely result in sales of the items to one or more users  12 . 
     In one embodiment, availability server  16  may communicate availability data to content server  14  in response to changes in availability data for an item, which might prompt the content server  14  to render alternative content, either autonomously or in response to input from associated personnel. As an example, as inventory for an item decreases, it may be desirable for a seller of the item to increase the price of the item, as reflected in content rendered by rendering engine  24 , to increase its profit margin with respect to the item. Similarly, as the price of an item or one or more of its components decreases at one or more suppliers  18 , it may be desirable for the seller to decrease its price, as reflected in content rendered by rendering engine  24 , accordingly to increase sales. Availability server  16  may retrieve and communicate availability data to content server  14  in substantially real time as availability data changes, allowing content server  14  to modify its rendering of content accordingly. Alerts that reflect such changes may be sent to personnel associated with the content server  14 , from availability server  16 , content server  14 , or both to allow the personnel to adjust pricing, promotional, or other activities accordingly. The present invention contemplates communicating information reflecting any appropriate change in availability data. 
     In one embodiment, content server  14  includes a web server  22  that processes a request for a web page from a user  12 , identifies the web page according to its URL or otherwise, and instructs a rendering engine  24  to retrieve the web page and render it for communication to user  12 . As illustrated in  FIG. 2 , a web page  26  may include one or more containers  28  each containing one or more rules  30  that specify the availability data to be retrieved from availability server  16  and the conditions to be applied to that retrieved availability data to determine the rendered content of the web page  26 . For example, where web page  26  contains HTML, the HTML corresponding to container  28  may be determined according to rules  30  of container  28 , while the HTML for the other portions of web page  26  may be static or otherwise unaffected by the interpretation of these rules  30 . Referring again to  FIG. 1 , if the requested web page  26  includes a container  28  having one or more rules  30 , then the rendering engine  24  instructs a rules engine  32  to interpret rules  30  so that the appropriate content may be incorporated into web page  26  to replace container  28 . In response, rules engine  32  interprets rules  30 , communicates one or more availability requests to the availability server  16  to obtain availability data used in applying the rules  30 , applies rules  30 , and retrieves HTML or other suitable content for incorporation in web page  26  based on the application of the rules  30 . Rendering engine  24  continues processing web page  26  and, assuming all the containers  28  and associated rules  30  have been appropriately processed, completes the rendering of the web page  26 . Finally, web server  22  communicates the rendered web page  26  incorporating targeted content to the user  12 . 
     Conditions within rules  30  specify comparisons between data elements and pre-defined values. Appropriate conditions may include, without limitation: (1) a data view condition for comparing one or more data values (e.g., the age of user  12 ) with one or more pre-defined values (e.g., twenty-five); (2) a session view condition for comparing one or more session values relating to the interaction of user  12  with content server  14  during the current session (e.g., the number of items the user  12  has already placed in a shopping cart) with one or more pre-defined values (e.g., zero); (3) a system condition for comparing one or more system variables (e.g., the current time) with one or more predefined values (e.g.,  1430 ); (4) a rule condition for invoking another rule  30 ; and (5) a function call condition for calling a JAVA function (static JAVA method) or another suitable function, program, module, application, or other software component. Rule  30  may have one or more conditions of these or other suitable types. 
     In addition to constants as in several of the above examples, pre-defined values within rules  30  may be JAVA or other suitable function calls. For example only and not by way of limitation, a system condition within rule  30  may incorporate a function call using the following syntax: 
     
       
         
           
               
               
               
             
               
                   
                   
               
             
            
               
                   
                   
                 system_variable = &lt;function name&gt; 
               
               
                   
                   
                 cond_oper = call 
               
               
                   
                   
                 cond_value = &lt;function parameter string&gt; 
               
               
                   
                   
               
            
           
         
       
     
     Any suitable function may be called in this manner. Furthermore, parameters for the called function may include one or more other functions to be called. One or more overloaded functions may be supported. In one embodiment, if parameters for a called function include a RuleContext parameter not included in the parameter string, then the RuleContext at the time the associated rule  30  is evaluated is passed into the function. This feature may be used, for example, to change a user profile for user  12  or for any other suitable purpose. As this example indicates, the functions called from within rules  30  may have side-effects, according to particular needs. 
     As an example, the following function relating to product availability might be called from within rule  30  according to one of its conditions: 
     
       
         
           
               
               
               
             
               
                   
                   
               
             
            
               
                   
                   
                 Boolean available (RuleContext context, 
               
               
                   
                   
                  Integer item_group, 
               
               
                   
                   
                  String item, 
               
               
                   
                   
                  Integer quantity, 
               
               
                   
                   
                  Integer lead_time) 
               
               
                   
                   
               
            
           
         
       
     
     This “available” function returns “true” if a specified quantity of a specified item in a specified item group can be delivered within a specified lead time (measured in days in this example). So, using the exemplary syntax set forth above, the following condition might return “true” if “2” units of item “34567” within item group “8” can be delivered within “9” days: 
     
       
         
           
               
               
               
             
               
                   
                   
               
             
            
               
                   
                   
                 system_variable = available 
               
               
                   
                   
                 cond_oper = call 
               
               
                   
                   
                 cond_value = 8,34567,2,9 
               
               
                   
                   
               
            
           
         
       
     
     Although JAVA function calls are primarily described, any appropriate trigger may be used to prompt rules engine  26  to dynamically query availability server  26  for availability data, dynamically query availability server  26  or another suitable component for information enabling content server  14  to provide shipping recommendations to user  12 , or dynamically query another suitable information source for any other appropriate purpose according to particular needs. Since functions can call other functions to obtain parameters, rules engine  26  may initiate these queries using parameters obtained from any information source accessible to content server  14 . 
     In one embodiment, the rules engine  26  may be optimized such that it batches multiple availability requests for communication to availability server  16  to reduce the associated communication overhead, which may be particularly desirable when content server  14  and availability server  16  operate on different computer systems. In a more particular embodiment, the “available” function may queue availability requests and the rules  30  may be evaluated at rules engine  26  within rule sets. When evaluating rule  30  within a rule set, if all conditions of rule  30  are “true” but availability requests associated with rule  30  are still queued, then the rules engine  26  may construct a deferred rule  30  containing the original rule  30  and a list of its queued availability requests. After rules engine  26  has evaluated all other rules  30  in the rule set, rules engine  26  evaluates the deferred rule  30 . If all availability requests associated with deferred rule  30  result in promises within the specified lead time (return “true”), then the rule  30  embedded in deferred rule  30  is declared “true.” This optimization technique helps ensure that less computationally expensive (faster running) conditions within the rule  30  are evaluated before more computationally expensive (slower running) conditions. 
     The present invention contemplates specifying containers  28 , rules  30 , and their associated conditions in any appropriate manner. In one embodiment, a graphical user interface (GUI) associated with content server  14  may allow marketing or other suitable personnel, who may lack sophisticated computer programming skills, to readily specify the attributes of users  12  to which a condition pertains, the products, services, or other items to which the condition pertains, the parameters to be evaluated for the condition, the parameter values that availability data must satisfy for the condition to return “true,” grouping of the condition with one or more other conditions within a rule  30 , the dates for which the condition is applicable, or any other suitable information relating to the condition. In response to the specification of one or more conditions, content server  14  may automatically generate the corresponding rules  30  and insert these rules  30  into the appropriate containers  28  within web pages  26 . 
     Components of content server  14  and availability server  16  may each operate on one or more computer systems at one or more locations. Although content server  14  and availability server  16  are described primarily as separate systems, they may share one or more computer or other resources, for example, in association with the same website or electronic marketplace. Furthermore, although discussed as separate components, web server  22 , rendering engine  24 , and rules engine  32 , or a combination of two or more of these components, may be implemented in whole or in part using a common program, module, application, or other software component. 
     Although the present invention is described primarily in connection with web pages communicated to users  12  over the Internet, those skilled in the art will readily appreciate that the present invention provides advantages in any environment in which targeted content is delivered to users  12 . For example, such environments may include wireline or wireless Internet, wireline or wireless e-mail, interactive television, kiosks, call centers (where call center personnel might rely on computers to interact with users  12 ), telephone (where on-hold users  12  might receive the targeted content), displays at gasoline pumps, vending machines, cash registers, or other sales locations, or any other suitable environment. 
       FIG. 3  illustrates an exemplary method of rendering content according to availability data. The method begins at step  100 , where user  12  communicates a request for content to the content server  14 , in the form of an HTTP request containing the URL for a particular web page  26  or otherwise. At step  102 , the web server  22  retrieves the requested web page  26  and, at step  104 , rendering engine  24  begins processing the web page  26  to render it for communication to user  12 . At step  106 , the rendering engine  24  may encounter a container  28  within web page  26  containing one or more rules  30  and, in response, will instruct rules engine  32  to interpret the rules  30  within the container  28  at step  108 . Rules engine  32  interprets the rules  30  at step  110 , identifying one or more associated conditions, and communicates one or more availability requests corresponding to the conditions to availability server  16  at step  112 . Rules engine  32  may interpret one or more rules  30  and may communicate availability requests for one or more conditions serially, simultaneously, or in any other appropriate manner. 
     Availability server  16  retrieves the requested availability data, perhaps from one or more appropriate suppliers  18 , at step  114  and communicates the availability data to rules engine  32  at step  116 . At step  118 , rules engine  32  applies one or more conditions to the availability data serially, simultaneously, or in any other suitable manner and, at step  120 , incorporates content into the web page  26  according to the availability data. Rendering engine  24  continues processing the web page  26  at step  122  to render it for communication to the user  12 . If the rendering engine  24  encounters another container  28  at step  124 , the method returns to step  108  for interpretation of the associated rules  30 . If rendering engine  24  does not encounter another container  28  at step  124 , rendering engine  32  completes its processing of web page  26  at step  126  and completely renders web page  26  at step  128  for communication to user  12 . At step  130 , the web server  22  communicates the web page  26  to user  12 , and the method ends. 
     Although the present invention has been described with several embodiments, a plethora of changes, substitutions, variations, alterations, and modifications may be suggested to one skilled in the art, and it is intended that the invention encompass all such changes, substitutions, variations, alterations, and modifications as fall within the spirit and scope of the appended claims.