The personal universal controller (PUC) is an approach for improving the
interfaces to complex appliances by introducing an intermediary graphical or
speech interface. A PUC engages in two-way communication with everyday
appliances, first downloading a specification of the appliance's functions, and
then automatically creating an interface for controlling that appliance. The
specification of each appliance includes a high-level description of every
function, a hierarchical grouping of those functions, and dependency
information, which relates the availability of each function to the appliance's
state. Dependency information makes it easier for designers to create
specifications and helps the automatic interface generators produce a higher
quality result. We describe the architecture that supports the PUC, and the
interface generators that use our specification language to build high-quality
graphical and speech interfaces.

Several industrial and academic research groups are working to simplify the control of appliances and services by creating a truly universal remote control. Unlike the preprogrammed remote controls available today, these new controllers download a specification from the appliance or service and use it to automatically generate a remote control interface. This promises to be a useful approach because the specification can be made detailed enough to generate both speech and graphical interfaces. Unfortunately, generating good user interfaces can be difficult. Based on user studies and prototype implementations, this paper presents a set of requirements that we have found are needed for automatic interface generation systems to create high-quality user interfaces.