Заказчик собирал сервис из кусков: свой прототип, наработки подрядчика, который бросил проект, база на облачном хостинге. Не понимал, что из этого живое и за что платить дальше.
Что сделал. Разобрал 7 261 строку кода и дамп базы на 538 МБ без развёртывания: парсер, бэкенд, фронт, техзадание. По каждому куску дал вердикт с адресом в коде: что чинить, что переписывать, что выбросить.
Главное правило работы: ни одного вывода на глаз. Под каждым числом команда, которой оно получено, спорные функции не оценивал, а запускал на реальных строках. Отдельным файлом отдал 19 команд проверки, чтобы заказчик получил те же цифры сам.
Что нашлось. Присланный парсер не мог работать ни дня: результат никуда не сохранялся, доступ к соцсети настроен на заглушки вместо ключей. Зато обнаружилась рабочая база с десятками тысяч собранных записей, о которой заказчик забыл, и собирался платить за сборку заново. Версия «сервис заблокировали» не подтвердилась: все задачи закончились в одну минуту и без ошибок, что указывает на остановленную среду.
На выходе отчёт на 7 страниц, файл с командами для самопроверки и смета по этапам с ценой за каждую работу. Принято с первого раза, без кругов правок.