This invention relates generally to pricing platforms, and more specifically to a system and method for providing a pricing platform for performing pricing calculations for a plurality of different customers with different types of pricing calculations.
A platform-based service allows developers and customers to create, host, and deploy applications without having to set up and maintain the infrastructure for such, with the added benefit of being able to adjust scalability. One type of application that is essential to many customers' businesses is pricing applications. Unfortunately, because such a pricing platform would be used for different customers with different pricing calculation needs, it is hard to build one big monolith system that is tailored to and optimized for every customer. For example, some customers perform certain types of calculations and may need more processing power in certain areas, whereas other customers may need more processing power in other areas. As it would be difficult to build one application that is optimized for everyone, there is a need for a modular system so that an administrator or machine-learning system can customize how the resources are allocated to different stages.
One of the disadvantages, however, with typical modular services, such as microservices, is that there are often overhead delays between the microservices communication. Therefore, there is a need for a way to minimize the delays while being able to provide optimization to the pricing platform. This is solved in the present application by making sure that for each instance of the pricing pipeline, all modular stages operate within the same process boundary so that there are minimal delays in communication between stages.
The present disclosure describes a system, method, and computer program for providing a pricing platform for performing pricing calculations for a plurality of different customers with different types of pricing calculations. The method is performed by a computer system that includes servers, storage systems, networks, operating systems, and databases.
The invention is a system and method for providing a pricing platform for performing pricing calculations for different customers having different pricing calculation needs. Despite the customer variance, the system is able to provide a pricing platform that is tailored to and optimized for each particular customer's pricing calculation needs. It does this by creating an instance of the price-calculation pipeline for each of the customers of the pricing platform, where the price-calculation pipeline has a plurality of modular pricing stages. It then executes each instance of the price-calculation pipeline and generates a performance metric for each modular pricing stage within each instance of the price-calculation pipeline. The system then displays the performance metrics to the user (e.g., an administrator) and enables the user to adjust the computational resources allocated to each of the modular pricing stages within an instance of the pipeline. In addition to enabling each customer to optimize the pricing platform despite the customers having different pricing calculation needs, the system groups the modular pricing stages within a single instance to be executed within the same process boundary to reduce communication delays and thereby increase efficiency of the system.
In one embodiment, a method for providing a pricing platform for performing pricing calculations for a plurality of different customers with different types of pricing calculations, where the pricing platform has a price-calculation pipeline with multiple stages, comprises the following steps:
The present disclosure describes a system, method, and computer program for providing a pricing platform for performing pricing calculations for a plurality of different customers with different types of pricing calculations, where the pricing platform has a price-calculation pipeline with multiple stages. The method is performed by a computer system that includes servers, storage systems, networks, operating systems, and databases (“the system”).
A system and method for providing a pricing platform for performing pricing calculations for a plurality of different customers with different types of pricing calculations is provided, where the pricing platform has a price-calculation pipeline with multiple stages. The system creates an instance of the price-calculation pipeline for each of a plurality of customers of the pricing platform. The price-calculation pipeline has a plurality of modular pricing stages for performing pricing calculations. The system executes the instances of the price-calculation pipeline to perform pricing calculations for a plurality of different customers with different types of pricing calculations. For each instance of the price-calculation pipeline, the system generates a performance metric for each of the modular pricing stages within the instance. The system displays the performance metrics in a user dashboard and provides user controls that enable the user (e.g., an administrator) to adjust the computational resources allocated to each of the modular pricing stages executing on the platform, where the allocation of computational resources to the modular pricing stages is independently configurable for each customer and for each instance of the price-calculation pipeline. The system receives user input to make one or more adjustments to the computational resources allocated to the modular pricing stages. The system then adjusts the computational resources allocated to one or more modular pricing stages in accordance with the user input.
Example implementations of the method are described in more detail with respect to
1. Method for Providing a Pricing Platform for Performing Different Types of Pricing Calculations for Different Customers
Modular pricing stages are specific steps in a pricing operation and are executed as separate software modules. Examples of modular pricing stages include matching products, matching attributes, applying rules, applying promotions, price matrix, price list item, price escalator, quantity and selling term, pricing callback or pricing extension, approval check, deal guidance check, etc. A person skilled in the art would understand that the modular pricing stages may include other examples not listed above within the scope of the present invention. Within an instance, all the modular pricing stages are executed within the same process boundary and on the same machine, and they share the same memory address space.
The system executes each of the instances of the price-calculation pipeline (step 120). The amount of computation performed at each modular pricing stage varies among the instances of the pricing pipeline due to the different types of pricing calculations of the different customers. Inputs to the instances of the price-calculation pipeline are cart data and outputs of the instances are price calculations (step 120a). In certain embodiments, if the cart data is large, the cart data will be divided into batches. Each batch will be assigned to an instance of the pricing pipeline, and the plurality of instances may run in parallel. A customer may have one or more instances of the pricing pipeline, depending on the pricing calculation requirements of the customer. The modular pricing stages within a single instance are executed within the same process boundary (step 120b). Different instances may run on different machines and, therefore, in different process boundaries. The computational resources allocated to each modular pricing stage within an instance of the pricing pipeline are independently configurable (step 120c).
The system generates a performance metric for each modular pricing stage within each instance of the price-calculation pipeline (step 130). The performance metric indicates how long it takes for each of the modular pricing stages to run a batch, and when the performance metrics are aggregated, it provides the overall throughput of the pipeline. The system displays the performance metrics in a user dashboard and provides user controls that enable the user to adjust the computational resources allocated to each of the modular pricing stages executing on the pricing platform (step 140). The amount of computational resources allocated to a particular modular pricing stage varies across instances. For example, the amount of computational resources allocated to pricing stage 3 in instance X may be different than the computational resources allocated to pricing stage 3 in instance Y.
The system receives user input to make one or more adjustments to the computational resources allocated to the modular pricing stages (step 150). The system adjusts the computational resources allocated to one or more modular pricing stages in accordance with the user input (step 160).
In certain embodiments, allocating more resources means to add more resources to modular pricing stages that are slower in order to balance the load. Examples of computational resources include memory (e.g., RAM), processing power (e.g., CPU), PODS (i.e., horizontal scaling or an increase in copies), etc. In certain embodiments, an administrator manually adjusts the computational resources. In certain embodiments, the system can adjust the computational resources automatically by means of a machine-learning system that uses the historical recommendations and the corresponding approval or rejections of the user. For each instance of the price-calculation pipeline, certain modular pricing stages may be mandatory and certain modular pricing stages may be optional and, therefore, a pass through. In other words, for the modular pricing stages that are optional, the user may choose to lower the allocation to the modular pricing stage such that its impact is negligible.
In certain embodiments, adjusting the computational resources allocated to a modular pricing stage comprises increasing or decreasing the computational resources assigned to the modular pricing stage. In certain embodiments, the system recommends to the user one or more adjustments to the modular pricing stages in order to optimize throughput of the instances of the pricing pipeline. In certain embodiments, receiving user input and making adjustments includes receiving the user feedback on the recommendations and making any recommended adjustments to the modular pricing stages that were approved by the user. In certain embodiments, the user may adjust how long the cart data is stored and how much of the cart data is stored. For example, the cart data may be stored short term (e.g., one to two months, two weeks, etc.), but the price master data may be stored long term (e.g., indefinitely). In certain embodiments, the cart data is divided into batches, the batches of cart data are run in parallel using multiple instances of the pricing pipeline, and the batches are combined before updating the price.
2. Example System Architecture
The performance metrics module 260 monitors the execution of the modular pricing stages and generates a performance metric for each modular pricing stage within each instance of the pricing pipeline 250. It provides the performance metrics both to a recommendation module 270, which provides recommendations on how to adjust the computational resources allocated to each of the modular pricing stages, as well as to the user interface module 280, which displays the performance metrics and provides user controls that enable the user to adjust the computational resources allocated to each of the modular pricing stages executing on the pricing platform 200.
3. Example of One Instance of a Pricing Pipeline
The pricing pipeline 250 receives the cart data from the cart management module 240, which is denoted as the source 312. The pricing pipeline 250 then processes the cart data in the first modular pricing stage (i.e., pricing stage 1314). Subsequent to the first modular pricing stage are n modular pricing stages. These are denoted in
The price calculations, which are the result of the modular pricing stages, update the pricing 330 in the cart management module 240. If the cart data was divided into multiple batches, the instances of the pricing pipeline 250 will be combined before updating the price. The updated pricing is then sent to the web APIs 230, which transmit it through the network 302 to the client application 210. As noted previously, the system monitors the execution of the modular pricing stages 314-326 and generates a performance metric for each modular pricing stage 314-326 within an instance of the pricing pipeline 250. The system displays the performance metrics in a user interface module and provides user controls that enable the user to adjust the computational resources allocated to each of the modular pricing stages 314-326 executing on the pricing platform 200.
4. General
The methods described with respect to
As will be understood by those familiar with the art, the invention may be embodied in other specific forms without departing from the spirit or essential characteristics thereof. Accordingly, the above disclosure is intended to be illustrative, but not limiting, of the scope of the invention, which is set forth in the following claims.
Number | Name | Date | Kind |
---|---|---|---|
5960407 | Vivona | Sep 1999 | A |
6473084 | Phillips et al. | Oct 2002 | B1 |
7328177 | Lin-Hendel | Feb 2008 | B1 |
7574381 | Lin-Hendel | Aug 2009 | B1 |
7693762 | Dagum | Apr 2010 | B1 |
7725358 | Brown et al. | May 2010 | B1 |
8498954 | Malov et al. | Jul 2013 | B2 |
8644842 | Arrasvuori et al. | Feb 2014 | B2 |
9495222 | Jackson | Nov 2016 | B1 |
9519907 | Carter, III et al. | Dec 2016 | B2 |
10289261 | Aggarwal et al. | May 2019 | B2 |
10521491 | Krappe et al. | Dec 2019 | B2 |
10621640 | Krappe et al. | Apr 2020 | B2 |
10783575 | Krappe et al. | Sep 2020 | B1 |
11232508 | Krappe | Jan 2022 | B2 |
11455373 | Krappe et al. | Sep 2022 | B2 |
11550786 | Naganathan et al. | Jan 2023 | B1 |
11604799 | Bigdelu et al. | Mar 2023 | B1 |
11615080 | Naganathan et al. | Mar 2023 | B1 |
11615089 | Naganathan et al. | Mar 2023 | B1 |
11720951 | Krappe | Aug 2023 | B2 |
20020040332 | Maari et al. | Apr 2002 | A1 |
20030033240 | Balson et al. | Feb 2003 | A1 |
20040158560 | Wen et al. | Aug 2004 | A1 |
20060100912 | Kumar et al. | May 2006 | A1 |
20060136470 | Dettinger et al. | Jun 2006 | A1 |
20070016536 | Mirlas et al. | Jan 2007 | A1 |
20070039209 | White et al. | Feb 2007 | A1 |
20070087756 | Hoffberg | Apr 2007 | A1 |
20070162373 | Kongtcheu | Jul 2007 | A1 |
20070294157 | Singla | Dec 2007 | A1 |
20080046355 | Lo | Feb 2008 | A1 |
20080091551 | Olheiser et al. | Apr 2008 | A1 |
20080177717 | Kumar et al. | Jul 2008 | A1 |
20090024613 | Niu et al. | Jan 2009 | A1 |
20090048937 | Contreras et al. | Feb 2009 | A1 |
20090222319 | Cao et al. | Sep 2009 | A1 |
20090234710 | Belgaied Hassine et al. | Sep 2009 | A1 |
20090299974 | Kataoka et al. | Dec 2009 | A1 |
20090327166 | Carter, III et al. | Dec 2009 | A1 |
20100179859 | Davis et al. | Jul 2010 | A1 |
20100262478 | Bamborough et al. | Oct 2010 | A1 |
20100306120 | Ciptawilangga | Dec 2010 | A1 |
20110246136 | Haratsch et al. | Oct 2011 | A1 |
20110246434 | Cheenath et al. | Oct 2011 | A1 |
20120173384 | Herrmann et al. | Jul 2012 | A1 |
20120221410 | Bennett et al. | Aug 2012 | A1 |
20120246035 | Cross et al. | Sep 2012 | A1 |
20120254092 | Malov et al. | Oct 2012 | A1 |
20120259801 | Ji et al. | Oct 2012 | A1 |
20130103391 | Millmore et al. | Apr 2013 | A1 |
20130132273 | Stiege et al. | May 2013 | A1 |
20130304757 | Gebhard et al. | Nov 2013 | A1 |
20140025529 | Honeycutt et al. | Jan 2014 | A1 |
20140040275 | Dang et al. | Feb 2014 | A1 |
20140136443 | Kinsey, II et al. | May 2014 | A1 |
20140149273 | Angell et al. | May 2014 | A1 |
20140379755 | Kuriakose et al. | Dec 2014 | A1 |
20150120526 | Peterffy et al. | Apr 2015 | A1 |
20150142704 | London | May 2015 | A1 |
20150309705 | Keeler et al. | Oct 2015 | A1 |
20150310005 | Ryger et al. | Oct 2015 | A1 |
20150310114 | Ryger et al. | Oct 2015 | A1 |
20150310115 | Ryger et al. | Oct 2015 | A1 |
20150348551 | Gruber et al. | Dec 2015 | A1 |
20150378156 | Kuehne | Dec 2015 | A1 |
20160034923 | Majumdar et al. | Feb 2016 | A1 |
20170004588 | Isaacson et al. | Jan 2017 | A1 |
20170068670 | Orr et al. | Mar 2017 | A1 |
20170124176 | Beznos et al. | May 2017 | A1 |
20170124655 | Crabtree et al. | May 2017 | A1 |
20170235732 | Williams et al. | Aug 2017 | A1 |
20170243107 | Jolley et al. | Aug 2017 | A1 |
20170351241 | Bowers et al. | Dec 2017 | A1 |
20170358024 | Mattingly et al. | Dec 2017 | A1 |
20180005208 | Aggarwal et al. | Jan 2018 | A1 |
20180096406 | Krappe et al. | Apr 2018 | A1 |
20180218032 | Wong et al. | Aug 2018 | A1 |
20180285595 | Jessen | Oct 2018 | A1 |
20180293640 | Krappe | Oct 2018 | A1 |
20180336247 | Ignatyev et al. | Nov 2018 | A1 |
20180349324 | Krappe et al. | Dec 2018 | A1 |
20180349377 | Verma et al. | Dec 2018 | A1 |
20190258632 | Pal et al. | Aug 2019 | A1 |
20190370388 | Li et al. | Dec 2019 | A1 |
20200057946 | Singaraju et al. | Feb 2020 | A1 |
20200065354 | Krappe et al. | Feb 2020 | A1 |
20200334241 | Muralidhar et al. | Oct 2020 | A1 |
20210064483 | Paramasivam et al. | Mar 2021 | A1 |
20210089587 | Gupta et al. | Mar 2021 | A1 |
20210090575 | Mahmood et al. | Mar 2021 | A1 |
20210107141 | Shrivastava et al. | Apr 2021 | A1 |
20210241301 | Christensen | Aug 2021 | A1 |
20220148071 | Krappe | May 2022 | A1 |
20220318223 | Ahluwalia et al. | Oct 2022 | A1 |
Number | Date | Country |
---|---|---|
2742395 | Jan 2019 | CA |
1315705 | Mar 2001 | CN |
106910091 | Jun 2017 | CN |
2650776 | Oct 2013 | EP |
3073421 | Sep 2016 | EP |
2001290977 | Oct 2001 | JP |
2017146909 | Aug 2017 | JP |
0052605 | Sep 2000 | WO |
03003146 | Jan 2003 | WO |
WO-2005006122 | Jan 2005 | WO |
2015106353 | Jul 2015 | WO |
Entry |
---|
Alicia “Developing Product Configurators for Use in a Multinational Industrial Goods Company”, May 2013, MIT, pp. 1-87 (Year: 2013). |
Torsten “Controlling instruments' for price management: a single case study on a B2B company in the OEM business operating in the German electrical/electronics industry”, Sep. 2018, A thesis submitted to The University of Gloucestershire, pp. 1-339 (Year: 2018). |
Oracle: Automating the Quote-to-Cash Process: An Oracle White Paper, Jun. 2009, pp. 1-19. |
McCormick, M., “What is Quote to Cash?” Blog, BlackCurve, Jan. 20, 2016, pp. 1-8. |
Microsoft/APTTUS: Ultimate Guide to Quote-To-Cash for Microsoft Customers, Web Archives, Oct. 1, 2015, pp. 1-28. |
Morelli et al., “IBM SPSS Predictive Analytics: Optimizing Decisions at the point of impact”, 2010, pp. 1-59. |
Riggins, J., “Interview Quote-to-Cash Pioneers Apttus Links Leads to Revenue”, May 21, 2014, pp. 1-7. |
Spedicato, G., et al., Machine Learning Methods to Perform Pricing Optimization. A Comparison with Standard GLMs, Dec. 2018, pp. 1-21. |
Wainewright, Phil, “Salesforce, Microsoft quote-to-cash partner Apttus raises $88m”, Sep. 29, 2016, pp. 1-7. |
Wainewright, Phil, Apttus Applies Azure Machine Learning to Quote-to-Cash, Apr. 3, 2016, pp. 1-5. |
Wireless News: Banglalink Keeps Mobile Subscribers Using Predictive Analytics with KXEN, Close-Up Media, Inc., Oct. 5, 2013, pp. 1-2. |
Xie, Qitao et al., “Chatbot Application on Cryptocurrency”, 2019 IEEE Conference on Computational Intelligence for Financial Engineering & Economics, 2019, pp. 1-8. |