Intelligent analytics for cloud computing applications

Some embodiments provide a non-transitory machine-readable medium that stores a program. The program receives, from a client device, a request for information associated with a category. In response to the request, the program further accesses a storage to retrieve a first value associated with the category. The program also determines a set of values associated with the category based on a plurality of transactions. The program further determines an optimization level value associated with the category. The program also determines a second value associated with the category based on the first value, the set of values, and the optimization level value. The program further provides, by an application operating on the device, a graphical user interface (GUI) to the client device, the GUI comprising the second value.

BACKGROUND

In data analytics, data and/or statistics are analyzed in order to derive meaningful insights into the data and/or statistics. For example, analytics can be used to predict future trends of data, events that may occur in the future, etc. Another use of analytics may be prescribing actions to perform in response to predictions. There are many fields in which analytics can be applied. For instance, software analytics involves analyzing source code, software metrics, processes related to the development of source code, etc., in order to describe, monitor, predict, and improve efficiency and effectivity of the software development process. In the field of security, analytics can be used analyze security events in order to determine which events pose risks to security. The application of analytics to people uses behavioral data to understand how people behave and function. Areas where people analytics can be used include workforce analytics, human resources analytics, talent analytics, human capital analytics, etc. In addition, analytics is applicable to finance fields. For example, analytics may be used to analyze and predict stock prices, determine how to manage risk and diversify investment portfolios, determine loan lending decisions, etc.

SUMMARY

In some embodiments, a non-transitory machine-readable medium stores a program executable by at least one processing unit of a device. The program receives, from a client device, a request for information associated with a category. In response to the request, the program further accesses a storage to retrieve a first value associated with the category. The program also determines a set of values associated with the category based on a plurality of transactions. The program further determines an optimization level value associated with the category. The program also determines a second value associated with the category based on the first value, the set of values, and the optimization level value. The program further provides, by an application operating on the device, a graphical user interface (GUI) to the client device, the GUI comprising the second value.

In some embodiments, determining the rate value associated with the category may include adjusting the average rate value based on the optimization level value. The request may be further for information associated with a plurality of categories. The program may further, in response to the request, access the storage to retrieve a first plurality of values associated with the plurality of categories; for each particular category in the plurality of categories, determine a particular set of values associated with the particular category based on a particular plurality of transactions; for each particular category in the plurality of categories, determine a particular optimization level value associated with the particular category; and, for each particular category in the plurality of categories, determine a particular value associated with the particular category based on a corresponding value in the first plurality of values, the particular set of values associated with the particular category, and the particular optimization level value associated with the particular category. The GUI may further include the particular values associated with the plurality of categories. The program may further determine a prioritized list of the plurality of categories based on a set of criteria.

In some embodiments, the program may further receive an aggressiveness value from a user of a client device. Determining the rate value associated with the category may include adjusting the average rate value based on the aggressiveness value. The program may further access a plurality of historical transactions and determine a rate value for each historical transaction in the plurality of historical transactions. Determining the average rate value may be further based on the rate value determined for each historical transaction in the plurality of historical transactions. Determining the standard deviation value associated with the category may be based on the rate value determined for each historical transaction in the plurality of historical transactions.

In some embodiments, a method executable by a device receives, from a client device, a request for information associated with a category. In response to the request, the method further accesses a storage to retrieve a first value associated with the category. The method also determines a set of values associated with the category based on a plurality of transactions. The method further determines an optimization level value associated with the category. The method also determines a second value associated with the category based on the first value, the set of values, and the optimization level value. The method further provides, by an application operating on the device, a graphical user interface (GUI) to the client device, the GUI comprising the second value.

In some embodiments, determining the rate value associated with the category may include adjusting the average rate value based on the optimization level value. The request may be further for information associated with a plurality of categories. In response to the request, the method may further access the storage to retrieve a first plurality of values associated with the plurality of categories; for each particular category in the plurality of categories, determine a particular set of values associated with the particular category based on a particular plurality of transactions; for each particular category in the plurality of categories, determine a particular optimization level value associated with the particular category; and, for each particular category in the plurality of categories, determine a particular value associated with the particular category based on a corresponding value in the first plurality of values, the particular set of values associated with the particular category, and the particular optimization level value associated with the particular category. The GUI may further include the particular values associated with the plurality of categories. The method may further determine a prioritized list of the plurality of categories based on a set of criteria.

In some embodiments, the method may further receive an aggressiveness value from a user of a client device. Determining the rate value associated with the category may include adjusting the average rate value based on the aggressiveness value. The method may further access a plurality of historical transactions and determine a rate value for each historical transaction in the plurality of historical transactions. Determining the average rate value may be further based on the rate value determined for each historical transaction in the plurality of historical transactions. Determining the standard deviation value associated with the category may be based on the rate value determined for each historical transaction in the plurality of historical transactions.

In some embodiments, a system includes a set of processing units and a non-transitory machine-readable medium that stores instructions. The instructions cause at least one processing unit to receive, from a client device, a request for information associated with a category. In response to the request, the instructions further cause the at least one processing unit to accessing a storage to retrieve a first value associated with the category. The instructions also cause the at least one processing unit to determine a set of values associated with the category based on a plurality of transactions. The instructions further cause the at least one processing unit to determine an optimization level value associated with the category. The instructions also cause the at least one processing unit to determine a second value associated with the category based on the first value, the set of values, and the optimization level value. The instructions further cause the at least one processing unit to provide, by an application operating on the system, a graphical user interface (GUI) to the client device, the GUI comprising the second value.

In some embodiments, determining the rate value associated with the category may include adjusting the average rate value based on the optimization level value. The request may be further for information associated with a plurality of categories. The instructions may further cause the at least one processing unit to, in response to the request, access the storage to retrieve a first plurality of values associated with the plurality of categories; for each particular category in the plurality of categories, determine a particular set of values associated with the particular category based on a particular plurality of transactions; and, for each particular category in the plurality of categories, determine a particular optimization level value associated with the particular category; for each particular category in the plurality of categories, determine a particular value associated with the particular category based on a corresponding value in the first plurality of values, the particular set of values associated with the particular category, and the particular optimization level value associated with the particular category. The GUI may further include the particular values associated with the plurality of categories. The instructions may further cause the at least one processing unit to determine a prioritized list of the plurality of categories based on a set of criteria.

In some embodiments, the instructions may further cause the at least one processing unit to receive an aggressiveness value from a user of a client device. Determining the rate value associated with the category may include adjusting the average rate value based on the aggressiveness value. The instructions may further cause the at least one processing unit to access a plurality of historical transactions and determine a rate value for each historical transaction in the plurality of historical transactions. Determining the average rate value may be further based on the rate value determined for each historical transaction in the plurality of historical transactions.

The following detailed description and accompanying drawings provide a better understanding of the nature and advantages of various embodiments of the present disclosure.

DETAILED DESCRIPTION

Described herein are techniques for providing intelligent analytics for cloud computing applications. In some embodiments, a computing system is configured to intelligently determine different rate values for different categories of goods and/or services. To determine a rate value for a particular category of goods and/or services, the computing system uses a history of transactions (e.g., past transactions) associated with the category of goods and/or services. From this historical data, the computing system determines a savings rate for each transaction. In some embodiments, a savings rate of a transaction represents a ratio (e.g., a percentage) between (1) the difference between a price paid for the goods and/or services in the transaction and an average price paid for the goods and/or services in the past and (2) the price paid for the goods and/or services in the transaction. Based on the savings rates determined for the history of transactions, the computing system calculates an average savings rate value and a standard deviation value. Next, the computing system uses the average savings rate value, the standard deviation value, an optimization level value, and an aggressiveness value to determine a savings rate value for the category of goods and/or services. Based on the determined savings rate value and a forecast value that represents an estimated amount that will be spent for the category of goods and/or services in the future, the computing system may calculate a forecast of an amount saved on future expenditures for the category of goods and/or services. In addition, the computing system can calculate a confidence value and/or probability that represents the likelihood of achieving the forecasted amount saved on future expenditures for the category of goods and/or services.

FIG.1illustrates a system100for intelligently determining rate values based on historical data according to some embodiments. As shown, system100includes client device105and computing system110. Client device105is configured to communicate and interact with computing system110. For example, a user of client device105may send application115a request for rate information associated with a category of goods and/or services along with an aggressiveness value. In some embodiments, an aggressiveness value specifies a level of aggressiveness in determining the rate information. Rate information determined based on a higher aggressiveness value may be higher than rate information determined based on a lower aggressiveness value. However, the confidence and/or probability of achieving the rate information determined based on a higher aggressiveness value is lower than the confidence and/or probability of achieving the rate information determined based on a lower aggressiveness value. In response, client device105can receive the requested information from application115. In some instances, a user of client device105sends application115a request for rate information associated with several categories of goods and/or services and aggressiveness values for each category of goods and/or services. In response to such a request, client device105may receive from application115rate information associated with the several categories of goods and/or services. In some embodiments, client device105receives rate information in the form of a graphical user interface (GUI) that includes the rate information.

In some instances, a user of client device105may receive a request from application115to answer a set of questions included in a questionnaire associated with a category of goods and/or services. In response to the request, the user of client device105sends application115a set of answers to the set of questions in the questionnaire. A questionnaire can include questions asking for a particular type of information associated with a category of goods and/or services in an industry. Examples of types of information include optimization level information (e.g., questions about recent activities effecting the optimization of expenditures of a category of goods and/or services), organizational difficulty information (e.g., questions about the level of difficulty for a company to implement a set of actions internally), market difficulty information (e.g., questions about the level of difficulty in the marketplace for a company to implement a set of actions supported by market conditions externally), etc. AlthoughFIG.1shows one client device105, one of ordinary skill in the art will appreciate that system100can include additional client devices that are similarly configured to client device105in some embodiments.

As illustrated inFIG.1, computing system110includes application115, rate manager120, benchmark data processor125, optimization manager130, priority manager135, and storages140-150. Benchmark data storage140is configured to store benchmark data associated with different categories of goods and/services. In some embodiments, benchmark data associated with a particular category of goods and/or services includes an average savings rate value and a standard deviation value. In some embodiments, a good and/or service has a United Nations Standard Products and Services Code (UNSPSC) associated with it. In some such embodiments, a category for a good and/or service is determined based on the UNSPSC associated with the good and/or service. In some cases, benchmark data associated with a particular category of goods and/or services can also be associated with a particular industry. In some such cases, different sets of benchmark data may be associated with the same category of goods and/or services but associated with different industries. Benchmark data storage140may also store historical data associated with different goods and/or services and different industries. Examples of historical data include past transactions of goods and/or services. In some embodiments, a transaction can specify that a buyer purchased a set of items in a category of goods and/or services from a supplier for an agreed upon price.

Optimization level data storage145stores optimization level values for different categories of goods and/or services in different industries. In addition, optimization level data storage145may store different questionnaires that include questions asking for different types of information associated with a category of goods and/or services in an industry. Forecast data storage150is configured to store forecast values associated with different categories of goods and/or services. An example of a forecast value is a spend forecast value representing an estimated amount that will be spent for a category of goods and/or services in the future. In some embodiments, forecast values are generated by a component that operating on computing system110(e.g. application115or some other component included in computing system110). In other embodiments, forecast values are generated by a component operating on a different computing system or device (not shown inFIG.1).

In some embodiments, storages140-150are implemented in a single physical storage while, in other embodiments, storages140-150may be implemented across several physical storages. WhileFIG.1shows storages140-150as part of computing system110, one of ordinary skill in the art will appreciate that benchmark data storage140, optimization level data storage145, and/or forecast data storage150may be external to computing system110in some embodiments.

Application115is a software application operating on computing system110that is responsible for providing client device105rate information for different categories of goods and/or services. For instance, application115may receive from client device105a request for savings information associated with a category of goods and/or services and an aggressiveness value. In response, application115sends rate manager120the request and the aggressiveness value for processing. Upon receiving the rate information from rate manager120, application115forwards it to client device105. In some instances, application115may receive from client device105a request for rate information associated with several categories of goods and/or services and aggressiveness values for each of the categories of goods and/or services. In response to the request, application115sends the request and the aggressiveness values to rate manager120. Once application115receives the rate information associated with the several categories of goods and/or services from rate manager120, application115forwards it to client device105. In some cases, application115receives the requested rate information from priority manager135instead of rate manager120. In some embodiments, application115provides the rate information to client device105in a GUI. Additionally, application115can send client device105a questionnaire (which application115retrieves from optimization level data storage145) that includes a set of questions along with a request to provide answers to the set of questions in the questionnaire. When application115receives answer to the set of questions, application115sends them to either optimization manager130or priority manager135. For example, if the question in the questionnaire are asking for optimization level information, application115sends the answers to the questions to optimization manager130. Otherwise, application115sends them to priority manager135.

Rate manager120is configured to determine rate information for different categories of goods and/or services. For example, rate manager120may receive from application115a request for rate information associated with a category of goods and/or services and an aggressiveness value. In response, rate manager120accesses forecast data storage150to retrieve a forecast value associated with the category of goods and/or services. Next, rate manager120accesses optimization level data storage145to retrieve an optimization level value associated with the category of goods and/or services. Rate manager120then accesses benchmark data storage140to retrieve an average benchmark savings rate value and a standard deviation value associated with the category of goods and/or services. Based on the optimized level value, the average benchmark savings rate value, the standard deviation value, and the aggressiveness value, rate manager120determines a savings rate value associated with a category of goods and/or services. In some embodiments, a savings rate value associated with a category of goods and/or services represents an estimated percentage that can be saved on future expenditures of the category of goods and/or services. In some cases, rate manager120determines a confidence value representing the likelihood of achieving the savings rate. In addition, rate manager120can determine a savings amount value based on the savings rate value and the forecast value. In some embodiments, a savings amount associated with a category of goods and/or services represents an estimated amount of savings on future expenditures for the category of goods and/or services. Rate manager120sends application115the determined savings rate value and the savings amount value (and the confidence value in some embodiments). In some instances, application115may receive from application115a request for rate information associated with several categories of goods and/or services and aggressiveness values for each of the several categories of goods and/or services. In response to such a request, application115performs the same operations mentioned above for each category of goods and/or services for which rate information is requested. In some embodiment, application115sends the rate information for the several categories of goods and/or services. In other embodiments, application115sends the rate information for the several categories of goods and/or services to priority manager135for further processing.

Benchmark data processor125handles the processing of benchmark data for different categories of goods and/or services in different industries. For instance, at defined intervals (e.g., once a day, once a week, once a month, etc.) benchmark data processor125determines benchmark data for each category of goods and/or services in each industry. For a particular category of goods and/or services in a particular industry, benchmark data processor125determines benchmark data by querying benchmark data storage140for past transactions associated with the category of goods and/or services and determining a savings rate value for each transaction.

In some cases, a past transaction includes a price paid by a buyer in the transaction for an item in a category of goods and/or services purchased from a supplier and a history of prices that the buyer paid for the same item in the past. In these cases, benchmark data processor125determines the savings rate value for such a transaction by calculating an average of the history of prices that the buyer paid in the past, calculating a difference between the price paid by the buyer in the transaction for the item and the average of the history of prices that the buyer paid in the past, and calculating a ratio (e.g., percentage) between the calculated difference and the price paid by the buyer in the transaction for the item.

In other cases, a past transaction includes a price paid by a buyer in the transaction for an item in a category of goods and/or services purchased from a supplier, a highest bidder price in the transaction, and a lowest bidder price in the transaction. In these other cases, benchmark data processor125determines the savings rate value for the transaction by calculating an average price between the highest bidder price and the lowest bidder price, calculating a difference between the price paid by the buyer in the transaction for the item and the average, and calculating a ratio (e.g., percentage) between the calculated difference and the price paid by the buyer in the transaction for the item.

In some other cases, a past transaction includes a highest bidder price in the transaction, a lowest bidder price in the transaction, and a history of prices that a buyer paid for an item in a category of goods and/or services in the past. For these cases, benchmark data processor125determines the savings rate value for the transaction by calculating an average price between the highest bidder price and the lowest bidder price, calculating an average of the history of prices that the buyer paid in the past, calculating a difference between the average price between the highest bidder price and the lowest bidder price and the average of the history of prices that the buyer paid in the past, and calculating a ratio (e.g., percentage) between the calculated difference and the average price between the highest bidder price and the lowest bidder price.

After benchmark data processor125determines determining savings rate values for the past transactions, benchmark data processor125calculates an average of the savings rate values based on the determined savings rate values. Next, benchmark data processor125calculates a standard deviation of the savings rate values determined for the past transactions associated with the category of goods and/or services. Benchmark data processor125then stores the average of the savings rate values and the standard deviation of the savings rate values in benchmark data storage140. Benchmark data processor125performs the operations described above for each category of goods and/or services in each industry.

Optimization manager130is configured to manage optimization level data. For example, optimization manager130can receive a set of answers to a set of questions included in a questionnaire (e.g., a questionnaire that includes questions asking for optimization level information) associated with a category of goods and/or services in an industry. Based on the answers to the questionnaire, optimization manager130determines an optimization level value associated with the category of goods and/or services in the industry. In some embodiments, optimization manager130determines an optimization level value by mapping the set of answers to a set of numerical values (e.g., integers, real numbers, etc.) and calculating an average of the set of numerical values. In some such embodiments, different weights can be assigned to different questions in the questionnaire. In these embodiments, optimization manager130calculates the average of the set of numerical values by calculating a weighted average of the set of numerical values using the corresponding weights associated with the set of answers.

Priority manager135is responsible for prioritizing groups of different categories of goods and/or services based on their associated rate information. For instance, priority manager135may receive from application115rate information (e.g., a savings rate value and a savings amount value) for several categories of goods and/or services. In response to receiving the data, priority manager135determines a prioritized list of the categories of goods and/or services. In some embodiments, priority manager135prioritizes the categories of goods and/or services based on the rate information associated with the categories of goods and/or services, organizational difficulty values associated with the categories of goods and/or services, market difficulty values associated with the categories of goods and/or services, and a Pugh matrix. Priority manager135sends application115the list of prioritized categories of goods and/or services and the rate information associated with the categories of goods and/or services.

Additionally, priority manager135is responsible for managing organizational difficulty values and market difficulty values associated with different categories of goods and/or services in different industries. For example, priority manager135can receive from application115a set of answers to a set of answers to a set of questions included in a questionnaire (e.g., a questionnaire that includes questions asking for organizational difficulty information, a questionnaire that includes questions asking for market difficulty information, etc.) associated with a category of goods and/or services in an industry. For answers to a questionnaire asking for organizational difficulty information, priority manager135determines, based on the answers to the questionnaire, an organizational difficulty value (also referred to as an organizational difficulty score) associated with the category of goods and/or services in the industry. In some embodiments, priority manager135determines an organizational difficulty level value by mapping the set of answers to a set of numerical values (e.g., integers, real numbers, etc.) and calculating an average of the set of numerical values. In some such embodiments, different weights can be assigned to different questions in the questionnaire. In these embodiments, priority manager135calculates the average of the set of numerical values by calculating a weighted average of the set of numerical values using the corresponding weights associated with the set of answers. For answers to a questionnaire asking for market difficulty information, priority manager135determines, based on the answers to the questionnaire, a market difficulty value (also referred to as a market difficulty score) associated with the category of goods and/or services in the industry. In some embodiments, priority manager135determines a market difficulty level value by mapping the set of answers to a set of numerical values (e.g., integers, real numbers, etc.) and calculating an average of the set of numerical values. In some such embodiments, different weights can be assigned to different questions in the questionnaire. In these embodiments, priority manager135calculates the average of the set of numerical values by calculating a weighted average of the set of numerical values using the corresponding weights associated with the set of answers.

FIG.2illustrates an example questionnaire200according to some embodiments. In particular, questionnaire200is an example of a questionnaire that application115can provide to client device105to request for information (e.g., optimization level information, organizational difficulty information, market difficulty information, etc.). As depicted, questionnaire200includes questions #1-N and selectable user interface (UI) element (e.g., UI button)240. Question #1 includes user interface (UI) control (e.g., a radio button control)205. UI control205includes five selectable UI elements210-235. UI control205is configured to allow only one of the UI elements210-235to be selected. That is, when a first UI element in UI elements210-235is selected and then a second UI element in UI elements210-235is selected, the first UI element becomes unselected. Questions #2-N also include a UI control similarly configured to UI control205in this example. UI element240is configured to, when selected by a user of client device105, cause client device105to send selections of UI controls for questions #1-N (e.g., answers to questions #1-N) to application115. As explained above, application115may send the answers to the questionnaire to optimization manager130or priority manager135depending on the type of information the questions in the questionnaire is asking for (e.g., application115sends answers to questionnaires that include questions asking for optimization level information to optimization manager130and sends answers to questionnaires that include questions asking for any other type of information (e.g., organizational difficulty information, market difficulty information, etc.) to priority manager135). As described above, optimization manager130and priority manager135each processes answers to a questionnaire using similar techniques. Referring to questionnaire200as an example, an “Extremely Low” answer to a question can be mapped to the value 1, a “Somewhat Low” answer to a question can be mapped to the value 2, a “Neutral” answer to a question can be mapped to the value 3, a “Somewhat High” answer to a question can be mapped to the value 4, and a “Extremely High” answer to a question can be mapped to the value 5. Based on the answers to questions #1-N, optimization manager130/priority manager135maps each answer in the set of answers to a numerical value (a number between 1-5 in this example) and calculates an average of the set of numerical values. In some embodiments, each of the questions #1-N may be assigned the same or different weight values. In some such embodiments, optimization manager130/priority manager135calculates a weighted average of the set of numerical values based on the assigned weights to each of the questions #1-N.

FIG.3illustrates an example operation of system100according to some embodiments. Specifically, the example operation demonstrates how rate information is intelligently determined for a category of goods and/or services in an industry. For this example, benchmark data processor125has determined benchmark data for each category of goods and/or services in an industry for which there is a history of transactions. That is, benchmark data processor125has calculated an average of savings rate values and a standard deviation of the savings rate values for each of these categories of goods and/or services and stored these values in benchmark data storage140.

The example operation starts by a user of client device105sending, at305, application115a request for rate information associated with several categories of goods and/or services in an industry and aggressiveness values for each category of goods and/or services. Upon receiving the request and the aggressiveness values, application115forwards, at310, them to rate manager120. When rate manager120receives the request and the aggressiveness values, rate manager120accesses, at315, forecast data storage to retrieve a spend forecast value for each of the requested categories of goods and/or services. Next, rate manager120accesses, at320, optimization level data storage145to retrieve an optimization level value for each of the requested categories of goods and/or services. Rate manager120then accesses, at325, benchmark data storage140to retrieve an average benchmark savings rate value and a standard deviation value associated with each of the requested categories of goods and/or services. For each category of goods and/or services, rate manager120determines a savings rate value based on the average benchmark savings rate value associated with the category of goods and/or services, the standard deviation value associated with the category of goods and/or services, the optimization level value associated with the category of goods and/or services, and the aggressiveness value associated with the category of goods and/or services. In some embodiments, rate manager120uses the following equation (1) to calculate the savings rate value associated with a category of goods and/or services:

Savings⁢rate=m+(x⨯StdDev)-(yc⁢1⨯m)
where m is the average benchmark savings rate value associated with the category of goods and/or services, x is the value calculated based on an aggressiveness value associated with the category of goods and/or services, StdDev is the standard deviation value associated with the category of goods and/or services, y is the optimization level value associated with the category of goods and/or services, and c1 is a defined constant value (e.g., 4, 5, 6, etc.). Rate manager120can use the following equation (2) to calculate x:

x=(AggVal-c⁢2)c⁢3
where AggVal is the aggressiveness value associated with the category of goods and/or services, c2 is a first defined constant value (e.g., 2.5, 2.6, 2.7, etc.), and c3 is a second defined constant value (e.g., 1.38, 1.4, 1.6, 2.0, 2.5, etc.). In some embodiments, rate manager120may use machine learning to predict values for x and y. For instance, rate manager120can use a convolutional neural network (CNN) to predict values for x and y. As shown in equation (1), the aggressiveness value associated with the category of goods and/or services is used to increase the average benchmark savings rate value associated with the category of goods and/or services. The higher the aggressiveness value, the more the average benchmark savings rate value is increased, but the lower the confidence value and/or probability of achieving the estimated savings. On the other hand, the optimization level value associated with the category of goods and/or services is used to decrease the average benchmark savings rate value associated with the category of goods and/or services. The higher the optimization level value, the more the average benchmark savings rate value is decreased.

Equation (1) is one example of a function that rate manager120may use to determine a savings rate. It can be described functionally as a set of adjustments to an average benchmark savings rate based on a set of criteria. The criteria employed in equation (1) are the spread of the savings rate values used to determine the average benchmark savings rate and optimization level. In some embodiments, the average benchmark savings rate can be adjusted based on additional and/or different criteria. For instance, the average benchmark savings rate can be adjusted based on a commodity index.

After calculating a savings rate value for a category of goods and/or services, rate manager120may calculate a savings amount by multiplying the calculated savings rate value by the spend forecast value associated with the category of goods and/or services. Once rate manager120calculates a savings rate and a savings amount for each of the requested categories of goods and/or services, rate manager120sends, at330, these values to priority manager135. Upon receiving the data from rate manager120, priority manager135determines a prioritized list of the categories of goods and/or services. In this example, priority manager135uses a Pugh matrix to prioritize the categories of goods and/or services based on the savings rate values associated with the categories of goods and/or services, the savings amounts associated with the categories of goods and/or services, the organizational difficulty values associated with the categories of goods and/or services, the market difficulty values associated with the categories of goods and/or services. After priority manager135determines the prioritized list of categories of goods and/or services, priority manager135sends, at335, the list to application115. For this example, application115includes the prioritized categories of goods and/or services and their corresponding savings rates and savings amounts in a GUI and provides the GUI to client device105.

FIG.4illustrates an example GUI400for providing rate data for different categories according to some embodiments. In particular, application125provides GUI400to client device105for this example operation. As shown, GUI400includes visualization405and table430. Visualization405includes chart410, overview information415, bubble information420, and aggressiveness information425. Chart410includes an x-axis and a y-axis. The x-axis of chart410specifies organizational difficulty scores and the y-axis of chart410specifies market difficulty scores. Chart410also includes several bubbles representing the different categories of goods and/or services shown in table430. Each bubble has a particular size (e.g., circumference, area, etc.) and is filled with a particular color. Each bubble is placed in chart410based on the organizational difficulty score and the market difficulty score associated with the category of goods and/or service that the bubble represents. Overview information415provides graphic showing the proportion of the cumulative amount of savings amount of the categories of goods and/or services listed in table430with respect to the cumulative amount of spend forecast values associated with the categories of goods and/or services listed in table430. In addition, overview information415includes a confidence level (32% in this example) that represents the average confidence level of the estimated savings rates associated with the categories of goods and/or services listed in table430. In some embodiments, a confidence level of an estimated savings rate associated with a particular category of goods and/or services is determined based on a z table and the x value described above in equations (1) and (2). In other embodiments, a confidence level of an estimated savings rate associated with a particular category of goods and/or services is determined using a cumulative distribution function (CFD) of a standard normal distribution and the x value described above in equations (1) and (2). Bubble information420provides information about different savings amounts represented by different sizes of bubbles shown in chart410. Aggressiveness information425provides information about different aggressiveness levels represented by different colors of bubbles in shown in chart410. Additionally, chart410includes three areas435-445separated by dotted lines. Area445includes bubbles representing categories of goods and/or services with savings rates that are easy to implement based on the organizational difficulty score and the market difficulty score associated with the category of goods and/or services. Area440includes bubbles representing categories of goods and/or services with savings rates that have a medium difficulty to implement based on the organizational difficulty score and the market difficulty score associated with the category of goods and/or services. Lastly, area435includes bubbles representing categories of goods and/or services with savings rates that are hard to implement based on the organizational difficulty score and the market difficulty score associated with the category of goods and/or services.

Table430includes records of data for each of the requested categories of goods and/or services in the example operation. As depicted, table430includes eleven columns. The first column stores a priority value. Here, records of data in table430have been prioritized (e.g., by priority manager135) in the manner described above. As shown, the first record in table430is associated with a mail and cargo transport category of goods and/or services and has the highest priority, the second record in table430is associated with a containers and storage category of goods and/or services and has the second highest priority, the third record in table430is associated with an electrical equipment and components and supplies category of goods and/or services and has the third highest priority, etc. The second column stores a name of a category of goods and/or services. The third column stores an organizational difficulty score and the fourth column stores a market difficulty score. The fifth column stores an average savings rate while the sixth column stores a standard deviation value. The seventh column (the category maturity column) stores an optimization level value. The eighth column stores a spend forecast value. The ninth column stores an estimated savings rate and the tenth column stores an estimated savings amount. Finally, the eleventh column stores an aggressiveness value. As shown in table430, the user of client device105has specified different aggressiveness value for different categories of goods and/or services. For example, the user of client device105has specified a “Very Aggressive” value for the first and fifth categories, a “Moderately Aggressive” value for the second and fourth categories, and an “Aggressive” value for the third category.

In some embodiments, application125can provide a drill-down feature in GUI400for exploring different categories of goods and/or services. For example, in some such embodiments, a user may select a bubble representing a category of goods and/or services in chart410. In response, application115provides an option (e.g., via a pop-up window) for drilling down into the category of goods and/or services represented. Upon selection of the option, application115provides a chart and table similar to chart410and table430except the data in chart410and table430are for subcategories of goods and/or services of the selected category of goods and/or services. The user may continue drilling down to explore subcategories of these subcategories.

FIG.5illustrates a process500for intelligently determining a rate value according to some embodiments. In some embodiments, computing system110performs process500. Process500begins by receiving, at510, from a client device, a request for information associated with a category. Referring toFIG.3as an example, application115may receive the request for information associated with a category of goods and/or services from client device105. Next, in response to the request, process500accesses, at520, a storage to retrieve a first value associated with the category. Referring toFIG.3as an example, rate manager120can access forecast data storage150to retrieve a forecast value associated with the category of goods and/or services.

Process500then determines, at530, a set of values associated with the category based on a plurality of transactions. Referring toFIG.2as an example, rate manager120determines an average rate value by accessing benchmark data storage140and retrieving the average rate value associated with the category of goods and/or services. Also, rate manager120determines a standard deviation value by accessing benchmark data storage140and retrieving the standard deviation value associated with the category of goods and/or services.

At540, process500determines an optimization level value associated with the category. Referring toFIG.2as an example, rate manager120determines the optimization level value by accessing optimization level data storage145and retrieving the optimization level value associated with the category of goods and/or services. Next, process500determines, at550, a second value associated with the category based on the first value, the set of values, and the optimization level value. Referring toFIG.2as an example, rate manager120determines a rate value using equations (1) and (2) provided above. Rate manager120may determine a savings amount by multiplying the rate value by forecast value. Finally, at560, process500provides, by an application operating on the device, a graphical user interface (GUI) to the client device, the GUI comprising the second value. Referring toFIG.3as an example, application115may provide GUI400, which includes the requested rate value, to client device105.

FIG.6illustrates an exemplary computer system600for implementing various embodiments described above. For example, computer system600may be used to implement client device105and computing system110. Computer system600may be a desktop computer, a laptop, a server computer, or any other type of computer system or combination thereof. Some or all elements of application115, rate manager120, benchmark data processor125, optimization manager130, priority manager135, or combinations thereof can be included or implemented in computer system600. In addition, computer system600can implement many of the operations, methods, and/or processes described above (e.g., process500). As shown inFIG.6, computer system600includes processing subsystem602, which communicates, via bus subsystem626, with input/output (I/O) subsystem608, storage subsystem610and communication subsystem624.

Bus subsystem626is configured to facilitate communication among the various components and subsystems of computer system600. While bus subsystem626is illustrated inFIG.6as a single bus, one of ordinary skill in the art will understand that bus subsystem626may be implemented as multiple buses. Bus subsystem626may be any of several types of bus structures (e.g., a memory bus or memory controller, a peripheral bus, a local bus, etc.) using any of a variety of bus architectures. Examples of bus architectures may include an Industry Standard Architecture (ISA) bus, a Micro Channel Architecture (MCA) bus, an Enhanced ISA (EISA) bus, a Video Electronics Standards Association (VESA) local bus, a Peripheral Component Interconnect (PCI) bus, a Universal Serial Bus (USB), etc.

Processing subsystem602, which can be implemented as one or more integrated circuits (e.g., a conventional microprocessor or microcontroller), controls the operation of computer system600. Processing subsystem602may include one or more processors604. Each processor604may include one processing unit606(e.g., a single core processor such as processor604-1) or several processing units606(e.g., a multicore processor such as processor604-2). In some embodiments, processors604of processing subsystem602may be implemented as independent processors while, in other embodiments, processors604of processing subsystem602may be implemented as multiple processors integrate into a single chip or multiple chips. Still, in some embodiments, processors604of processing subsystem602may be implemented as a combination of independent processors and multiple processors integrated into a single chip or multiple chips.

In some embodiments, processing subsystem602can execute a variety of programs or processes in response to program code and can maintain multiple concurrently executing programs or processes. At any given time, some or all of the program code to be executed can reside in processing subsystem602and/or in storage subsystem610. Through suitable programming, processing subsystem602can provide various functionalities, such as the functionalities described above by reference to process500.

I/O subsystem608may include any number of user interface input devices and/or user interface output devices. User interface input devices may include a keyboard, pointing devices (e.g., a mouse, a trackball, etc.), a touchpad, a touch screen incorporated into a display, a scroll wheel, a click wheel, a dial, a button, a switch, a keypad, audio input devices with voice recognition systems, microphones, image/video capture devices (e.g., webcams, image scanners, barcode readers, etc.), motion sensing devices, gesture recognition devices, eye gesture (e.g., blinking) recognition devices, biometric input devices, and/or any other types of input devices.

User interface output devices may include visual output devices (e.g., a display subsystem, indicator lights, etc.), audio output devices (e.g., speakers, headphones, etc.), etc. Examples of a display subsystem may include a cathode ray tube (CRT), a flat-panel device (e.g., a liquid crystal display (LCD), a plasma display, etc.), a projection device, a touch screen, and/or any other types of devices and mechanisms for outputting information from computer system600to a user or another device (e.g., a printer).

As illustrated inFIG.6, storage subsystem610includes system memory612, computer-readable storage medium620, and computer-readable storage medium reader622. System memory612may be configured to store software in the form of program instructions that are loadable and executable by processing subsystem602as well as data generated during the execution of program instructions. In some embodiments, system memory612may include volatile memory (e.g., random access memory (RAM)) and/or non-volatile memory (e.g., read-only memory (ROM), programmable read-only memory (PROM), erasable programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM), flash memory, etc.). System memory612may include different types of memory, such as static random access memory (SRAM) and/or dynamic random access memory (DRAM). System memory612may include a basic input/output system (BIOS), in some embodiments, that is configured to store basic routines to facilitate transferring information between elements within computer system600(e.g., during start-up). Such a BIOS may be stored in ROM (e.g., a ROM chip), flash memory, or any other type of memory that may be configured to store the BIOS.

As shown inFIG.6, system memory612includes application programs614(e.g., application115), program data616, and operating system (OS)618. OS618may be one of various versions of Microsoft Windows, Apple Mac OS, Apple OS X, Apple macOS, and/or Linux operating systems, a variety of commercially-available UNIX or UNIX-like operating systems (including without limitation the variety of GNU/Linux operating systems, the Google Chrome® OS, and the like) and/or mobile operating systems such as Apple iOS, Windows Phone, Windows Mobile, Android, BlackBerry OS, Blackberry 10, and Palm OS, WebOS operating systems.

Computer-readable storage medium620may be a non-transitory computer-readable medium configured to store software (e.g., programs, code modules, data constructs, instructions, etc.). Many of the components (e.g., application115, rate manager120, benchmark data processor125, optimization manager130, and priority manager135) and/or processes (e.g., process500) described above may be implemented as software that when executed by a processor or processing unit (e.g., a processor or processing unit of processing subsystem602) performs the operations of such components and/or processes. Storage subsystem610may also store data used for, or generated during, the execution of the software.

Storage subsystem610may also include computer-readable storage medium reader622that is configured to communicate with computer-readable storage medium620. Together and, optionally, in combination with system memory612, computer-readable storage medium620may comprehensively represent remote, local, fixed, and/or removable storage devices plus storage media for temporarily and/or more permanently containing, storing, transmitting, and retrieving computer-readable information.

Computer-readable storage medium620may be any appropriate media known or used in the art, including storage media such as volatile, non-volatile, removable, non-removable media implemented in any method or technology for storage and/or transmission of information. Examples of such storage media includes RAM, ROM, EEPROM, flash memory or other memory technology, compact disc read-only memory (CD-ROM), digital versatile disk (DVD), Blu-ray Disc (BD), magnetic cassettes, magnetic tape, magnetic disk storage (e.g., hard disk drives), Zip drives, solid-state drives (SSD), flash memory card (e.g., secure digital (SD) cards, CompactFlash cards, etc.), USB flash drives, or any other type of computer-readable storage media or device.

Communication subsystem624serves as an interface for receiving data from, and transmitting data to, other devices, computer systems, and networks. For example, communication subsystem624may allow computer system600to connect to one or more devices via a network (e.g., a personal area network (PAN), a local area network (LAN), a storage area network (SAN), a campus area network (CAN), a metropolitan area network (MAN), a wide area network (WAN), a global area network (GAN), an intranet, the Internet, a network of any number of different types of networks, etc.). Communication subsystem624can include any number of different communication components. Examples of such components may include radio frequency (RF) transceiver components for accessing wireless voice and/or data networks (e.g., using cellular technologies such as 2G, 3G, 4G, 5G, etc., wireless data technologies such as Wi-Fi, Bluetooth, ZigBee, etc., or any combination thereof), global positioning system (GPS) receiver components, and/or other components. In some embodiments, communication subsystem624may provide components configured for wired communication (e.g., Ethernet) in addition to or instead of components configured for wireless communication.

One of ordinary skill in the art will realize that the architecture shown inFIG.6is only an example architecture of computer system600, and that computer system600may have additional or fewer components than shown, or a different configuration of components. The various components shown inFIG.6may be implemented in hardware, software, firmware or any combination thereof, including one or more signal processing and/or application specific integrated circuits.

FIG.7illustrates an exemplary computing device700for implementing various embodiments described above. For example, computing device700may be used to implement client device105. Computing device700may be a cellphone, a smartphone, a wearable device, an activity tracker or manager, a tablet, a personal digital assistant (PDA), a media player, or any other type of mobile computing device or combination thereof. As shown inFIG.7, computing device700includes processing system702, input/output (I/O) system708, communication system718, and storage system720. These components may be coupled by one or more communication buses or signal lines.

Processing system702, which can be implemented as one or more integrated circuits (e.g., a conventional microprocessor or microcontroller), controls the operation of computing device700. As shown, processing system702includes one or more processors704and memory706. Processors704are configured to run or execute various software and/or sets of instructions stored in memory706to perform various functions for computing device700and to process data.

Each processor of processors704may include one processing unit (e.g., a single core processor) or several processing units (e.g., a multicore processor). In some embodiments, processors704of processing system702may be implemented as independent processors while, in other embodiments, processors704of processing system702may be implemented as multiple processors integrate into a single chip. Still, in some embodiments, processors704of processing system702may be implemented as a combination of independent processors and multiple processors integrated into a single chip.

Memory706may be configured to receive and store software (e.g., operating system722, applications724, I/O module726, communication module728, etc. from storage system720) in the form of program instructions that are loadable and executable by processors704as well as data generated during the execution of program instructions. In some embodiments, memory706may include volatile memory (e.g., random access memory (RAM)), non-volatile memory (e.g., read-only memory (ROM), programmable read-only memory (PROM), erasable programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM), flash memory, etc.), or a combination thereof.

I/O system708is responsible for receiving input through various components and providing output through various components. As shown for this example, I/O system708includes display710, one or more sensors712, speaker714, and microphone716. Display710is configured to output visual information (e.g., a graphical user interface (GUI) generated and/or rendered by processors704). In some embodiments, display710is a touch screen that is configured to also receive touch-based input. Display710may be implemented using liquid crystal display (LCD) technology, light-emitting diode (LED) technology, organic LED (OLED) technology, organic electro luminescence (OEL) technology, or any other type of display technologies. Sensors712may include any number of different types of sensors for measuring a physical quantity (e.g., temperature, force, pressure, acceleration, orientation, light, radiation, etc.). Speaker714is configured to output audio information and microphone716is configured to receive audio input. One of ordinary skill in the art will appreciate that I/O system708may include any number of additional, fewer, and/or different components. For instance, I/O system708may include a keypad or keyboard for receiving input, a port for transmitting data, receiving data and/or power, and/or communicating with another device or component, an image capture component for capturing photos and/or videos, etc.

Communication system718serves as an interface for receiving data from, and transmitting data to, other devices, computer systems, and networks. For example, communication system718may allow computing device700to connect to one or more devices via a network (e.g., a personal area network (PAN), a local area network (LAN), a storage area network (SAN), a campus area network (CAN), a metropolitan area network (MAN), a wide area network (WAN), a global area network (GAN), an intranet, the Internet, a network of any number of different types of networks, etc.). Communication system718can include any number of different communication components. Examples of such components may include radio frequency (RF) transceiver components for accessing wireless voice and/or data networks (e.g., using cellular technologies such as 2G, 3G, 4G, 5G, etc., wireless data technologies such as Wi-Fi, Bluetooth, ZigBee, etc., or any combination thereof), global positioning system (GPS) receiver components, and/or other components. In some embodiments, communication system718may provide components configured for wired communication (e.g., Ethernet) in addition to or instead of components configured for wireless communication.

Storage system720handles the storage and management of data for computing device700. Storage system720may be implemented by one or more non-transitory machine-readable mediums that are configured to store software (e.g., programs, code modules, data constructs, instructions, etc.) and store data used for, or generated during, the execution of the software.

In this example, storage system720includes operating system722, one or more applications724, I/O module726, and communication module728. Operating system722includes various procedures, sets of instructions, software components and/or drivers for controlling and managing general system tasks (e.g., memory management, storage device control, power management, etc.) and facilitates communication between various hardware and software components. Operating system722may be one of various versions of Microsoft Windows, Apple Mac OS, Apple OS X, Apple macOS, and/or Linux operating systems, a variety of commercially-available UNIX or UNIX-like operating systems (including without limitation the variety of GNU/Linux operating systems, the Google Chrome® OS, and the like) and/or mobile operating systems such as Apple iOS, Windows Phone, Windows Mobile, Android, BlackBerry OS, Blackberry 10, and Palm OS, WebOS operating systems.

Applications724can include any number of different applications installed on computing device700. Examples of such applications may include a browser application, an address book application, a contact list application, an email application, an instant messaging application, a word processing application, JAVA-enabled applications, an encryption application, a digital rights management application, a voice recognition application, location determination application, a mapping application, a music player application, etc.

I/O module726manages information received via input components (e.g., display710, sensors712, and microphone716) and information to be outputted via output components (e.g., display710and speaker714). Communication module728facilitates communication with other devices via communication system718and includes various software components for handling data received from communication system718.

One of ordinary skill in the art will realize that the architecture shown inFIG.7is only an example architecture of computing device700, and that computing device700may have additional or fewer components than shown, or a different configuration of components. The various components shown inFIG.7may be implemented in hardware, software, firmware or any combination thereof, including one or more signal processing and/or application specific integrated circuits.

FIG.8illustrates an exemplary system800for implementing various embodiments described above. For example, any of the client devices802-808may be used to implement client device105and cloud computing system812may be used to implement computing system110. As shown, system800includes client devices802-808, one or more networks810, and cloud computing system812. Cloud computing system812is configured to provide resources and data to client devices802-808via networks810. In some embodiments, cloud computing system800provides resources to any number of different users (e.g., customers, tenants, organizations, etc.). Cloud computing system812may be implemented by one or more computer systems (e.g., servers), virtual machines operating on a computer system, or a combination thereof.

As shown, cloud computing system812includes one or more applications814, one or more services816, and one or more databases818. Cloud computing system800may provide applications814, services816, and databases818to any number of different customers in a self-service, subscription-based, elastically scalable, reliable, highly available, and secure manner.

In some embodiments, cloud computing system800may be adapted to automatically provision, manage, and track a customer's subscriptions to services offered by cloud computing system800. Cloud computing system800may provide cloud services via different deployment models. For example, cloud services may be provided under a public cloud model in which cloud computing system800is owned by an organization selling cloud services and the cloud services are made available to the general public or different industry enterprises. As another example, cloud services may be provided under a private cloud model in which cloud computing system800is operated solely for a single organization and may provide cloud services for one or more entities within the organization. The cloud services may also be provided under a community cloud model in which cloud computing system800and the cloud services provided by cloud computing system800are shared by several organizations in a related community. The cloud services may also be provided under a hybrid cloud model, which is a combination of two or more of the aforementioned different models.

In some instances, any one of applications814, services816, and databases818made available to client devices802-808via networks810from cloud computing system812is referred to as a “cloud service.” Typically, servers and systems that make up cloud computing system812are different from the on-premises servers and systems of a customer. For example, cloud computing system812may host an application and a user of one of client devices802-808may order and use the application via networks810.

Applications814may include software applications that are configured to execute on cloud computing system812(e.g., a computer system or a virtual machine operating on a computer system) and be accessed, controlled, managed, etc. via client devices802-808. In some embodiments, applications814may include server applications and/or mid-tier applications (e.g., HTTP (hypertext transport protocol) server applications, FTP (file transfer protocol) server applications, CGI (common gateway interface) server applications, JAVA server applications, etc.). Services816are software components, modules, application, etc. that are configured to execute on cloud computing system812and provide functionalities to client devices802-808via networks810. Services816may be web-based services or on-demand cloud services.

Databases818are configured to store and/or manage data that is accessed by applications814, services816, and/or client devices802-808. For instance, storages140-150may be stored in databases818. Databases818may reside on a non-transitory storage medium local to (and/or resident in) cloud computing system812, in a storage-area network (SAN), on a non-transitory storage medium local located remotely from cloud computing system812. In some embodiments, databases818may include relational databases that are managed by a relational database management system (RDBMS). Databases818may be a column-oriented databases, row-oriented databases, or a combination thereof. In some embodiments, some or all of databases818are in-memory databases. That is, in some such embodiments, data for databases818are stored and managed in memory (e.g., random access memory (RAM)).

Client devices802-808are configured to execute and operate a client application (e.g., a web browser, a proprietary client application, etc.) that communicates with applications814, services816, and/or databases818via networks810. This way, client devices802-808may access the various functionalities provided by applications814, services816, and databases818while applications814, services816, and databases818are operating (e.g., hosted) on cloud computing system800. Client devices802-808may be computer system600or computing device700, as described above by reference toFIGS.6and7, respectively. Although system800is shown with four client devices, any number of client devices may be supported.

Networks810may be any type of network configured to facilitate data communications among client devices802-808and cloud computing system812using any of a variety of network protocols. Networks810may be a personal area network (PAN), a local area network (LAN), a storage area network (SAN), a campus area network (CAN), a metropolitan area network (MAN), a wide area network (WAN), a global area network (GAN), an intranet, the Internet, a network of any number of different types of networks, etc.