diff --git a/docs/tech/log-format.md b/docs/tech/log-format.md
index d8ead5429c485df76a410773d339c5f485e94f88..5016c67d3cf2f2f9a8d955575fd17c787db81737 100644
--- a/docs/tech/log-format.md
+++ b/docs/tech/log-format.md
@@ -64,6 +64,7 @@ All fields with the `timestamp` type are timestamps in `ISO 8601` format.
 ### exercise.jsonl
 
 Contains information about the exercise. The object has the following format:
+
 - **exercise_id**: _int_ - id of the exercise
 - **exercise_start**: _timestamp_ - time when the exercise was started
 - **finished**: _bool_ - flag that signifies that the exercise actually finished,
@@ -73,24 +74,27 @@ Contains information about the exercise. The object has the following format:
 ### teams.jsonl
 
 Contains information about all the exercise teams. Each object has the following format:
+
 - **team_id**: _int_ - id of the team
 - **name**: _string_ - name of the team
 - **role**: _string_ - role of the team, empty string if no role
 - **exercise_id**: _int_ - id of the exercise the team belongs to
 - **finish_time**: _timestamp_ - time when the team reached one of the _final_ milestones
 - **users**: _a list of user objects_ - a list of trainees assigned to this team
-  - **user_id**: _uuid_ - id of the user
-  - **username**: _optional string_ - username of the user, not present if the logs were anonymized
+    - **user_id**: _uuid_ - id of the user
+    - **username**: _optional string_ - username of the user, not present if the logs were anonymized
 
 ### instructors.jsonl
 
 Contains all instructors assigned to the exercise. Each object has the following format:
+
 - **user_id**: _uuid_ - id of the user
 - **username**: _optional string_ - username of the user, not present if the logs were anonymized
 
 ### exercise_injects.jsonl
 
 Contains all injects for this exercise. Each object has the following format:
+
 - **inject_id**: _int_ - id of the inject
 - **name**: _string_
 - **time**: _int_
@@ -98,11 +102,11 @@ Contains all injects for this exercise. Each object has the following format:
 - **organization**: _string_
 - **type**: _(`Info`, `Email`)_
 - **target**: _channel object_
-  - **channel_id**: _int_ - id of the channel
-  - **name**: _string_
-  - **display_name**: _string_
-  - **description**: _string_
-  - **type**: _(`Info`, `Email`)_
+    - **channel_id**: _int_ - id of the channel
+    - **name**: _string_
+    - **display_name**: _string_
+    - **description**: _string_
+    - **type**: _(`Info`, `Email`)_
 - **alternatives**: _list of alternative objects_
 
 #### _Info_ inject alternative
@@ -126,6 +130,7 @@ Contains all injects for this exercise. Each object has the following format:
 
 Contains all milestones for this exercise, which are referenced by milestones in each team.
 Each object has the following format:
+
 - **milestone_id**: _int_ - id of the milestone
 - **name**: _string_
 - **display_name**: _string_
@@ -139,6 +144,7 @@ Each object has the following format:
 
 Contains all tools for this exercise, which are referenced by action logs in each team.
 Each object has the following format:
+
 - **tool_id**: _int_ - id of the tool
 - **name**: _string_
 - **tooltip_description**: _string_
@@ -146,25 +152,26 @@ Each object has the following format:
 - **roles**: _string_
 - **requires_input**: _bool_
 - **responses**: _list of response objects_
-  - **param**: _string_
-  - **content**: _content_
-  - **control**: _control_
-  - **time**: _int_
-  - **regex**: _bool_
+    - **param**: _string_
+    - **content**: _content_
+    - **control**: _control_
+    - **time**: _int_
+    - **regex**: _bool_
 
 ### exercise_questionnaires.jsonl
 
 Contains all questionnaires for this exercise. Each object has the following format:
+
 - **questionnaire_id**: _int_ - id of the questionnaire
 - **title**: _string_
-- **content**: _content_ 
+- **content**: _content_
 - **time**: _int_
 - **control**: _control_
 - **questions**: _list of question objects_
-  - **question_id**: _int_ - id of the question
-  - **content**: _content_
-  - **type**: _(`Radio`, `Free-form`)_
-  - **details**: _additional details depending on the question type_
+    - **question_id**: _int_ - id of the question
+    - **content**: _content_
+    - **type**: _(`Radio`, `Free-form`)_
+    - **details**: _additional details depending on the question type_
 
 #### _Radio_ question details
 
@@ -179,36 +186,39 @@ Contains all questionnaires for this exercise. Each object has the following for
 ### exercise_learning_objectives.jsonl
 
 Contains all learning objectives for the exercise. Each object has the following format:
+
 - **objective_id**: _int_ - id of the learning objective
 - **name**: _string_
 - **description**: _string_
 - **tags**: _list of strings_
 - **activities**: _list of activity objects_
-  - **activity_id**: _int_ - id of the activity
-  - **name**: _string_
-  - **description**: _string_
-  - **tags**: _list of strings_
-  - **milestone_ids**: _list of int_
+    - **activity_id**: _int_ - id of the activity
+    - **name**: _string_
+    - **description**: _string_
+    - **tags**: _list of strings_
+    - **milestone_ids**: _list of int_
 
 ### email_participants.jsonl
 
 Contains all email participants for this exercise, which are referenced by email threads and emails
 in each team. Each object has the following format:
+
 - **participant_id**: _int_ - id of the email participant
 - **address**: _string_
 - **exercise_id**: _int_ - id of the exercise this participant belongs to
 - **team_id**: _optional int_ - team which this participant represents, null if it does not belong to any team
 - **definition_address**: _optional definition address object_ - email address from the definition
   which this participant represents, null if it belongs to a team, definition address format:
-  - **email_address_id**: _int_ - id of the definition address
-  - **address**: _string_
-  - **description**: _string_
-  - **team_visible**: _boolean_
-  - **control**: _control_
+    - **email_address_id**: _int_ - id of the definition address
+    - **address**: _string_
+    - **description**: _string_
+    - **team_visible**: _boolean_
+    - **control**: _control_
 
 ### file_infos.jsonl
 
 Contains all file infos for this exercise. Each object has the following format:
+
 - **file_id**: _uuid_ - id of the file, this is also the name of the file on the file system
 - **file_name**: _string_ - original name of the file
 
@@ -218,6 +228,7 @@ Contains all file infos for this exercise. Each object has the following format:
 ### inject_states.jsonl
 
 Contains all the inject states for the team. Each object has the following format:
+
 - **team_id**: _int_ - id of the team
 - **inject_id**: _int_ - id of the inject
 - **status**: _(`Unsent`, `Delayed`, `Sent`)_ - status of the inject
@@ -226,6 +237,7 @@ Contains all the inject states for the team. Each object has the following forma
 ### questionnaire_states.jsonl
 
 Contains all the questionnaire states for the team. Each object has the following format:
+
 - **questionnaire_id**: _int_ - id of the questionnaire
 - **team_id**: _int_ - id of the team
 - **status**: _(`Unsent`, `Sent`, `Answered`, `Reviewed`)_ - status of the questionnaire
@@ -234,41 +246,44 @@ Contains all the questionnaire states for the team. Each object has the followin
 - **timestamp_reviewed**: _optional timestamp_
 - **reviewed_by_id**: _optional uuid_ - id of the instructor that reviewed the questionnaire
 - **answers**: _list of answer objects_
-  - **question_id**: _int_ - id of the question
-  - **answer**: _string_ - submitted answer
-  - **is_correct**: _optional bool_ - if specified, flag that marks the answer as correct according to the definition
+    - **question_id**: _int_ - id of the question
+    - **answer**: _string_ - submitted answer
+    - **is_correct**: _optional bool_ - if specified, flag that marks the answer as correct according to the definition
 
 ### milestones.jsonl
 
 Contains all milestone states for the team. Each object has the following format:
+
 - **milestone_id**: _int_ - id of the milestone this state belongs to,
   the referenced milestone can be found in [exercise_milestones.jsonl](#exercisemilestonesjsonl)
 - **reached**: _bool_ - state of the milestone
 - **timestamp_reached**: _optional timestamp_ - time of the last state change for this milestone
 - **history**: _list of history objects_
-  - **reached**: _bool_ - state of the milestone at that point
-  - **timestamp_from**: _timestamp_ - timestamp of the state change
+    - **reached**: _bool_ - state of the milestone at that point
+    - **timestamp_from**: _timestamp_ - timestamp of the state change
 
 ### emails.jsonl
 
 Optional file, included only if the email feature is enabled. Contains all email threads and emails
 for the team. Each object has the following format:
+
 - **thread_id**: _int_ - id of the email thread
 - **subject**: _string_
 - **timestamp**: _timestamp_ - time when this email thread was created
 - **participants**: _list of ints_ - list of email participant ids that belong to the thread,
   the referenced participants can be found in [email_participants.jsonl](#emailparticipantsjsonl)
 - **emails**: _list of email object_ - list of emails sent to this thread, email object format:
-  - **email_id**: _int_ - id of the email
-  - **thread_id**: _int_ - id of the thread this email was sent to
-  - **sender_id**: _int_ - id of the email participant that sent the email
-  - **user_id**: _uuid_ - id of the user that sent the email
-  - **timestamp**: _timestamp_ - time when this email was sent
-  - **content**: _content_
+    - **email_id**: _int_ - id of the email
+    - **thread_id**: _int_ - id of the thread this email was sent to
+    - **sender_id**: _int_ - id of the email participant that sent the email
+    - **user_id**: _uuid_ - id of the user that sent the email
+    - **timestamp**: _timestamp_ - time when this email was sent
+    - **content**: _content_
 
 ### action_logs.jsonl
 
 Contains all the action logs for the team. Each object has the following format:
+
 - **action_log_id**: _int_ - id of the action log
 - **type**: _(`Inject`, `Custom Inject`, `Form`, `Tool`, `Email`)_ - type of the action log
 - **timestamp**: _timestamp_ - time when this action log was created