Ну во-первых сама по себе оригинальная идея будущей разработки стоит как правило дороже самой этой разработки. Я имею в виду коммерческое программирование, оборонку и всякие прочие АСУ и математические расчеты оставим в покое. Поэтому задачи на биржах и прочих открытых источниках сформулированы так чтобы никто не смог украсть никаких ценных идей. Соответственно когда вы начнете работать над проектом адекватный клиент расскажет более подробно что он хочет получить.
Требования клиента в проекте первоначально формулируются в виде согласованного и подписанного сторонами ТЗ. А по мере жизни проекта - в виде задач на какие-либо изменения. Есть специальный софт - менеджеры проектов, которые позволяют управлять задачами при групповой разработке. Например у нас в компании используется Open Project. Если вы единственный разработчик в проекте и вы работаете напрямую с заказчиком без менеджмента можно просто вести список в текстовом виде. Где кроме описания самой задачи указывать приоритет (в реальном живом проекте очень вряд ли что задача будет одна). И ее характер - баг, обращение в техподдержку вашу или клиента, идея по дополнительному функционалу ваша или клиента… Анализ, т.е. код пока не пишем, прикидываем выполнимость задачи, нужно ли это кому-то и трудоемкость, потом обсуждаем с клиентом и возможно третьими компаниями если используется какой-нибудь внешний API или сервис - это тоже задача. Которая попадает в список, имеет приоритет, а возможно по договоренности и оплачивается.