1. A computer-implemented method comprising: generating, with one or more processors, a user profile for a user; receiving, with the one or more processors, a request to transmit media to a device; routing, with the one or more processors, the media to the device; logging a device usage entry that includes a unique identifier for the user, a unique identifier for the device and an action associated with the request; determining, with the one or more processors, one or more keywords relating to content in the media; generating an index that includes the one or more keywords; and updating, with the one or more processors, the user profile for the user based on the one or more keywords.