Embodiments generally relate to automated daily planning. More particularly, embodiments relate to creating and managing optimal day routes for users.
The day-to-day lives of individuals may include a variety of “intents”: places to be, tasks to complete, calls to make, meetings to attend, commutes and travel to conduct, workouts to complete, friends to meet, and so forth, wherein some intents may be considered “needs” and other intents may be considered “wants”. The intents may be stored and managed in many digital and non-digital sources, such as, for example, calendars, communications with others, task lists, e-mails, call logs, routine behaviors, and more.
The various advantages of the embodiments will become apparent to one skilled in the art by reading the following specification and appended claims, and by referencing the following drawings, in which:
The complexity of managing the day of an individual may involve a smart system that integrates intents in order to present the user with a clear picture of the upcoming day. This system may be constantly aware of the state of the user (e.g., the user's position/location, activity, actions, availability, and\or any other contextual information that can be inferred from various existing and not existing sensors and user data sources) in order to help the user navigate through the day. The system may also change the route of the day according to the user's actual actions and locations.
The system may apply the basic principles of navigation systems to the realm of personal assistants. A navigation system may know what the user intent is, and in a turn-by-turn fashion it may follow and guide the user through the optimal route that it generated, until the user reaches the destination. The system described herein may be regarded as a navigation system for the user's entire day: generating an optimal route for the user's day, and turn-by-turn navigating the user through it, until the user ends the day, happy, satisfied and enjoying a fulfilling sense of accomplishment.
This disclosure enables users to easily navigate through their daily intents. It provides the following solutions to humans:
The present system may provide a layer of understanding above the user's existing intent sources, such as: calendar, task list, e-mail, messaging applications, etc. The system may analyze these intents and create an optimal route for the user to easily achieve as many of them as possible. It does so using the following capabilities:
The present system may provide the following benefits:
(a) Presenting a sequence of locations planned to visit on that day;
(b) Calculating commute times between locations and a prospective view on when to leave each location to be on time at the next one;
(c) Linking intents to the correct semantic part of the day.
For example, if the user has an intent to call John when the user arrives at a particular hotel, the system links the intent to a meeting in the particular hotel later in the day. If the user has an intent to stop at the flower shop on the next drive, the intent will be linked to the user's drive home.
By that, the system described herein creates a useful combination of a to-do list and a calendar, combining both time based and context based “anchors”—and that is in itself aware of time, space and other constraints and considerations. This advantage is an added value that other existing solutions do not provide.
By deeply understanding each intent, the system optimizes the user's day and assists in fulfilling as many of the day's intents as possible. Existing solutions lack this deep understanding of what the intent actually means, and therefore provide only partial assistance regarding them. For example, existing solutions may usually treat call meetings in the same way they would treat other To-Do items, and would not suggest tailored assistance to this type of intent, such as allowing the user to attend the meeting during the drive (e.g., via hands-free communication).
Existing solutions lack this capability. Some solutions may trigger a “Time to leave” reminder, but will not move the meeting to a “late” state, providing tailored assistance for this state, which is different than the assistance given when the user is on time.
Prospective view: The ability to plan ahead may be integral to effective time management. Existing solutions such as calendar agendas may provide users with views of future meetings, events and tasks. When one turns to these existing solutions in order to plan ahead, however, the user does not receive a full, accurate picture of future intents and the effect they have on the user's planned day. For example, an individual might not appreciate that travel from one place to another may cause a conflict between meetings under conventional systems. The system described herein provides a full prospective view of a user's day, showing all of the day's intents and a future state at a given time. For example, when viewing a future day, the system might present the user with a full route of the day: planned drives between locations, when to leave each location to get to the next, intents linked along the day and possible conflicting meetings due to travels, locations and times. In addition, the system may present the user with the future state of the user at a given time, for example: “at 6 pm you will be on the way to yoga class”, “You will be at weekly status meeting at this time”, etc. These abilities enable further assistance in planning ahead, provide the user with a fuller picture of how a future day is planned to look and assists in preventing conflicts between intents.
State providers 12: location, activity (driving, walking, stationary), call state and destination predictor are in charge of monitoring and tracking changes in the user state (each one in the part of the state that it manages). Any other contextual state that can be inferred from existing or future sensors may be used as a state provider. Whenever relevant data is tracked it may be moved forward to a state manager 16.
State manager 16 collects the data provided by the state providers 12 and generates a “user state” entity out of them. The user state entity represents the user's current contextual state description that is later used by an intent manager 18. Whenever the state manager 16 recognizes a change in the user state entity, it may trigger an event of “user state changed”, which can later lead to re-calculation of the user's day.
Intent providers 14: calendar, routine, call log, text messages, e-mails, or any other providers that can infer intents from existing or future modules or sensors. These providers 14 are in charge of monitoring and tracking changes in the user's intents (each one in the intents that it manages). Whenever relevant data is tracked it is moved forward to the intent manager 18.
Intent manager 18 executes the following three phases, which will be elaborated on further:
Intent sequencer 20—receives intents from the various intent providers 14, orders them and identifies conflicts between them.
Active intents marker 22—receives the sequence of intents produced by the intent sequencer 20 and identifies whether an intent is currently active using the user state received from the state manager.
Status producer 24—receives the sequence of intents with the active intents marked by the active intents marker 22 and calculates the status of each intent with regard to the user state received by the state manager 16.
The output of the intent manager 18 is a SINC (State Intent Nerve Center) session object that is displayed to users in the UI (user interface) as a “timeline”, and is also used by additional components in the system. Whenever the intent manager 18 recognizes a change in the user intents, it triggers re-execution of the above three phases and re-calculation of the SINC Session object. Also, whenever the state manager 16 triggers a “user state changed” event, the intent manager 18 triggers re-execution of the above three phases and re-calculation of the SINC Session object. Also, the state manager 16 can mark timestamps in which re-calculation is due, according to its understanding of the day and not due to external triggers. For example: The intent manager 18 might set a re-calculation for the next ten minutes when it identifies that a meeting is about to end in ten minutes, which will cause a change in the entire day.
The illustrated intent sequencer 20 operates in the following way:
Grouping—At the first stage, the intent sequencer 20 divides the intents it received from the intent Providers 14 into three types of intents:
“time and location” intents
“time only” intents
“unanchored” intents
Sequencing—Then, the intent sequencer 20 may use the “time & location” intents to generate a directed weighted non-cyclic graph that includes the minimal collection of routes that cover the maximum number of intents. This may be done using a routing algorithm such as, for example, a “Minimum Paths, Maximum Intents” (MPMI) solution.
Anchoring—Then, the illustrated intent sequencer 20 takes the “unanchored” intents group and selects from them those intents that depend on moving between points, such as, but not limited to:
“Arrive to a location” intents
“Leave location” intents
“On the way to a location” intents
“On the next drive” intents
“On the next walk” intents
The intent sequencer 20 then attempts to anchor the selected intents onto vertices or edges on the graph that was generated in the sequencing phase.
Conflicts identification—The intent sequencer 20 iterates on the graph and identifies conflicts. A conflict is a case in which there are two intents that do not have any route between them. These conflicts may be marked on the graph.
Projection—In order to create a timeline, each intent in the graph is paired with a physical time, so that the intents on the graph may be ordered according to their timing.
Completion—On the resulting graph, the group of “time only” intents are added to the graph according to their timing, so that a full timeline with all intents that can be anchored in it is generated.
The active intents marker 22 receives the output graph from the intent sequencer, may operate in the following way:
Based on the intents graph and data from the state manager 16, the active intents marker 22 applies a set of predefined rules on each intent in order to determine whether the user is engaged in this intent at the moment. These rules are specific for each intent type on the graph. For example: For a meeting intent in the graph, the active intents marker 22 determines whether the current time is the time of the meeting, and if the current user location is the location of the meeting. If both parameters are positive, the meeting intent is marked as active.
The illustrated status producer 24 receives the intents graph with the active intents marked on it and creates a status line for each of these intents. The status line is generated based on the user state information, crossed with the information about the intent. For example:
For a meeting intent, when the user is in the meeting location but the meeting has not started yet according to its time, the status producer 24 will produce the following status: “In meeting location, waiting for the meeting to start”.
For a meeting intent, when the user is driving and it is detected that the user is on the way for the meeting location but the distance in ETA (estimated time of arrival) will make the user late for the meeting: “On the way to <meeting location>, will be there <x> minutes late”.
The output result may be an object called: SINC Session, described in
A sorted list of intents 26: This list 26 is sorted according to each intent's time interval. Each intent in this list is composed of the following intents properties:
Time interval—The time span in which the intent will be active. According to this property the intents in the list 26 are sorted.
Intent type—Meeting intent, call intent, task intent, travel intent, etc.
In conflict with intents—ID's (identifiers) of other intents in the list 26, which are in time and location conflict with this intent.
Related to intents—ID's of other intents in the list 26, on which the intent depends, for example: Call intent that will be executed on the next travel is dependent on the next travel intent.
Is active—Determination if the intent is active in the current user state, as determined by the active intents marker 22 (
Is done—Determination if the intent is completed according to the current user state, as determined by the intent manager 18 (
Information related to the intent type—All other enriching information that is related to the intent and is constructed according to the intent type. For example, for a call intent: which number the user should call when fulfilling this intent. Or for example: For a travel intent, which means of transport the user will use when fulfilling this task.
An unsorted list of intent candidates 28: This list includes all the intents that the intent manager could not anchor into the sorted intents list 26. Therefore, they are not enriched with the data on the time interval, since the intent manager 18 (
Illustrated processing block 32 provides for identifying a plurality of user intents, wherein user state data may be identified at block 34. Block 36 may generate a time sorted list of intents based on the plurality of user intents and the user state data, wherein the time sorted list of intents defines a user route with respect to a particular day. The time sorted list of intents may be ordered according to one or more semantic times associated with the plurality of user intents. In one example, block 36 includes documenting (e.g., marking) a relationship between two or more of the plurality of user intents. As already noted, the relationship may provide a hierarchical linkage between two or more of the plurality of user intents. Block 36 may also provide for outputting the time sorted list as a session object (e.g., SINC session). Additionally, illustrated block 38 generates an unsorted list of candidate intents based on the plurality of user intents and the user state data, wherein the unsorted list of candidate intents includes one or more of the plurality of user intents that are not anchored to a timeline associated with the user route.
A determination may be made at block 40 as to whether a change in the user state data, a change in the plurality of user intents, a conflict between two or more of the plurality of user intents, etc., has been detected. If so, illustrated block 42 dynamically updates the sorted list of intents and/or the unsorted list of candidate intents in response to the change/conflict. Otherwise, the method 30 may bypass block 42 and terminate.
The logic may be implemented in instructions, configurable logic, fixed-functionality logic hardware, etc., or any combination thereof. Logic instructions might include assembler instructions, instruction set architecture (ISA) instructions, machine instructions, machine dependent instructions, microcode, state-setting data, configuration data for integrated circuitry, state information that personalizes electronic circuitry and/or other structural components that are native to hardware (e.g., host processor, central processing unit/CPU, microcontroller, etc.). Accordingly, the generation of time sorted lists of intent as described herein may improve computer functionality to the extent that the computing system 44 operates more efficiently and provides an enhanced user experience.
Example 1 may include a user-based system comprising a battery port to provide power to the system, logic, implemented at least partly in one or more of configurable logic or fixed-functionality logic hardware, to identify a plurality of user intents, identify user state data, and generate a time sorted list of intents based on the plurality of user intents and the user state data, wherein the time sorted list of intents is to define a user route with respect to a particular day an embedded display to visually present the time sorted list of intents.
Example 2 may include the system of Example 1, wherein the logic is to dynamically update the sorted list of intents in response to one or more of a change in the user state data, a change in the plurality of user intents or a conflict between two or more of the plurality of user intents.
Example 3 may include the system of Example 1, wherein the logic is to generate an unsorted list of candidate intents based on the plurality of user intents and the user state data, wherein the unsorted list of candidate intents is to include one or more of the plurality of user intents that are not anchored to a timeline associated with the user route.
Example 4 may include the system of any one of Examples 1 to 3, wherein the logic is to document a relationship between two or more of the plurality of user intents, and wherein the time sorted list of intents is to be generated based on the relationship.
Example 5 may include the system of Example 4, wherein the relationship is to provide a hierarchical linkage between the two or more of the plurality of user intents.
Example 6 may include a day management apparatus comprising logic, implemented at least partly in one or more of configurable logic or fixed-functionality logic hardware, to identify a plurality of user intents, identify user state data, and generate a time sorted list of intents based on the plurality of user intents and the user state data, wherein the time sorted list of intents is to define a user route with respect to a particular day.
Example 7 may include the apparatus of Example 6, wherein the logic is to dynamically update the sorted list of intents in response to one or more of a change in the user state data, a change in the plurality of user intents or a conflict between two or more of the plurality of user intents.
Example 8 may include the apparatus of Example 6, wherein the logic is to generate an unsorted list of candidate intents based on the plurality of user intents and the user state data, wherein the unsorted list of candidate intents is to include one or more of the plurality of user intents that are not anchored to a timeline associated with the user route.
Example 9 may include the apparatus of any one of Examples 6 to 8, wherein the logic is to document a relationship between two or more of the plurality of user intents, and wherein the time sorted list of intents is to be generated based on the relationship.
Example 10 may include the apparatus of Example 9, wherein the relationship is to provide a hierarchical linkage between the two or more of the plurality of user intents.
Example 11 may include the apparatus of any one of Examples 6 to 8, wherein the time sorted list is ordered according to one or more semantic times associated with the plurality of user intents.
Example 12 may include the apparatus of any one of Examples 6 to 8, wherein the logic is to output the time sorted list as a session object.
Example 13 may include a method of operating a day management apparatus, comprising identifying a plurality of user intents, identifying user state data, and generating a time sorted list of intents based on the plurality of user intents and the user state data, wherein the time sorted list of intents defines a user route with respect to a particular day.
Example 14 may include the method of Example 13, further including dynamically updating the sorted list of intents in response to one or more of a change in the user state data, a change in the plurality of user intents or a conflict between two or more of the plurality of user intents.
Example 15 may include the method of Example 13, further including generating an unsorted list of candidate intents based on the plurality of user intents and the user state data, wherein the unsorted list of candidate intents includes one or more of the plurality of user intents that are not anchored to a timeline associated with the user route.
Example 16 may include the method of any one of Examples 13 to 15, further including documenting a relationship between two or more of the plurality of user intents, wherein the time sorted list of intents is generated based on the relationship.
Example 17 may include the method of Example 16, wherein the relationship provides a hierarchical linkage between two or more of the plurality of user intents.
Example 18 may include at least one computer readable storage medium comprising a set of instructions which, when executed by a computing device, cause the computing device to identify a plurality of user intents, identify user state data, and generate a time sorted list of intents based on the plurality of user intents and the user state data, wherein the time sorted list of intents is to define a user route with respect to a particular day.
Example 19 may include the at least one computer readable storage medium of Example 18, wherein the instructions, when executed, cause the computing device to dynamically update the sorted list of intents in response to one or more of a change in the user state data, a change in the plurality of user intents or a conflict between two or more of the plurality of user intents.
Example 20 may include the at least one computer readable storage medium of Example 18, wherein the instructions, when executed, cause the computing device to generate an unsorted list of candidate intents based on the plurality of user intents and the user state data, wherein the unsorted list of candidate intents is to include one or more of the plurality of user intents that are not anchored to a timeline associated with the user route.
Example 21 may include the at least one computer readable storage medium of any one of Examples 18 to 20, wherein the instructions, wherein the instructions, when executed, cause the computing device to document a relationship between two or more of the plurality of user intents, and wherein the time sorted list of intents is to be generated based on the relationship.
Example 22 may include the at least one computer readable storage medium of Example 21, wherein the relationship is to provide a hierarchical linkage between the two or more of the plurality of user intents.
Example 23 may include the at least one computer readable storage medium of any one of Examples 18 to 20, wherein the time sorted list is to be ordered according to one or more semantic times associated with the plurality of user intents.
Example 24 may include the at least one computer readable storage medium of any one of Examples 18 to 20, wherein the instructions, when executed, cause the computing device to output the time sorted list as a session object.
Example 25 may include a day management apparatus comprising means for identifying a plurality of user intents, means for identifying user state data, and means for generating a time sorted list of intents based on the plurality of user intents and the user state data, wherein the time sorted list of intents defines a user route with respect to a particular day.
Example 26 may include the apparatus of Example 25, further including means for dynamically updating the sorted list of intents in response to one or more of a change in the user state data, a change in the plurality of user intents or a conflict between two or more of the plurality of user intents.
Example 27 may include the apparatus of Example 25, further including means for generating an unsorted list of candidate intents based on the plurality of user intents and the user state data, wherein the unsorted list of candidate intents includes one or more of the plurality of user intents that are not anchored to a timeline associated with the user route.
Example 28 may include the apparatus of any one of Examples 25 to 27, further including means for documenting a relationship between two or more of the plurality of user intents, wherein the time sorted list of intents is generated based on the relationship.
Example 29 may include the apparatus of Example 28, wherein the relationship is to provide a hierarchical linkage between two or more of the plurality of user intents.
The term “coupled” may be used herein to refer to any type of relationship, direct or indirect, between the components in question, and may apply to electrical, mechanical, fluid, optical, electromagnetic, electromechanical or other connections. In addition, the terms “first”, “second”, etc. may be used herein only to facilitate discussion, and carry no particular temporal or chronological significance unless otherwise indicated.
As used in this application and in the claims, a list of items joined by the term “one or more of” may mean any combination of the listed terms. For example, the phrases “one or more of A, B or C” may mean A; B; C; A and B; A and C; B and C; or A, B and C.
Those skilled in the art will appreciate from the foregoing description that the broad techniques of the embodiments can be implemented in a variety of forms. Therefore, while the embodiments have been described in connection with particular examples thereof, the true scope of the embodiments should not be so limited since other modifications will become apparent to the skilled practitioner upon a study of the drawings, specification, and following claims.
The present application claims the benefit of priority to U.S. Provisional Patent Application No. 62/291,978 filed on Feb. 5, 2016.
Number | Date | Country | |
---|---|---|---|
62291978 | Feb 2016 | US |