На самом деле, тз должно быть лаконичным и простым. Чтобы можно было легко понять назначение экранов/блоков/функций и их взаимосвязь. Этого достаточно, чтобы начать писать спеку.
Но саму спецификацию, где все экраны и бизнес-процессы декомпозированы до уровня классов/объектов, архитектуры бд, third-party решений и методов api, не напишет никто, кроме техлида или разработчика. А только это можно назвать хорошим ТЗ, которое взял и пилишь код.
Поэтому вопрос вряд ли имеет удовлетворяющий вас ответ.