Странное задание. Кажется немного неправдоподобным.
Прежде чем городить в языках, попробуйте формазизовать саму вашу проблему.
# Контроль версий
Всеволод Владимиров обязательно обратил бы внимание на последнюю фразу "уходит уйма времени на его изучение, трудно понять, что изменилось, что добавили". С большой вероятностью, у вас проблемы с таск/баг трекером. Его нет. Как нет и системы хранения заданий и версионирования решений. Следовательно, вы не можете проследить историю изменений и основные конструкционные нагрузки на формальные структуры и применяемые алгоритмы. Из этого следует, что при описании никто особо не использует
# Структуры данных
Описав рабочие структуры, вы бы имели краткие и емкие определения, которые можно было бы использовать в задании. Например, списки, деревья, временные таблицы, выборки, статические выборки, стеки, ссылки. К структурам данных всегда можно применить
# Алгоритмы
Чего проще, указать на схеме "срез последних"? Никогда не было остатков на "конец периода"? Уникальные. Поиск дубликатов. Поиск первого вхождения. Сортировка.
# Классификация
Необходимо постоянно производить классификацию отчетов и их структуризацию с применением хотя бы базовых таксономических принципов. Структуры и иерархии позволяют быстро производить поиск подобных, что в общем может само по себе уже являться решением проблемы, т.к. заменить условие не тоже самое, что создать запрос к БД заново.
# Увеличения уровня абстракции
После каждого (или каждой группы) цикла разработки отчета было бы не плохо увеличивать (стараться это делать) уровень абстракции описания проблемы. Ведь в конечном счете ваша цель в автоматизации. А что может быть приятнее, чем точный ответ на запрос: "Выгрузи самых активных клиентов каждого первого квартала за 10 лет".
Получается, что лучший инструмент, опять карандаш.