I'm always curious how do people come up with these ideas. I assume that to be in a position to make something like this you need to have a very good understanding of the problem space.
As tech people i often feel that while we may have an advantage in being able to execute, finding a problem can be quite tricky if all you know is IT!