1. A method comprising: by one or more server computing devices, collecting first data associated with an activity recently performed or currently being performed by a user of one or more client computing devices; by one or more server computing devices, inferring a current state of the user at least in part by analyzing at least the first data; by one or more server computing devices, accessing second data associated with one or more historical durations associated with the inferred current state; and by one or more server computing devices, estimating an end time associated with the inferred current state based at least in part on the second data.