1. Field
The subject invention relates to systems and methods for building a product online and, in particular, to systems and methods for building a computer online.
2. Related Art
Most retail brand computers are sold as pre-packaged computers that are combinations of various computer components. For example, Dell, Sony, IBM and Apple and all sell pre-packed computers. Websites exist that can help users identify the best retail or pre-packaged computer for them. For example, cnet.com offers users a Desktop buying guide that identifies recommended desktops for certain types of users (e.g., general purpose user, power user, home theater enthusiast, home office worker). However, when users identify one of these computers to purchase, the user, typically, cannot change the components of the retail brand or pre-packaged computer.
Some tech-savvy consumers prefer to build their own computers. These tech-savvy consumers spend a significant amount of time researching various computer components and, based on their research, identify the components that best suit their needs. These consumers then purchase the components separately, and assemble the components to build a customized computer themselves. There are, however, no online tools that help these tech-savvy consumers build their customized computer.
The following summary of the invention is included in order to provide a basic understanding of some aspects and features of the invention. This summary is not an extensive overview of the invention and as such it is not intended to particularly identify key or critical elements of the invention or to delineate the scope of the invention. Its sole purpose is to present some concepts of the invention in a simplified form as a prelude to the more detailed description that is presented below.
According to an aspect of the invention, a computer system is provided that includes a first application programming interface configured to access component specifications; a second application programming interface configured to access a relationship engine that identifies relationships between components; and an application coupled to the first application programming interface and the second application programming interface, and configured to receive a user input from a user to build a product and identify components that can be used to build the product using the relationships between the components and the component specifications.
The application may be a widget embeddable on a web page.
The application may include a plurality of rules for identifying components based on the specifications and relationships, and an engine executes the rules in response to user input and displays the identified components to the user.
The first application programming interface may further be configured to access component pricing data and component images, and the application may be configured to display the component pricing data and component images.
The application may be configured to receive user input identifying a plurality of components to build the product.
The application may be configured to display the product with a link to purchase each of the plurality of components.
The application may be configured to display the product with a link to order a built product that includes the plurality of components.
The product may be a computer.
According to another aspect of the invention, a computer-implemented method is provided that includes receiving a user request to build a product having a plurality of components; identifying a category of the product, a plurality of components associated with the category of the product, and relationships between the plurality of components; displaying a first list of a plurality of components associated with the category of the product; receiving a user selection of one of the plurality of components in the first list; displaying a second list of a plurality of components that are compatible with the user selected component using the identified relationships; receiving a user selection of one of the plurality of components in the second list; and displaying the user-selected components.
Identifying the relationships between the plurality of components may include identifying specifications for the plurality of components and analyzing the specifications of the plurality of components to determine compatibility.
Displaying the second list of the plurality of components may include identifying a plurality of components associated with a category of the selected component.
The method may also include identifying specifications for each of the plurality of components, and identifying the relationships between the plurality of components may include analyzing the specifications of the plurality of components to determine compatibility.
The method may also include accessing component pricing data and component images, and wherein displaying the first list and the second list and may include displaying the pricing data and the images.
The method may also include determining the compatibility of the plurality of components in the first list with the category of the product before displaying the first list of plurality of components; and determining the compatibility of the plurality of components in the second list with the user selected component from the first list.
According to a further aspect of the invention, a computer-readable storage media having computer executable instructions stored thereon which cause a computer system to carry out the method described above when executed.
The accompanying drawings, which are incorporated in and constitute a part of this specification, exemplify the embodiments of the present invention and, together with the description, serve to explain and illustrate principles of the invention. The drawings are intended to illustrate major features of the exemplary embodiments in a diagrammatic manner. The drawings are not intended to depict every feature of actual embodiments nor relative dimensions of the depicted elements, and are not drawn to scale.
Systems and methods for building a product (i.e., a product builder) that has a plurality of components are described. In one embodiment, the product builder is a web widget that allows users to build a desktop. The product builder is a browser-based product selection wizard, and allows users to select computer system components to add to a shopping list of compatible parts so the user can then build their own product, such as a desktop computer. The product builder ensures the components are compatible which helps recreate the online customization experience of retail computer system brands.
For example, the widget may receive a user request to build a product and communicates with one or more APIs that identify a category of the product, a plurality of components associated with the category of the product, and relationships between the plurality of components. The widget then displays a first list of components in the category of the product. The widget receives a user selection of one of components in the first list, and then displays a second list of components that are compatible with the first selected component. The user then selects one of the components in the second list, and so on, until the product is ready to be built. The widget can then be used to purchase the built product that is specific to the user or direct the user to websites that sell each of the components necessary to build the product.
These systems and methods are advantageous because building a product, such as desktop, no longer requires independent research to determine component compatibility. The widget or application can be configured to automatically display, for example, compatible components, pricing lead-outs, reviews, popularity information and the like.
An embodiment of the invention will now be described in detail with reference to
The server 104 is configured to deliver online content to users at the user systems 112. The server 104 is typically a computer system, and may be an HTTP (Hypertext Transfer Protocol) server such as an Apache server. The memory 120 may be any type of storage media that may be volatile or non-volatile memory that includes, for example, read only memory (ROM), random access memory (RAM), magnetic disk storage media, optical storage media, flash memory devices and zip drives.
The network 108 is a local area network (LAN), wide area network (WAN), a telephone network, such as the Public Switched Telephone Network (PSTN), an intranet, the Internet, or combinations thereof.
The plurality of user systems 112 may be mainframes, minicomputers, personal computers, laptops, personal digital assistants (PDA), cell phones, and the like. The plurality of user systems 112 are characterized in that they are capable of being connected to the network 108. The plurality of user systems 112 typically include web browsers.
In use, when a user of one of the plurality of user systems 112 is browsing a web page, a request to access content is communicated to the server 104 over the network 108. For example, a signal is transmitted from one of the user systems 112, the signal having a destination address (e.g., address representing the server), a request (e.g., content request) and a return address (e.g., address representing user system that initiated the request). The processor 116 accesses the memory 120 to provide the requested content, which is communicated to the user over the network 108. For example, another signal may be transmitted that includes a destination address corresponding to the return address of the client system, and the content responsive to the request.
As shown in
The web layer 204 is configured to receive user requests to access content through a web browser and return content that is responsive to the user request. The web layer 204 communicates the user requests to the cache 208.
The cache 208 is configured to temporarily store content that is accessed frequently by the web layer 204 and can be rapidly accessed by the web layer 204. In one embodiment, the cache 208 may be a caching proxy server. The cache 208 communicates the user requests to the site application 212.
The site application 212 is configured to update the cache 208 and to process user requests received from the web layer 204. The site application 212 may identify that the user request is for a page that includes data from multiple sources. The site application 212 can then convert the page request into a request for content from multiple sources and transmits these requests to the CNET API.
The CNET API 216 is configured to simultaneously access data from the plurality of data stores 220 to collect the data responsive to the plurality of requests from the site application 212. The plurality of data stores 220 include catalogue data about different product types (e.g., product specifications, pricing, images, etc.). It will be appreciated that in alternative embodiments only one data store 220 may be provided to store the data.
The data in the data stores 220 is provided to the CNET API 216, which provides the content to the site application 212. The site application 212 updates the cache 208 and delivers the cached content in combination with the accessed content to the web layer 204, which delivers browsable content to the user.
Product catalog information and component relation data is downloaded from the CNET API 316 and the CNET Content Solutions ICS API 320, respectively, to the product builder 312. The product builder 312 allows users to select computer system components to add to a shopping list of compatible parts so the user can then build their own product, such as a desktop computer. The product builder 312 ensures the components are compatible. In particular, the product builder 312 analyzes the catalog information and component relation data from the CNET API 316 and the ICS API 320. In one embodiment, the product builder 312 includes a rules data store and a rules engine (not shown). The rules data store may include rules that can be used to determine the compatibility of products. The rules engine accesses the rules in the rules data store and determines whether product data provided by the CNET API 316 and the ICS API 320 are compatible. For example, the product builder 312 may compare attributes of the products. In particular, if the product is a desktop and a component is a hard-drive, the processing speed of the graphics card may need to be evaluated with respect to the processing speed of the hard drive. If the proceeding speed of the graphics card is compatible with the processing speed of the hard drive, that graphics card is displayed to the user.
The product builder 312 may be a browser-based product selection wizard. In one embodiment, the product builder 312 is an embeddable widget.
The process 400 begins by receiving a user request to build a product having a plurality of components (block 404). For example, a user may navigate to a web page that has a desktop computer builder widget embedded thereon and select a link indicating their desire to build a desktop computer (e.g., a performance desktop computer).
The process 400 continues by identifying a category of the product, a plurality of components associated with the category of the product, and relationships between the plurality of components (block 408). For example, the desktop builder may determine that the category is a performance desktop and then identifies components that are associated with the performance desktop category.
The process 400 continues by displaying a first list of a plurality of components associated with the category of the product (block 412). For example, the desktop builder may display all the graphic cards that are associated with the performance desktop category that was selected by the user. It will be appreciated that the product builder may display the list of the plurality of components so that they are ranked. In such an embodiment, the product builder 312 may include a ranking algorithm to rank the compatible products as known to those skilled in the art.
The process 400 continues by receiving a user selection of one of the plurality of components in the first list (block 416). For example, the user selects a link on the web page that is associated with one of the components displayed to the user and the selection is communicated to the desktop builder application by the web browser.
The process 400 continues by displaying a second list of a plurality of components that are compatible with the user selected component using the identified relationships (block 420). For example, the desktop builder may identify the selected component and determine identify components in a next category for that product and determine whether those components are compatible with the selected component. The determination includes analyzing the specification and relationship data from, for example, the ICS API, and the catalog information from, for example, the CNET API. It will be appreciated that the product builder may display the list of the plurality of components so that they are ranked. In such an embodiment, the product builder 312 may include a ranking algorithm to rank the compatible products as known to those skilled in the art.
The process 400 continues by receiving a user selection of one of the plurality of components in the second list (block 424). For example, the user selects a link on the web page that is associated with one of the components displayed to the user and the selection is communicated to the desktop builder application by the web browser.
The process 400 continues by displaying the user selected components that build the product (block 428). For example, the product builder compiles a list of each of the components selected by the user, and then transmits the compilation list to the browser. It will be appreciated that the compilation list may include pricing information for the components and/or the product, links to websites that sell each of the selected components, a link to purchase each of the selected components, etc.
The process 500 begins by the user selecting a desktop type (block 502), and storing the desktop type (block 504).
The process 500 continues by getting a category from sequence (block 508) from the category sequence index 512. For example, as shown in
The process 500 continues by checking for stored parent and request children (block 516) using the parent-child mapping application 520 and the ICS API 524. For example, the graphics cards for performance desktops are checked by examining the parent-child mapping and/or the ICS API.
The process 500 continues by requesting a whole category (block 528) using the ICS API 524. For example, all products in the category “graphics card” may be requested from the ICS API 524.
The process 500 continues by requesting specifications for products (block 532) using the CNET API 536. For example, the CNET API 536 may provide information about the price, manufacturer, graphics processor, graphics performance, video input, output port(s), compatibility, interface type, resolution, video RAM, etc.
The process 500 continues by presenting the user with a set of products for the given category that satisfy any compatibility rules based on the specification information and the user selecting one of the products in the given category (block 540). For example, if the user selects a performance desktop, the user may be presented with the list of processors described above. The user then selects one of the given processors. If the user has selected one of the given processors, then the user is only presented with graphics cards that will work with that given processor and are graphics cards that are affiliated with the performance desktop category.
The process 500 continues by determining if the category was the last category (block 544). If no, the process 500 returns to block 508 and repeats until the last category is reached. If yes, the process 500 continues by displaying a configuration list 548. For example, if the user selected a given “graphics card”, then the process would continue with the next category in the category sequence: “RAM”. The process would continue to repeat until a given “power supply” product was selected by the user. After the “power supply” is selected, the configuration list that represents all of the products to build the product is presented to the user.
As shown in
The frame may also includes product specifications and configuration details when the users hover over particular areas with the mouse. For example, as shown in
As shown in
The exemplary computer system 700 includes a processor 702 (e.g., a central processing unit (CPU), a graphics processing unit (GPU) or both), a main memory 704 (e.g., read only memory (ROM), flash memory, dynamic random access memory (DRAM) such as synchronous DRAM (SDRAM) or Rambus DRAM (RDRAM), etc.) and a static memory 706 (e.g., flash memory, static random access memory (SRAM), etc.), which communicate with each other via a bus 708.
The computer system 700 may further include a video display unit 710 (e.g., a liquid crystal display (LCD) or a cathode ray tube (CRT)). The computer system 700 also includes an alphanumeric input device 712 (e.g., a keyboard), a cursor control device 714 (e.g., a mouse), a disk drive unit 716, a signal generation device 720 (e.g., a speaker) and a network interface device 722.
The disk drive unit 716 includes a computer-readable medium 724 on which is stored one or more sets of instructions (e.g., software 726) embodying any one or more of the methodologies or functions described herein. The software 726 may also reside, completely or at least partially, within the main memory 704 and/or within the processor 702 during execution thereof by the computer system 700, the main memory 704 and the processor 702 also constituting computer-readable media.
The software 726 may further be transmitted or received over a network 728 via the network interface device 722.
While the computer-readable medium 724 is shown in an exemplary embodiment to be a single medium, the term “computer-readable medium” should be taken to include a single medium or multiple media (e.g., a centralized or distributed database, and/or associated caches and servers) that store the one or more sets of instructions. The term “computer-readable medium” shall also be taken to include any medium that is capable of storing, encoding or carrying a set of instructions for execution by the machine and that cause the machine to perform any one or more of the methodologies of the present invention. The term “computer-readable medium” shall accordingly be taken to include, but not be limited to, solid-state memories, and optical and magnetic media.
It should be noted that the product builder is illustrated and discussed herein as having various modules which perform particular functions and interact with one another. It should be understood that these modules are merely segregated based on their function for the sake of description and represent computer hardware and/or executable software code which is stored on a computer-readable medium for execution on appropriate computing hardware. The various functions of the different modules and units can be combined or segregated as hardware and/or software stored on a computer-readable medium as above as modules in any manner, and can be used separately or in combination.
It should be understood that processes and techniques described herein are not inherently related to any particular apparatus and may be implemented by any suitable combination of components. Further, various types of general purpose devices may be used in accordance with the teachings described herein. It may also prove advantageous to construct specialized apparatus to perform the method steps described herein. The present invention has been described in relation to particular examples, which are intended in all respects to be illustrative rather than restrictive. Those skilled in the art will appreciate that many different combinations of hardware, software, and firmware will be suitable for practicing the present invention.
Moreover, other implementations of the invention will be apparent to those skilled in the art from consideration of the specification and practice of the invention disclosed herein. Various aspects and/or components of the described embodiments may be used singly or in any combination. It is intended that the specification and examples be considered as exemplary only, with a true scope and spirit of the invention being indicated by the following claims.