A successful design accounts for the structure of the problem it is aimed at solving. When it is a human-directed design, this includes the expectations of its users. How do we arrive at such a design? One approach starts from first principles to evaluate the quality of proposed designs. Here, we introduce a form of human-in-the-loop computation that synthesizes a design conforming to its users’ expectations. The technique begins by constructing a transmission chain seeded with a random design. Each user in the chain is exposed to the design and then recreates it. Through this iterative process, the users’ perceptual, inductive, and reconstructive biases transform the initial design into one better matched to human cognition, being easier to learn and harder to forget. We evaluated the approach in three domains — stimulus–response mappings, vanity phone numbers, and typesetting — and show that it produces a good design in each.