diff --git a/aleksis/apps/alsijil/frontend/components/coursebook/statistics/StatisticsForPersonPage.vue b/aleksis/apps/alsijil/frontend/components/coursebook/statistics/StatisticsForPersonPage.vue
index a1b0affcc75bf5feb179700c894439377b5d6f12..e1e8177551ae4fc53c2eb8f69c49e8817ba0aff8 100644
--- a/aleksis/apps/alsijil/frontend/components/coursebook/statistics/StatisticsForPersonPage.vue
+++ b/aleksis/apps/alsijil/frontend/components/coursebook/statistics/StatisticsForPersonPage.vue
@@ -1,13 +1,67 @@
 <template>
   <div class="d-flex" style="gap: 4em">
-    <!-- header (close, title, print) -->
+    <!-- TODO: header (close, title, print) -->
     <!-- TODO: flex-grow-1 does a little & flex-shrink-1 does nothing -->
     <div class="flex-grow-1">
       <!-- school-term-select -->
       <school-term-field v-model="schoolTerm" :enable-create="false" />
-      <!-- documentations statistics list -->
+      <!-- documentations for person list -->
       <c-r-u-d-iterator
+        i18n-key="TODO"
+        :gql-query="gqlQuery"
+        :gql-additional-query-args="gqlQueryArgs"
+        :enable-create="false"
+        :enable-edit="false"
+        :elevated="false"
         >
+        <template #item="{ item }">
+          <v-list-item :key="item.id">
+            <v-list-item-content>
+              <v-list-item-title class="d-flex">
+                <!-- date & timeslot -->
+                <time :datetime="item.datetimeStart" class="text-no-wrap">
+                  {{ $d(DateTime.fromISO(item.datetimeStart), "shortDate") }}
+                </time>
+                <time :datetime="item.datetimeStart" class="text-no-wrap">
+                  {{ $d(DateTime.fromISO(item.datetimeStart), "shortTime") }}
+                </time>
+                <span>-</span>
+                <time :datetime="item.datetimeEnd" class="text-no-wrap">
+                  {{ $d(DateTime.fromISO(item.datetimeEnd), "shortTime") }}
+                </time>
+                <!-- teacher -->
+                <person-chip
+                  :person="item.teacher"
+                  no-link
+                />
+                <!-- group -->
+                <div>
+                  {{ item.groupShortName }}
+                </div>
+                <!-- subject -->
+                <subject-chip :subject="item.subject" />
+                <v-spacer />
+                <!-- chips: absences & extraMarks -->
+                <absence-reason-chip
+                  v-for="absence in items.absences"
+                  :absenceReason="absence"
+                />
+                <v-chip
+                  v-for="extraMark in item.extraMarks"
+                  :value="extraMark.id"
+                  :color="extraMark.colourBg"
+                  :text-color="extraMark.colourFg"
+                >
+                  {{ extraMark.name }}
+                </v-chip>
+            </v-list-item-title>
+            <v-list-item-subtitle>
+              item.personalNote
+            </v-list-item-subtitle>
+          </v-list-item-content>
+        </v-list-item>
+        <v-divider></v-divider>
+        </template>
       </c-r-u-d-iterator>
     </div>
     <statistics-for-person-card
@@ -22,13 +76,20 @@
 <script>
 import SchoolTermField from "aleksis.core/components/school_term/SchoolTermField.vue";
 import CRUDIterator from "aleksis.core/components/generic/CRUDIterator.vue";
+import PersonChip from "aleksis.core/components/person/PersonChip.vue";
+import SubjectChip from "aleksis.apps.cursus/components/SubjectChip.vue";
 import StatisticsForPersonCard from "./StatisticsForPersonCard.vue";
 
+import { documentationsByPerson } from "./statistics.graphql";
+import { DateTime } from "luxon";
+
 export default {
   name: "StatisticsForPersonPage",
   components: {
     SchoolTermField,
     CRUDIterator,
+    PersonChip,
+    SubjectChip,
     StatisticsForPersonCard,
   },
   props: {
@@ -45,7 +106,16 @@ export default {
   data() {
     return {
       schoolTerm: this.schoolTermId,
+      gqlQuery: documentationsByPerson,
     };
   },
+  computed: {
+    gqlQueryArgs() {
+      return {
+        person: this.personId,
+        term: this.schoolTermId,
+      };
+    },
+  },
 };
 </script>
diff --git a/aleksis/apps/alsijil/frontend/components/coursebook/statistics/statistics.graphql b/aleksis/apps/alsijil/frontend/components/coursebook/statistics/statistics.graphql
index 09f07ba475b32e826f9cae8431d778cbdc915db4..85df65a95f5aa38414a57ea6fe988305efdeccfc 100644
--- a/aleksis/apps/alsijil/frontend/components/coursebook/statistics/statistics.graphql
+++ b/aleksis/apps/alsijil/frontend/components/coursebook/statistics/statistics.graphql
@@ -39,6 +39,50 @@ query statisticsByPerson (
   }
 }
 
+query documentationsByPerson (
+  $person: ID!
+  $term: ID
+) {
+  documentations: documentationsByPerson(
+    person: $person
+    term: $term
+  ) {
+    id
+    datetimeStart
+    datetimeEnd
+    groupShortName
+    teacher {
+      id
+      shortName
+      fullName
+      avatarContentUrl
+    }
+    subject {
+      id
+      name
+      shortName
+      colourFg
+      colourBg
+    }
+    absences {
+      id
+      shortName
+      name
+      colour
+      default
+    }
+    extraMarks {
+      id
+      shortName
+      name
+      colourFg
+      colourBg
+      showInCoursebook
+    }
+    personalNote
+  }
+}
+
 query statisticsByGroup (
   $group: ID!
   $term: ID