RELATED APPLICATIONSThe present application is a continuation of pending U.S. patent application Ser. No. 11/422,546 filed Jun. 6, 2006 which is a continuation of U.S. patent application Ser. No. 10/084,777, filed Feb. 27, 2002 (now U.S. Pat. No. 7,080,030) which claimed the benefit of commonly owned U.S. Provisional Patent Application Ser. No. 60/272,130, filed Feb. 28, 2001, and U.S. Provisional Patent Application Ser. No. 60/310,381, filed Aug. 6, 2001, to all of which applicants' claim priority and which are all hereby incorporated by reference in their entirety.
SUMMARY AND BACKGROUNDThe present invention generally relates to purchasing systems, and more specifically, but not exclusively, concerns a sales system adapted to dynamically price goods and/or services over a computer network.
With the recent explosion in Internet commerce, the amount of stolen or pirated content has been on the rise. Encryption systems, such as Secured Digital Music Interface (SDMI), can be circumvented by hackers so that songs contained therein are freely available. For example, point-to-point (peer-to-peer) (P2P) programs, such as Napster and Gnutella, have made it very easy for a person to copy copyrighted material without compensating the author or artist. Consumers who download the pirated content believe that it is “free”; when in actuality they are “stealing” the author's work. Current intellectual property laws are not comprehensive enough and have not quickly adapted to cover this developing technology. Since intellectual property rights vary internationally, enforcement of those rights across national boundaries can be difficult. Although suits against P2P providers, such as Napster, have been successful, the cost and time involved in achieving a successful result can be prohibitive. Moreover, systems like Gnutella do not require a central index server for maintaining a list of users. This decentralized approach makes it nearly impossible to shutdown such systems since there is no central operator to target for suit. Pursuing legal remedies against individual users who break copyright laws only antagonizes the public further and creates further animosity towards the recording, movie, software and publishing industries.
Due to their popularity, the P2P swapping services, like Napster and Gnutella, have dramatically increased network loads of institutions where such services are extremely popular, like colleges and universities. To combat the increased network loads, universities have denied students access to such services across their networks. Thus, these services are severely hampered in contacting an extremely desirable demographic of consumers, students.
Therefore, there has been a long-felt need for a system to provide digital media priced so that content suppliers can make a profit, and at the same time provide an incentive for consumers to purchase and not steal content.
One form of the present invention concerns a unique digital media content purchasing system. Other forms concern unique systems, apparatus and techniques for supplying media content.
In one form, a first price of an item for sale is sent from a processor to one or more clients over a network. Orders for the item at the first price is received from the clients, and the item is delivered to the clients that ordered the item at the first price. The processor prices the item at a second price based at least on the orders at the first price, and the second price is sent over the network to the clients.
In a further form, a system includes memory containing at least one item and a processor operatively coupled to the memory. The processor is responsive to input over a network from one or more clients. The processor is operable to dynamically adjust pricing of the item and to deliver the item from memory to the clients that order the item at a dynamically adjusted price.
According to yet another aspect of the disclosure, An apparatus comprises memory and a processor. The memory contains at least three items. The memory stores a first group indicator with regard to the first and second of the at least three items and a second group indicator with regard to the third item of the at least three items wherein the at least three items include media content. The processor is operatively coupled to said memory, is responsive to input over a network from one or more clients, is operable to dynamically adjust pricing of the at least three items, is operable to deliver the appropriate one of the at least three items from memory to the one or more clients that order one of the at least three items at a dynamically adjusted price, is operable to adjust the pricing of the first and second of the at least three items by comparing profits generated by the first or second of the at least three items at different price levels, and is operable to adjust the pricing of the third of the at least three items by comparing profits generated by the third of the at least three items at different price levels. The network includes the Internet. The processor is operable to adjust the pricing of the first and second of the at least three items when profit at a current price for the first and second of the at least three items is less than a previous best profit at a previous best price for the first and second of the at least three items. The processor is operable to adjust the pricing of the third of the at least three items when profit at a current price for the third of the at least three items is less than a previous best profit at a previous best price for the third of the at least three items.
In a further form, a system includes memory containing at least one item and a processor operatively coupled to the memory. The processor is responsive to input over a network from one or more clients. The processor is operable to dynamically adjust pricing of the item and to deliver the item from memory to the clients that order the item at a dynamically adjusted price.
In another form, an institutional network is operatively coupled to one or more clients. The institutional network is operatively coupled to at least one server that supplies media content to the clients over the institutional network. Compensation is received for the media content supplied by the server to the clients over the institutional network.
In a further form, a computer readable is device encoded with a program executable by a computer. The program is executable to identify one or more clients that purchase an item over an institutional network as members of an institution that operates the institutional network. The program rewards the institution based on the purchases of the members.
Other forms, embodiments, objects, features, advantages, benefits, and aspects of the present invention shall become apparent from the detailed drawings and description contained herein.
BRIEF DESCRIPTION OF THE DRAWINGSFIG. 1 shows a diagrammatic view of a communication system that includes a dynamic pricing system according to one embodiment of the present invention.
FIG. 2 shows a diagrammatic view of a communication system that includes a dynamic pricing system according to another embodiment of the present invention.
FIG. 3 shows a diagrammatic view of a table structure for theFIG. 2 dynamic pricing system.
FIG. 4 is a flow diagram illustrating process for dynamically pricing and providing content according to one embodiment of the present invention.
FIG. 5 shows a main display screen for the dynamic pricing system.
FIG. 6 shows a registration display screen for the dynamic pricing system.
FIG. 7 shows a user agreement display screen for the dynamic pricing system.
FIG. 8 shows a registration completed display screen for the dynamic pricing system.
FIG. 9 shows a sign-in display screen for the dynamic pricing system.
FIG. 10 shows a registered user main display screen for the dynamic pricing system.
FIG. 11 is a flow diagram illustrating a process of crediting a user account according to one embodiment of the present invention.
FIG. 12 shows a billing display screen for the dynamic pricing system.
FIG. 13 shows an update user profile display screen for the dynamic pricing system.
FIG. 14 shows a purchase history display screen for the dynamic pricing system.
FIG. 15 shows a charge credit card display screen for the dynamic pricing system.
FIG. 16 shows a search display screen for the dynamic pricing system.
FIG. 17 shows a search results display screen for the dynamic pricing system.
FIG. 18 shows a media type display screen for the dynamic pricing system.
FIG. 19 shows a music category display screen for the dynamic pricing system.
FIG. 20 shows a genre display screen for the dynamic pricing system.
FIG. 21 shows a musical artist display screen for the dynamic pricing system.
FIG. 22 shows an album display screen for the dynamic pricing system.
FIG. 23 shows a details display screen for the dynamic pricing system.
FIG. 24A shows a purchase content display screen for the dynamic pricing system.
FIG. 24B shows a download display screen for the dynamic pricing system.
FIG. 25 is a flow diagram illustrating a process for dynamically pricing an item according to one embodiment of the present invention.
FIG. 26 is a flow diagram illustrating a process for dynamically pricing an item according to another embodiment of the present invention.
FIG. 27 is a flow diagram illustrating a process for dynamically pricing an item according to a further embodiment of the present invention.
FIG. 28 shows a diagrammatic view of data flow between navigation servlets in theFIG. 2 system.
FIG. 29 shows a diagrammatic view of data flow between file servlets in theFIG. 2 system.
FIGS. 30A30E show a diagrammatic view of data flow between database servlets in theFIG. 2 system.
FIG. 31 is a flow diagram illustrating a technique for registering and compensating content suppliers according to one embodiment of the present invention.
FIG. 32 shows an artist agreement and release display screen for the dynamic pricing system.
FIG. 33 shows a content pricing and download display screen for the dynamic pricing system.
FIG. 34 is a flow diagram illustrating a technique for providing incentives in order to gain access to institutional networks according to one embodiment of the present invention.
DETAILED DESCRIPTIONFor the purposes of promoting an understanding of the principles of the invention, reference will now be made to the embodiments illustrated in the drawings and specific language will be used to describe the same. It will nevertheless be understood that no limitation of the scope of the invention is thereby intended, such alterations and further modifications in the illustrated device, and such further applications of the principles of the invention as illustrated therein being contemplated as would normally occur to one skilled in the art to which the invention relates.
FIG. 1 depicts acommunication system100 according to one embodiment of the present invention in a diagrammatic form. Thecommunication system100 includes adynamic pricing system102, anadministrative computer104, anetwork106, and one or more user computers/devices (clients)108. An administrator of the dynamic pricing system manages thedynamic pricing system102 with theadministrative computer104. As illustrated, theadministrative computer104 is operatively coupled to thedynamic pricing system102, and thedynamic pricing system102 is operatively coupled to the other systems through thenetwork106. As should be appreciated,administrative computer104 can also be operatively coupled tosystem102 through thenetwork106. Although only oneadministrative computer104 is shown inFIG. 1, it should be understood thatsystem100 can include multipleadministrative computers104. Theadministrative computer104 can include a personal computer, a computer terminal, a personal digital assistant (PDA) and/or other types of devices generally known to those skilled in the art. In one embodiment,administrative computer104 is a personal computer.
Thedynamic pricing system102 stores, dynamically prices, and delivers media content items to theclients108 over thenetwork106. Thedynamic pricing system102 is also operable to receive media content from theclients108. This media content can include, but is not limited to, music, books, movies, videos, television shows, software, coupons, tickets, web pages, magazines, newspapers, and other types of electronic media. As should be appreciated from the discussion below, thedynamic pricing system102 can be adapted to dynamically price goods and/or services, such as electronics and repair services. For instance, these goods and/or service items can include, but are not limited to, compact discs, digital versatile discs, electronic products, household products, jewelry, furniture, telephone services, and the like. It should be appreciated that such items, when purchased, can be delivered electronically over thenetwork106 and/or physically delivered, for example by a postal carrier. As illustrated, thedynamic pricing system102 includes aprocessor110, aclock111 andmemory112. Thedynamic pricing system102 can be located on a single server or distributed over several servers. In one embodiment, thedynamic pricing system102 is incorporated into one or more web servers. Theprocessor110 is used to control the operation of thedynamic pricing system102. Theprocessor110 may be comprised of one or more components. For a multi component form ofprocessor110, one or more components may be located remotely relative to the others, or configured as a single unit. Furthermore,processor110 can be embodied in a form having more than one processing unit, such as a multi-processor configuration, and should be understood to collectively refer to such configurations as well as a single-processor-based arrangement. One or more components of theprocessor110 may be of electronic variety defining digital circuitry, analog circuitry, or both.Processor110 can be of a programmable variety responsive to software instructions, a hardwired state machine, or a combination of these. Theclock111 is used to time events in thedynamic pricing system102. As should be appreciated, theclock111 can be incorporated into theprocessor110 or can be a stand-alone component. Further, theclock111 can be hardware and/or software based. Among its many functions, thememory112 in conjunction with theprocessor110 is used to store media content and manage sales.Memory112 can include one or more types of solid state memory, magnetic memory, or optical memory, just to name a few. By way of nonlimiting example, thememory112 can include solid state electronic random access memory (RAM), sequential access memory (SAM), such as first-in, first-out (FIFO) variety or last-in, first-out (LIFO) variety, programmable read only memory (PROM), electronically programmable read only memory (EPROM), or electronically erasable programmable read only memory (BEPROM); an optical disc memory (such as a DVD or CD-ROM); a magnetically encoded hard disc, floppy disc, tape, or cartridge media; or a combination of these memory types. In addition, thememory112 may be volatile, non-volatile, or a hybrid combination of volatile, non-volatile varieties. In the illustrated embodiment, thememory112 further includesremovable memory114. Theremovable memory114 can be in the form of a non-volatile electronic memory unit, optical memory disk (such as a DVD or CD-ROM); a magnetically encoded hard disk, floppy disk, tape, or cartridge media; or a combination of these or other removable memory types.
Network106 can include the Internet, one or more other wide area networks (WAN), a local area network (LAN), a proprietary network such as provided by America Online, Inc., an institutional network, a cable television network, a public switched telephone network (PSTN), a combination of these, and/or other types of networks generally known to those skilled in the art. In one form of the present invention, thenetwork106 includes the Internet. In the illustrated embodiment, thenetwork106 further includes aninstitutional network115. As should be appreciated that thenetwork106 can include more than oneinstitutional network115. Theinstitutional network115 is maintained by institutions, such as colleges, universities, high schools, technical schools, other types of learning institutions, and/or charitable organizations. As shown,client devices108 are operatively coupled to thenetwork106. Users access thedynamic pricing system102 through theclient devices108. Theclients108 and thedynamic pricing system102 communicate with one another by sending signals across thenetwork106. In one form, these signals can include HyperText Mark Up Language (HTML) pages, Extensible Mark Up Language (XML) Page, and other types transmission protocols. For example, thedynamic pricing system102 can send a signal corresponding to a web page form across thenetwork106 to theclient108. The user withclient108 can fill out the form and send a signal corresponding to the filled-out form across thenetwork106 to thedynamic pricing system102. By way of non-limiting examples, theclients108 can include personal computers, both fixed and portable; computer terminals; PDA's; cellular telephones, land line based telephones and the like; television systems, such as televisions, television-based web browsers, digital video recorders, analog video recorders, cable boxes, cable modems, direct broadcast satellite (DBS) boxes, digital versatile disc (DVD) players and video game systems; home entertainment systems, such as stereo equipment, MP3 players, and the like; sound production equipment; video/movie production equipment; or a combination these components, to name a few examples. As shown, theclients108 are operatively coupled to thedynamic pricing system102 over thenetwork106. It should be appreciated that theclients108 can be operatively coupled to thedynamic pricing system102 through hardwired and/or wireless connections. Theclients108 are hardwired and/or have software that allows theclients108 to communicate over thenetwork106. In one embodiment, theclients108 are personal computers with software that can include email applications, web browsers, chat programs, and/or proprietary software.
Users of thedynamic pricing system102 can be further categorized into two types of users, mainly: content suppliers (or artists) and content consumers (or customers). For example, content suppliers can include, but are not limited to, artists, authors, directors, programmers, producers, actors, performers, publishers, movie/television studios, music labels, copyright holding organizations such as the Recording Industry Association of America (RIAA), and their agents. As should be appreciated, the same user of thedynamic pricing system102 can be a combination of both types, such that they can take the role of being both a content supplier and consumer. As shown, theclients108 can include one or more content supplier computers/devices116. Thecontent supplier computer116 can include, but is not limited to, any of the devices that were described above for theclients108. Withcontent supplier computer116, a content supplier can post media content for sale on thedynamic pricing system102. The media content can come from a source outside ofcomputer116, or an artist can generate the content with thecontent supplier computer116 and/orperipheral devices118 that operatively coupled to thecontent supplier computer116. Theseperipheral devices118 can include, but are not limited to, electronic keyboards, digital cameras, scanners, video cameras, video production equipment, sound production equipment, PDA's, portable computers, and other types of content producing equipment. For example, in the illustrated embodiment, the artist can use acamera120 to create still photographs, movies and videos. Further, in the illustrated embodiment, the artist can create music withkeyboard122 and can create software or text with thecontent supplier computer116. Although a singlecontent supplier computer116 is illustrated inFIG. 1, it should be appreciated thatsystem100 can include multiplecontent supplier computers116. Content suppliers can sell individual items and/or bundle multiple items for sale on thedynamic pricing system102. For example, thedynamic pricing system102 can sell one song and two pictures collectively for a single price. In another example, two pictures can be bundled together and sold at a single price on thedynamic pricing system102.
Theclients108 further includecustomer devices124. It should be understood thatcustomer devices124 can include, but are limited to, the devices as described above for theclients108. As shown, thecustomer devices124 can further includeinstitutional member devices125. Institutional members, such as students and teachers, are operatively coupled to thedynamic pricing system102 through theinstitutional network115. Withcustomer devices124, consumers can purchase and download content from thedynamic pricing system102. Consumers can view, listen to and/or interact with the content they purchased withcustomer devices124. For example, when thecustomer device124 is a personal computer, the personal computer can be used to store compressed digital media musical content, such as MP3 files. The personal computer then can be used to play, store, and/or “burn” CDs with music from the MP3 files. In the illustrated embodiment, a consumer can download a book withcustomer device124 and print out the book with aprinter125 that is operatively coupled to thecustomer device124. Alternatively or additionally, the consumer can download the purchased content to one or moreportable devices126. Theseportable devices126 can include, but are not limited to, portable music players (such as MP3 players), PDA's, cellular telephones, portable televisions, portable computers, hand held games, e-book readers and/or a combination of these devices. As shown, theportable devices126 can be operatively to thecustomer devices124 in order to download the purchased content. Theportable devices126 can also be operatively coupled to thenetwork106 through a wireless network connection. For example, aportable music player128, such as an MP3 player, can download purchased songs from thecustomer device124. It should be understood thatdynamic pricing system102 is not limited to a specific file format, such as the MP3 format for music. Rather, thedynamic pricing system102 is able to accommodate a wide range of file formats such as WAV and SDMI complaint files for musical works and ASCII and portable document format (PDF) files for text, for example. In the illustrated embodiment, a consumer withcustomer device124 can download a purchased book, software program, song, and/or movie to aPDA130. Moreover, theportable devices126 can be operatively coupled to thenetwork106 in order to directly purchase and receive content from thedynamic pricing system102. As illustrated, a wireless PDA orcellular telephone132 can purchase and download content directly from thedynamic pricing system102. In another example illustrated inFIG. 1, a customer can purchase dynamically priced movies or television shows with atelevision134. In this example, the customer purchases the program from thedynamic pricing system102 through the Internet, a cable system and/or a direct broadcast satellite (DBS) system (network106), Payments for content purchased on thedynamic pricing system102 can be handled internally and/or handled by a third party system. In one embodiment, a thirdparty payment service136 is used process customer payments for downloaded content. In one form, the thirdparty payment system136 includes Verisign's PayFlow system.
A detailed illustration of one of many embodiments of thedynamic pricing system102 is illustrated inFIG. 2. As shown,system200 includes thedynamic pricing system102 and one ormore clients108. Although not illustrated inFIG. 2, theclient computer108 in theFIG. 2 embodiment is operatively coupled to thedynamic pricing system102 through thenetwork106 in the same manner as illustrated inFIG. 1. In one form, thenetwork106 for theFIG. 2dynamic pricing system102 includes the Internet. Thedynamic pricing system102 in theFIG. 2 embodiment includes one ormore connection servers202, one ormore navigation servers204, one or more heartbeat (load balancing)servers206, one ormore database servers208, one ormore file servers210, one or moremaster database servers212, and one or moremaster file servers214. Althoughservers202,204,206,208,210,212 and214 are illustrated as separate units, it should be understood that selected servers or all of the servers can be combined to form a single unit. In one form, thedynamic pricing system102 utilizes the Linux operating system with programs coded in the JAVA language. As should be appreciated, the dynamic pricing system can use other operating systems, such as UNIX, Windows and Apple Macintosh operating systems, to name a few. Further, the software in thedynamic pricing system102 can be programmed in other languages besides JAVA, such as C++, Visual Basic, Fortran, Pascal, CGI and PERL, to name a few.
As illustrated, theheartbeat server206 is operatively coupled to theconnection server202, thenavigation servers204, thedatabase servers208, and thefile servers210 in order to monitor their load. Theconnection server202 is operatively coupled to thenavigation servers204. Thenavigation servers204, thedatabase servers208 andfile servers210 are operatively coupled to with one another. Theheartbeat server206 monitors the performance of the other servers and load balances thedynamic pricing system102. Periodically,servers202,204,208 and210 individually send their load status information to theheartbeat server206. With the collected status information, theheartbeat server206 is able to loadbalance servers202,204,208 and210. If theheartbeat server206 does not receive a status signal from one of theservers202,204,208 or210, theheartbeat server206 concludes that the server is offline, or otherwise unavailable, and directs the requests to the remaining servers. For example, when one of thedatabase servers208 goes offline, theheartbeat server206 can route requests to the remainingdatabase servers208. Each server receives load information about the other servers from theheartbeat server206. Based on this load information, a server can send processing requests to a server with the lowest load in order to improve the operational efficiency of thedynamic pricing system102.
Theconnection server202 is operatively coupled to theclients108 over thenetwork106. Theconnection server202 receives and processes all requests from theclients108. When a request is received, theconnection server202 queries theheartbeat server206 to find anavailable navigation server204 with the lowest load. Theconnection server202 then forwards the request to thenavigation server204 with the lowest load. Based on the request and the load information from theheartbeat server206, thenavigation server204 determines theappropriate database server208 and/orfile server210 to contact in order to process the request.
Thefile servers210 store the media content that is for sale on thedynamic pricing system102. As illustrated, thefile servers210 can maintain different media types on separate servers. For example, thefile servers210 can include one ormore movie servers216, one or more book/text servers218, one ormore music servers220, one ormore software servers222, and one or more photograph/picture servers224. However, it should be understood that the different media types can be stored on a single server or combined on an array of servers. In theFIG. 2 embodiment, movies, videos, shows, and the like are store onmovie servers216. As shown in the illustrated embodiment, there are three movie servers, first216a, second216band216cthird movie servers. Books, poems, short stories, manuals, news articles and other types of text are stored on thebooks server218. Themusic servers220 store music, songs, lyrics, sound recordings and the like. In the illustrated embodiment, themusic servers220 include afirst music server220aand asecond music server220b. Software and pictures are respectively stored in thesoftware server222 and thephotograph server224. Themaster file server214 maintains masters of the files stored on thefile servers210 and periodically updates the files stored on thefile servers210. In one form, so as to minimize the risk of corruption, themaster file server214 is offline with respect to thefile server210 and only connects to thefile servers210 when updating the files on thefile servers210.
Depending on popularity, multiple copies of the same work (file) can be stored onmultiple file servers210. Initially, a file containing the work (content) is loaded onto one of thefiles servers210, which becomes the “home”file server210 for the work. For example, during initialization of thedynamic pricing system102, a song is loaded from themaster file server214 onto thesecond music server220b, which becomes the “home”music server220 for this particular song. As the song becomes popular, thesecond music server220bcan place a copy of the file containing the song onto thefirst music server220aso as to optimize performance of thedynamic pricing system102. All requests for the song are initially placed with the “home”music server220, which is thesecond music server220bin this example, and if the second,home music server220bis unable to process a request for the song, thesecond music server220bredirects the request to one of theother music servers220 that has a copy of the song, which in this case is thefirst music server220a. Since all requests for downloading of a content file are first placed with thehome file server210, thehome file server210 is able to track and record the number of times the particular content file has been purchased and downloaded. Thehome file server210 also perform keeping functions by removing copies of less popular works from theother file servers210 in order to conserve space inmemory112. Using the same example, once the song becomes less popular, the second,home music server220bcan delete the copy of the song from thefirst music server220a. In one embodiment, different works can have differenthome file servers210. Returning to the same example, while the secondmusic file server220bwas thehome file server210 for the first song, the firstmusic file server220acan be thehome file server210 for a second, different song. In another embodiment, all of the works for a particular type of work (music, books, movies, etc.) can have onefile server210 designated as thehome file server210. For example, in this embodiment, all of the songs loaded into thedynamic pricing system102 can have the firstmusic file server220aas their “home” file sever210.
Thedatabase servers208 store information about the content stored on thefile servers210 and information about users of thedynamic pricing system102, both customers and artists. This information is stored in one ormore databases225 on thedatabase servers208, and this information can include, but is not limited to, the name/address of the “home”file server210 for the works; the names of the artists, authors, directors, actors and/or owners of the works; titles; publishers; producers; type of work, such as music, text or video; work category (drama, humor, rock, jazz . . . ); subject; pricing information and size/length of the work. Thedatabases225 on thedatabase servers208 can be a standard file, a combination of files, a standard database program, a relational database, a SQL (Structured Query Language) database, and/or other types of data storage structures as generally known by those skilled in the art. In one embodiment, the databases are225 on thedatabase servers208 are PostGreSQL databases. As should be appreciated, thedatabases225 on thedatabase servers208 can be other types of database, such as an Oracle or Microsoft SQL Server type databases. In the illustrated embodiment, thedatabase servers208 havemultiple databases225 organized by content type. For example, thedatabases225 can include one ormore movie databases226; one or more book/text databases228; one ormore music databases230; one ormore software databases232; one or more photograph/picture databases234; one ormore user databases236; and/or one or moreartist information databases238. Thedatabases225 can be active as separate database instances on asingle database server208 or onseparate database servers208. In the illustrated embodiment, thedatabases225 are maintained onseparate database servers208. To improve performance, thedatabase servers208 in one embodiment contain multiple, redundant copies of thesame database225.
In the illustrated embodiment, thedatabase servers208 inFIG. 2 have threemovie databases226 stored onseparate database servers208 that contain the same information. Themovies databases226 contain information about the movies, videos and/or shows stored in themovie file servers216. For instance, themovies databases226 can store the file name along with the name/address of the homemovie file server216; file size; title; writer; director; actors; producers; writers; distributors; movie category, such as drama or action; description; comments; reviews; pricing and demand information; and/or length of the work. Thebooks databases228 maintain information about the text stored in thebooks file servers218. For example, thebooks databases228 can store the file name along with the homebook file server218 for a work; file size; the title; author; owner; publisher; distributor; picture of the author and/or book cover; category, such as biography or mystery; description; comments; reviews; pricing and demand information; and/or size of the work. Similarly, themusic databases230 can store the file name of a song, the location of the file on thehome music server220, song title, artist, author, producer, distributor (label), album name, album picture, picture of the artist, musical category (i.e. rock, jazz . . . ), description, comments, pricing information, demand information, and/or length/size of the song along with other information relating to the song. Thesoftware databases232 and thepicture databases234 respectively store information about the software stored on thesoftware file servers222 and the pictures stored on thepicture file servers224, and this information can include file name and homefile server information210; pricing and demand information; titles; size; category; owner and/or authorship. Information about the particular users of thedynamic pricing system102, both customers and artist, is maintained in theusers databases236. The information in theusers databases236 can be used control access to thedynamic pricing system102 and maintain billing information. Examples of such information include the username and password; first and last names; home and business addresses; email addresses; telephone numbers; session identifiers (ID's) and other session information; and billing and account balance information, to name a few. Biographical and other types of artist information is maintained one theartists databases238. It should be understood that the above-describeddatabases225 can include additional information and/or omit certain information.
Themaster database server212 maintains masters of thedatabases225 stored on thedatabase servers208 and periodically updates thedatabases225 stored on thedatabase servers208. In one form, so as to minimize the risk of corruption, themaster database server212 is offline with respect to thedatabase servers208 and only periodically connects to thedatabase servers208 when updating thedatabases225.
All requests, such as a web page requests, from the client108 (as indicated byarrow250 inFIG. 2) are routed to theconnection server202. Based on load information from theheartbeat server206, theconnection server202 routes the request, as indicated byarrows252 and254, to thenavigation server204 with the lowest load. In one embodiment, for each subsequent action by the user, theheartbeat server206 remembers which server was previously used and routes the user to the same server. Thenavigation server204 processes the requests. For instance, thenavigation server204 can query one of thedatabases225, as shown byarrow256, in order to process the request. Thenavigation server204 selects theparticular database server208 based on the information required (i.e. information about music, books etc.) and the load information from theheartbeat server206. As depicted byarrow258, the results from the query are returned to thenavigation server204 that sent the query. Based on the results, thenavigation server204 generates a web page and sends the page to theclient108, which is depicted byarrow260. In another example, thenavigation server204 processes a purchase/download request from the client by sending the requested file name to thehome file server210 for the particular file, which is indicated byarrow262. As depicted byarrow264, thefile server210 transfers the file to theclient108.
Atable structure300 of database tables302 in thedatabases225 according to one embodiment of the present invention is illustrated inFIG. 3. As should be appreciated, thedatabases225 can have different tables302 and/ortable structures300 than the one shown. The tables302 in thedatabases225 include a media information table304, a pricing table306, a keyword table308, an artist table310, an account table312, and a session table314. The media information table304 stores information about the media content stored on thefile servers210. In one embodiment, themovie226,books228,music230,software232, andphotograph234 databases each include one ormore media information304,pricing306 andkeyword308 tables. The media information tables304 includes a number offields316 that contain information about a particular media content item. As shown, thefields316 in the media information table304 can include amedia ID field318 for storing a unique identifier for an item; amedia name field320, which for example stores the name of the movie, song, program, etc.; an artist/author name field322 in which the name of the artist is identified; and anartist ID field324 which contains a unique identifier for individual artists on thedynamic pricing system102. InFIG. 3, asterisked (“*”) fields in the tables302 are the fields by which the individual tables302 are indexed. For instance, the media information table304 is indexed by themedia ID field318. Categorical information, such as the album name and/or the type of music, can be stored infield326. The filename, path and/or Internet Protocol (IP) address for an image related to the particular content is stored infield328. For example,field328 can contain the path and the file name of an image of a book or an album cover. The physical length of the item, such as the number of pages or playing time, is stored infield330, and the file size of the item is stored infield332. The file name and address, such as the path and/or IP address of thehome file server210, of the item is listed infield334. The price model for dynamically pricing the item, the initial price for the item, and the implicit or marginal cost of the item are stored infields336,338 and340, respectively,Fields342,344 and346 respectively store the minimum price for the item, the maximum price for the item and the current price for the item. The current demand, or the number of times the item was purchased within a specified period, is maintained infield348. Acount cache field350 stores the number of purchases of the item since the last time the current demand was determined. Pricing algorithm parameters field352 can store information such as the historical pricing and quantity ordered information for the item. In one form,field352 stores the price and corresponding demand for the item over the last seven periods. It should be appreciated that depending on the dynamic pricing technique used,field352 can store other parameters, such as the time between purchases.
The pricing table306 stores information related to the price of particular media content items. The pricing table306 includesmedia ID field318 for identifying the particular item. The date/time, the price at that time, and the quantity demand at that time for the item identified by themedia ID field318 are stored infields354,356 and358, respectively. The keyword table308 is used for searching and locating records of items in thedatabases225 by keywords. In keyword table308, the keywords are stored infield360 and the media ID of the record that contains the keywords is stored in themedia ID field318. The artist table310 is maintained in theartist database238 and contains information about artists, authors, performers, directors, producers, and the like. Theartist ID field324 is a unique identifier for the artist. The username and artist name are respectively stored infields362 and322 in table310. A description of the artist and their work is maintained infield364. The address to the web site for the artist is stored infield366.
As illustrated inFIG. 3, account information for the users of thedynamic pricing system102, both customers and suppliers, is maintained in account table312. In one form, the account information table312 is maintained in eachuser database236. It should be appreciated that the user information in table312 can be encrypted in order to ensure privacy. In table312, the username and password for accessing the dynamic pricing system are maintained infields362 and368, respectively. As shown, the first name and last name of the user is stored infields370 and372, respectively. The street address of the user is stored infields374 and376. The city, state, zip code, country, email address, and telephone number of the user are stored infields378,380,382,384,386 and388, respectively. The account balance of the user is maintained in field390. Information about user access to thedynamic pricing system102 is maintained in the session table314. In one form of the present invention, the session table314 is stored in theuser database236. As should be appreciated, the session table314 can be stored inother databases225. The session table314 stores a unique session ID infield392 and the username infield362. The date/time of the session is maintained infield394. The tables302 are linked to one another byvarious fields316. For instance, thepricing306 andkeyword308 tables can be linked to the media information table304 via themedia ID field318. Thesession314 and account312 tables are linked to one another by theusername field362. The artist table310 can be linked to table304 via the artist ID field, and the artist table310 can be linked to the account table via theusername field362.
In another embodiment of the present invention, thedynamic pricing system102 is configured to dynamically price P2P transactions. In this embodiment, as shown inFIG. 1, the content is stored across multiplecontent supplier computers116. The content supplier registers their content for sale on thedynamic pricing system102, and thedynamic pricing system102 dynamically prices the content. When an item is purchased, the content supplier computer/device116 that has the item transfers the file containing the item directly over thenetwork106 to thecustomer device124. For example, in one form of this embodiment, thecontent supplier computers116, which are remotely distributed across thenetwork106, act like thefile servers210 ofFIG. 2; while thedatabase servers208 remain centrally located in the manner as illustrated inFIG. 2. Like the other embodiments, thedatabase servers208 track the purchases made and administer user accounts. Moreover, thedatabases225 store the file names of the content items for sale along with the corresponding addresses (paths) of thecontent supplier computers116 that store the file. For example, thefile server field334 in the media information table304 ofFIG. 3 can store the file name and IP address of thecontent supplier computer116. As should be appreciated, thedynamic pricing system102 according to this embodiment provides a centralized access point for conducting and administering searches. In a further form, thedynamic pricing system102 provides a mechanism, such as keys for encrypted content, for unlocking downloaded files and certifying that the downloaded file is correct. It should be appreciated that the propagation technique for popular downloads, as described above for thefile servers210, can also be used with thecontent supplier computers116 in the P2P embodiment.
A technique for dynamically pricing and providing content, according to one embodiment of the present invention, is illustrated with flow diagram400 inFIG. 4. Instage402, the customer withcustomer device124 registers with thedynamic pricing system102. Alternatively, if the customer has already registered with thedynamic pricing system102, the customer can directly login to thedynamic pricing system102. In one form, theclient108 has proprietary client software for interacting with thedynamic pricing system102. In another form of the present invention, which is described below, theclient108 includes a web browser for interacting with thedynamic pricing system102. The web browser allows the customer and/or artist to view web pages from thedynamic pricing system102 and to submit forms to thedynamic pricing system102. As should be appreciated, the customer first accesses thedynamic pricing system102 by entering and/or selecting the domain name or the IP address of thedynamic pricing system102 with the web browser. After accessing the dynamic pricing system, one of thenavigation servers204 sends a main web page to theclient108.
An example of amain web page500 is illustrated inFIG. 5. It should be appreciated that the web pages described below can omit certain information and/or include information. Furthermore, although the interface describe below uses web pages, it should be appreciated that other types interfaces can be used to interact with users of thedynamic pricing system102. For instance, a proprietary interface, a menu type interface, a voice command interface, and/or other types of interfaces as generally known by those skilled in the art can also be used.Page500 includes anavigation toolbar502, anadvertisement portion504, ageneral information portion506, anew user button508, alogin portion510, anaccount information portion511, and asearch portion512. With thenavigation toolbar502, the user can navigate between the various web pages of thedynamic pricing system102. As illustrated, thenavigation tool bar502 includes awelcome button514, a newuser account button516, anaccount button518, a sign inbutton520, anartist registration button522, a frequently asked question (FAQ)button524, aview media button526, amusic button528, avideo button530, aphotograph button532, abook button534, aprograms button536, anadvanced search button538 and an aboutbutton540. Selecting thewelcome button514 causes themain web page500 to appear on theclient108. As shown inFIG. 5,page pointer541 is positioned next to thewelcome button514 so as to indicate that the user is currently on themain web page500. The user of the dynamic pricing system can create a new user account by selecting either the newuser account button516 or thenew account button508, and can edit their account information by selecting theaccount button518. The sign inbutton520 allows the user to sign into thedynamic pricing system102. With theartist registration button522, a content supplier, such as an artist, can register with and/or receive information on how to register as a content supplier on thedynamic pricing system102. A user can receive answers to questions by selecting theFAQ button524. A customer can select theview media button526 in order to view the different categories of media content (music, movies, etc.) that are available on thedynamic pricing system102. Alternatively, the user can directly access the music, videos/movies, photographs, text/book and software category screens, which list the content available, by selecting themusic button528, thevideo button530, thephotograph button532, thebook button534 and theprogram button536, respectively. The user can search for content on thedynamic pricing system102 by selecting theadvanced search button538, and the user can retrieve general information about the dynamic pricing system, such as contact information, by selecting the aboutbutton540.
Content suppliers on thedynamic pricing system102 can advertise their work in theadvertisement portion504 of themain web page500. It should be appreciated that other types of advertisements can be displayed in theadvertisement portion504.General information portion506 displays general information about thedynamic pricing system102, such as operational status information and how to use thedynamic pricing system102. As mentioned above, a new user of thedynamic pricing system102 can register with thesystem102 by either selecting thenew account button508 or thenew user button516. After selecting eitherbutton508 or516, thedynamic pricing system102 sends to the client108 a registration form600 (FIG. 6). As illustrated, theregistration form600 includes aregistration status portion602 that indicates the steps required to register with thedynamic pricing system102 and aninformation entry portion604 in which user information is entered. Theentry portion604 includes ausername field606 in which the user can type in a username and one ormore password fields608 in which the user enters (and re-enters) password information. Inentry portion604, the user can enter their first name, last name, street address, city, state, zip code, country, email address and telephone number intofields610,612,614,616,618,620,622,624 and626, respectively. After the information is entered intoentry portion604, the user can submit theregistration form600 to thedynamic pricing system102 by selecting anext button628. As should be appreciated, the client108 (through applets in the form) and/or thedynamic pricing system102 can check for errors (and/or missing information) in theregistration form600. If theregistration form600 was not properly filled out, thedynamic pricing system102 and/orclient108 can ask that the information be corrected and resubmitted.
After theregistration form600 is submitted, thedynamic pricing system102 sends auser agreement form700 to theclient108. As shown inFIG. 7, theuser agreement form700 includes anagreement text portion702 in which the text of the agreement is displayed and anassent button704. The user agrees to the terms of the user agreement by selecting theassent button704. The user information is then stored in theuser database236, and aregistration completion form800, which is illustrated inFIG. 8, is displayed on theclient108. Subsequently, a user can access thedynamic pricing system102 by manually logging onto thedynamic pricing system102. The user can also be automatically logged onto thedynamic pricing system102 with a user identifier, such as a “cookie”, that is stored on theclient108. Referring again toFIG. 5, the user can enter their username and password infields542 and544, respectively, and select sign inbutton546 to log into thedynamic pricing system102. Alternatively, the user can select the sign inbutton520 on thenavigation tool bar502 in order to be shown a sign inform900, which is illustrated inFIG. 9. The user can then enter their account information intofields542 and544, and select the sign inbutton546 to log into thedynamic pricing system102.
After logging into thedynamic pricing system102, the user is shown a registered usermain page1000, which is depicted inFIG. 10. As shown, the registered usermain page1000 contains similar portions and buttons as shown in themain page500 ofFIG. 5, with the exception that the registered usermain page1000 does not have thelogin portion510 and theaccount information portion511 lists the particular account information of the current user. In the illustrated embodiment, theaccount information portion511 includes ausername identifier1002, which identifies the current user, and anaccount balance1004, which indicates the amount of money the current user has in their the dynamic pricing system account.
Initially, when the user registers with thedynamic pricing system102 theiraccount balance1004, which is stored in field390 of the account table312, is zero-dollars ($0.00). Although dollars are used when describing theaccount balance1004 of the user in one embodiment, it should be appreciated that different currencies can be used in theaccount balance1004, such as the Euro and the yen. With a zero ($0.00)account balance1004, the user can still use thedynamic pricing system102. For example, an artist does not need money in order to supply content to thedynamic pricing system102. In another example, even with a zero account balance, a customer can download free content from thedynamic pricing system102. In the illustrated embodiment, a customer pre-deposits money into an account from which their purchases are deducted. By pre-depositing money into an account, purchases onsystem102 occur quickly and the purchasing experience for the user is similar to the “free” systems, such as the Gnutella. The customer can add money to their account in a number of ways including, but not limited to: payments through credit or debit cards; wire transfers; being billed; sending cash, checks or money orders to administrator of thedynamic pricing system102; and/or transacting payments through the thirdparty payment service136, such as Verisign's PayFlow system or PayPal.com's system, to name a few. In another embodiment, a customer does not maintain an account balance, but rather pays for each individual purchase at the time of the purchase.
A flow diagram1100 for illustrating one technique for adding money to an account in thedynamic pricing system102 according to one embodiment of the present invention is shown inFIG. 11. Instage1102, thedynamic pricing system102 sends to theclient108 one or more forms for crediting the account of the customer. To add money, the customer selects the myaccount button518 on thenavigation tool bar502. In response, thedynamic pricing system102 sends to the client108 a billing form1200 (FIG. 12).Form1200 includes a myaccount tool bar1202 and an addnew card button1204. The myaccount tool bar1202 allows the user to navigate through a number of forms related to their account. The myaccount tool bar1202 includes aprofile form link1206, apurchases form link1208, and abilling form link1210. With theprofile link form1206, the user can edit their account profile information. As illustrated inFIG. 13, theaccount profile form1300 contains many of the fields shown in form600 (FIG. 6) for entering user information, includingfields610,612,614,616,618,620,622,624 and626. Theaccount profile form1300 further includes the myaccount tool bar1202, asave button1302 for saving any changes to theuser database236 and a cancelbutton1304 for not saving the changes. With thepurchases form link1208, the user can view their past purchases on purchase history form1400 (FIG. 14). Thepurchase history form1400 includes alist1402 of past purchases. Thislist1402 can include date ofpurchase1404, title ofcontent1406 and price paid for thecontent1408.
The billing form1200 (FIG. 12) is shown on theclient108 when thebilling form link1210 is selected on the myaccount tool bar1202. On thebilling form1200, the user can add money to their account by selecting the addnew card button1204. In response, thedynamic pricing system102 sends to the client108 a charge form1500 (FIG. 15) in which the user can add money to their account by charging a credit card. As should be appreciated, a secure socket layer (SSL) can be used on theclient108 for authentication purposes and to encrypt the credit card information sent over thenetwork106. As shown, thecharge form1500 containsfields1502 for charging money to a credit card. To charge the credit card, the user enters their first name, last name, street address, city, state, zip code, country, credit card type, credit card number, expiration date, amount to charge, email address and telephone number infields1504,1506,1508,1510,1512,1514,1516,1518,1520,1522,1524,1526 and1528, respectively. In thecharge field1524, the user enters the amount to add to their account balance, which is to be charged to the credit card. To charge the amount in thecharge field1524 to the credit card, the user selects savebutton1530, which submits the information entered inform1500 to thedynamic pricing system102.
In the embodiment illustrated inFIG. 1, thedynamic pricing system102 incorporates client software from the thirdparty payment system136 that handles the transactions for crediting money to the account of the user. In one form, the thirdparty payment system136 is VeriSign's PayFlow system and the third party client software is VeriSign's PayFlow client software. As should be appreciated, other types of thirdparty payment systems136 can be used.
In stage1104 (FIG. 11), thedynamic pricing system102 receives the credit card billing information from theclient108, and instage1106, thedynamic pricing system102 through the third party client software forwards the billing information to the thirdparty payment system136, which administers the transaction. The thirdparty payment system136 collects the transaction information from thedynamic pricing system102 and then securely routes the transaction via a gateway through a financial network to the appropriate bank, ensuring that user is authorized to make the purchase. The third party client software in thedynamic pricing system102 also sends an acknowledgement back to the thirdparty payment service136 after returning the payment results to thedynamic pricing system102, in order to protect the user against double billing due to latency or broken communication sessions. It should be understood that thedynamic pricing system102 can send an error message to theclient108, when the dynamic pricing system cannot charge the credit card (i.e., not authorized to charge the credit card or insufficient funds on the card). When the transaction is authorized, thedynamic pricing system102 instage1108 updates the account balance information stored in theuser database236 by adding the amount from thecharge field1524 to the account balance field390 of table312 (FIG. 3). On the thirdparty payment system136, the funds for the transaction are transferred to an account for thedynamic pricing system102. In another embodiment, thedynamic pricing system102 directly processes the transaction without using the thirdparty payment system136.
In stage404 (FIG. 4), the user can search for content of interest in thedynamic pricing system102. To perform an advance search for content, the user can select theadvance search button538 on thenavigation toolbar502. As shown inFIG. 16, in response to the selection of theadvanced search button538, thedynamic pricing system102 sends anadvanced search form1600 to theclient108. Theadvanced search form1600 includes thesimple search portion512 in which the user can perform simple searches for content. Thesimple search portion512 includes a simpleterm entry field1602, a media type drop-down list1604, and asimple search button1606. The user enters one or more search terms into the simpleterm entry field1602 and selects the media type to search (i.e. movies, books, and music) with the media type drop-down list1604. To submit the search to thedynamic pricing system102, the user selectssearch button1606.Advanced search form1600 further includes anadvanced search portion1608 in which advanced searches can be created. Theadvanced search portion1608 includes a search allfield1610, amedia type field1612, agenre field1614, “specific field” search field(s)1616, a maximum results drop-down list1618, amaximum amount field1620, released after date drop-downlists1622, released before date drop-downlists1624, a sort drop-down list1626, and anadvanced search button1628. It should be understood thatform1600 can omit certain search criteria fields and/or include additional search criteria fields. Infield1610, the user can enter one or more search terms that are searched throughout every field of thedatabase225. The user can specify the media type and genre in drop-downlists1612 and1614, respectively. The user can search for terms in specified fields, such as by title, withportion1616. The maximum number of search results can be specified in drop-down list1618, and the maximum price for the content can be specified infield1620. The content can be searched by release dates of the content with drop down lists1622 and1624. The user can specify how the search results are sorted. The user submits the advanced search to thedynamic pricing system102 by selectingsearch button1628. Based on the search criteria specified, thedynamic pricing system102 queries thedatabases225 stored inmemory112.
An example of a search results page1700 is illustrated inFIG. 17. As illustrated, the search results page1700 includes a modify search portion1702 and a results portion1704. With the modify search portion1702, the user can submit another search to thedynamic pricing system102. Portion1702 has a search term field1706 in which search terms are entered, a media type drop down list1708 in which the type of media to be searched is entered, and a search button1710 for submitting the search. The results portion1704 of the search results page1700 displays the results from the submitted search. Each row/record1712 of the results portion1704 contains information about an item, in this example a book, that matched the search criteria. As shown, each record1704 in the results portion1704 can display an image1714, a title1716, author1718, file size1720, and length1722 of the work. In the illustrated example, image1714 contains an image of the cover of the book, and length1722 lists the number of pages the book contains. The results portion1704 further contains a title header1724 that allows the user to sort the records1712 by title when selected and an author header1726 that allows the user to sort the records1712 by author when selected. The user can view additional details about the work by selecting a details link1728 for the record1712, and the user can preview the work by selecting a preview link1730 for the record1712. The content listed in the record1720 can be bought by selecting buy link1732. As shown, buy link1732 lists a current dynamic price of the content. By selecting link1734, the user can purchase and download the work.
In addition, customers of thedynamic pricing system102 can browse through hierarchical categories by selecting theview media button526. In response to the selection of theview media button526, thedynamic pricing system102 sends to the client108 amedia types page1800, which is shown inFIG. 18. As illustrated, themedia types page1800 includes amusic page link1802, atext page link1804, avideos page link1806, aphotograph page link1808 and asoftware page link1810 that respectively link to a music page, a text page, a video/movie page, a photograph page and a software page. Alternatively, the user can directly access the music page, the video/movie page, the photograph page, the text page and the software page by selecting themusic button528, thevideos button530, thephotographs button532, thebooks button534 and theprograms button536, respectively. It should be appreciated that the user can access other types of media content using a similar interface.
For example, when either themusic page link1802 or themusic button528 is selected, theclient108 displaysmusic page1900. As shown inFIG. 19, themusic page1900 includeslinks1902 that are organized by musical genre, such as “jazz”, “funk” and “rock”, to name a few. Selecting one of thelinks1902 will cause theclient108 to display a page organized specifically for the selected musical genre. For instance, ifjazz link1904 is selected, thedynamic pricing system102 will query themusic databases230 in order to generate agenre page2000 on theclient108. InFIG. 20, thegenre page2000 containsmusical artist links2002 that allow the user to browse the musical works that are available for sale from the listed artists. When one of themusical artist links2002 is selected, thedynamic pricing system102 sends to the client108 amusical artist page2100, which is shown inFIG. 21. In the illustrated embodiment, theartist page2100 contains aname2102 of the artist andalbum links2104 that list the albums available from that artist. When the customer selects one of thealbum links2104, theclient108 displays to the customer an album page2200 (FIG. 22) that includes album (or CD)name2202 andsong links2204 for songs on that album.
As depicted inFIG. 23, adetails page2300 for a song is displayed on theclient108 when thelink2204 for the song is selected. Thedetails page2300 can also be accessed by selecting the details link1728 in the search results page1700 (FIG. 17). As illustrated inFIG. 23, thedetails page2300 includes: atype portion2302 in which the type of content, in this case “music”, is displayed; atitle portion2304 in which the title of the media content is listed, which in this example is the song title; and anartist name portion2306 in which the name of the artist is listed. The genre, such as jazz, for the content (song) is displayed ingenre portion2308, and any comments concerning the content are displayed incomments portion2310. The file size for the content is displayed insize portion2312, and the length of the content is displayed inlength portion2314. In the illustrated embodiment, thefile size portion2312 displays the file size of the song in megabytes (MB), and thelength portion2314 lists the length of the song in minutes. Thedetails page2300 can further include animage2316 for the content, such as a picture of the album cover. The label for the album is displayed inlabel portion2318. The other content type pages (i.e., the text page, the video/movie page, the photograph, and the software page) contain similar hierarchical page formats for accessing content.
To receive a dynamic price for the content listed in thedetails page2300, the customer selectsbuy link2320. In the illustrated embodiment, the customer receives a dynamic price for the song by selectingbuy link2320, which sends a signal to thedynamic pricing system102 that indicates that the customer Wants the current dynamic price for the song. In response to receipt of this signal, thedynamic pricing system102 in stage406 (FIG. 4) supplies a dynamic price for the song and generates apurchase window2400 on theclient108 that lists the current, dynamic price for the song.Purchase window2400 is also generated when the user selects the buy link1732 in the search results page1700 (FIG. 17). As illustrated inFIG. 24A, thepurchase window2400 includes amessage portion2402 with adynamic price2404 for the song, apurchase button2406 in order to purchase the song, and a cancelbutton2408 to not purchase the song. In the illustrated embodiment, the customer is given a specified time window to purchase the song. After the period elapses, thepurchase window2400 automatically closes. Thepurchase window2400 can also be closed by selecting the cancelbutton2408. In another embodiment, thedynamic pricing system102 periodically refreshes theprice2404 in thepurchase window2400. Theprice2404 for a particular item, such as the song shown, and/or for a group of items is generated and dynamically adjusted byserver102. In one embodiment, the price is adjusted based on demand for the item so as to maximize profit. Generally, the greater demand for the particular item,server102 will increase the price until the profit is maximized, and when the demand for the item is lower, thedynamic pricing system102 lowers the price until the profit is maximized. The price of a song can also be dynamically adjusted based on other factors such as the amount of transfer time, the length of the song and overall quality of the song, to name a few factors. When thepurchase button2406 is selected, thedynamic pricing system102 deducts thepurchase price2404 from the account of the user (see field390) and the purchased item is transferred from thedynamic pricing system102 to thecustomer device124 over thenetwork106 instage408. When the user does not have enough money in their account, thedynamic pricing system102 requests the user to deposit additional funds into their account before downloading the item. In one embodiment, the hypertext transfer protocol (HTTP) is used to download the item from thedynamic pricing system102. In another embodiment, the file transfer protocol (FTP) is used to download the item from thedynamic pricing system102 to theclient108. As should be appreciated, items can be downloaded in other manners and using other types of protocols. For example, in the above-described P2P embodiment of thedynamic pricing system102, the purchased item is transferred over thenetwork106 directly from thecontent supplier computer116 to thecustomer device124. During downloading,screen2400 is changed todownloading screen2400a(FIG. 24B), which indicates the download status of the item.Screen2400acontains amessage portion2452 that displays the status of the download and aclose button2454 forclosing screen2400a. After the item is successfully downloaded,message2452 indicates that the download process is complete. If the download is unsuccessful,message2452 indicates that the download was not completed, and thedynamic pricing system102 gives the customer a certain amount of time, such as two days, from the purchase to download the item without being charged again for the item.
As should be appreciated, customers can access and purchase items on thedynamic pricing system102 using other types of interfaces. For example, when theclient108 is a telephone, the customer can access and purchase items on thedynamic pricing system102 through an automated voice menu system (i.e. “The price is 33 cents. You have 1 minute to press 1 to confirm your order orpress 0 to cancel.”). When for example customers useportable devices126, a wireless protocol, such as Wireless Application Protocol (WAP), can be used to interface withsystem102.
Below a number of techniques for dynamically pricing items on thedynamic pricing system102 will be described. Thedynamic pricing system102 tries to optimize profit; this typically involves some estimation of the demand curve(s) for the items. Thedynamic pricing system102 in dynamically pricing the media content actually never knows the demand curve for an item for sale. Generally, thedynamic pricing system102 continues to raise the price for an item until total profits are reduced. Alternatively,system102 will decrease the price of content whenever an increase in price reduces profits. A general description of one embodiment of the pricing algorithm will now be described below. In this embodiment, thedynamic pricing system102 throughprocessor110 calculates price adjustments using a logarithmic demand curve that has been found in empirical econometric studies to be the best fitting of algebraically tractable functional form for many retail markets. The quantity of a particular item (q) purchased at a particular price (p) is assumed to take the form ofequation 1 below:
Log[q]=α−βp (Equation 1)
where
Log[ ] is a natural logarithm
q=quantity of an item
p=Price of the item
β, α.=parameters.
WithEquation 1 above, parameters α and β are unknown. In order to solve these parameters, the technique according to the present invention uses data observed through sales of items to estimate these parameters. Another factor in determining the optimal price for an item is that the demand curve for an item will change over time. Therefore, in one embodiment, thedynamic pricing system102 does not base its price upon very old data. Still yet another obstacle thedynamic pricing system102 faces in determining pricing for a particular item is that customer demand at the time periods in which a particular item is demanded varies depending on the nature of a particular item. For example, a hit song may have may sell a thousand copies a day. However, an obscure or old song to reach that level of sales may take a week, months, and/or even years. The profit (profit) made in a particular time period (T) is described below in equation 2:
profitt=qt(Pt−c) (Equation 2)
where
t=time period
profitt=profit for a particular item at time period t
qt=quantity of items sold time period t
Pt=price of the item at time period t.
c=marginal cost.
It should be noted that for this embodiment the fixed costs such as cost of the servers, employees and other resources are ignored inEquation 2.Equation 2 only considers the marginal cost (c) caused by changes in sales volumes for a particular item. However, it should be understood that in other embodiments fixed costs can be a factor for dynamically pricing an item. Other factors may be incorporated intoEquation 2 in order to determine the optimal profit. For example, if the time period (t) was twelve-hours (12 hours), one would expect that more sales would occur during the day as opposed during the middle of the night. This situation could result in undesirable, dramatic price fluctuations. To compensate for the difference between the periods,Equation 2 can factor in one or more additional variables in order to stabilize prices. Alternatively or additionally, the length of the time periods can vary in order to compensate for the differences between the periods. In another form, the price fluctuations between day and night are left alone so that users are given an incentive to download content when system activity is lower.
With the above background, an example will now be used to describe how prices are dynamically adjusted according to one embodiment of the present invention. In an initial time period (t=1), an initial price for an item is set. For example, the initial price of a song could be set to 90 ($0.90), depending on whatever the content supplier and/or the administrator using second time period (t=2), theprocessor110 of thedynamic pricing system102 changes the price in order to get a sample of the change in client demand at a differing price levels. In the current example, the price of a particular song is raised by 10¢, which is shown inequation 3 below.
p2=p1+0.10p1(orp2=p1.×1.0) (Equation 3)
where
p2=price in the second time period.
Flow diagram2500 inFIG. 25 illustrates this technique according to one embodiment of the present invention. The technique described below will be for a song, but as should be understood this technique can be applied to the other types of media content items on thedynamic pricing system102. Instage2502, the initial price (p1) of a song for sale is set by thedynamic pricing system102 and displayed to thecustomer device124. One or more orders for the song are received by thedynamic pricing system102 instage2504, and thedynamic pricing system102 stores inmemory112 the price (p1) and quantity ordered (q1) for the first time period. The length of the time periods in this embodiment can for example be by second, by minute, hourly, daily, weekly, monthly, yearly, or some other time increment (i.e., every 33.5 seconds). In one form, the time interval for each period is one day. For instance, the first time period would beday 1, the second time period would beday 2 and the third time period would beday 3. After the first time period, theprocessor110 of thedynamic pricing system102 instage2506 sets a second price (p2) for the song and supplies the second price (p2) for the song to the customer devices124 (see, Equation 3). Theprocessor110 instage2506 can either increase or decrease the price of the song. For explanation purposes, we will assume that thedynamic pricing system102 increased the price instage2506. Instage2508, thedynamic pricing system102 receives a quantity of orders (q2) for the song from thecustomer devices124. In time period three (t=3), the price and quantity ordered information from the previous two periods is used to determine whether the price change from the first period to the second period increased profits or not. If profits increased (q2(p2−c)>q1(p1−c)) then increasing prices further may be profitable. If profit decreases, however, then a price decrease from initial price (p1) may be appropriate. The changes in prices depend on the functional form of the particular demand curve for the particular content for sale. Using a logarithmic demand curve,Equation 4, which is shown below, can be used to calculate profit.
profit=q(p−c)−Exp(α−βp)(p−c) (Equation 4)
FromEquation 4, the profit maximizing price can be determined to be as shown below inEquation 5.
A nice property ofEquation 5 is that price is not dependent upon unknown parameter α. However, the optimal price still depends on unknown parameter β. As should be appreciated, a number of techniques can be used to estimate the parameters β. In one technique, the two observations of price (p) and quantity (q) are combined from periods one and two to generate an estimate of β.Equations 6 and 7 illustrate this technique.
Log[q1]=α−βp1+ε1 (Equation 6)
Log[q2]=α−βp2+ε2 (Equation 7)
Where ε1and ε2=sampling error.
Equations 6 and 7 can be combined in order to determine parameter β, which is shown below inEquation 8.
β{Log[q2]−Log[q1]−ε2−ε1}/(p1−p2) (Equation 8)
It is assumed that the longer interval time between price changes, the smaller expected sampling error (ε2, ε1) would be relative to the quantities ordered. Over a long period of time, the expected sampling error terms would be zero. This yieldsequation 9 below.
The profit maximizing, or optimal price, can be determined by combining
Equation 5 withEquation 9, which yieldsEquation 10 below.
In order to prevent extreme fluctuations in pricing between two periods, the change in pricing between two different periods is dampened so that wild fluctuations in pricing does not occur. The amount of dampening can be adjusted depending on the amount of aggressiveness in pricing the content supplier and/or administrator intends to use. The estimation of β is highly subject to sampling error. Therefore, to be conservative, a geometric mean between the previous price and the new estimated optimal price is taken. In addition, absolute bounds on how much a price adjustment between two periods is further set to further dampen pricing. This is done just in case the estimation procedure gives an inaccurate estimate. A generic form of this technique used by thedynamic pricing system102 is shown inEquation Set 11 below.
Set one was 150 (q1=150). During time period two, thedynamic pricing system102 priced the same song at $1.40 (p2=$1.40) and the number of copies of the song that were purchased during time period two was 100 (q2=100). In time period three, thedynamic pricing system102 determines the optimal price to be the following in Equation 12 (stage2510). InEquation 12, we have assumed the marginal cost of supplying an additional copy to be negligible, or zero (c=0) for this example.
With the bounds equals $0.50 (L) and weighting factor W=0.8 in this example, thedynamic pricing system102 usesEquation Set 13 below in order to determine the dynamic price at time period three (p3).
Set
p3=p2−0.50 ifp2,opt<p2−0.50
p3=(p2)0.8(p2,opt)0.2ifp2−0.50≦p2,opt≦p2+0.50
p3=p2+0.50 ifp2,opt>p2+0.50
p3=(1.40)(0.8)(0.99)(0.2)=$1.31 (Equation Set 13)
Instage2510, thedynamic pricing system102 withprocessor110 sets the revised sale price for the item and stores the price inmemory110. Using the above example, thedynamic pricing system102 would then set the price of the song to $1.31 in time period three. For subsequent time periods, as more orders are received instage2508, thedynamic pricing system102 continues to periodically re-price the content according to theEquation Set 11.
Equation 14 below is a generic form for another technique of dynamically pricing an item according another embodiment of the present invention.
New Dynamic price=Price Basis×Dynamic Price Modifier (Equation 14)
InEquation 14, the price basis is modified by the dynamic price modifier so as to result in a new dynamic price for an item. In one form, the dynamic price modifier is some measure of change in demand for one or more items being priced. In another form, the dynamic price modifier can take into account profitability of different price levels. It should be understood that the dynamic pricing modifier can take into account other factors. These factors can include, but are not limited to: the marginal and/or fixed costs of the item; price ceilings and/or floors for the item; file size of the item; the bandwidth of the connection to thedynamic pricing system102; the quality of the item; the popularity of the item as measured by third parties, such as the Billboard ranking of a song; reviews of an item; and number of times an item has been viewed on thedynamic pricing system102. Generally, the dynamic price modifier increases the price of an item when demand for that item increases and reduces the price of an item when the demand for the item decreases. In one form, the dynamic pricing modifier is based on the differences between the quantity ordered at specific intervals. For instance, these intervals can be by second, by minute, hourly, daily, monthly, or yearly. In another form, the dynamic pricing modifier is based on the time between successive purchases. For example, if the time delay between successive purchases decreases, thedynamic pricing system102 can infer that demand is increasing and thus increase the price for the item.
FIG. 26 is a flow diagram2600 that illustrates a technique for dynamically pricing content items according to another embodiment of the present invention. In the technique illustrated inFIG. 26, the price of an item is changed based on the time delay between orders for the item. An initial price for the item for sale on thedynamic pricing system102 is set instage2602. The content supplier and/or the system administrator can set the initial price initial price for the item. Alternatively or additionally, thedynamic pricing system102 in this and other embodiments can automatically set the initial price based on default prices and/or historical prices for similar content stored inmemory112. In one form, the administrator throughadministrative computer104 sets the initial price for content on thedynamic pricing system102. In another form, the content supplier sets the initial price instage2602. Instage2604, theprocessor110 of thedynamic pricing system102 receives a customer order over thenetwork106. From theclock111, theprocessor110 instage2606 stores inmemory112 the time the order was received, and thedynamic pricing system102 processes the order. It should be appreciated that the time recorded from theclock111 can be based on other events related to the order, such as when the content was actually delivered. Instage2608, theprocessor110 determines the time period (t) between the current purchase and the previous purchase of the item. In another form, theclock111 is reset after each purchase such that theprocessor110 stores inmemory112 the time period (t) between the current and previous purchases. Initially, at the first purchase of the item, the time period (t) between purchases can be based on the time delay between when the item was originally available on thedynamic pricing system102 and when the first purchase was made. The time when the item was first available on thedynamic pricing system102 can be stored into memory instage2602. In another form, theprocessor110 waits to receive a second order from a customer before calculating the time delay (t) between purchases. It should be appreciated that thedynamic pricing system102 can record a series of purchase times before dynamically pricing an item.
Instage2610, theprocessor110 determines the average time delay ((AVE(t)) between purchases. In one form, the average time delay is calculated for all purchases, and in another form, the average time delay is calculated for a set number (N) of previous purchases so as to take into account shifts in the demand curve. In one particular form, the average time delay is calculated for the last 10 periods (N=10).Equation 15 below illustrates how the average time delay is calculated.
Where
AVE(t)=Average Time Delay Between Purchases
ti=Time delay Purchase Period i
N=Number of Periods
Generally, when the current time delay is less than the average time delay, it can be inferred that demand for the item has increased. Conversely, if the current time delay is greater, then it can be inferred that demand has lowered. Instage2612, theprocessor110 of the dynamic pricing system determines whether or not the current time delay between purchases (t) is less than average time delay between purchases (AVE(t)). If the current time delay is less than the average, theprocessor110 increases the price of the item instage2614. In one form of the present invention, the price would be adjusted according toEquation 16 as illustrated below. As can be seen below,Equation 16 is derived fromEquation 14.
Where
Pi+1=New Dynamic Price
Pi=Price Basis, or Current Price for Period i.
InEquation 16, the price basis is the price of the item for the latest period, and the dynamic price is the new price for the item. For example, if the price of the item was currently $1.20, the average time between purchases was 20 seconds and the current delay between purchases was 15 seconds, the new price for the item would be $1.60 (1.20.times.20/15=1.60). In another form of the present embodiment, theprocessor110 takes into account of the upper price, or price ceiling, for the item. As previously mentioned, the content supplier, such as the artist, and/or the system administrator can specify upper and lower price limits for a particular item, such as a song. If, for example, the calculated new dynamic price exceeded the upper price limit, theprocessor110 instage2614 would set the new price to the upper limit price. It should be appreciated that other factors, such as the ones mentioned above, can be factored in when adjusting the price instage2614. Potential customers can review the new,dynamic price2404 in screen2400 (FIG. 24A) and can decide whether to purchase the item at thenew price2404. When a customer decides to purchase the item at the increased price (after stage2614), theprocessor110 then proceeds to stage2604 so as to process the next customer order.
If the current time delay (t) between purchases is not less than the average time delay between purchases instage2612, then theprocessor110 instage2616 determines whether the current time delay (t) between purchases is greater than the average time delay between purchases. If so, then it can be inferred that demand for the item has lowered, and theprocessor110 instage2618 decreases the price of the item. In one form, theprocessor110 reduces the price using Equation 16 (above). For example, if the price of the item was currently $1.20, the average time between purchases was 15 seconds and the current delay between purchases was 20 seconds, the new price for the item would be $0.90 (1.20.times.15/20=0.90). As should be appreciated, theprocessor110 can consider other factors, such as the quality of the item, marginal cost and available bandwidth, when adjusting the price instage2618. For instance, in one form, theprocessor110 also determines instage2618 whether the new price is less than the predefined lower price limit, or floor, for the item. If the new price is less than the lower price limit, thenprocessor110 only sets the new price at the lower limit. In another embodiment, to prevent wild fluctuations in price, thedynamic pricing system102 instages2614 and2618 can dampen the price changes between periods. When instage2616 the current time delay (t) between purchases is not greater than the average time delay between purchases, the processor instage2620 makes no price adjustment. In another embodiment, to prevent the price from being locked into a local maximum price, theprocessor110 instage2620 randomly adjusts the price. Afterstages2614,2618 or2620, customers can review the new price and place orders instage2604.
A technique for dynamically pricing items according to another embodiment of the present invention will now be described with reference toflow chart2700 inFIG. 27. In this technique, thedatabases225 record the number purchases of each item in thedynamic pricing system102. In one form of this embodiment, adynamic pricing system102 periodically updates the prices of each item for sale. The periodic update can be for every second, every minute, hourly, monthly, and/or yearly, to name a few time periods. In one form, the price of individual items is updated nightly. In another form, the prices are updated every minute. Each item for sale and/or type of item for sale, such a country songs, can be dynamically priced at different intervals and/or use different pricing techniques depending the nature of the item sold. For example, higher ticket items, which sell at a slower rate, may have their prices less frequently updated as compared to lower ticket items, which sell at higher volumes. Further, groups of items can be aggregately priced together.
As mentioned above, a number of different people can set the initial price of an item. For instance, the artist, content supplier, owner of the item, and/or the system administrator can set the initial price for an item. Instage2702, thedynamic pricing system102 stores inmemory112 the initial price as the current best price for the item. Theprocessor110 instage2704 stores inmemory112 the number of sales of the item at the initial price for a specified time interval and the profit generated (best profit). In one form, the pricing and quantity information is updated daily in the tables302 of thedatabase225. After the specified time interval, theprocessor110 randomly changes the price within a range around the best price instage2706. In one form, thedynamic pricing system102 randomly adjusts the current price within −5% to +5% of the best price. As should be understood, the price can be randomly adjusted within different ranges. In another form, the price is randomly adjusted without having specified upper and/or lower range limits. Instage2708, theprocessor110 records inmemory112 the quantity order (Qa) at the adjusted current price for the same time interval as in stage2704 (for example, daily or every minute). Theprocessor110 instage2710 checks to see if the quantity ordered in the last time interval was greater than zero (0). If not, theprocessor110 instage2712 reduces the current price. For example, theprocessor110 can reduce the price by $0.10 increments when there are no sales of the item within the specified period. In another form, the price is lowered by a percentage of the current price, such as 10% of the current price. If the price reduction instage2712 would reduce the current price below the lower price limit, when specified, theprocess110 sets the current price to the lower limit. As mentioned above, the lower limit may be based in part on the marginal and/or fixed costs for the item. After the price is reduced instage2712, theprocessor110 instage2708 records the quantity sold at the new reduced price for the specified time interval. In an alternate form, theprocessor110 instage2712 increases the time interval in which the quantity ordered is recorded instage2708. As should be appreciated, theprocessor110 can both reduce the price and increase the time interval instage2712.
When instage2710 the quantity ordered at the adjusted price is greater than zero (0), theprocessor110 determines whether the profit at the current price is at least equal to the best profit stored inmemory112. In one form, theprocessor110 determines profit by usingEquation 2, above. As should be appreciated, thedynamic pricing system102 can take into account other factors when determining the profit. For example, these factors can include fixed costs, bandwidth used, and file size, to name a few. If instage2714 the current profit is equal to or better than the best profit at the best price, which is stored inmemory112, then theprocessor110 instage2716 sets the current price as the best price inmemory112. In one form, theprocessor110 also stores inmemory112 the quantity ordered at the now, best price such that profit can be calculated. In another form, theprocessor110 stores in thememory112 the current profit as the best profit. Followingstage2716, theprocessor110 randomly increases the price for the item within a specified range above the current price. This range limit can be predefined and/or determined through historical data. In one form, the random price is generated within a range from 0% to 10% above the current price. It should be appreciated that theprocessor110 can use a number of techniques for generating the random numbers (pseudo-random) as would occur to those of ordinary skill in the art. When an upper limit in price is defined, the price of the item will only be increased to the upper limit price. After the price is increased instage2708, theprocessor110 proceeds to stage2718 and records the quantity ordered (Qa) at the new adjusted price. By changing the best price instage2716 even when the current profit is equal to the best profit instage2714, removes old best prices that may be based on a different demand curve.
In another alternative, theprocessor110 instage2714 determines whether the profit at the current price is better than the profit at the recorded best price. If so, theprocessor110 proceeds tostage2716. If the current profit is equal to the best profit, then the best price remains the same, the current price is not adjusted, and theprocessor110 proceeds tostage2708.
When instage2714 the current profit is less than the best profit, theprocessor110 instage2720 determines whether there is a small price difference between the current price and the best price. The small difference can be based on a percentage basis between the prices and/or by a fixed amount. In one form, the small price difference is less than or equal to a one-percent (1%) change the price. In another form, the small price difference is two-cents ($0.02). It should be understood that other values can be used for the price differential. If there is a small price difference between the current price and the best price, theprocessor110 proceeds to stage2706 and randomly adjusts the prices within a range around the best price.Stage2720 reduces the likelihood that the best price will be stuck at a local maximum in profit. When this problem is not a concern,stage2720 can be omitted. If there is not a small difference in price between the best and current prices instage2720, theprocessor110 instage2722 reduces the current price to halfway between the current price and the best price. For instance, if the current price is $1.00 and the best price is $0.90, the new adjusted price would be $0.95. As should be appreciated, the price instage2722 could be reduced by some other fraction of the price differential between the current price and the best price, besides one-half. In one form, if the reduced price is lower than the lower price limit for the item, then the new adjusted price instage2722 is set to the lower price limit for the item. After reducing the price instage2722, thedynamic pricing system102 proceeds to stage2708 and tracks the quantity ordered at the new adjusted price. As shown inFIG. 27, thedynamic pricing system102 using the technique illustrated inflowchart2700 continues to periodically adjust the price of items.
In another technique, the period of time between recording the quantity order is variable. This technique can be used in the applicable, above-described techniques for dynamically pricing items, but instead “quantity” in this technique is replaced with “quantity/length of time period”. For example, instage2708 offlow chart2700, the “quantity ordered/length of time period” is recorded when the time period is variable. Thedynamic pricing system102 for instance would record one-hundred songs per hour (100 songs/hour) when one-hundred and fifty (150) songs are ordered in a one and a half hour (1.5) time period. By recording the “quantity/length of time period” improves, sampling during slow order periods, such as at night.
As should be appreciated, different items for sale on thedynamic pricing system102 may use different techniques for dynamically pricing the items. For example, popular music may be dynamically priced according to the technique illustrated inFIG. 26; while text may be dynamically priced according to the technique illustrated inFIG. 27. In another example, “popular” songs are dynamically priced using a variable time period; while “classical” songs are dynamically priced using a fixed time period.
In one embodiment of thedynamic pricing system102, servlets perform the above-described functions in order to operate thedynamic pricing system102. In one form, Java servlets are used. As should be appreciated thedynamic pricing system102 can use other types of systems in order to operate. A block diagram2800 showing the relationship ofservlets2801 loaded on each of thenavigation servers204 is illustrated inFIG. 28. In diagram2800, dashedarrows2802 represent links between pages andsolid arrows2803 represent data flow.Main page servlet2804 generates the anonymousmain page500 when the user is not logged into thedynamic pricing system102 and the registered usermain page1000 when the user has logged onto thedynamic pricing system102.Registration servlet2805 handles user registration with thedynamic pricing system102. As depicted, theregistration servlet2805 creates the registration form(s)600. Once the user submitsform600, theregistration servlet2805 adds the new user to theuser database236 and logs in the new user automatically.Login servlet2806 is responsible for logging in registered users into thedynamic pricing system102. As shown, thelogin servlet2806 includes anadd session servlet2808 which adds a new sessions to the session table314 in theuser database236. For example, after theregistration servlet2805 registers a new user, theregistration servlet2805 automatically logs in the new user by calling the addnew session servlet2808. Thelogin servlet2806 generates thelogin form900, and once the user submits a filled-outlogin form900 to thenavigation server204, thelogin servlet2806 checks to see if the username and password are valid by comparing the entered username and password with theuser database236. If the username and password are valid, the addnew session servlet2808 adds a new session to the session table314 in theuser database236. After the user is logged into thedynamic pricing system102, thelogin servlet2806 returns control back to theservlet2801 that originally called thelogin servlet2806. Any page that requires the user to have a session will query the session table314 in theuser database236 before the user is allowed to proceed. If the user does not have a current session, thelogin servlet2806 is called so that the user can login to thedynamic pricing system102.
InFIG. 28,account information servlet2810 is responsible for maintaining the user account tables312 in theuser database236. Theaccount information servlet2810 generates the forms, such asforms1200 and1500, that are used to update the account tables312 in theuser database236.Navigation heartbeat servlet2811 monitors the operational load of theservlets2801 on thenavigation server204 and transmits the load information to theheartbeat server206. Moreover, thenavigation heartbeat servlet2811 retrieves load information about the other components of thedynamic pricing system102 from theheartbeat server206 and communicates the load information of the other components to the individual servlets on thenavigation server204.
Search servlet2812 processes search requests from the users. As illustrated, the search servlet processes the search forms, such assimple search form512,media form1800 andadvanced search form1600. For example, thesearch servlet2812 can transmit theadvanced search form1600 to theclient108. After the user throughclient108 submits a filled-outadvance search form1600 to thenavigation server204, the search servlet queries one or more of thedatabases225, and thedatabases225 return results from the query to thesearch servlet2812, which in turn sends search results page1700 to theclient108. An alternate view of the same process is illustrated inFIG. 2. In this example, theclient108 submits a search request form, as shown byarrow250, to theconnection server202. Theconnection server202 based on the load information from thenavigation heartbeat servlet2811, which was supplied by theheartbeat server206, directs the submitted form, as shown byrequest arrow252, to one of thenavigation servers204. As shown byquery arrow256, thesearch servlet2812 on thenavigation server204 queries one or more of thedatabases225. The results from the query, as shown byresults arrow258, are returned to thesearch servlet2812. Based on the results, thesearch servlet2812 generates thesearch results pages1700 or2300, for example, and as indicated byarrow260, thenavigation server204 transmits the search results page1700 to theclient108.
Although not loaded on thenavigation server204,file servlet2814 is shown inFIG. 28 in order to show how thefile servlet2814 relates to theother servlets2801 on thenavigation server204 inFIG. 28. As shown inFIGS. 28 and 29, thefile servlet2814 runs on thefile servers210 and is responsible for generating thedownload form2400. Thefile servlet2814 further verifies if the user has a valid; current session identification. If not, then the user is requested by thelogin servlet2806 to login to thedynamic pricing system102. After logging into the system, control is returned to thefile servlet2814. Thedownload form2400 is generated based on themedia ID318 and thehome server location328 that is stored in the media information tables304. For example, thefile servlet2814 sends thedownload form2400 to thecustomer device124, and when the customer selects buy link1732 in page1700 or buylink2320 inpage2300, thefile servlet2814 gets the pricing information from the pricing tables306 in thedatabases225 and debits the user account390 in theuser database236. Thefile servlet2814 further updates the quantity demand in thepricing306 andmedia information304 tables. As shown byarrow264 inFIG. 2, thefile servlet2814 transfers a file containing the purchased content to theclient108.
As depicted inFIG. 29, eachfile server210 incorporates a number ofservlets2801 that are used to control the operation of thefile server210. Theservlets2801 on thefile server210 include thefile servlet2814, a fileheart beat servlet2902, aresume download servlet2904 and a populateservlet2906. Thefile heartbeat servlet2902 collects the load information from theservlets2801 on thefile server210 and sends beat information to theheartbeat server206. Thefile heartbeat servlet2902 further retrieves the load information for theother file servers210 and thedatabase servers208 from theheartbeat server206. Theheartbeat servlet2902 communicates the load information to theother servlets2801 on thefile server210. As mentioned above, thefile servlet2814 downloads purchased items to theclients108. If while downloading an item, the user becomes disconnected from thenetwork106 or the download is interrupted in some other manner, theresume servlet2904 allows the customer to download the content again for a specified period without being charged. For example, if acustomer device124 is disconnected from thedynamic pricing system102 while downloading a song, the customer can download the song again within two days without having the price of the song deducted from their account for a second time.
In order to service high demand for a particular item, the populateservlet2906 on each of thefile servers210 collects the number of current downloads of an item and determines which files need to be copied acrossmultiple file servers210. For example, when a song becomes popular, the populateservlet2906 places copies of the song onmultiple file servers210, as indicated byarrow2908. Thehome file server210 for the particular song maintains a table that identifies thefile servers210 that have copies of the song. If thehome file server210 for the song is busy when a request to download the song is received, thehome file server210 forwards the request to one of thefile servers210 that has a copy of the song file, which processes the download request. Since thefile servlet2814 of thehome file server210 is always contacted first, thehome file server210 is always able to track the demand of the item and increment the demand in thepricing306 andmedia information304 tables.
As shown inFIGS. 30A30E eachdatabase server208 includes a number ofservlets2801 that perform specific tasks on thedatabase server208. Performquery servlet3002 can be called by any other part thedynamic pricing system102, as shown byarrow3004. As shown byarrow3006,servlet3002 can query, insert and/or delete records from the tables302 of thedatabases225. The results of the query, as indicated witharrow3008, can be returned toservlet3002.
As indicated byarrow3010 inFIG. 30B,search servlets2812 on thenavigation servers204 call executesearch servlet3012 on thedatabase servers208 in order to search for particular keywords in the media information tables304. To improve response time for queries, thedatabase servers210 each maintain akeyword cache3014 along with a media andpricing information cache3016. Thekeyword cache3014 is structured like the keyword table308 and maintains a temporary list of popular keyword searches. The media andpricing information cache3016 temporarily stores information about individual media items along with their current price. Like the keyword tables308 and the media information tables304,keyword cache3014 andmedia cache3016 are linked to one another via themedia ID318. When the executesearch servlet3012 receives a simple, or default search request, the executesearch servlet3012, as shown byarrow3018, first queries thekeyword cache3014. For instance, a simple search can occur when the user is browsing by media type, such as the searches submitted throughfield512. When thekeyword cache3014 contains the search keyword, themedia cache3016 returns the search results toservlet3012, which is depicted witharrow3020. As shown byarrow3022, when thekeyword cache3014 does not include an entry for the keyword, the keyword table308 is then queried. The keyword table308 is directly queried byservlet3012, when the user submits an explicit search, such as with form1600 (arrow3024). As mentioned above, thekeyword308 andpricing306 tables are related to the media information table304 via themedia ID field318. As shown byarrow3026, the search results from tables304 and306 are returned to the executesearch servlet3012, which in turn returns the results to the search servlet2812 (FIG. 28). As previously discussed, the search results can include the dynamic price for an item, such as a song. The dynamic price for the item is either retrieved fromcache3016 or from the pricing table306.
As illustrated inFIG. 30, get mediafile information servlet3028 is used to retrieve media and pricing information that is used by thefile servers210. As shown byarrow3030, thefile servers210 can callservlet3208. Themedia information servlet3028 first sends all requests (arrow3032) to themedia cache3016. Ifcache3016 is able to process the request, the search results (arrow3034) are returned toservlet3028. Whencache3016 is unable to process the request, the search request is then processed by themedia304 andpricing306 tables (arrow3036). In response to the request, tables304 and306 insert a new entry corresponding to the search results into the media cache (arrow3038) and return the search results to the media information servlet3028 (arrow3040). Afterwards, the search results fromservlet3028 are then returned to thecalling file server210.
As depicted witharrow3042 inFIG. 30D, thefile servers210 callincrement demand servlet3044 to increase the quantity demand for an item in themedia cache3016.Servlet3044 can either insert a new demand entry or update a demand entry for an item in cache3016 (arrow3046). For instance, when an item is purchased and downloaded thefile server210 will call theincrement demand servlet3044 in order record an order of the item. If a record for the item is not incache3016,increment demand servlet3044 will create a new record in cache for the item. The record incache3016 can contain themedia ID318 and demand348 (or350) fields. When a record for the item already exists in cache,servlet3044 increases the number contained in thedemand field350. Periodically,cache3016 is cleaned and the demand information contained therein is transferred to themedia304 andpricing306 tables before cleaning.
In each of thedatabase servers208,dynamic pricing servlet3048 is used to dynamically price items insystem102.Servlet3048 includes aninitialization thread3050, one ormore pricing threads3052, and one ormore cleaning threads3054. On startup of thedatabase server208, theinitialization servlet3050 retrieves the names of all of the pricing algorithms infield336 for each item (arrow3056) and starts apricing thread3052 for each pricing technique. As previously discussed, thedynamic pricing system102 can use different techniques to price individual items and/or groups of items. For instance, country songs can be dynamically priced by afirst pricing thread3052 that uses the technique illustrated inFIG. 26; while jazz songs and mystery books can be dynamically priced by asecond pricing thread3052 that uses the technique illustrated inFIG. 27. In one form, as shown byarrow3058, the pricing thread3502 periodically updates at specified intervals the prices of items infields346 and356 of the media table304 and pricing table306, respectively. After updating the pricing information in tables304 and306, the pricing thread3502 then updates the pricing information inmedia cache3016, as shown byarrow3060. In one embodiment, thepricing thread3052 updates the pricing information in tables304 and306 for all items that use thepricing thread3052, and then updates the prices incache3016 for the items. In another embodiment, thepricing thread3052 updates the pricing information in themedia304 andpricing306 tables along withmedia cache3016 individually for each item. Thepricing threads3052 can dynamically price items at different intervals, such as by minute, hourly, or daily. In one form, thepricing threads3052 dynamically price items daily. Whenpricing thread3052 uses the technique of dynamically pricing items based on time between purchases (FIG. 26), thepricing thread3052 does not necessarily have to update the price at a fixed interval. For example, the pricing thread can update the price of the item after the item is purchased or when a page containing the price for the item is generated.
InFIG. 30E, thecleaning thread3054 periodically removes items with low demand from themedia cache3016, as shown byarrow3062, and commits these items removed fromcache3016 to themedia304 andpricing306 tables, as indicated byarrow3064. For instance, when the demand for an item in the last dynamic pricing period was zero (0), thecleaning thread3054 removes the information about the item, such as the media ID, price and demand, from themedia cache3016 and commits this information to tables304 and306. It should be understood that thedynamic pricing system102 can include asingle cleaning thread3054,multiple cleaning threads3054 or nocleaning threads3054 at all. For example, nocleaning threads3054 are needed, when cache is not used. In one form, thecleaning thread3054 operates periodically in conjunction with acorresponding pricing thread3052. For example, eachpricing thread3052 can have acorresponding cleaning thread3054 that runs either before or after thepricing thread3052 dynamically prices items. In another form, thecleaning thread3054 periodically operates at a different time interval as compared to thecorresponding pricing thread3052.
A technique for receiving content and paying content suppliers will now be described below with reference toflow chart3100 inFIG. 31. Instage3102, a content supplier registers to supply content for sale on thedynamic pricing system102. As mentioned above, the content suppliers can be for example artists, authors, agents, publishers, content owners, programmers, record labels, publishers, licensing organizations, producers, and the like. Referring toFIG. 10, the content supplier initiates the registration process by selectingartist button522. Afterbutton522 is selected, thedynamic pricing system102 sends to thecontent supplier computer116 an artist agreement andrelease form3200. As illustrated inFIG. 32,form3200 includes anagreement portion3202 in which the terms of the artist agreement and release are listed. The name and address of the content supplier can be entered intofields3204 and3206, respectively. As should be appreciated,form3200 can contain other fields in which additional information can be entered. The content supplier agrees with the terms of the agreement by selecting agreebutton3208 and cancels the agreement by selecting cancelbutton3210. In a further embodiment, the content supplier accepts the contract by applying their digital signature to theagreement form3200 and sending an email with theagreement form3200 to thedynamic pricing system102. Afterform3200 is submitted, thedynamic pricing system102 can store a copy of the agreement in thedatabase225 for future reference.
In response to the submission ofform3200, thedynamic pricing system102 sends to the content supplier computer116 a content pricing anddownload form3300. In later sessions, once the content supplier has accepted the agreement inform3200, thedynamic pricing system102 will send thepricing form3300 whenartist button522 is selected. Withform3300, the content supplier is able automatically submit content for sale on thedynamic pricing system102. As depicted inFIG. 33,form3300 includes atitle field3302, alength field3304, afile location field3306, aninitial price field3308, aminimum price field3310 and amaximum price field3312. The content supplier can enter the title of the work infield3302 and the length of the work infield3304. The filename and path on thecontent supplier computer116 for the file that contains the work for sale is entered intofield3306. In another embodiment, the content supplier can enter the path and/or IP address of anotherclient108 that contains the work infield3306. The content supplier enters the initial offering price of the work intofield3308. Alternatively, the content supplier can leavefield3308 blank such that the administrator sets the initial price or a default initial price value is used. The content supplier can enter the minimum and maximum price of the work infields3310 and3312, respectively. Alternatively, the content supplier can leavefields3310 and3312 blank so that no pricing limits are used whensystem102 dynamically prices the work. In another embodiment, the content supplier withform3300 can determine the rules, pricing techniques and time frames for the sale of the items. For example, when the content supplier provides a subscription service, such as for web site access to a music subscription service, the content supplier limit the access time to one week and/or specify the number of searches on the site. As should appreciated,form3300 can omit fields and/or contain additional fields, such a type of work field, an artist identification field, a cost field and a field specifying the dynamic pricing technique to use. In another embodiment, a spreadsheet interface is used to enter information for larger number of works, and in a further embodiment, database files for the items for sale from the content supplier are imported into thedynamic pricing system102.
To submit the work, the content supplier selects submitbutton3314, and in response, thecontent provider computer116 transfers over thenetwork106 the file specified in thefile location field3306 along with the other information fromform3300 to thedynamic pricing system102. As should be appreciated, with the P2P embodiment of thedynamic pricing system102, theclient108 only needs to transfer the information fromform3300 tosystem102 and does not need to transfer the file. However, in another form of the P2P embodiment, the file is transferred. Instage3104, thedynamic pricing system102 receives the file containing the downloaded content and the other information fromform3300. Thedynamic pricing system102 stores the downloaded file in at least one of thefile servers210 and submits the information about the work to thedatabase servers208. In another embodiment, thedynamic pricing system102 adds the work to themaster database server212 and themaster file server214, which in turn updates thedatabase208 and file210 servers so as to incorporate the new work. In thepricing form3300, the content provider can cancel a submission by selecting cancelbutton3316.
In another embodiment, stages3102 and3104 can be performed manually. For example, the artist can manually execute the required paperwork and mail the paperwork along with copies of the content, such as a CD containing the work, to the administrator of thedynamic pricing system102. Once the paperwork and content is received, the administrator with theadministrative computer104 can add the work and pricing information tomaster servers212 and214. During their periodic update of thedatabase208 and file210 servers, themaster database server212 andmaster file server214 add the new work toservers208 and210.
Instage3106, thedynamic pricing system102 tracks the purchases of the work, and thedynamic pricing system102 stores the price and quantity demand for the item in thedatabase servers208. Instage3108, the content supplier of the work is compensated for the work. The owner of thedynamic pricing system102 generates revenue by receiving a portion of the revenue generated by the sale of items on thedynamic pricing system102. In one embodiment, the content supplier is paid a percentage of the profit generated from the sales of the work on thedynamic pricing system102. In another embodiment, the content supplier is paid a fixed fee for each time the work is purchased, and in a further embodiment, the content supplier can be paid a flat fee for the work. The compensation can be sent to the content supplier in a number of manners. For example, each time the work is sold, the account balance390 for the content provider can be credited. The content supplier can also have the money credited to a deposit account each time the work is purchased. Alternatively, thedynamic pricing system102 can periodically send a check to the content supplier for the amount the work earned during the last period. In another arrangement, the thirdparty payment system136, such as PayPal.com, supplies the payment to the content supplier. It should be understood that other types of compensation arrangements can be made.
As discussed above, institutions such as colleges and universities have blocked file swapping services from theirnetworks115 because the large volumes of downloads from such systems clog theirnetworks115. With the high loads created by the file swapping services, institutions bear significant costs and yet receive no benefit from the file swapping services. A technique for providing institutions incentives to allow their members access thedynamic pricing system102 will now be described with reference toflowchart3400 inFIG. 34. With this technique, since institutions benefit when their members to use thedynamic pricing system102, the institutions will be more inclined to not block access to thedynamic pricing system102. Instage3402, a representative of the institution, which operatesnetwork115, registers with the dynamic pricing system. During theregistration stage3402, the representative provides the name of the institution along with other information about the institution to thedynamic pricing system102. The representative can register the institution directly with thedynamic pricing system102 by filling out an online form. Alternatively, the representative can contact and supply the information to the system administrator, and the system administrator can then enter the information into thedynamic pricing system102. In another embodiment, institutional registration is optional such that an institution does not need to register in order to receive compensation. For example, theinstitutional network115 can be automatically identified by the IP address of the user, and the compensation can be forwarded to the institution and/or the institution contacted about the compensation without requiring any registration by the institution. The representative instage3402 further indicates how members of the institution can be identified. These institutional member identifiers can include, but are not limited to, the IP addresses of theinstitutional devices125, the IP address of a firewall for theinstitutional network115, a client identifier such as a “cookie”, and the domain name for the institution. In one form, the domain name for email accounts on theinstitutional network115 is used to identify institutional members like college students. Moreover, instage3402, the representative can specify how any revenue generated by the institution on thedynamic pricing system102 is to be paid. For example, a university can designate a particular scholarship that will receive the funds from thedynamic pricing system102. After the institutional information is submitted, thedynamic pricing system102 stores the information (all or part) in thedatabase servers208. In one form, thedynamic pricing system102 creates a user account for the institution and records the institutional information in the user account. In another form, the institutional information is maintained in one or more separate database tables302.
Instage3404, thedynamic pricing system102 receives a purchase request from a customer, and instage3406, theprocessor110 of thedynamic pricing system102 determines whether the customer is a member of one of the registered institutions. In one embodiment,system102 compares the domain name in theemail address field386 of the customer in account table312 with the domain name supplied by the institution in order to determine if the customer is a member of the institution. For example, if a college specified that its students have the “college.edu” domain name in their email addresses, then any student that entered an email address with the “college.edu” in theemail address field624 of form600 (FIG. 6), such as “jsmith@college.edu”, would be identified as a member of that college. In another embodiment,system102 compares the IP address, or some other addressing scheme, of thecustomer device124 with the IP addresses (or other address) given by the institution in order to determine if the customer is a member of the institution. If the customer is a member of the institution, thedynamic processing system102 instage3408 credits the account of the institution and instage3410 processes the order from the customer. If instage3406 the customer is not an institutional member, thensystem102 proceeds to stage3410 in order to process the order. After processing the order instage3410, the dynamic pricing system is able to receive other orders instage3404. As should be appreciated, the stages inflow chart3400 can be performed in a different sequence than is shown. For example, the order can be processed and fulfilled instage3410 before thedynamic system102 determines whether or not the customer is an institutional member instage3406. In another embodiment, thedynamic pricing system102 periodically (such as monthly) reviews the purchases of customers that have been identified as institutional members and credits the account of the institutions based on the purchases of their members.
The money accumulated in the institution account can be disbursed at set intervals, at variable intervals, when a specific amount is accumulated, after every purchase by a member, when a specified traffic level is reached and/or in other manners as specified by the institution. As should be appreciated, the payments can be made in the same manners as described above for the content suppliers. For instance, one or more scholarships, which were designated by the university, can receive a monthly check from thedynamic pricing system102 for the last month's account balance. By directly and/or indirectly receiving compensation from thedynamic pricing system102, institutions that runinstitutional networks115 are provided with an incentive to allow their members to access thedynamic pricing system102. In one form, five-percent (5%) of sales are rewarded to the institution, and in another form, the institution is rewarded $0.005 (½ cent) from each sale. As should be understood other types of compensation packages and/or amounts can be used. It should be appreciated that the above technique can be applied to other types of institutions, besides learning institutions, that experience problems with high network traffic, such as charitable organizations and corporations.
As should be appreciated the above-discusseddynamic pricing system102 can be used to dynamically price other types of items. These items can include, but are not limited to, movie tickets; concert tickets; CD's containing selected songs; DVD's; artist memorabilia, such as t-shirts and the like; and video rental coupons. The coupons and tickets can be downloaded from thedynamic pricing system102 and/or physically delivered to the customer. When a ticket or coupon is downloaded, the customer can print the ticket out with theprinter125. To prevent forgery, the tickets and coupons can contain authentication information, such as a unique serial number, bar code and/or design, Artist memorabilia for example can be physically delivered to the customer or the customer can download a coupon that can be redeemed at a local store in order to receive the memorabilia. Likewise, a CD containing selected songs and/or albums can be mailed to the customer or a coupon for the CD can be redeemed at a local store.
While the invention has been illustrated and described in detail in the drawings and foregoing description, the same is to be considered as illustrative and not restrictive in character, it being understood that only the preferred embodiment has been shown and described and that all changes and modifications that come within the spirit of the invention are desired to be protected.