Тоже в году попадается 1-2 таких заказчика, мой алгоритм работы следующий:
1. Никогда не соглашаться на дополнительные доработки если это не входит в ТЗ. Вот прям с самого первого списка правок от него, нужно разделить этот список на две части: реальные баги которые я исправляю бесплатно и новые доработки которые будут включены в следующий milestone.
2. Если клиент настаивает на вашей бесплатной работе, то один раз подробно с примерами обьяснить ему отличие багов от задач не включённых в ТЗ.
3. Если клиент продолжает канючить, просто копирую ему это же сообщение.
4. Если клиент совсем упёртый пишу ему, что буду отправлять жалобу в Upwork, так как он просит вас о бесплатной работе.
5.На всякие мольбы о том, что у него тугой бюджет и он его уже израсходовал, пишите что вы его понимайте и вам очень жаль, но вы не работаете бесплатно.
Однако это все очень хорошо работает, только если на первом этапе вы составили четкое ТЗ, если вы поленились работать над ТЗ и приняли какое-то общее описание от клиента, то дело конечно осложняется, главное нужно быть непреклонным и последовательным. А если вы сначала по доброте душевной что-то делаете бесплатно, потом ещё, а потом злитесь и игнорируете клиента, то это хуже всего.
В таком случае рекомендую набраться терпения, ещё раз подробно объяснить, что вы не работаете бесплатно, что такое баг, а что такое новые задачи. Прислать ему подробный список ваших завершенных доработок, где по пунктам будет расписано, что именно из этого был баг, а что было дополнительной работой (можно даже оценить их по стоимости) которую вы выполнили бесплатно. Если есть какие-то баги, то все-же исправить их, а все новые задачи можно оценить по двойному-тройному тарифу, сказать, что сейчас вы заняты другим проектом, возможно освободитесь через месяц. Если его все устраивает, пусть через месяц шлёт новый оффер, если нет, то на бирже есть много других фрилансеров.
И повторять это сообщение пока ему не надоест.