Index: petify-frontend/src/views/OwnerProfileView.vue
===================================================================
--- petify-frontend/src/views/OwnerProfileView.vue	(revision 92e7c7aeb21d4b882e2f8107b1676468ceb14aa7)
+++ petify-frontend/src/views/OwnerProfileView.vue	(revision f6ed6e478015d417b9610fe651dfccdc3e22dc89)
@@ -208,4 +208,23 @@
 
                   <div class="form-group">
+                    <label class="form-label" for="interactionType">How did you interact?</label>
+                    <select
+                      id="interactionType"
+                      v-model="newReview.interactionType"
+                      class="form-control"
+                      required
+                    >
+                      <option value="" disabled>Select an option</option>
+                      <option
+                        v-for="option in interactionTypeOptions"
+                        :key="option.value"
+                        :value="option.value"
+                      >
+                        {{ option.label }}
+                      </option>
+                    </select>
+                  </div>
+
+                  <div class="form-group">
                     <label class="form-label" for="comment">Comment</label>
                     <textarea
@@ -226,5 +245,5 @@
                       type="submit"
                       class="btn btn-primary"
-                      :disabled="isSubmittingReview || newReview.rating === 0"
+                      :disabled="isSubmittingReview || newReview.rating === 0 || !newReview.interactionType"
                     >
                       <span v-if="isSubmittingReview">Submitting...</span>
@@ -287,5 +306,10 @@
 import { useRoute, RouterLink } from 'vue-router'
 import { getUserProfile, getUserListings, getUserPets, loadUserVerificationStatus } from '../api/profile'
-import { createReview, getReviewsByOwner, deleteReview as deleteReviewAPI } from '../api/reviews'
+import {
+  createReview,
+  getReviewsByOwner,
+  deleteReview as deleteReviewAPI,
+  type UserReviewInteractionType,
+} from '../api/reviews'
 import { useAuthStore } from '../stores/auth'
 
@@ -305,7 +329,20 @@
 const isSubmittingReview = ref(false)
 const reviewError = ref<string | null>(null)
-const newReview = ref({
+const interactionTypeOptions: Array<{ value: UserReviewInteractionType; label: string }> = [
+  { value: 'EVENT', label: 'Met at an event' },
+  { value: 'PERSONAL_INTERACTION', label: 'Personal interaction' },
+  { value: 'ONLINE', label: 'Online interaction' },
+  { value: 'PHONE_CALL', label: 'Phone call' },
+  { value: 'OTHER', label: 'Other' },
+]
+
+const newReview = ref<{
+  rating: number
+  comment: string
+  interactionType: UserReviewInteractionType | ''
+}>({
   rating: 0,
   comment: '',
+  interactionType: '',
 })
 
@@ -445,4 +482,9 @@
   }
 
+  if (!newReview.value.interactionType) {
+    reviewError.value = 'Please choose how you interacted with this user'
+    return
+  }
+
   isSubmittingReview.value = true
   reviewError.value = null
@@ -453,5 +495,6 @@
       auth.user.userId,
       newReview.value.rating,
-      newReview.value.comment
+      newReview.value.comment,
+      newReview.value.interactionType
     )
 
@@ -459,4 +502,5 @@
     newReview.value.rating = 0
     newReview.value.comment = ''
+    newReview.value.interactionType = ''
     await loadReviews()
   } catch (err) {
