Smart contracts for Ethereum seem to be addressing something like this. In order to have a smart contract based on some external condition you need a reliable way to learn about that external condition. This is not trivial, especially since the conditions can be anything that happens in the world. Some of the kinds of data you'd like to have access to may not be published anywhere by anyone (e.g., a school may only announce closures on public radio). If the Internet of Things ever really becomes standardized and takes off it could be a source for some of this kind of information (assuming the privacy and security problems are solved, which currently does not look likely). You could instrument your own home to get some data (local weather, keep track of who is at home). Finding an easy way to write parsers that pull data from web sites could be another source of data. I suspect there are several tools for doing that, although it relies on the web site never changing its format (at all, one space added could potentially throw the parser off). Parsing web sites to get data is not very difficult, I've often seen it done to get fitness tracker data from services that don't have an API. Building parsers for _everything_ anyone might want to use as input to an algorithm would be a lot of work though, which is probably why it doesn't exist. Some things like this must exist for Ethereum smart contracts though, so that might be a good place to start looking. Once you have the data, the rest is pretty simple and could be done with a scripting language on a Raspberry Pi. Note that this opens some security risks (anyone who can manipulate the external data can alter your alarm clock. Your alarm clock may also become a target since it aggregates data of interest to you.) People would want barriers around their data (so you probably can't have your alarm clock wake you when your boss wakes up). Given that a lot of the data you want to use seems to be local, the incentive is low for someone to build you your conditional alarm clock since it could only be sold in the local area. Voice assistants can handle somewhat vague questions and return an answer, but I'm not sure you could rely on the answer being what you expect (e.g., is that closure for Rockville High School in Montana or Rockville High School in Arizona?) This is really one of the main problems that makes computers frustrating to use, data has to be precisely specified and computers/algorithms don't really understand human context. It's not an impossible problem, especially if you are creating an app for your local area for only you to use, but solving it for everyone starts getting close to requiring a general purpose artificial intelligence along with instrumenting the entire world to supply data in a standardized format. Even a simple question like "is it raining" is not so simple. Is it raining at your house? Is it raining along the path you want to run on? Is it going to rain by the time you get outside? Is the weather service that accurate? Is a light mist ok? Is a wet fog ok? Is snow the equivalent of rain? Is it only going to rain for 3 minutes out of the hour you'll be outside and is that ok? The world is messy and imprecise and computers/algorithms are brittle and fragile. A lot depends on how accurate you want it to be as well, is being woken too early 5 times a year ok? How about missing the start of a few meetings? The more accuracy you want the harder it will be to build. The rich hire servants to do this kind of thing for them. A further complication is that some things are just not entirely predictable so you are limited to only what you can measure reliably (and reliability is it's own set of problems).