diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..e43b0f9
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+.DS_Store
diff --git a/case-study.md b/case-study.md
new file mode 100644
index 0000000..cadd3a7
--- /dev/null
+++ b/case-study.md
@@ -0,0 +1,123 @@
+# Оптимизация
+
+Будем оптимизировать `test-suite` своего проекта.
+
+В настоящий момент в `CI` есть две параллельных джобы:
+- в первой запускаются `spec/models/` & `spec/controllers`;
+- во второй все остальные спеки.
+
+Начнем с анализа текущей ситуации.
+
+```
+# Полный `suite` сейчас.
+
+Finished in 9 minutes 1 second (files took 14.98 seconds to load)
+
+[TEST PROF INFO] TagProf report for type
+
+ type time total %total %time avg
+
+ model 02:17.949 1159 30.55 26.51 00:00.119
+ controller 01:29.712 419 11.04 17.24 00:00.214
+ service 01:23.116 701 18.48 15.97 00:00.118
+ serializer 00:52.336 415 10.94 10.06 00:00.126
+ command 00:51.256 126 3.32 9.85 00:00.406
+ query 00:34.382 54 1.42 6.61 00:00.636
+ job 00:21.393 138 3.64 4.11 00:00.155
+ builder 00:11.293 79 2.08 2.17 00:00.142
+ request 00:10.441 76 2.00 2.01 00:00.137
+ decorator 00:09.839 87 2.29 1.89 00:00.113
+ lib 00:08.771 361 9.52 1.69 00:00.024
+ mailer 00:06.753 68 1.79 1.30 00:00.099
+ publishing 00:03.029 34 0.90 0.58 00:00.089
+ validator 00:00.015 8 0.21 0.00 00:00.001
+ concern 00:00.006 4 0.11 0.00 00:00.001
+ apivore 00:00.002 65 1.71 0.00 00:00.000
+```
+
+## Этап 1 (`parallel_tests`)
+
+Потратил много времени на попытки распараллелить тесты с помощью `parallel_tests`. Столкнулся с проблемами:
+
+### Ошибки
+
+Рандомно сыпятся ошибки. Кажется перечитал все `issues` в библиотеке по теме.
+
+1. Нашел проблему связанную с обращением к внешнему сервису при загрузке изображений и застабил в тестах.
+2. Осталась проблема с `requests`, с которой не помогает и `retry-spec` (вероятно, недостаток нужного конфига - где пока не знаю, либо не хватает какого-то сброса состояния перед повторной попыткой прогона теста, но вот какое именно - к сожалению, пока определить не удалось).
+
+В любом случае не стабильность джоб кажется существенным минусом сейчас. Надеюсь в будущем удастся это добороть. Пока решил отложить.
+
+### Долгий `setup` БД для параллельных процессов
+
+В перспективе хотелось бы найти простой способ осуществлять `setup` для первого процесса, а для остальных просто создавать по `template` - быстрого способа сделать этого в нашей конфигурации не нашел. До тех пор польза распараллеливания в нашей конфигурации в целом осталась для меня под вопросом.
+
+## Этап 2 (`test-prof`)
+
+Провел профилирование самых больших по времени блоков тестов.
+
+В рамках текущей задачи решил сконцентрироваться на устранении оверхедов при работи с фактори/БД.
+
+Главным инструментарием для оптимизации тестов стал гем `test-prof`:
+- устранил лишние операции с БД с помощью `let_it_be`/`befor_all`;
+- где применимо, заменил `.create` на `.build` в фактори.
+
+# Результаты
+
+Примечание. Бенчмарк по `suite` в целом (см. ниже) отличается от отдельных блоков - в лучшую сторону (вероятно, это связано с тем, что время выполнение в общем скопе занимает больше времени).
+
+### spec/services
+
+Удалось ускорить выполнение: на 10 сек. с 50 до 40 секунд (20%).
+
+
+
+### spec/serializers
+
+Удалось ускорить выполнение: на 10 сек. - с 42 до 32 секунд (23%).
+
+
+
+### spec/models
+
+Удалось ускорить выполнение: на 18 сек. - с 131 до 113 секунд (14%).
+
+
+
+### spec/queries
+
+Удалось ускорить выполнение: на 12 сек. - с 32 до 10 секунд (31%).
+
+
+
+### Итого по `suite`
+
+Удалось ускорить выполнение: на 1 мин. 32 сек. - с 549 до 457 сек (17%).
+
+С учетом распараллеливания, чистое расчетное время выигрыша (ускорение пайплайна) чуть меньше - 1 мин. 14 сек.
+
+```
+Finished in 7 minutes 46 seconds (files took 15.75 seconds to load)
+
+[TEST PROF INFO] TagProf report for type
+ type time total %total %time avg
+
+ model 01:57.424 1159 30.55 26.76 00:00.101
+ controller 01:31.925 419 11.04 20.95 00:00.219
+ service 01:00.054 701 18.48 13.69 00:00.085
+ command 00:56.223 126 3.32 12.81 00:00.446
+ serializer 00:28.690 415 10.94 6.54 00:00.069
+ job 00:23.340 138 3.64 5.32 00:00.169
+ builder 00:11.340 79 2.08 2.58 00:00.143
+ decorator 00:11.033 87 2.29 2.51 00:00.126
+ request 00:10.625 76 2.00 2.42 00:00.139
+ lib 00:08.514 361 9.52 1.94 00:00.023
+ query 00:07.473 54 1.42 1.70 00:00.138
+ mailer 00:07.130 68 1.79 1.63 00:00.104
+ publishing 00:04.939 34 0.90 1.13 00:00.145
+ validator 00:00.015 8 0.21 0.00 00:00.001
+ concern 00:00.005 4 0.11 0.00 00:00.001
+ apivore 00:00.001 65 1.71 0.00 00:00.000
+```
+
+
diff --git a/screenshots/models.png b/screenshots/models.png
new file mode 100644
index 0000000..7ab38ca
Binary files /dev/null and b/screenshots/models.png differ
diff --git a/screenshots/queries.png b/screenshots/queries.png
new file mode 100644
index 0000000..f96694d
Binary files /dev/null and b/screenshots/queries.png differ
diff --git a/screenshots/serializers.png b/screenshots/serializers.png
new file mode 100644
index 0000000..1108b97
Binary files /dev/null and b/screenshots/serializers.png differ
diff --git a/screenshots/services.png b/screenshots/services.png
new file mode 100644
index 0000000..262c003
Binary files /dev/null and b/screenshots/services.png differ
diff --git a/screenshots/suite.png b/screenshots/suite.png
new file mode 100644
index 0000000..e72ce83
Binary files /dev/null and b/screenshots/suite.png differ