Crowdsourcing is an emerging technology where innovation and production are sourced out to the public through an open call. At the center of crowdsourcing is a resource allocation problem: there is an abundance of workers but a scarcity of high skills, and an easy task assigned to a high-skill worker is a waste of resources. This problem is complicated by the fact that the exact difficulties of innovation tasks may not be known in advance, so tasks that require high-skill labor cannot be identified and allocated ahead of time. We show that the solution to this problem takes the form of a skill hierarchy, where tasks are first attempted by low-skill labor, and high skill workers only engage with a task if less skilled workers are unable to finish it. This hierarchy can be constructed and implemented in a decentralized manner even though neither the difficulties of the tasks nor the skills of the candidate workers are known. We provide a dynamic pricing mechanism that achieves this implementation by inducing workers to self-select into different layers. The mechanism is simple: each time a task is attempted and not finished, its price (reward upon completion) goes up.