Method and system for an inventory aggregator

A system and method for aggregating and listing inventory. The system may include a database for storing data in a plurality of record classes. The record classes may include data pertaining at least to a plurality of inventory and may include any variety of identifying data for each inventory record. The database may be a relational database, and the records may be grouped in a plurality of classes, which may be interrelated. The system may further include a search engine for searching the database so as to find and return a list of inventory based on desired criteria.

BACKGROUND

The development and accessibility of the Internet has served to provide cheap and pervasive marketing and sales opportunities. Many small businesses have taken advantage of these opportunities to expand their customer bases. However, a wider customer base requires a business to keep larger quantities of inventory in stock and develop more extensive inventory control mechanisms. While expansion on the Internet is relatively cheap and simple, physical expansion is expensive, time-consuming and risky. This is especially true when the business is dealing in larger, more expensive products, such as vehicles, and in smaller items with high cost. Thus, a system which allows various businesses to aggregate inventory in order to meet Internet-generated interest is desired.

SUMMARY

According to one exemplary embodiment, an inventory aggregator is disclosed. An inventory aggregator may relate to a system and method for item-based searching based on, among other criteria, specific businesses, locations and products. The system may include a database which may store a wide variety of records. The database may be a relational database and the records stored therein may relate to inventory held by various businesses. The records may be organized, sorted, or otherwise grouped by any desirable criteria, such as location, business or type of inventory. Any inventory uploaded to the database may be presented on a collection of web pages, wherein specific web pages may be devoted to specific businesses.

Each business may upload data relating to their inventory into the database. Additionally, a business may select other businesses' inventory to be displayed on their own specific web page. In this manner, businesses may expand their offerings without increasing the amount of physical inventory actually kept in stock. The system may further provide business owners the ability to manually or automatically control the profit margin associated with specific products. Once inventory is uploaded or selected, the database may organize the inventory and allow users to browse, compare, watch, purchase, submit offers, or trade for certain products. The system may further include a search engine which may facilitate searching by sorting data by various criteria.

DETAILED DESCRIPTION

Aspects of the present invention are disclosed in the following description and related figures directed to specific embodiments of the invention. Those skilled in the art will recognize that alternate embodiments may be devised without departing from the spirit or the scope of the claims. Additionally, well-known elements of exemplary embodiments of the invention will not be described in detail or will be omitted so as not to obscure the relevant details of the invention.

Further, many of the embodiments described herein are described in terms of sequences of actions to be performed by, for example, elements of a computing device. It should be recognized by those skilled in the art that the various sequence of actions described herein can be performed by specific circuits (e.g., application specific integrated circuits (ASICs)) and/or by program instructions executed by at least one processor. Additionally, the sequence of actions described herein can be embodied entirely within any form of computer-readable storage medium such that execution of the sequence of actions enables the processor to perform the functionality described herein. Thus, the various aspects of the present invention may be embodied in a number of different forms, all of which have been contemplated to be within the scope of the claimed subject matter. In addition, for each of the embodiments described herein, the corresponding form of any such embodiments may be described herein as, for example, “a computer configured to” perform the described action.

Generally referring toFIGS. 1-4, a method and system for inventory aggregation may be shown. The system may include a database, which may be a relational database, configured to allow users to upload data relating to physical inventory. Further, the database may allow users to share or aggregate their inventory in order to present a larger menu of options to potential customers. A search engine may be incorporated into this system in order to allow users to parse the data stored therein by various criteria.

FIG. 1illustrates an exemplary computer system111upon which an embodiment of the present invention may be implemented. The computer system111includes a bus112or other communication mechanism for communicating information, and a processor113coupled with the bus112for processing the information. The computer system111also includes a main memory114, such as a random access memory (RAM) or other dynamic storage device (e.g., dynamic RAM (DRAM), static RAM (SRAM), and synchronous DRAM (SDRAM)), coupled to the bus112for storing information and instructions to be executed by processor113. In addition, the main memory114may be used for storing temporary variables or other intermediate information during the execution of instructions by the processor113. The computer system111further includes a read only memory (ROM)115or other static storage device (e.g., programmable ROM (PROM), erasable PROM (EPROM), and electrically erasable PROM (EEPROM)) coupled to the bus112for storing static information and instructions for the processor113.

The computer system111also includes a disk controller116coupled to the bus112to control one or more storage devices for storing information and instructions, such as a magnetic hard disk117, and a removable media drive118(e.g., floppy disk drive, read-only compact disc drive, read/write compact disc drive, compact disc jukebox, tape drive, and removable magneto-optical drive). The storage devices may be added to the computer system111using an appropriate device interface (e.g., small computer system interface (SCSI), integrated device electronics (IDE), enhanced-IDE (E-IDE), direct memory access (DMA), or ultra-DMA).

Further, exemplary embodiments include or incorporate at least one database which may store software, descriptive data, system data, digital images and any other data item required by the other components necessary to effectuate any embodiment of the present system known to one having ordinary skill in the art. The database may be provided, for example, as a database management system (DBMS), a relational database management system (e.g., DB2, ACCESS, etc.), an object-oriented database management system (ODBMS), a file system or another conventional database package as a few non-limiting examples. The database can be accessed via a Structure Query Language (SQL) or other tools known to one having skill in the art.

The computer system111may also include a display controller119coupled to bus112to control a display120, such as a cathode ray tube (CRT), liquid crystal display (LCD) or any other type of display, for displaying information to a computer client. The computer system includes input devices, such as a keyboard121and a pointing device122, for interacting with a computer client and providing information to the processor113. Additionally, a touch screen could be employed in conjunction with display120. The pointing device122, for example, may be a mouse, a trackball, or a pointing stick for communicating direction information and command selections to the processor113and for controlling cursor movement on the display120. In addition, a printer may provide printed listings of data stored and/or generated by the computer system111.

The computer system111performs a portion or all of the processing steps of the invention in response to the processor113executing one or more sequences of one or more instructions contained in a memory, such as the main memory114. Such instructions may be read into the main memory114from another computer readable medium, such as a hard disk117or a removable media drive118. One or more processors in a multi-processing arrangement may also be employed to execute the sequences of instructions contained in main memory114. In alternative embodiments, hard-wired circuitry may be used in place of or in combination with software instructions. Thus, embodiments are not limited to any specific combination of hardware circuitry and software.

The term “computer readable medium” as used herein refers to any medium that participates in providing instructions to the processor113for execution. A computer readable medium may take many forms, including but not limited to, non-volatile media, volatile media, and transmission media. Non-volatile media includes, for example, optical, magnetic disks, and magneto-optical disks, such as the hard disk117or the removable media drive118. Volatile media includes dynamic memory, such as the main memory114. Transmission media includes coaxial cables, copper wire and fiber optics, including the wires that make up the bus112. Transmission media also may also take the form of acoustic or light waves, such as those generated during radio wave and infrared data communications.

Various forms of computer readable media may be involved in carrying out one or more sequences of one or more instructions to processor113for execution. For example, the instructions may initially be carried on a magnetic disk of a remote computer. The remote computer can load the instructions for implementing all or a portion of the present invention remotely into a dynamic memory and send the instructions over a telephone line using a modem. A modem local to the computer system111may receive the data on the telephone line and use an infrared transmitter to convert the data to an infrared signal. An infrared detector coupled to the bus112can receive the data carried in the infrared signal and place the data on the bus112. The bus112carries the data to the main memory114, from which the processor113retrieves and executes the instructions. The instructions received by the main memory114may optionally be stored on storage device117or118either before or after execution by processor113.

The computer system111also includes a communication interface123coupled to the bus112. The communication interface123provides a two-way data communication coupling to a network link124that is connected to, for example, a local area network (LAN)125, or to another communications network126such as the Internet. For example, the communication interface123may be a network interface card to attach to any packet switched LAN. As another example, the communication interface123may be a wireless link. In any such implementation, the communication interface123sends and receives electrical, electromagnetic or optical signals that carry digital data streams representing various types of information.

The network link124typically provides data communication through one or more networks to other data devices. For example, the network link124may provide a connection to another computer or remotely located presentation device through a local network125(e.g., an 802.11-compliant wireless network) or through equipment operated by a service provider, which provides communication services through a communications network126. In preferred embodiments, the local network124and the communications network126preferably use electrical, electromagnetic, or optical signals that carry digital data streams. The signals through the various networks and the signals on the network link124and through the communication interface123, which carry the digital data to and from the computer system111, are exemplary forms of carrier waves transporting the information. The computer system111can transmit and receive data, including program code, through the network(s)125and126, the network link124and the communication interface123. Moreover, the network link124may provide a connection through a LAN125to a mobile device127such as a personal digital assistant (PDA) laptop computer, or cellular telephone. The LAN communications network125and the communications network126both use electrical, electromagnetic or optical signals that carry digital data streams. The signals through the various networks and the signals on the network link124and through the communication interface123, which carry the digital data to and from the system111, are exemplary forms of carrier waves transporting the information. The processor system111can transmit notifications and receive data, including program code, through the network(s), the network link124and the communication interface123.

Other aspects of the invention may include data transmission and Internet-related activities. See Preston Gralla, How the Internet Works, Ziff-Davis Press (1996), which is hereby incorporated by reference into this patent application. Still other aspects of the invention may utilize wireless data transmission.

According to at least one exemplary embodiment, and as shown inFIG. 2, system200may be shown. System200may be a system of inventory aggregation. System200may have a plurality of users. Users may be considered inputting users, non-inputting users, customers or any combination of the above. In one exemplary embodiment, an inputting user who owns the inventory may be able to upload identifying data202into the system. Once an inputting user inputs identifying data202into the various required fields, the database may create and store an original inventory record204representative of the input identifying data202. The system may allow any number of users who own inventory to input identifying data202into the system in order to create original inventory records204within the database. Further, System200may be able to automatically pull inventory records uploaded by any user, aggregate this data and create comprehensive inventory lists which may identify all of the various different types of inventory stored within the system. The system may also be programmed to group, identify, or eliminate any duplicate listings for the same inputting user.

The database of system200may be configured to accept a wide variety of identifying data202relating to the product name, quantity available, quality of the goods, or any other desirable characteristic. For example, the system may be configured to store and aggregate inventory data relating to Recreational Vehicles (RVs). Alternatively, the system may be configured to store and aggregate inventory data relating to any type of product or business. Identifying data may be input into the system through text-input fields, various menus or selections, as desired. The database may be able to accept identifying data202in any manner known in the arts. In the exemplary embodiment relating to RVs, system200may accept data through text-input fields relating to the Vehicle Identification Number (VIN), vehicle name, mileage, year, length, slide-outs, water capacity, sleeping capacity, generator, awnings, air conditioning, and leveling jacks. Additionally, the system may present the user with options in various menu formats, such as a drop-down menu, in order to collect additional identifying data202, such as make, model, class, fuel type, and condition. A user may input all of the aforementioned data inputs manually or, alternatively, the system may be configured to accept bulk uploads of data.FIG. 3illustrates an exemplary bulk input.

Still referring toFIG. 2, any inventory records204created from identifying data202input by a user may be automatically associated with the user who input the identifying data202. However, although each inventory record204is automatically associated with the user who entered the identifying data202relating that specific inventory record204, each inventory record204may also be subsequently associated with inventory of any number of additional non-inputting users. For example, a non-inputting user may select a plurality of original inventory records204input by an inputting user to be associated with the non-inputting user. In this example, the non-inputting user may select specific inventory records204based on the type of inventory. Alternatively, system200may also automatically associate specific original inventory records204with a non-inputting user based on user preferences or specific identifying data202. This feature may, among other benefits, allow any user of the system to increase the quantity or variety of inventory offered without major investment, for example, by downloading selected inventory to a user's own website. Further, multiple users may be able to aggregate inventory for any desirable reason. For example, system200may aggregate the inventory of two small businesses in order to allow these small businesses to retain flexibility while offering the customers the same options as a larger company.

If an original inventory record204is selected to be associated with a non-inputting user, the system may create a non-inputting record with slightly varied identifying data202. For example, identifying data relating to geographic location or price may be altered with the selecting non-inputting user's preferences or previously input identifying data202. For example, with regards to the RV example, if a non-inputting user selects an RV being sold by an inputting user to be associated with the non-inputting user, the non-inputting user may choose to alter some of the identifying data202. System200may prevent the non-inputting user from altering data relating to the specifications or technical detail of the actual product, but may allow the non-inputting user to alter data relating to geographical location or price. For example, system200may allow the non-inputting user to alter the price of the selected RV in order to allow both users to profit on a sale. Alternatively system200may automatically alter the price of the RV based on a previously input price multiplier of the non-inputting user. Any alteration made by a non-inputting user to an inputting user's original inventory record204may not affect the original inventory record204associated with the second, but may create a new non-inputting inventory record204associated with the non-inputting user.

After system200has been populated with all inventory records204, system200may create listings206which may be displayed to users based on search criteria208. The system may utilize a relational database to produce listings206which may correlate with search criteria208. For example, if a user searched for an RV in Louisiana, system200may sift through inventory records204in order to find records with similar identifying data202. Upon finding matching or similar inventory records204, system200may display listings206for the matching inventory records204. If a user had become associated with a second user's inventory record204, multiple listings206, with slightly varying identifying data202, might be displayed for the same product. However, system200may be programmed to only display one listing per physical product. System200may choose the specific listings208to be displayed based on geographic location, price, the original user it was associated with, or various other criteria.

According to at least one exemplary embodiment, a method of populating the database of system200may be disclosed in exemplaryFIG. 3. In the exemplary method, system200may be populated with identifying data202when data pertaining to a particular inventory is entered into system200, such as, for example, descriptive data of a particular RV. System200may request a title for each listing (step402) as well as identifying information (step404). System200may store each product listing (step406) and may subsequently generate a unique original inventory record204for the particular item (step408). Original inventory records204may be stored in system200and system200may associate each inventory record204with the particular user who input the data used to create the particular product listing.

Once populated, system200may sort the data by type of inventory and display various data types on various collections of web pages. For example, if the product listings pertain to RVs the database may subsequently display the records stored therein on a collection of web pages. In an exemplary embodiment, each user may have a particular web page or collection of web pages associated with them. Alternatively, all of the inventory records204may be searchable through a search engine available on a web page or collection of web page. Each user may choose to display records which he or she entered into the system—records which may already be associated with the user—as well as, records input into the system by other users.

Each user may be able to watch or compare any of the listings206uploaded to system200. For example, users may be able to select any desirable number of items to compare side by side. Referring again to the RV example, a user may choose to select four RVs to compare side by side. Once selected for comparison, system200may display the identifying data202associated with each listing206, such that the user comparing the items may analyze and compare the specifications of each item. If, for example, the items are RVs, the user may compare the make, model, year and price, among other identifying data202. Users may be further able to swap or exchange inventory. Thus, users may utilize the comparison feature if they are considering swapping inventory. If, again, system200is being utilized for RV inventory, users may desire to exchange or sell RVs when curtailments are coming due.

Once a particular item of inventory is purchased, system200may automatically update every listing206associated with the identifying data202of the particular item of inventory. System200may automatically push this sold status through to any user web page or collection of web pages which may have the particular listing206posted. For example, if a non-inputting user sells an Airstream RV which was originally posted by an inputting user, the system may automatically remove the inputting user's listing—the original listing—from the inputting user's web page. Additionally, the listing for the Airstream RV may be automatically removed from any other user web pages (i.e. other non-inputting users) which were advertising the RV for sale. In this exemplary scenario, the non-inputting user may have marked up the price of the Airstream RV when it was posted to the non-inputting user's web page. If this was the case, the non-inputting user would be able to earn this markup price, but would be required to pay the inputting user, who actually owns the RV, the entirety of the original price. In other words, the inputting user would receive the full price that the inputting user originally listed, if not otherwise agreed upon.

According to at least one exemplary embodiment, a method of executing a search may be disclosed in exemplaryFIG. 4. In the exemplary method, system200may return specific listings206based on search criteria208. A user may input any variety of search criteria208, through various inputs, such as text based inputs or selections from various menus (step502) into a search engine incorporated into system200. Upon receiving search criteria208, system200may compare the search criteria208to inventory records204stored within the database (step504). Upon finding candidate inventory records204to match the search criteria, system200may be required to calculate the purchase value for each candidate inventory record204(step506). Step506may be necessary if a candidate inventory record204is a record which was input by an inputting user and subsequently selected by a non-inputting user who also assigned a price multiplier to the original inventory record204. Following calculation of the purchase value, system200may sort the candidate inventory records204by relevance to the search terms (step508). Once the candidate records are sorted, the most relevant inventory records204may be displayed to the user as matching records (step510).

The database, which may be a relational database, may compare the inventory records204to the search criteria208based on various factors and weights. For example, if a user searches for a new Airstream RV in Colorado, the database may return any inventory records204which match any of one of the three criteria entered—Airstream, new, and located in Colorado. Inventory records204which match all three search criteria may be presented first; those which match only two criteria may be presented second, and so on. Further, if system200determines that certain factors are more important, these factors may force certain inventory records to be found more relevant. For example, a particular RV's location may be more important than the exact model since shipping an RV might require significant resources.

In some exemplary embodiments, a collection of web pages may be associated with system200. The web pages may provide an interface for accepting identifying data202. Users may select to upload identifying data202in bulk or may select to manually enter identifying data202. Users may enter identifying data relating to a specific inventory, which may, for example, be an RV. As mentioned, a user may input identifying data202through text based fields or drop down menus, for example.

In a further exemplary embodiment, a web page may show user-selected listings. Once a user has selected various inventory listings206to be displayed on his or her personal web page, the user may assign profit margins to each item. This may increase the price of the items when they are displayed for sale on the user's personal web page. In addition, the system200may include of a search menu. A search menu may allow a user to input or select search criteria208in order to find other users' inventory. This may allow users to locate items which they desire to watch, trade for, purchase, make offer, or otherwise inquire about.

System200and the aforementioned methods may allow users to increase, swap and otherwise manage inventory. System200may allow users located around the country to increase and diversify their inventory, and in turn, their offerings to customers. System200may automatically ensure that only available inventory are offered for sale and easily allow user interaction.