The following disclosure relates generally to facilitating the improvement of performance of tasks by human task performers, such as by enabling iterative improvement of generated results from performed tasks.
The Internet comprises a vast number of computers and computer networks that are interconnected through communication links, with information being exchanged using various services such as electronic mail and the World Wide Web (also referred to as the “Web”). In addition to providing access to information, the Web has increasingly become a medium that is used to search for, shop for and order items (such as products, services and/or information) that are for purchase, rent, lease, license, trade, evaluation, sampling, subscription to, etc. In many circumstances, a user may visit the Web site of a Web merchant (or a “Web store”) or otherwise interact with an online retailer or electronic marketplace that provides one or more items, such as to view information about the items, give an instruction to place an order for one or more items, and provide information needed to complete the purchase (e.g., payment and shipping information). The Web merchant then fulfills the order by providing the ordered items to the indicated recipient, such as by providing product items that have been ordered through physical distribution channels (e.g., shipment via a governmental postal service or private common carrier) or electronically (e.g., via download over the Internet, such as for digital music or videos) as appropriate. Ordered service items may similarly be provided electronically (e.g., providing email service) or physically (e.g., performing cleaning services at the purchaser's house).
In addition to such Web-based interactions between computers (e.g., interactions initiated by users using Web browser applications to interactively request Web pages from Web servers), various distributed computing systems are known in which multiple computer systems interact in other manners in order to achieve a goal. For example it is often desirable for an application program on a computer system to interact with remote systems and applications in order to obtain various types of information and functionality that are not part of the application program. By performing such interactions, an application program may be able to leverage information and functionality from vast numbers of other computer systems over the Internet or other networks. In order to enable such interactions between remote computer systems and application programs, various programmatic interaction mechanisms have been developed. For example, remote procedure call (“RPC”) protocols have long existed that allow a program on one computer to cause a program on another computer to be executed, and various object-oriented and other architectures such as CORBA (“Common Object Request Broker Architecture”), Java RMI (“Remote Method Invocation”), JavaSpaces, Jini, JXTA, UPnP (“Universal Plug and Play”) and DCOM (“Distributed Component Object Model”) provide similar capabilities. In addition, a variety of middleware programs have been implemented to connect separate applications (often of distinct types and from unrelated sources) to allow communication. For example, various EDI (“Electronic Data Interchange”) networks exist that provide standard mechanisms to allow a computer system of one user of the network to send data to a computer system of another user of the network.
The widespread popularity of the Web has also provided additional opportunities for computers to inter-communicate in various programmatic manners. For example, there is growing use of the Web to provide so-called “Web services,” which typically involve the programmatic interaction of remote applications to exchange information via defined APIs (“application program interfaces”), or the like. Web services may allow heterogeneous applications and computers to interact, and may be defined and implemented using a variety of underlying protocols and techniques. For example, some Web service implementations return data in XML (“eXtensible Markup Language”) format using HTTP (“HyperText Transport Protocol”) in response to a Web service invocation request specified as a URI (“Uniform Resource Identifier”), such as a URL (“Uniform Resource Locator”) that includes a specified operation and one or more query parameters. In other implementations, additional underlying protocols are used for various purposes, such as SOAP (“Simple Object Access Protocol”) for standard message exchange, WSDL (“Web Services Description Language”) for description of service invocations, and UDDI (“Universal Description, Discovery, and Integration service”) for discovery of available services.
Unfortunately, while Web services and other programmatic interaction mechanisms allow various application programs and computers to interact, such interactions are typically limited in various ways. For example, the types of information and functionality that are available to be requested using such programmatic interactions are typically restricted to very limited types of requests that the remote computer systems and applications may automatically fulfill (e.g., to provide a specified predefined group of information, such as a Web page or file, or to perform a specified database query on a specified database). Moreover, there is a very large class of tasks which computers and application programs cannot easily automatically perform, but which humans can typically easily perform, referred to herein as “human performance tasks.” This is due at least in part to various cognitive and other mental capabilities of humans that are not easily encoded in automated programs, such as the ability to use human judgment to form opinions, to perform abstract or common-sense reasoning, to perform various discernment and perception tasks (e.g., visual and aural pattern recognition, such as based on experience), to use cultural awareness and emotional intelligence, and to perform various other everyday yet highly complex kinds of perception, cognition, reasoning and thinking.
However, existing settings that allow parties to make tasks available for performance by human users also have various problems. One example of a problem that arises in the context of human performance of tasks is that of receiving task results that are not satisfactory, such as due to users who attempt to perform tasks but do not read, understand, or otherwise follow instructions.
Techniques are described for facilitating interactions between task requesters who have tasks available to be performed and task performer users who are available to perform tasks, such as interactions that involve human task performer users performing tasks supplied by task requesters. In at least some embodiments, after one or more task performer users have generated initial results from performance of a task, but the initial results are not fully satisfactory, at least one of the task performer users may be provided with one or more opportunities to correct or otherwise improve the initial generated task performance results. The identification that the initial results are not fully satisfactory and the one or more improvement opportunities for the results may be determined in various ways in various embodiments, including based on feedback from a task requester after reviewing the initial results, as discussed in greater detail below. In addition, in at least some embodiments, at least some of the tasks to be performed are human performance tasks that use cognitive and other mental skills of human task performer users, such as to employ judgment, perception and/or reasoning skills of the human task performer users. Furthermore, in at least some embodiments, an electronic task exchange server system acts as an intermediary to allow task requesters and task performer users to interact, and automatically performs some or all of the described techniques.
As previously noted, a determination that initial results from performance of a task are not fully satisfactory may be made in various ways in various embodiments. For example, in at least some embodiments, the initial results of performance of a task are provided to a task requester that supplied that task, and the task requester is provided with a mechanism to indicate whether or not the initial results are satisfactory (e.g., via an API that enables the task requester to programmatically provide a satisfactoriness indication for the results, such as to indicate that the results are fully satisfactory, are not satisfactory, and/or have one or more degrees or levels of partial satisfaction). In addition, in some embodiments, at least some tasks may each have one or more associated criteria for the results of performance of the task, and if so the determination of whether the results for a task are satisfactory may be made based at least in part on whether those results satisfy the associated criteria for the task, whether automatically by the task exchange server and/or by the task requester that supplied the task. For example, if multiple criteria are associated with a task and the initial performance results for the task satisfy only a subset of the multiple criteria, the initial results may be found to be only partially satisfactory (e.g., with a degree or level of partial satisfactoriness that varies based on a number of the multiple criteria that are satisfied and/or based on particular criteria that are satisfied). Furthermore, in at least some situations, a single criterion may be fully or partially satisfied, such as if it indicates a fully satisfactory level or degree and one or more levels or degrees of partial satisfaction (e.g., a criteria related to a quantity of individual items in generated results may specify that 5 or more items are fully satisfactory, and that each quantity less than 5 is a separate descending level of partial satisfaction).
Such task criteria may have various forms and may relate to various aspects of the desired results for performance of a task, such as, for example, criteria related to the form of the results, such as a format and/or type of data in the generated results (e.g., whether the results are in the form of a string or an integer, whether the results include a specified number of digits or other characters, whether the results match a predefined pattern, such as a phone number, credit card number, IP address, zip code, social security number, etc.), a check of particular values in the results (e.g., based on whether results are within a range or other enumerated group of allowable values), whether the results are part of an indicated category, etc.). Task criteria may further include, for example, criteria related to how the results are generated (e.g., via one of multiple techniques for generating the results, via one of multiple types of computing devices or other devices used to generate the results, etc.), criteria related to when the results are generated (e.g., before an indicated deadline, within an indicated range of time, etc.), criteria related to the task performer users who generate the results (e.g., whether the task performer users satisfy any preferred or required qualifications), criteria related to how the results are provided, criteria related to quality of the results, etc. As one specific example, in some embodiments, criteria may include various types of validation tests or other types of validation actions to be performed as part of evaluating task performance results in order to generate a determination of whether the results are valid (e.g., by passing the tests or otherwise having the validation actions succeed). In addition, in some embodiments, task requesters may further be able to supply executable code (e.g., a script, program, applet, etc.) to be used as a validation criterion by executing the code so as to evaluate the results, and/or may be able to specify executable logic or other relationships between other specified criteria. Furthermore, in some embodiments, criteria may be specified in manners other than by the task requesters who supply tasks, such as automatically by the task exchange server and/or based on instructions or feedback provided by the task performer users. In addition, in at least some embodiments criteria may have associated conditions under which the criteria are to applied, such as if the criteria are only used to evaluate a subset of task performance results for a type of task or other group of tasks (e.g., for the purposes of sampling results). Additional details regarding such criteria are discussed in greater detail below.
When initial results from performance of a task are determined to not be fully satisfactory, various actions may be taken in various embodiments. For example, in at least some embodiments, a task requester may offer a range of rewards (e.g., various payment levels) to a task performer user depending upon whether the task performer user's results for performance of a particular task are fully satisfactory, partially satisfactory (e.g., with one or more possible levels of partial satisfaction), or not satisfactory. For example, full payment may be given for results that fully satisfy task criteria or that are otherwise determined to be full satisfactory, a first partial payment may be given for results that are determined to demonstrate a first level of partial satisfaction (e.g., based on a partial satisfaction of task criteria or as otherwise determined), a second partial payment may be given for results that are determined to demonstrate a second level of partial satisfaction (e.g., based on a partial satisfaction of task criteria or as otherwise determined), etc. In addition, no payment may be given for results that fail, or in some cases only partially satisfy, task criteria. Such full and/or partial payment amounts may be specified in various ways, such as for a task requester to specify a full payment amount when supplying a task to be performed, and to specify a partial payment amount for particular results after those results are received and reviewed by the task requester (e.g., based on feedback or other information supplied by the task requester via an API or other mechanism provided to allow the task requester to indicate such payment amounts). In other embodiments, full and/or partial payment amounts may be specified in other manners, such as if the task requester initially specifies one or more levels of partial payment before results of task performance are received, if the task request specifies a full payment level only after task performance results are received, if the task exchange server automatically determines one or more of the full and partial payment amounts, etc.
In addition, when initial results from performance of a task are determined to not be fully satisfactory, another type of action that may be taken in at least some embodiments includes providing an opportunity to a task performer user to improve the initial performance results, such as by providing additional supplemental results that are intended to be more fully satisfactory (e.g., to fully satisfy task criteria). In some such embodiments, such an opportunity to a task performer user is provided to allow the task performer user to receive a full payment amount or other reward commensurate with fully satisfactory results if the supplemental results are fully satisfactory. Such an opportunity may, for example, occur after initial results from a task performer user for a task supplied by a task requester are determined to not be fully satisfactory (whether by the task requester or automatically by the task exchange server), such as to allow the task performer user to either accept partial payment for the initial results that correspond to those initial results being only partially satisfactory, or to provide additional supplemental results in an attempt to fully satisfy task criteria in order to receive a reward commensurate with fully satisfactory results. As with indications of satisfactoriness and indications of partial payment amounts, the availability of such an opportunity to improve initial task performance results may be specified in various ways, such as by a task requester after those initial results are received and reviewed by the task requester (e.g., based on feedback or other information supplied by the task requester via an API or other mechanism provided to allow the task requester to indicate such an opportunity). For example, the task requester may provide feedback to the task performer user regarding one or more manners in which to improve initial task results (e.g., so at to include comments regarding how to improve the initial task results, such as based on one or more criteria that are not satisfied), optionally with an associated supplemental payment amount for each such results improvement (e.g., a supplemental payment amount in addition to the partial payment amount, such as some or all of the difference between the partial payment amount and the full payment amount; a supplemental payment amount to replace the partial payment amount, such as some or all of the full payment amount; etc.), such that the task performer user is provided with one or more results improvement options. In other embodiments, results improvement options and/or supplemental payment amounts may be specified in other manners, such as if the task requester initially specifies one or more such results improvement options and/or associated supplemental payment amounts before results of task performance are received, if the task exchange server automatically determines one or more results improvement options and/or associated supplemental payment amounts, etc.
When a task requester designates an opportunity to improve results from prior performance of a task, the opportunity may in some embodiments be provided to the task performer user that initially performed the task and generated those performance results, while in other embodiments and situations, such an opportunity may be provided to other task performer users (e.g., those with higher or more relevant qualifications, any task performer user qualified to initially perform the task, etc.). A task performer user who accepts an opportunity to improve results by submitting one or more additional supplemental results may potentially receive up to the full payment amount or other full reward for the task. The additional supplemental results may include, for example, corrections or other modifications to the initial results, enhancements to the initial results, substitute results (e.g., new results that are generated independently of the initial results), etc. Furthermore, the process of one or more task performer users providing additional supplemental results for a task may be repeated multiple times in at least some embodiments and situations (e.g., with each supplemental results being provided to the task requester so that the task requester may evaluate and provide feedback on the supplemental results, such as to indicate one or more areas for improvement), such as to allow iterative improvements to task performance results until they are sufficiently satisfactory. Alternatively, in some situations, a task requester may choose not to offer opportunities to improve initial or supplemental results even if they are not fully satisfactory, such as after receiving and reviewing those results (e.g., so as to provide partial payment for those results without opportunity for results improvement).
As noted above, in at least some embodiments, the task exchange server may automatically perform at least some of the techniques for facilitating improvement of task performance results, with or without the assistance of the task requester reviewing the results. For example, the task exchange server may automatically validate at least some task performance results, such as to determine whether to provide full payment for fully satisfactory results, and/or to identify and/or handle results that are not fully satisfactory. Additional details related to validation of task performance results are included in pending commonly-owned U.S. patent application Ser. No. 11/535,388, filed Sep. 26, 2006 and entitled “Automated Validation Of Results Of Human Performance Of Tasks,” which is herein incorporated by reference in its entirety.
As previously noted, in at least some embodiments, the described techniques may be performed by an electronic task exchange server that acts as an intermediary to allow task requesters and task performer users to interact. In particular, in some embodiments, one or more computing systems providing the task exchange server act as an intermediary to allow task requesters to programmatically request (e.g., via programmatic invocations of one or more APIs of the task exchange server by application programs of the task requesters) that tasks be performed by human task performer users and to receive corresponding results after the tasks are performed (e.g., as responses to the programmatic invocations), thus providing a form of artificial intelligence to task requesters' application programs. Similarly, human task performer users may access the task exchange server (e.g., in a programmatic or interactive manner) to obtain information about available tasks that they may perform and to provide the results of task performance after the completion of tasks that they are assigned. Such interactions with the task exchange server by task requesters and task performer users may similarly enable the improvement of task performance results in the manners described herein. By enabling large numbers of unaffiliated or otherwise unrelated task requesters and task performer users to interact via the intermediary task exchange server in this manner, free-market mechanisms mediated by the Internet or other public computer networks may be used to programmatically harness the collective intelligence of an ensemble of unrelated human task performer users. Additional details related to the function and operation of various embodiments of task exchange server systems, such as a task fulfillment facilitator system embodiment, are included in pending commonly-owned U.S. patent application Ser. No. 10/990,949, filed Nov. 16, 2004 and entitled “Providing an Electronic Marketplace to Facilitate Human Performance of Programmatically Submitted Tasks;” in U.S. patent application Ser. No. 11/334,773, filed Jan. 17, 2006 and entitled “Performing Automated Price Determination For Tasks To Be Performed;” and in U.S. patent application Ser. No. 11/842,730, filed Aug. 21, 2007 and entitled “Transferring Entity-Related Data Between Storage Partitions;” each of which is hereby incorporated by reference in its entirety.
The task exchange server 100 may be implemented in various ways in various embodiments, such as in the form of a software system executing on one or more computing systems or devices (e.g., in a distributed manner, such as on a peer-to-peer or grid network). Furthermore, while not illustrated in this example embodiment, in some embodiments data may be stored across multiple alternative storage partitions on multiple alternative computing nodes, such that at least some types of data are stored only on a single partition. For example, data within the system 100 may be organized based on users with which the data is currently associated, so as to store a group of data related to a particular user together on a particular storage partition, and with each user being associated with one of the alternative computing nodes whose storage partition stores data for the user. The associated alternative computing node for a user may further provide at least some of the functionality of the system 100 to the user, such as to process and respond to various types of requests received from the user. In addition, the types of tasks to be performed may have various forms in various embodiments. For example, there is a large class of tasks which computers and application programs cannot easily automatically perform, but which humans can typically easily perform, referred to herein as “human performance tasks.” In at least some embodiments, the task exchange server 100 may facilitate the submission and performance of such human performance tasks. The ability of humans to perform such tasks is due at least in part to various cognitive and other mental capabilities of humans that are not easily encoded in automated programs, such as the ability to use human judgment to form opinions, to perform abstract or common-sense reasoning, to perform various discernment and perception tasks (e.g., visual and aural pattern recognition, such as based on experience), to use cultural awareness and emotional intelligence, and to perform various other everyday yet highly complex kinds of perception, cognition, reasoning and thinking.
In the example of
When a task requester supplies information about one or more tasks, the task exchange server 100 stores the task-related data in the task information data repository 130, which may then be made available to task performer users 110 to perform the tasks in a manner specified by the task requester or otherwise determined by the task exchange server 100. The supplied information for a task may include a variety of types of information, including details related to the task (e.g., information to be analyzed, a question to be answered, etc.), one or more qualifications of any task performer user who performs the task, one or more geographical locations associated with the task, one or more capabilities and/or other current characteristics of one or more devices to be used as part of performing the task, one or more other criteria related to task performance (e.g., deadlines for completion, format of results from task performance, various validation criteria or other criteria associated with the quality of results or the values produced by results, etc.), one or more associated rewards (e.g., monetary payments) to be provided to one or more task performer users who successfully perform the task and/or who perform the task in a partially satisfactory manner, etc.
The task exchange server 100 also provides various functionality related to the performance of tasks by task performer users 110. For example, when a task performer user requests information about available tasks (e.g., as part of a search or browse request), the task exchange server 100 provides task-related data obtained from the task information data repository 130. In addition, when a task performer user requests to perform (or is assigned for performance) a particular task, the task exchange server 100 stores a temporary association between the task performer user and the task (e.g., in the task performance results information data repository 140). Then, when the task performer user has completed performance of the task, such as by providing task results for the performed task to the task exchange server 100, the task exchange server 100 stores the task results in the task performance results information data repository 140. The task exchange server 100 may also perform other related functions, such as notifying a task requester of the task results and/or completion of the performed task, facilitating a reward for performing the task (e.g., by crediting an account associated with the task performer, initiating a funds transfer, etc.), automatically validating task results, indicating results improvement options and/or a partial payment amount to a task performer user when task results from the task performer user are not fully satisfactory, etc.
The task exchange server 100 also provides various functionality related to the management of various users, such as task requester users and task performer users. For example, such users may register with the task exchange server 100 by providing identifying information (e.g., name, address, telephone number(s), email addresses, etc.), possibly accompanied by various user preference information and/or payment information that may be used to facilitate payments between task requesters and task performer users for the performance of tasks. Such user-related information may be stored by the task exchange server 100 in the user information data repository 150, and the task exchange server system 100 may further in some embodiments store various user-related information in the repository 150 (e.g., information about previously interactions between the system and the user, such as to reflect aggregate information about previous task performance for task performer users). In addition, task performer users may also in at least some embodiments obtain qualifications that may be utilized for purposes of matching task performer users with appropriate tasks, with such qualification information also being stored in the user information data repository 150.
Furthermore, the task exchange server 100 also in at least some embodiments provides functionality related to improving results obtained from previous task performance by task performer users. Improved results may be provided by, for example, supplemental results that correct, enhance and/or replace prior results. For example, the task exchange server 100, after receiving results of performance of a task by a task performer user, may make the results available to the task requester that supplied the task. The task requester may then obtain the results, for example, by requesting them from the task exchange server 100, or by the task exchange server 100 forwarding the results to the task requester. Further, the task requester may interact with the task exchange server to classify the results as fully satisfactory (e.g., based on satisfying one or more criteria associated with the task), unsatisfactory (e.g., based on failing to satisfy at least one or all of the criteria associated with the task), or partially satisfactory (e.g., with one or more levels or degrees of partial satisfactoriness, such as based on satisfying only some of the criteria associated with the task). In some situations, the task requester may determine that partial satisfaction of a particular task is not acceptable, and may classify such partially satisfactory results as unsatisfactory.
In some situations, as previously discussed, different payment amounts or other rewards may be associated with different results satisfactoriness classifications. For example, a task requester may designate when supplying a task to the task exchange server 100 (or at other times) an indicated full payment amount for results that are determined to be fully satisfactory, that no payment may be associated with results that are determined to be unsatisfactory, and one or more partial payment amounts for results that are determined to be partially satisfactory with one or more levels or degrees of partial satisfactoriness. In addition, the task requester may indicate to the task exchange server 100 that one or more opportunities for improving unsatisfactory and/or partially satisfactory results are to be provided to a task performer user who generated less than fully satisfactory results (or to other task performer users), such as after reviewing those results or instead when initially supplying the task to the task exchange server to be performed. The task requester may further indicate a supplemental payment amount to be associated with a particular option for improving the results (e.g., to improve results so that they satisfy one or more indicated criteria or otherwise are improved in one or more indicated manners), such as to be paid after receiving improved results in accordance with that results improvement option. The task exchange server 100 may then provide information about one or more results improvement options to the task performer user (or the other task performer users). In addition, the task exchange server 100 may facilitate a task performer user receiving a partial payment for partially satisfactory results, such as when the task performer user does not seek to improve initial results in accordance with one or more results improvement options, or when such results improvement options are not made available to the task performer user.
For example, in at least some embodiments, once a task requester has reviewed obtained results, the task exchange server 100 may receive an indication from the task requester that the results are only partially satisfactory and that the task requester desires to permit a task performer user to improve the results by providing additional supplemental results, such as in accordance with criteria associated with the task. In addition, the task requester may indicate a partial payment amount to be made available to the task performer user for the reviewed obtained results. The task requester may further indicate one or more payment amounts to be made available to the task performer user when additional supplemental results are provided that are fully satisfactory or that otherwise satisfy criteria for those supplemental results. The task exchange server 100 may then provide information to the task performer user about one or more results improvement options that reflect the partial payment amount, potentially additional criteria for achieving an improved result in accordance with each of one or more results improvement options, and any supplemental payment amount associated with a results improvement option for an improved result. After receiving any additional supplemental results from the task performer user in response to the results improvement options, the task exchange server 100 may then make available to the task requester those additional supplemental results and/or facilitate providing corresponding partial payment to the task performer user. The task requester may then evaluate the additional supplemental results in a similar manner to that described for evaluating the initial results, such as to classify them as satisfactory, unsatisfactory, or partially satisfactory, and to repeat the process for deciding whether to provide an additional opportunity to further improve the additional supplemental results. Accordingly, performance results for a task may be iteratively improved as designated by a particular task requester.
Furthermore, in at least some embodiments, a task requester may specify one or more criteria that enable the task exchange server 100 to automatically validate received performance results, such as to classify satisfactoriness of the results, provide results improvement options as previously designated by the task requester, and/or make partial payments to task performer users. In some cases, the task exchange server 100 may automatically validate initial results and/or additional supplemental results. Thus, the automatically validation of results may similarly be repeated to iteratively improve performance results for a task as designated by a particular task requester in at least some embodiments.
An embodiment of the task exchange server 240 is executing in the memory 230, and it interacts with the other computing systems 250 and 270 over a network 280 using the network connection 212 (e.g., via the Internet and/or the World Wide Web). In the illustrated example, the task exchange server 240 is a software implementation of the task exchange server 100 described with reference to
Human task requester users may use, for example, application programs (not shown) executing on the task requester client computing systems 250 to communicate via the network 280 with the task exchange server 240, such as to submit tasks to be performed (e.g., tasks with associated criteria), obtain results of performance of such task by task performer users, and evaluate and provide feedback regarding obtained task performance results. In addition, human task performer users may utilize Web browsers or other programs (not shown) executing on the task performer client computing systems 270 to communicate via the network 280 with the task exchange server 240, such as to perform tasks, provide task performance results, receive information about results improvement options for performance results of previously performed tasks, and provide additional supplemental results in accordance with one or more results improvement options. The programs used by the task requester users and/or task performer users may, for example, include custom client applications that communicate via standard and/or proprietary protocols with the task exchange server 240 and/or some intermediary application (e.g., a Web server). In some embodiments, the task exchange server 240 may further provide an API that provides programmatic access to at least some of the functionality provided by the task exchange server 240.
It will be appreciated that computing systems 200, 250, and 270 are merely illustrative and are not intended to limit the scope of embodiments of the present disclosure. The task exchange server 240 may instead be executed by multiple interacting computing systems or devices, and computing system 200 may be connected to other devices that are not illustrated, including through one or more networks such as the Internet, via the World Wide Web (“Web”), or other electronic communications network (e.g., cellular based network, public switched telephone network). More generally, a “client” or “server” computing system or computing device or a computing node may comprise any combination of hardware, firmware, or software that may interact, including (without limitation) desktop or other computers, network devices, PDAs, cellphones, wireless phones, pagers, electronic organizers, Internet appliances, television-based systems (e.g., using set-top boxes and/or personal/digital video recorders), game consoles, media players and various other consumer products that include appropriate inter-communication capabilities. In addition, the functionality provided by the task exchange server 240 may in some embodiments be provided via various components, and may be combined in fewer components or distributed in additional components than those described herein. Similarly, in some embodiments, at least some of the described functionality may not be provided as part of the task exchange server 240 and/or the Task Results Manager component 242, and/or other additional functionality may be available.
It will also be appreciated that, while various items are discussed or illustrated as being stored in memory or on storage while being used, these items or portions of them may be transferred between memory and other storage devices for purposes of memory management and data integrity. Alternatively, in other embodiments, some or all of the software components may execute in memory on another device and communicate with the illustrated computing system via inter-computer communication. Furthermore, in some embodiments, some or all of the components may be implemented or provided in other manners, such as at least partially in firmware and/or hardware, including, but not limited to, one or more application-specific integrated circuits (ASICs), standard integrated circuits, controllers (e.g., by executing appropriate instructions, and including microcontrollers and/or embedded controllers), field-programmable gate arrays (FPGAs), complex programmable logic devices (CPLDs), etc. Some or all of the system components and/or data structures may also be stored (e.g., as software instructions or structured data) on a computer-readable medium, such as a hard disk, a memory, a network, or a portable media article to be read by an appropriate drive or via an appropriate connection. The system components and data structures may also be transmitted via generated stored data signals (e.g., as part of a carrier wave or other analog or digital propagated signal) on a variety of computer-readable transmission mediums, including wireless-based and wired/cable-based mediums, and may take a variety of forms (e.g., as part of a single or multiplexed analog signal, or as multiple discrete digital packets or frames). Such computer program products may also take other forms in other embodiments. Accordingly, embodiments of the present disclosure may be practiced with other computer system configurations.
In overview, the routine interacts with task requesters and task performer users to perform multiple functions, including, for example, to handle requests to submit tasks, to update existing tasks, to perform tasks, to manage qualifications, etc. Once initial task performance results have been obtained, the routine may use information provided by the associated task requester to facilitate improving the results, such as by offering opportunities to task performer users to improve the initial results. The illustrated embodiment of the routine may determine whether obtained performance results satisfy criteria associated with a task in one of two ways, or in a combination of both. In a first manner, the routine may make the results available to the corresponding task requester and then respond to feedback from the task requester regarding whether those results are satisfactory and/or how to proceed. In a second manner, the routine may automatically validate at least the initially received results, and in some scenarios one or more additional supplemental results, to determine whether those results are satisfactory and/or how to proceed. To perform the automated validation, the routine may incorporate and apply one or more validation criteria (e.g., characteristics, business or programming logic, rules, etc.) provided by the task requester for the task. Other embodiments of the routine may operate in other manners, such as to not perform automated validation of results.
In this illustrated embodiment, the routine begins in block 305, where an indication is received of information or a request, and in block 310 determines whether the sender of the information or request is authorized to perform requests of that type or provide information of that type (e.g., based on prior registration of the users with the task exchange server, and/or on other previously defined access controls for specific users or types of users). If the routine identifies the sender as authorized in block 315, the routine continues to block 320 to determine whether the received indication was a request to submit a task. If so, the routine continues to block 325 to store task information received in block 305, including any specified criteria related to task performance (e.g., criteria for use in determining satisfactoriness of task performance results), information about any associated payments or other rewards for performance of the task (e.g., a full payment amount, one or more partial payment amounts, etc.), and any associated information to be analyzed or manipulated as part of the task. The routine then continues to block 330 to determine whether to perform automated matching to identify task performer users who are appropriate to perform the task, such as based on the type of task submitted and/or an explicit request by the submitter of the task, although in other embodiments such automated matching functionality may not be provided. In the illustrated embodiment, if automated matching is to be performed, the routine continues to block 335 to automatically match one or more task performer users with the task by, for example, identifying one or more task performer users whose qualifications satisfy any qualification criteria for the new task. The routine then notifies those identified task performer users of the task in an appropriate manner in block 340 (e.g., based on previously specified user preferences for those task performer users). After block 340, or if it was instead determined in block 330 that automated matching was not to be performed, the routine continues to block 390.
If it was instead determined in block 320 that the received indication was not to submit a task, the routine continues instead to block 345 to determine whether a request was received to perform an update for an existing task, and if so continues to block 350 to perform the update as appropriate. Such updates may take a variety of forms, such as to modify information about or delete a pending task that has not been performed; to perform an indicated activity related to a task (e.g., to cause a reward to be provided to a task performer user after the task requester has reviewed and accepted task performance results from that task performer user); to add, modify, or remove criteria associated with an existing task (including, for example, automated validation or other criteria used to assess satisfactoriness of results); etc. If it was instead determined in block 345 that the received indication was not to update an existing task, the routine continues to block 355 to determine whether the received indication was a request for information about one or more tasks and/or one or more users, such as for a search or browse request. If so, the routine continues to block 360 to identify and obtain the requested information, and then continues to block 362 to determine whether the indicated recipient of the information is authorized to receive all of the obtained information, such as based on access controls associated with any aspects or elements of the obtained information (although in other embodiments the access determination may be made before or as part of the obtaining of the information). In block 364, the routine then removes information for which the recipient is not authorized, if any, and in block 366 sends any remaining information to the recipient. In some embodiments, indications may be provided to the recipient of any removed information for which they were not authorized, while in other embodiments such indications may not be provided. After blocks 350 or 366, the routine continues to block 390.
If it was instead determined in block 355 that the received indication was not a request for information about tasks or users, the routine continues instead to block 370 to determine whether the received indication was a request from a task performer user to perform an indicated task. If so, the routine continues to block 371 to retrieve and provide information about the task to the task performer user in an appropriate manner (e.g., in a manner specified for the task), and in block 373 obtains results of performance of the task by the task performer user. In block 375, the routine then determines whether to validate the task results, such as based on whether a task requester has specified that the results for the task are to be automatically validated. If so, the routine continues to block 376 to execute a routine to automatically validate task results, for example as described with respect to
After block 376, or if it was instead determined in block 375 not to validate the task results, the routine continues to block 377. In block 377, the routine then determines whether to immediately send the task results to the task requester, such as based on information associated with the task, the outcome of the automated validation of block 376 (e.g., to not send the results if they are automatically determined to be unsatisfactory, or to not send the results if they are automatically determined to be partially satisfactory and the task requester has indicated that partially satisfactory results are not of interest), and/or based upon user preferences for the task requester. If so, the routine continues to block 378 to send the results. After block 378, or if it was instead determined in block 377 not to send the results to the task requester at this time, the routine continues to block 379 to optionally provide any reward associated with the task to the task performer user, such as in accordance with the task information and/or the outcome of the automated validation of block 376 (e.g., to provide full or partial payment or other rewards based on the automated validation). Such rewards may also be provided or facilitated to be provided at other times, such in conjunction with block 350 or 376 in accordance with instructions from the task requester. After block 379, the routine continues to block 390.
While the illustrated embodiment indicates a synchronous flow in which the routine waits for and obtains task performance results in block 373 after sending the task information in block 371, in other embodiments the routine may be structured in other manners, such as to continue with other processing while waiting for such task results (if any) to be received. In addition, in some situations, task performer users may not provide task results for a task after they have accepted an assignment to perform the task, which may be indicated to the routine in an explicit message from the task performer user that the task performer user is abandoning or withdrawing from task performance, or instead by not receiving task results within a specified period of time—if so, the routine may continue to handle other task-related requests and information. In addition, while not illustrated here, in other embodiments various types of notifications may be sent to task requesters related to their submitted tasks, such as when a task is assigned to a task performer user for performance and/or when an assigned task is withdrawn from a task performer user who has not completed the performance, and/or when task results are available to be obtained.
If it was instead determined in block 370 that the received indication was not to perform a task, the routine continues instead to block 380 to determine whether the received indication is to specify information related to user qualifications, and if so continues to block 382 to manage qualifications based on the specified information. Managing qualifications may include, for example, defining a new type of qualification for use with the system, specifying a particular qualification for a particular user, removing a particular qualification from a user, removing a particular qualification from the system, etc.
If it was instead determined in block 380 that the received indication was not to specify qualification-related information, then the routine continues instead to block 383 to determine whether the received indication is information specified by a task requester related to task performance results previously received from a task performer user in block 373. If so, the routine continues to block 385 to execute a Task Results Manager routine as described further with respect to
If it was instead determined in block 383 that the received indication was not information from a task requester related to task performance results, then the routine continues instead to block 388 to perform another indicated operation as appropriate, such as to receive and store various types of user information (e.g., information related to a user's identity or attributes, information related to an account of a user with the system, information related to specifying access controls for information and/or functionality, administrative requests related to system operations, requests for information related to monitoring performance of tasks or other operations of the system, etc.), to handle an indication from a task performer user indicating a withdrawal from or abandonment of an assignment to perform a task, etc.
After blocks 340, 350, 366, 379, 382, 385, or 388, or if it was determined in block 330 not to perform automated matching, the routine continues to block 390 to optionally perform any additional housekeeping operations, such as to store information that is generated or received during execution of the routine, to generate summary aggregate information for the system related to tasks and users, to take appropriate actions when events do not occur within specified periods of time (e.g., to withdraw assigned tasks from task performer users who do not timely perform the tasks, or to provide rewards to task performer users for tasks that they have performed when task requesters do not timely reject the task results provided by the task performer users), etc. After block 390, the routine continues to block 395 to determine whether to continue. If so, or if it was determined in block 315 that the sender was not authorized, the routine returns to block 305, and if not continues to block 399 and ends. While the illustrated embodiment may include tasks being specified one at a time, in other embodiments tasks may instead be specified in other manners, such as to allow multiple tasks to be submitted together (e.g., to allow for batch processing), whether or not those tasks are related to each other.
The routine begins in block 402, where it receives information from a task requester regarding indicated task performance results generated by one or more task performer users. The received information may include a variety of types of feedback from the task requester regarding the task performance results, such as to indicate a degree or level of satisfactoriness of the task performance results, one or more partial payment amounts for improving the task performance results in one or more indicated manners, other comments related to improving the task performance results (e.g., indications of one or more ways to improve the task performance results, such as for one or more results improvement options to be provided to one or more task performer users), etc. In the illustrated embodiment of the routine, the satisfactoriness of task performance results are evaluated with respect to one or more criteria (e.g., criteria previously specified by the task requester for the task; criteria currently specified by the task requester as part of the information provided in block 405; criteria used by the task requester to evaluate the results but not expressly indicated by the task requester; criteria specified other than by the task requester, such as default criteria for results; etc.), but in other embodiments may be evaluated or expressed in other manners. In block 405, the routine then determines whether the received information in block 402 specifies that the indicated task performance results are determined by the task requester to partially satisfy criteria for those results. If not, the routine continues in block 410 to determine whether instead the task results are indicated by the task requester to fully satisfy criteria for the results, and if so continues in block 412 to provide or otherwise indicate, designate, convey, or facilitate a full reward (e.g., full payment for the task) to the task performer user that generated those task performance results. The routine then continues to block 445. If it was instead determined in block 410 that the task results do not fully satisfy criteria for the results, then the routine continues in block 414 to notify the task performer user of that the task performance results are not satisfactory or are otherwise not accepted (e.g., to notify the task performer user that no reward will be provided). The routine then continues to block 445.
If it was instead determined in block 405 that the indicated task performance results partially satisfy criteria for the task, then the routine continues in block 415 to further determine whether the task performer user(s) who provided the indicated task results are to receive an opportunity to improve the indicated performance results. The determination of whether to provide the opportunity to the task performer user(s) may be made in various ways in various embodiments, such as based on information received from the task requester in block 402, or instead in some embodiments in other manners (e.g., based on predefined preferences or other related information, such as by the task requester for that task, for all tasks, for all tasks of that type, etc.; automatically by the task exchange server; etc.). In addition, in the illustrated embodiment, the opportunity to improve task performance results is provided only to some or all of the task performer users who generated the performance results, although in other embodiments other task performer users may be provided such an opportunity, whether instead of or in addition to the task performer users who generated the performance results. In addition, if the task requester indicates to provide an opportunity to improve the indicated performance results, the task requester may further specify additional information related to the opportunity, such as information related to one or more results improvement options (e.g., an indicated manner in which to improve the performance results for the option, one or more indicated criteria that the improved performance results are to satisfy for each option, a supplemental payment amount to be paid to a task performer user who generated supplemental performance results in accordance with the option, etc.). Furthermore, regardless of whether an opportunity to improve the indicated performance results is to be provided, the task requester may specify a partial payment to be paid to the task performer user(s) who generated the indicated performance results based on the partial satisfactoriness of those performance results.
If it is determined in block 415 that the task performer user(s) who provided the indicated task results are not to receive an opportunity to improve the indicated performance results, then the routine continues in block 420 to optionally provide or otherwise indicate, designate, convey, or facilitate a partial reward (e.g., a partial payment) to the task performer user(s) for the indicated performance results, such as a partial reward that is indicated by the task requester in the information received in block 402. Note that in some cases such a reward may be provided at other times and through other mechanisms, such as in accordance with blocks 350 and/or 379 in
Alternatively, if it is instead determined in block 415 that the task performer user(s) who provided the indicated task results are not to receive an opportunity to improve the indicated performance results, then the routine continues in block 425 to provide information to one or more of the task performer user(s) about one or more available results improvement options, such as to reflect results improvement options indicated by the task requester in the information received in block 402 and/or results improvement options automatically determined by the task exchange server (e.g., options to address one or more criteria for the task that the indicated performance results did not satisfy). If multiple task performer users contributed to the indicated performance results, a determination of which of the task performer users will receive the information about the results improvement options may be made in various ways in various embodiments, such so to select all of the multiple task performer users, to allow the task requester to select one or more of the multiple task performer users, to select one or more of the task performer users based on their contribution to the indicated performance results (e.g., to select those that contributed the most satisfactory results or that otherwise best satisfied one or more other performance measures), to select one or more of the task performer users based on characteristics of the task performer users (e.g., qualifications), etc. In at least some embodiments, each results improvement option may be associated with a supplemental reward amount (e.g., supplemental payment amount) if additional supplemental results are received in accordance with that results improvement option (e.g., supplemental results that satisfy criteria associated with that results improvement option, supplemental results that fully satisfy the criteria originally associated with the task, etc.). Furthermore, the task performer users may further in some embodiments and situations elect to not pursue any of the results improvement option, and to instead receive a partial payment amount for the already obtained performance results (e.g., a partial payment amount indicated by the task requester in the information received in block 402). Furthermore, as noted, in other embodiments one or more results improvement options may be made available to task performer users other than the task performer user(s) who generated the indicated performance results. This outcome may occur, for example, if the task requester believes that a more skilled task performer user may provide advantages to completing the task. In such a case, the routine may optionally provide a partial payment at this time to the task performer user who generated the indicated partially satisfactory results.
In block 430, the routine then waits until additional supplemental results are received in accordance with one or more of the indicated results improvement options, or an indication is received that the task performer user(s) are not pursuing any of the options (e.g., an explicit indication from one or more of the task performer user(s), the expiration of a deadline for the task performer user(s) to indicate that one or more of the options are being pursued, the expiration of a deadline for the task performer user(s) to provide the supplemental results, etc.). After block 430, the routine continues to block 435 where it determines whether additional supplemental task results were received in accordance with one or more of the indicated options that satisfy criteria for those options (or generally for the task). If so, the routine continues in block 436 to optionally provide or otherwise indicate, designate, convey, or facilitate payment to the task performer user for the initial and supplemental results (e.g., full payment if the initial and supplemental results are fully satisfactory). If it is instead determined in block 435 that no additional satisfactory task results were received (whether after receiving unsatisfactory supplemental results or receiving no additional supplemental task results), then the routine continues in block 438 to optionally provide or otherwise indicate, designate, convey, or facilitate a partial reward (e.g., partial payment) to the task performer user for the initial task results that were partially satisfactory. After blocks 436 or 438, the routine then continues in block 440 to send any received additional supplemental results to the task requester, although in other embodiments only received supplemental results that satisfy the criteria are provided to the task requester. In yet other embodiments, any received supplemental results are provided to the task requester as part of block 435, so that the determination of whether the supplemental results are satisfactory and/or of any corresponding supplemental payment amount to be paid may be made by the task requester and indicated as part of block 435. Furthermore, while not illustrated here, in some embodiments the process of improving task results may be repeated one or more additional times, such as if the task requester, after reviewing the additional supplemental results, again requests the task exchange server routine in block 383 to initiate task results improvement for the received additional supplemental results, causing the routine in
After blocks 412, 414, 420, or 440, the routine continues to block 445 to optionally take other actions as appropriate, such as to store information associated with actions taken. The routine then continues to block 450, and returns.
The illustrated embodiment of the routine begins in block 505, where it receives or otherwise determines performance results that are to be automatically validated. In block 510, the routine automatically validates the determined results according to received or retrieved validation criteria for the task. As described in greater detail elsewhere, such criteria may be provided by a task requester or otherwise determined. In block 515, the routine determines whether the task results fully satisfy the validation criteria, and if so continues in block 520 to provide or otherwise indicate, designate, convey, or facilitate a full reward for the determined performance results. The routine then continues to block 555. If it was instead determined in block 515 that the task results did not fully satisfy the validation criteria, then the routine continues instead to block 525 to determine whether the task results partially satisfy the validation criteria. If not, then the routine continues in block 530 to indicate, designate, or otherwise facilitate notification to a task performer user who generated the task results that the results fail to satisfy the validation criteria, such that reduced or no payment may be made. In other embodiments, failed results may instead be treated in a manner similar to those that are partially satisfactory, so as to provide task performer users with an opportunity to improve the results. After block 530, the routine continues to block 555.
If it was instead determined in block 525 that the task results do partially satisfy the validation criteria, then the routine instead continues to block 535 to determine whether any results improvement options are available for the determined task results. For example, the task requester may have previously indicated that an improvement opportunity is to be provided to a task performer user whose results partially satisfy the validation criteria. While not illustrated here, in other embodiments the validation criteria may assess multiple degrees or levels of partial satisfactoriness, such as with different results improvement options (or with results improvement options available only for some of the partial satisfactoriness levels or degrees). If no results improvement options are available, then the routine continues in block 540 to provide or otherwise indicate, designate, convey, or facilitate a partial reward for the determined performance results that are partially satisfactory, and the routine then continues to block 555.
If it was instead determined in block 535 that one or more results improvement options are available, then the routine instead continues in block 545 to provide information to one or more task performer users about the results improvement options, such as in a manner similar to that described with respect to block 425 of
After blocks 520, 530, or 540, the routine continues to block 555 to optionally take other actions as appropriate, such as to store information regarding the automated validation actions that were performed. The routine then continues to block 560, and returns.
Although the results validation routine is illustrated so as to automatically provide iterative opportunities for results improvement, such a routine could instead be implemented to automatically validate only the initial results that were fully satisfactory, such that a task requester would separately manually review any results that only partially satisfied the validation criteria. The automated validation routine could also be implemented to perform a specified number of iterations defined by the task requester, or according to other validation rules.
Those skilled in the art will also appreciate that in some embodiments the functionality provided by the routines discussed above may be provided in alternative ways, such as being split among more routines or consolidated into fewer routines. Similarly, in some embodiments illustrated routines may provide more or less functionality than is described, such as when other illustrated routines instead lack or include such functionality respectively, or when the amount of functionality that is provided is altered. In addition, while various operations may be illustrated as being performed in a particular manner (e.g., in serial or in parallel) and/or in a particular order, those skilled in the art will appreciate that in other embodiments the operations may be performed in other orders and in other manners. Those skilled in the art will also appreciate that the data structures discussed above may be structured in different manners, such as by having a single data structure split into multiple data structures or by having multiple data structures consolidated into a single data structure. Similarly, in some embodiments illustrated data structures may store more or less information than is described, such as when other illustrated data structures instead lack or include such information respectively, or when the amount or types of information that is stored is altered.
From the foregoing it will be appreciated that, although specific embodiments have been described herein for purposes of illustration, various modifications may be made without deviating from the spirit and scope of the disclosure. In addition, while certain aspects are presented below in certain claim forms, the inventors contemplate the various aspects in any available claim form. For example, while only some aspects of the disclosure may currently be recited as being embodied in a computer-readable medium, other aspects may likewise be so embodied.
Number | Name | Date | Kind |
---|---|---|---|
5455875 | Chevion et al. | Oct 1995 | A |
5465308 | Hutcheson et al. | Nov 1995 | A |
5805745 | Graf | Sep 1998 | A |
5826244 | Huberman | Oct 1998 | A |
5848393 | Goodridge et al. | Dec 1998 | A |
5862223 | Walker et al. | Jan 1999 | A |
5937388 | Davis et al. | Aug 1999 | A |
6012066 | Discount et al. | Jan 2000 | A |
6032151 | Arnold et al. | Feb 2000 | A |
6041306 | Du et al. | Mar 2000 | A |
6044355 | Crockett et al. | Mar 2000 | A |
6078916 | Culliss | Jun 2000 | A |
6128380 | Shaffer et al. | Oct 2000 | A |
6163607 | Bogart et al. | Dec 2000 | A |
6173053 | Bogart et al. | Jan 2001 | B1 |
6181343 | Lyons | Jan 2001 | B1 |
6182068 | Culliss | Jan 2001 | B1 |
6223165 | Lauffer | Apr 2001 | B1 |
6393497 | Arnold et al. | May 2002 | B1 |
6539377 | Culliss | Mar 2003 | B1 |
6546087 | Shaffer et al. | Apr 2003 | B2 |
6584192 | Agusta | Jun 2003 | B1 |
6584464 | Warthen | Jun 2003 | B1 |
6587556 | Judkins et al. | Jul 2003 | B1 |
6603854 | Judkins et al. | Aug 2003 | B1 |
6636590 | Jacob et al. | Oct 2003 | B1 |
6704403 | Lurie et al. | Mar 2004 | B2 |
6707904 | Judkins et al. | Mar 2004 | B1 |
6763104 | Judkins et al. | Jul 2004 | B1 |
6810383 | Loveland | Oct 2004 | B1 |
6859523 | Jilk et al. | Feb 2005 | B1 |
6938048 | Jilk et al. | Aug 2005 | B1 |
7155400 | Jilk et al. | Dec 2006 | B1 |
7197459 | Harinarayan et al. | Mar 2007 | B1 |
7827066 | Guy et al. | Nov 2010 | B1 |
7933790 | Trickel | Apr 2011 | B2 |
20020069079 | Vega | Jun 2002 | A1 |
20020083079 | Meier et al. | Jun 2002 | A1 |
20030078852 | Shoen et al. | Apr 2003 | A1 |
20030200156 | Roseman et al. | Oct 2003 | A1 |
20030204449 | Kotas et al. | Oct 2003 | A1 |
20050289051 | Allin et al. | Dec 2005 | A1 |
20060106675 | Cohen et al. | May 2006 | A1 |
20060106774 | Cohen et al. | May 2006 | A1 |