Method and system for providing scheduling suggestions

A system, computer-readable storage medium storing at least one program, and computer-implemented method for providing scheduling suggestions to a user. A collection of intention objects is accessed. Each of the intention objects is a data structure comprising a plurality of activity attributes of an intention of a user to undertake an activity. Calendar data from a calendar of the user is accessed and an available time slot on the calendar is determined. In response to determining the available time slot, a suggested intention object is selected from the collection of intention objects based on a plurality of activity attributes of the suggested intention object. A scheduling suggestion is then presented to the user. The scheduling suggestion may include a suggestion to schedule an activity associated with the suggested intention object in the available time slot.

TECHNICAL FIELD

Example embodiments of the present application generally relate to task management and, more particularly, to a system and method for providing intelligent task management services to users.

BACKGROUND

Classically, task management involved creating and maintaining one or more paper to-do lists. With the proliferation of mobile computing, task management is now typically handled electronically by way of task management software tools. Traditional task management software tools allow users to manage multiple tasks on multiple task lists, share tasks with other users, set alerts and reminders for certain tasks, and prioritize tasks based on the wishes of the user.

The task lists of traditional task management tools are often outdated, unstructured, and incomplete or unmanageably long. The information for describing individual tasks is often scant, containing little more than a subject and a due date. As a result, the tasks on these lists are often mismanaged and quickly become irrelevant or moot due to the passing of time or a change in other circumstances. Further, although these task management tools allow users to schedule tasks, they do not assist users in determining when to schedule certain tasks or how to prioritize each task on the list of tasks. Moreover, traditional task management tools do not assist users in tracking available time at which one or more tasks may be performed. Additionally, traditional task management tools provide little assistance to users in actually undertaking or completing the tasks on the task lists.

DETAILED DESCRIPTION

Reference will now be made in detail to specific example embodiments for carrying out the inventive subject matter. Examples of these specific embodiments are illustrated in the accompanying drawings. It will be understood that it is not intended to limit the scope of the claims to the described embodiments. On the contrary, it is intended to cover alternatives, modifications, and equivalents as may be included within the spirit and scope of the disclosure as defined by the appended claims. In the following description, specific details are set forth in order to provide a thorough understanding of the subject matter. Embodiments may be practiced without some or all of these specific details. In addition, well known features may not have been described in detail to avoid unnecessarily obscuring the subject matter.

Aspects of the present disclosure describe systems and methods for intelligent task management services including generating an intention object. In example embodiments, the method may include obtaining activity data that defines a plurality of activity attributes of an intention of a user to undertake an activity and obtaining content data including one or more content items related to undertaking the activity. The plurality of activity attributes may include temporal attributes defining time constraints related to the intended activity and contextual attributes that identify contexts related to the intended activity. The data may be obtained from user input or from one or more communications received by the user related to the activity. In some embodiments, the plurality of activity attributes may also include categorical attributes defining a category or type of activity and dependency attributes related to one or more associated activities or users.

Consistent with this embodiment, an intention object may be generated based on the plurality of activity attributes. The intention object may comprise a data structure including the plurality of activity attributes and the content data. The method may further include inferring an additional attribute of the intention object and updating the intention objects based on the additional object. Each generated intention object may simultaneously reside in an intention object collection and one or more communications (e.g., email, calendar invite, etc.) or calendar event. Each generated intention object may have a number of different actions that may be taken with regard to the intention objects themselves (e.g., sharing via email) and a number of different executable actions that may be executed with regard to the respective activities of the intention object. A particular intention object may persist regardless of the actions taken with respect to that object.

As an illustrative example, a user may receive an email confirming a dentist appointment at the dentist's office that same day at 2:30 PM. The system may then analyze the email to obtain the activity attributes defining the user's intended activity, which in this example is the dentist appointment. The activity attributes obtained from the email may include the date and time of the appointment (e.g., a temporal attribute) and the location of the appointment (e.g., a contextual attribute), which in this case is the dentist's office. An intention object including these obtained activity attributes may then be created. A travel time (e.g., an additional attribute) of 15 minutes may then be inferred based on the current location of the user and the location of the dentist's office. The intention object may then be updated to include the inferred attributes.

Aspects of the present disclosure describe systems and methods for intelligent task management services including selectively presenting a user with a collection of intention objects. In example embodiments, the method may include accessing a collection of intention objects belonging to the user. Each of the intention objects may comprise a data structure including a plurality of activity attributes of an intended activity. The plurality of activity attributes may comprise temporal attributes and contextual attributes including a location associated with the intended activity.

Consistent with this embodiment, the method may also include determining a relevancy rank for each of the collection of intention objects based on the plurality of activity attributes corresponding to each intention object. The relevancy rank indicates a suggested order in which the user undertakes each of the respective activities. Upon determining the relevancy rank of each intention object, one or more intention objects with a relevancy rank above a predefined threshold are identified. Graphical representations of the above-threshold intention objects may be presented to the user in a free form spatial interface. In some embodiments, the identified intention objects may be presented to a user in an order listed with the order of the intention objects determined based on the respective relevancy rank.

Continuing with the example presented above, in addition to the dentist appointment intention object, the user may have created an additional intention object for rearranging his sock drawer, which includes a temporal attribute indicating that the duration of this activity is 30 minutes. The user may have created another intention object for a date with his wife at a time and location to be determined at a later time. The user's collection of intention objects may thus comprise the intention objects for the dentist appointment, rearranging the sock drawer, and the date with his wife. A relevancy rank is then determined for each intention object, and assuming each intention object is above the predefined threshold, a graphical representation of each intention object is presented to the user in a free form spatial canvas. If the user is home and it is before 1:15 PM, the rearranging sock drawer intention object may have the highest relevancy ranking, followed by the dentist office intention object, and then finally the date with his wife. The intention objects may be presented to the user in this order in an ordered list.

In some embodiments, the method may also include determining an updated relevancy rank for each intention object and identifying a particular intention object with an updated relevancy rank that is below the threshold. In response to the particular intention object being below the threshold, the particular intention object is removed from the free form spatial interface and from the ordered list.

Following the above example, an updated relevancy ranking for each intention object may be determined in response to the time of day being later than the dentist appointment without the user indicating that the dentist appointment was completed. The updated relevancy rank of the dentist appointment may then be determined to be below the predefined threshold. As a result, the graphical representation of the dentist appointment intention object may be removed from the free form spatial interface.

Aspects of the present disclosure describe systems and methods for intelligent task management services including providing scheduling suggestions to a user. In example embodiments, the method may include accessing a collection of intention objects belonging to the user. Each of the intention objects may be comprised of a data structure including a plurality of activity attributes defining an intention of the user to undertake an intended activity. The plurality of activity attributes may comprise temporal attributes and contextual attributes including a location associated with the intended activity.

Consistent with this embodiment, the method may also include accessing calendar data from a calendar of the user and determining an available time slot on the calendar. In response to determining the available time slot, a suggested intention object is selected from the collection of intention objects. The selection of the suggested intention object may be based on one or more of the plurality of activity attributes of the suggested intention object. The user may then be provided a scheduling suggestion including a suggestion to schedule the activity associated with the suggested intention object in the available time slot. In response to receiving approval of the suggestion by the user, the activity is scheduled in the available time slot.

Following the example from above, the calendar of the user may be accessed and it may be determined that the user currently has a 30 minute opening in his schedule. If the user is home (e.g., the location of his sock drawer), the user may then be provided with a suggestion to rearrange his sock drawer. Upon approval from the user, the rearranging of the sock drawer activity may be scheduled on the user's calendar. Alternatively, it may be determined that the user has a 2 hour opening in his schedule later that day. The user may then be provided a suggestion to schedule a date with his wife during that available time slot. Upon approval from the user, the date with his wife may be scheduled on the user's calendar.

FIG. 1is a network diagram depicting an example network system100, according to one embodiment, having a client-server architecture configured for exchanging data over a network. Although the system100illustrated inFIG. 1employs a client-server architecture, the present inventive subject matter is, of course, not limited to such an architecture, and could equally well find application in an event-driven, distributed, or peer-to-peer architecture system, for example.

The network system100may include a data exchange platform102where clients may communicate and exchange data within the network system100. The data exchange platform102may provide server-side functionality, via a network104(e.g., the Internet), to one or more client devices106, and108, and to one or more third party servers110. The client devices106and108may be executing conventional web browser applications, or applications that have been developed for a specific platform or operating system (e.g., iOS, Android, etc.). The client devices106and108may, for example, be any of a variety of types of devices including a cellular telephone, a personal digital assistant (PDA), a personal navigation device (PND), a handheld computer, a tablet computer, a desktop computer, a notebook computer, a wearable computing device, or other type of movable device.

The client devices106and108may communicate with the communication network104via a connection112. Depending on the form of the client device106and108, any of a variety of types of connections112and communication networks104may be used. For example, the connection112may be Code Division Multiple Access (CDMA) connection, a Global System for Mobile communications (GSM) connection, or other type of cellular connection. In another example, the connection112may be Wireless Fidelity (Wi-Fi, IEEE 802.11x type) connection, a Worldwide Interoperability for Microwave Access (WiMAX) connection, or another type of wireless data connection. In yet another example, the connection112may be a wired connection, such as an Ethernet link, and the communication network104may be a LAN, a WAN, the Internet, or other packet-switched data network.

The one or more client devices may be operated by the users of the data exchange platform102to exchange data over the network104. In various embodiments, the data exchanges within the network system100may be facilitated by one or more interface modules114. The interface modules114are coupled to, and provide programmatic and web interfaces respectively to, one or more application servers126. The interface modules114may receive requests from various client-computing devices, and communicate appropriate responses to the requesting client devices. For example, the user interface module(s)114may receive requests in the form of Hypertext Transport Protocol (HTTP) requests, or other web-based, application programming interface (API) requests.

In various embodiments, the interfaces provided by the interface modules114depend on the particular client device being used. For example, the web server116may provide web interfaces to the client device106using web client118. The API server120may provide programmatic access to the client device108using a programmatic client122, such as a client application, or to a third party server110(e.g., one or more servers or client devices) hosting a third party application124. The third party application124may use information retrieved from the data exchange platform102to support one or more features or functions on a website hosted by the third party. In some embodiments, the data exchange platform102may use information retrieved from a third party website hosted by the third party server110to support one or more task management features discussed herein. The third party website may, for example, provide one or more calendaring or communication (e.g., email) services that are supported by the relevant applications of the data exchange platform102.

The application servers126host one or more of the task management services discussed herein. The application servers126may be coupled via the interface modules114to the communication network104, for example, via wired or wireless interfaces. The application servers126are, in turn, coupled to one or more database server(s)130that facilitate access to one or more database(s)132. In some examples, the application servers126can access the database(s)132directly without the need for a database server130. In some embodiments, the databases132may include databases both internal and external to the data exchange platform102.

FIG. 2is a block diagram illustrating an example embodiment of the interactions of multiple modules forming the task management application128, which are provided as part of the task data exchange platform102. Each of the modules illustrated inFIG. 2may be hosted on a dedicated or shared server machine (e.g., application server126) that is communicatively coupled to enable communication with one or more additional server machines. Each of the modules illustrated inFIG. 2are communicatively coupled (e.g., via appropriate interfaces) to each other and to various data sources (e.g., third party server110) so as to allow information to be passed between each of the modules or so as to allow the modules to share and access common data. The modules illustrated inFIG. 2may furthermore access one or more databases132via the database servers130.

As illustrated inFIG. 2, the modules forming the task management application128may include an intention object generation module(s)202, calendar module(s)208, email client module(s)212, intention object collection214and relevancy ranking module(s)216. It will be appreciated that one or more of the various modules forming the task management application128may be combined into a single module. Further, in some embodiments, one or more modules may be omitted and additional modules may also be included. Additionally, while the modules illustrated inFIG. 2are discussed below in the plural sense, it should be noted that a single version of the module may be utilized.

The intention object generation modules202may be configured to generate intention objects. In some embodiments, the intention object generation modules202may generate an intention object in response to and based on user input entered via a user interface provided by the interface modules114. Consistent with this embodiment, a user may specify a plurality of activity attributes that may define an intended activity. The plurality of activity attributes may collectively define an intention of the user to undertake an activity. The plurality of activity attributes may, for example, include a title, an activity or task, temporal attributes, contextual attributes and other content. Further details of the data elements and information forming an intention object are discussed below in reference toFIG. 3.

In some embodiments, the intention object generation module202may obtain activity data defining one or more activity attributes from one or more communications (e.g., email, calendar invitations, instant messages, text messages, etc.) received by the user. For example, as illustrated inFIG. 2, the intention object generation module202may retrieve a calendar event204from one or more calendar modules206. The intention object generation module202may analyze and parse the retrieved calendar event204to determine the one or more attributes from the information contained therein. The intention object generation module202may also infer one or more additional attributes based on the determined one or more attributes.

The source of the calendar data used by the calendar modules206may be one or more databases132or a storage medium contained in the client device106. The calendar data may alternatively be retrieved, via API, from one or more third party calendar applications or services hosted by the third party server110.

As illustrated inFIG. 2, the intention object generation module202may alternatively obtain the one or more attributes from an email210from email client modules212. The email210may be automatically obtained from the email client modules212or in response to user input. In some embodiments, the email210is automatically retrieved by the intention object generation module202based on the content of the email210. As with the calendar event204, the intention object generation module202may analyze and parse the retrieved email210to determine the one or more attributes from the information contained therein. The intention object generation module202may also be configured to infer one or more additional attributes based on the one or more attributes.

The source of the email210obtained from the email client modules212may be one or more databases132or a storage medium contained in the client device106. The email210may alternatively be retrieved, via API, from one or more third party email applications or services (e.g., Gmail, Hotmail, Y mail, etc.) hosted by the third party server110.

Each intention object generated by the intention object generation module202may be added to an intention object collection214. Each user of the data exchange platform102may have a corresponding intention object collection214. The intention object collection214may be stored in one or more databases132and subsequently accessed by a client device (e.g., client device106) of the user. In some embodiments, the intention object collection214may be stored locally in a machine readable storage medium of the client device.

Intention objects included in the intention object collection214may be stored in either an inactive or active state. The state of each intention object may be based on a relevancy rank determined by a relevancy ranking modules216. The relevancy rank may provide an indication of a suggested order in which the user undertakes each respective activity of the collection of intention objects. The relevancy rank of each intention object may be determined based on the one or more attributes comprising the intention object. Intention objects with a relevancy rank above a predefined threshold (e.g., above-threshold intention objects) may be placed in an active state. Active state intention objects included in the intention object collection214may be presented to a user via a user interface provided by the interface modules114. Conversely, intention objects with a relevancy rank below a predefined threshold may be placed in an inactive state and may not be displayed to the user.

The calendar modules206may provide a number of scheduling and calendaring services to users. To this end, the calendar modules206may provide a calendar interface that enables users to view, add, and remove calendar events to particular dates and times. Calendar events may be generated based on user input, or based on one or more intention objects. In some embodiments, an intention object may be added to the calendar of a user based on user input. For example, a user operating a client device with a touch sensitive display may add a particular intention object to the calendar via a single touch gesture (e.g., a swipe, a touch, etc.). In some embodiments, the calendar modules206may access the collection of intention objects and select one or more intention objects to be automatically scheduled as a calendar event based on the one or more attributes of the intention object.

Consistent with some embodiments, the calendar modules206may be configured to access calendar data of a user and analyze the data to determine open time slots in the schedule of the user. The calendar modules206may subsequently access the intention object collection214and select one or more intention objects to suggest to the user for scheduling in the open time slot. The one or more intention objects may then be scheduled as calendar events in response to receiving the approval of the user. The scheduled calendar events may include the activity attributes and may maintain a reference to the intention object.

The email client modules212may host an email inbox for each user and provide a number of email services to each user including, for example, sending, receiving, accepting, storing and archiving emails from other users and other organizations. The email client modules212may also provide users the ability to mark emails in the inbox of the user as “read” or “unread” as well as provide the ability to add customized labels to each email. The email client modules212may also enable users to share intention objects with one another. The sharing of an intention object may allow other users to simply view the intention object of another user or the sharing of the intention object may be an invitation to attend an event or activity associated with the intention object. When shared with an additional user, all of the content and attributes of the shared intention object may be included in the communication to the additional user.

In some embodiments, the sharing of the intention object is an assignment of an activity or task associated with the intention object to an additional user or group of users. Consistent with this embodiment, an intention object included in an intention object collection corresponding to a first user, when shared with a second user, may automatically be added to the intention object collection corresponding to the second user.

The task management applications128may also include one or more communication modules (not shown), which may be used for generation and delivery of messages (e.g., suggestions, notifications, reminders) to users of the data exchange platform102. The communication modules may utilize any one of a number of message delivery networks and platforms to deliver messages to users. For example, the communication modules may deliver push notifications, electronic mail (e-mail), instant message (IM), Short Message Service (SMS), text, facsimile, or voice (e.g., Voice over IP (VoIP)) messages.

FIG. 3is a high-level relationship diagram, in accordance with an example embodiment, illustrating various attributes and data elements that are maintained as part of an example intention object300. Intention object300may concurrently reside in the calendar of the user provided by calendar modules206, an email in the inbox provided by the email client module212, and in the intention object collection214.

As illustrated inFIG. 3, the intention object300is a data structure comprising an activity identifier302, a plurality of activity attributes (e.g., temporal attributes304, contextual attributes306, categorical attributes308, dependency attributes310) and content data312. The activity identifier302may identify the particular activity the user intends to undertake. The activity identifier302may be a title, a name, or any other set of words used to refer to the intended activity. The activity may be any action, movement, task or other work to be performed by the user. The activity may be a one-time occurrence or in some embodiments, a recurring activity that is performed at predefined intervals. By way of non-limiting example, the activity may be a work project, a household errand (e.g., house cleaning, grocery shopping, etc.), a phone call to be placed, a meeting or presentation, an email, note or letter to be drafted, or the like.

The plurality of activity attributes may define the intention of the user to undertake the activity identified by the activity identifier302. The activity identifier may be a title, a name or any other set of words used to refer to the activity. The plurality of activity attributes may include temporal attributes304, contextual attributes306, and categorical attributes308. The temporal attributes304define time constraints relating to the activity. The temporal attributes304may, for example, include a creation date, a completion date, a start time, an end time, a deadline or due date, a frequency (for reoccurring activities), a duration of time necessary for undertaking an activity, a reminder date or time, a travel time, and an amount of time spent performing the activity. The precision and granularity of each of the temporal attributes304may be progressively refined based on user input. For example, a user may specify a time constraint as an exact time (e.g., “at 7:26 a.m.”), an approximate time (e.g., “at breakfast”), a time range (e.g., “between 4:00 p.m. and 5:00 p.m.”), an exact date (e.g., “on Aug. 16, 2014”), an approximate date (e.g., “in a couple weeks from today”), a date range (e.g., “between Jul. 9, 2013, and Jul. 11, 2013”), or a season (e.g., “summer 2013”).

The contextual attributes306identify at least one context relating to the activity. The context may be the circumstances that form a setting relevant to the undertaking or completion for an activity. The contextual attributes306may, for example, include a location, a mental state of the user, a proximity to another user, a mode of transportation, or a particular environmental setting.

The categorical attributes308include one or more categories or types of activities. In some embodiments, the category is based on one or more of the temporal attributes. For example, an intention object with an activity that may depend on a relatively long period of time to complete may be classified as a “long term” intention object. In contrast, an intention object with an activity that may require only a relatively short period of time may be classified as a “short term” intention object. In some embodiments, the category may be based on one or more contextual attributes. For example, an intention object with an activity that must be undertaken at the home of the user may be classified as a “household errand.”

As illustrated inFIG. 3, the intention object300may also include dependency attributes310. Dependency attributes310relate to dependencies of the intention object300and on other intention objects or additional users. The intention object300may be associated with or depend on one or more additional intention objects. The intention object300may depend on the additional intention object such that the activity of the intention object300must be undertaken or completed prior to the activity of the additional intention object. In the case of multiple dependencies, the dependency attributes310may also provide an indication of the order in which the activities are to be undertaken. In some embodiments, this order is determined based on the relevancy rank calculated by the relevancy ranking module216. In some embodiments, the intention object300may depend on an activity, action, or event that does not correspond to an intention object.

In some embodiments, the dependency attributes310of the intention object300may also include information related to one or more additional users related to or important for undertaking the activity. In some embodiments, the activity or task may be assigned to the one or more additional users. The dependency attributes310may include an identifier of the one or more additional users such as a name, a title, an email address, a phone number, an employee identification number, or any other information that may uniquely identify the one or more users.

As illustrated inFIG. 3, the intention object300may also include content data312. The content data312may include one or more content items or files associated with the activity. By way of non-limiting example, the content data312may include a link or list of links associated with the intention, an attached file or collection of files, and one or more reminders to undertake the activity. In some embodiments, the content data312may be content that is needed for the user to complete the activity. For example, an intention object corresponding to an intention of a user to create a presentation may include a template file for the presentation as part of the content data312.

FIG. 4is a flowchart illustrating an example method400for generating an intention object, according to an example embodiment. In this example, the method400may include operations such as obtaining activity data defining a plurality of activity attributes at operation405, obtaining content data at operation410, generating an intention object at operation415, inferring an additional attribute at operation420, updating the intention object at operation425, detecting occurrence of one or more context events at operation430, and transmitting a notification at operation435.

At operation405, activity data defining a plurality of activity attributes of an intention of a user to undertake an activity is obtained. The plurality of activity attributes may include at least one temporal attribute defining a time constraint relating to the intended activity and at least one contextual attribute identifying a context relating to the intended activity.

In some embodiments, the activity data defining the plurality of activity attributes may be obtained from a user via a user interface provided by the interface modules114. In other embodiments, the obtaining of the activity data comprises obtaining a communication (e.g., a calendar event, an email, a text message, an instant message, a phone call, etc.) related to the activity and parsing the communication to determine the one or more activity attributes.

At operation410, content data is obtained. The content data may define one or more content items related to or required for the undertaking of the activity. In some embodiments, the content data may be obtained from a user. In embodiments where the one or more attributes are determined from a communication related to the activity, the communication may be automatically included as part of the content data.

At operation415, an intention object is generated based on the plurality of activity attributes. The generated intention object may comprise a data structure including the plurality of activity attributes and the one or more content items.

At operation420, an additional attribute of the intention object is inferred based on the plurality of activity attributes. In some embodiments, the additional attribute is a categorical attribute. In some embodiments, the inferring of the additional attribute is based on a physical location of the user. For example, if the contextual attributes of a particular intention object indicate that the activity is to be undertaken at a first location, but the user is in a second location, the travel time for the activity may be inferred based on the location of the user.

In some embodiments, the inferring of the additional attribute is based on a particular client device being used by the user. For example, users with multiple devices may have certain devices for personal use and other devices for business use. If a user initiates the generation of an intention object from a device that is for personal use, it may be inferred that the intention object is in the category of “household errands.” Thus, a categorical attribute may be inferred.

At operation425, the intention object is updated to include the additional attribute. At operation430, a context event is detected. The context event relates to one or more of the contextual attributes. For example, the contextual attributes may specify a particular location and the GPS functionality of the client device may be used to determine the occurrence of a context event based on the current location of the user being at a location specified by the contextual attributes. In another example, the GPS functionality of multiple client devices may be used to determine the occurrence of a context event based on the user being proximate to another user.

In response to detecting the occurrence of the context, a notification is transmitted to the user at operation435. Depending on the activity attributes, the notification may be a reminder to the user to undertake the activity. In other embodiments, the notification may be merely a suggestion that the user undertake the activity.

FIG. 5is a flowchart illustrating an example method500for selectively presenting a collection of intention objects to a user, according to an example embodiment. In this example, the method500may include operations such as accessing a collection of intention objects at operation505, determining a relevancy rank at operation510, identifying intention objects with a relevancy rank above a threshold at operation515, presenting a free form spatial canvas at operation520, and presenting the collection of intention objects in an ordered list at operation525.

At operation505, a collection of intention objects belonging to a user is accessed. Each of the intention objects may comprise a data structure including a plurality of activity attributes. The plurality of activity attributes may include one or more temporal attributes and one or more contextual attributes. In some embodiments, the one or more contextual attributes may identify a location for undertaking the activity.

At operation510, a relevancy rank for each of the intention objects in the collection of intention objects is calculated. The relevancy rank may indicate a suggested order in which the user undertake each respective activity. The relevancy rank may be determined based on the respective activity attributes of each of the intention objects.

At operation515, one or more above-threshold intention objects with a relevancy rank above a predefined threshold are identified. The predefined threshold may be dynamically set by a user, or in some embodiments, the predefined threshold may be a default value.

At operation520, graphical representations of the one or more identified intention objects is presented to the user in a free form spatial interface. The presentation of each intention object may include one more executable user interface elements allowing the user to take one or more actions associated with respect to each intention object. Each of the intention objects presented to the user may be placed in an active state, while the remaining intention objects of the collection of intention objects are placed in an inactive state. Consequently, only the intention objects that are the most relevant to the user are presented to the user.

The method500may optional include the operation525, in which the user is presented with the identified one or more intention objects in an ordered list. The order of the list may be determined by the relevancy rank of each of the one or more identified intention objects.

FIG. 6is a flowchart illustrating an example method600for updating a collection of intention objects, according to an example embodiment. The method600may begin subsequent to the termination of method500. In this example, the method600may include operations such as determining updated relevancy ranks at operation605, determining an intention object with a relevancy rank below a threshold at operation610, updating the intention object at operation615, removing the intention object from the freeform spatial canvas at operation620, unscheduling the intention object at operation625, and scheduling the intention object to be returned to the active state at operation630.

At operation605, an updated relevancy rank is determined for each of the intention objects of the collection of intention objects. The determining of the updated relevancy ranks may occur automatically at predefined intervals without any user intervention. In some embodiments, the updated relevancy ranks may be determined in response to a change to the collection of intention objects (e.g., intention objects added or removed). In some embodiments, the updated relevancy ranks are determined in response to a change in location or other circumstances that may form the setting for undertaking one or more respective activities of the collection of intention objects.

At operation610, the updated relevancy rank for a particular intention object is determined to be below a predefined threshold. The predefined threshold may be the same predefined threshold discussed above with respect to operation515. In response to the relevancy rank of the particular intention object being below the predefined threshold, the status of the particular intention object is updated to be in an inactive state at operation615. In response to the particular intention object being inactive, the graphical representation of the particular intention object is removed from the free form spatial interface at operation620and unscheduled from the calendar of the user at operation625.

At operation630, the particular intention object is scheduled to be returned to the active state. The intention object may be scheduled to be returned to the active state in response to and in accordance with user input.

FIG. 7is a flowchart illustrating an example method700for providing scheduling suggestions to a user, according to an example embodiment. In this example, the method700may include operations such as accessing a collection of intention objects at operation705, accessing calendar data at operation710, determining an available time slot at operation715, selecting a suggested intention object at operation720, providing a scheduling suggestion at operation725, and scheduling the intention at operation730.

At operation705, a collection of intention objects belonging to a user is accessed. At operation710, calendar data from a calendar of the user is accessed. In some embodiments, the calendar data may be retrieved from one or more third party calendar services (e.g., third party application124). In some embodiments, the calendar data may correspond to one or more calendars of the user provided by calendar module206.

At operation715, the calendar data is analyzed to determine an available time slot in the user's schedule. At operation720, a suggested intention object is selected from the collection of intention objects. The suggested intention object may be selected based on a combination of the length of the available time slot, the plurality of activity attributes of the intention object, and the relevancy rank of the intention object. For example, at operation715a fifteen minute available time slot in the schedule of the user may be identified and at operation720a particular intention object may be selected as the suggested intention object based on the particular intention object having a temporal attribute indicating that the corresponding activity may take fifteen minutes to complete. In another example, the intention object with the greatest relevancy ranking may be selected as the suggested intention object.

At operation725, a scheduling suggestion is generated and provided to the user. The scheduling suggestion may include a suggestion to schedule the activity corresponding to the suggested intention object. In some embodiments, the scheduling suggestion may be automatically transmitted to the client device of the user as a notification without the need for an application to be executing. In other embodiments, the scheduling suggestion is provided to the user upon opening the relevant application (e.g., task management application128). The scheduling suggestion may also provide the user with an ability to quickly schedule the activity of the intention object. Depending on the client device, the activity may be scheduled through a single click, keystroke, or touch screen gesture. In response to receiving such user input, the activity may be scheduled on the calendar of the user at operation730.

FIG. 8is an interface diagram illustrating an example free form spatial interface800including a graphical representation of a collection of intention objects, according to some embodiments. As illustrated inFIG. 8, graphical representation of the collection of intention objects may include graphical representations of intention objects802-812. A user may be able to customize the appearance of the graphical representation of each intention object802-812by specifying the size, shape, font and color of each of the intention objects802-812. A user may drag and position each of the intention objects802-812anywhere within the free form spatial interface800. In some embodiments, dragging and dropping an intention object to a particular location or region with the free form spatial interface800may cause a particular action to taken with respect to the intention object. For example, a user dragging and dropping intention object802to the bottom right quadrant of free form spatial interface800may automatically cause a reminder to be set for intention object802. In another example, a user dragging and dropping intention object804to the top right quadrant of free form spatial interface800may automatically cause the intention object804to be scheduled on the calendar of the user.

In some embodiments, a user may be able to quickly associate two or more intention objects by dragging an intention object over the top of another intention object or group of intention objects. Indicator814signifies that intention object802contains multiple dependent or associated intention objects. Selection of indicator814may cause the display of the one or more dependent intention objects. Further details of this operation are discussed below in reference toFIG. 9. For purposes of this specification, “selection” of a button or other user interface element refers to the receiving of a user input indicating the selection of the button or other user interface. Depending on the client device being used, the user input may be a mouse click or gesture, a keyboard stroke, a voice command, a single gesture on a touch enabled surface or display, accelerometer input, optical recognition input or the like.

As illustrated inFIG. 8, the free form spatial interface800may also include buttons816,818, and820to provide additional functionality. For example, selection of button816causes a calendar of the user to be displayed. Further details of this feature are discussed below in reference toFIG. 10. The button818allows users to create and add additional intention objects to the intention object collection. Selection of the button818may cause an additional interface (not shown) to be displayed. This additional interface may allow a user to input an activity identifier and one or more attributes defining an intention of the user to undertake the activity. Selection of button820may cause an alternative display or presentation of the collection (e.g., an ordered list). Further details of this feature are discussed below in reference toFIG. 11.

FIG. 9is an interface diagram illustrating the example free form spatial interface800with an example graphical representation of a dependent intention object, according to some embodiments.FIG. 9illustrates the result of the selection of indicator814discussed above in reference toFIG. 8. Intention objects802A and802B comprise the intention object802displayed inFIG. 8. As illustrated, intention object802A is dependent upon intention object802B. Intention object802A depends on intention object802B such that the activity corresponding to intention object802B is to be completed prior to undertaking the activity corresponding to intention object802A. The intention object802B also includes indicator822, which indicates to the user that the activity corresponding to intention object802B has been completed.

FIG. 10is an interface diagram illustrating the example free form spatial interface800with an example graphical representation of a collection of intention objects and an example calendar1000, according to some embodiments. The calendar1000may be the calendar maintained by the calendar module206, and may provide the user with all the functionality described herein with respect to the calendar module206. The calendar1000may be displayed to a user in response to selection of button816illustrated inFIG. 8. As illustrated inFIG. 10, the calendar1000may be presented to the user in a translucent interface overlaid on the free form spatial interface800. In other embodiments, the calendar1000may be presented in an interface that is separate and distinct from the free form spatial interface800.

Specific dates on the calendar1000may also include one or more indicators of calendar events scheduled on those dates and may provide some indication as to the time at which these events are scheduled. In some embodiments, one or more calendar events may correspond to one or more intention objects. These scheduled intention objects may reside on both the calendar1000and the free form spatial interface800.

FIG. 11is an interface diagram illustrating an example collection of intention objects presented as an ordered list1100, according to some embodiments. The ordered list1100may include intention objects1102-1112. The order in which the intention objects1102-1112are presented may be based on the relevancy ranking of each intention object calculated by the relevancy ranking modules216. The intention object with the highest relevancy ranking (e.g., intention object1102) may be presented at the top of the ordered list1100, with each subsequent intention object having the next highest relative relevancy ranking. The intention object with the highest relevancy ranking (e.g., intention object1102) may be presented as a reminder or notification and may include additional information such as information related to a start time or date, a location, a travel time, additional users related to the activity, and the like.

As illustrated inFIG. 11, the presentation of each of the intention objects1102-1112may also include one or more executable action items1114-1120, respectively. Depending on the activity associated with the intention, a number of different executable action items may be provided. In some embodiments, the particular executable action items that are provided with a particular intention object are based on the one or more categorical attributes308of the particular intention objects.

Executable action items1114-1120provide the user with one or more actions to undertake or complete the activities associated with each intention object. For example, selection of executable action item1114may cause the client device of the user to open a browser application and direct the user to a website that may enable the user to undertake the activity, which in this case is making dinner reservations. Selection of executable action item1116may allow a user to compose an email to the intended recipient identified by the dependency attributes of intention object1108. This email functionality may be provided by the email client module212or by a third party application124. Selection of executable action item1118may allow a user to place a phone call to the intended recipient identified by the dependency attributes of intention object1110. Selection of executable action item1120may allow a user to create a meeting request.

As illustrated inFIG. 11, the interface may also include search bar1122and button1124. The search bar1122may allow users to enter keyword based queries to search for a particular intention object or a group of intention objects that are part of the intention object collection of the user. As with button820, button1124may allow users to toggle between various views of the intention object collection (e.g., free form spatial interface800and ordered list1100).

FIG. 12is an interface diagram illustrating a portion of a detailed view of an example scheduled intention object810, according to some embodiments. The detailed view of intention object810may include activity identifier1202, scheduling data field1204, dependency data field1206, location data field1208, content data field1210, and buttons1212-1218. The activity identifier1202identifies the activity associated with intention object810. Intention objects, such as intention object810, that have been scheduled on one or more of the calendars provided by calendar modules206may include scheduling data field1204. The scheduling data field1204may include information related to one or more attributes of the intention object810. To this end, the scheduling data field1204may, by way of non-limiting example, include information such as a scheduled date or time, other invitees or attendees, and one or more reminders. From the detailed view, the user may edit any information therein. The detailed view of an intention object may also provide the user an ability to set a reminder of the intention object with a single touch gesture or drag and drop action.

The dependency data field1206relates to one or more dependency attributes of intention object810and may identify one or more additional users or additional intention objects that are associated with or depend on intention object810. The location data field1208relates to one or more contextual attributes of intention object810and may identify a location associated with the activity identified by the activity identifier1202. The content data field1210relates to the content data of intention object810and may include one or more content items or files associated with the activity.

The button1212, when selected, may provide the user an ability to invite one or more additional users to the scheduled activity. The button1214, when selected, may allow a user to simply share the intention object810with one or more other users. This type of communication functionality of the buttons1212and1214may be provided by the email client modules212. The button1216, when selected, allows a user to mark the intention object810as complete. In some embodiments, marking an intention object as complete causes the intention object to be removed from the intention object collection and may cause the execution of method600. The button1218, when selected, causes intention object810to be deleted and removed from the collection of intention objects.

FIG. 13is an interface diagram illustrating a detailed view of an example unscheduled intention object808, according to some embodiments. The detailed view of intention object808may include activity identifier1302, executable actions1304-1310, and buttons1312and1314. The activity identifier1302identifies the activity associated with intention object808.

Each of the executable actions1304-1310may allow a user to take one or more actions with respect to the intention object808regardless of whether the intention object resides in a calendar event, an email, or the intention object collection. For example, selection of the button for action1304may cause the client device of the user to open a browser application and direct the user to a website related to the activity identified by activity identifier1302. The button1306may allow a user to compose an email related to the activity identified by activity identifier1302. This email functionality may be provided by the email client module212or by a third party application124. Similarly, the button1308may allow a user to place a phone call related to the activity identified by activity identifier1302. The button1310may allow a user to schedule the activity on one or more calendars of the user provided by the calendar modules206.

Although the detailed view of intention object808is illustrated inFIG. 13to include only executable actions1304-1310, it should be appreciated that with other intention objects, and in other embodiments, one or more executable actions may be omitted and one or more additional executable actions may also be included.

FIG. 14is an interface diagram illustrating an example scheduling suggestion1400, according to some embodiments. As illustrated inFIG. 1400, the suggestion may be provided to the user as a push notification without the need for the task management application128to be executing on the client device. In other embodiments, the suggestion1400may be provided to the user upon opening an instance of the application128.

The suggestion1400may identify the pertinent activity and may provide additional information related to one or more attributes of the associated intention object (e.g., intention object1110). In some embodiments, the suggestion1400may be provided to the user in accordance with the operations discussed in reference to method700. In other embodiments, the suggestion1400may be provided to the user in response to detecting an occurrence of a context event related to the contextual attributes of the intention object. For example, the user may be provided the suggestion1400in response to the user moving to a particular location as indicated by geolocation data provided by the client device of the user. In other embodiments, the suggestion1400may be provided to the user based on the user's browsing preferences.

As illustrated inFIG. 14, the suggestion1400provides the user with an ability to immediately undertake the activity with a single input gesture. In other embodiments, the suggestion1400may simply allow a user to schedule the activity on one or more calendars of the user.

Example Client Device

FIG. 15is a block diagram illustrating a client device106, such as a mobile device, according to an example embodiment. The client device106may include a processor1510. The processor1510may be any of a variety of different types of commercially available processors suitable for mobile devices (e.g., an XScale architecture microprocessor, a Microprocessor without Interlocked Pipeline Stages (MIPS) architecture processor, or another type of processor). A memory1520, such as a random access memory (RAM), a Flash memory, or other type of memory, is typically accessible to the processor1510. The memory1520may be adapted to store an operating system (OS)1530, as well as application programs1540, such as a mobile location enabled application that may provide location based services (e.g., physical location check-in) to a user. The processor1510may be coupled, either directly or via appropriate intermediary hardware, to a display1550and to one or more input/output (I/O) devices1560, such as a keypad, a touch panel sensor, a microphone, and the like. Similarly, in some embodiments, the processor1510may be coupled to a transceiver1570that interfaces with an antenna1590. The transceiver1570may be configured to both transmit and receive cellular network signals, wireless data signals, or other types of signals via the antenna1590, depending on the nature of the client device106. In this manner, the connection112with the network104(FIG. 1) may be established. Further, in some configurations, a GPS receiver1580may also make use of the antenna1590to receive GPS signals.

Modules, Components and Logic

Electronic Apparatus and System

Example Machine Architecture and Machine-Readable Medium

The example computer system1600includes a processor1602(e.g., a central processing unit (CPU), a graphics processing unit (GPU) or both), a main memory1604and a static memory1606, which communicate with each other via a bus1608. The computer system1600may further include a video display unit1610(e.g., a liquid crystal display (LCD) or a cathode ray tube (CRT)). The computer system1600also includes an alphanumeric input device1612(e.g., a keyboard), a UI cursor control device1614(e.g., a mouse), a disk drive unit1616, a signal generation device1618(e.g., a speaker), and a network interface device1620.

The disk drive unit1616includes a machine-readable medium1622on which is stored one or more sets of data structures and instructions1624(e.g., software) embodying or used by any one or more of the methodologies or functions described herein. The instructions1624may also reside, completely or at least partially, within the main memory1604, static memory1606, and/or within the processor1602during execution thereof by the computer system1600, with the main memory1604and the processor1602also constituting machine-readable media.

Transmission Medium

The instructions1624may further be transmitted or received over a communications network1626using a transmission medium. The instructions1624may be transmitted using the network interface device1620and any one of a number of well-known transfer protocols (e.g., HTTP). Examples of communication networks include a LAN, a WAN, the Internet, mobile telephone networks, POTS networks, and wireless data networks (e.g., WiFi and WiMax networks). The term “transmission medium” shall be taken to include any intangible medium that is capable of storing, encoding, or carrying instructions1624for execution by the machine, and includes digital or analog communications signals or other intangible media to facilitate communication of such software.

The Abstract of the Disclosure is provided to comply with 316 C.F.R. §1.162(b), requiring an abstract that will allow the reader to quickly ascertain the nature of the technical disclosure. It is submitted with the understanding that it will not be used to interpret or limit the scope or meaning of the claims. In addition, in the foregoing Detailed Description, it can be seen that various features are grouped together in a single embodiment for the purpose of streamlining the disclosure. This method of disclosure is not to be interpreted as reflecting an intention that the claimed embodiments require more features than are expressly recited in each claim. Rather, as the following claims reflect, inventive subject matter lies in less than all features of a single disclosed embodiment. Thus the following claims are hereby incorporated into the Detailed Description, with each claim standing on its own as a separate embodiment.