diff --git a/src/matrixbot.py b/src/matrixbot.py
index 417ec26..a2e98b4 100644
--- a/src/matrixbot.py
+++ b/src/matrixbot.py
@@ -41,6 +41,7 @@ class MatrixBot:
                     logger.debug(f"left room {room_id} since all other users left")
 
             logger.info("initial sync done, ready for work")
+            await self._send_greeting()
 
     async def _on_invite(self, room, event):
         logger.info(f"invited by {event.sender} to {room.room_id}")
@@ -93,6 +94,20 @@ class MatrixBot:
                 },
             )
 
+    async def _send_greeting(self):
+        """Send a greeting to make sure the bot is working."""
+        assert self.client
+
+        for room_id in self.client.rooms:
+            await self.client.room_send(
+                room_id=room_id,
+                message_type="m.room.message",
+                content={
+                    "msgtype": "m.text",
+                    "body": "Whaaaaaaa, good monning. I'll check slots for you.",
+                },
+            )
+
     async def run(self):
         """Start the bot."""
         logger.info(f"Connecting to {self.homeserver}")
diff --git a/src/tlsappointmentbot.py b/src/tlsappointmentbot.py
index a458ae5..7243618 100644
--- a/src/tlsappointmentbot.py
+++ b/src/tlsappointmentbot.py
@@ -37,6 +37,8 @@ class TLSAppointmentBot:
         while not self.matrix_bot.initial_sync_done:
             await asyncio.sleep(1)
 
+        tries = 0
+
         while True:
             try:
                 logger.info("checking for appointment slots")
@@ -57,10 +59,18 @@ class TLSAppointmentBot:
 
             except Exception:
                 logging.error(traceback.format_exc().strip())
-                await self.matrix_bot.send_warning()
+                if tries > 3:
+                    await self.matrix_bot.send_warning()
+                    break
 
+                tries += 1
+                continue
+
+            tries = 0
             await asyncio.sleep(2 * 60)
 
+        self.quit()
+
     def _is_logged_in(self) -> bool:
         self.driver.get(f"{self.config.tls_instance}/BJS/index.php")
         button = wait.WebDriverWait(self.driver, 10).until(
@@ -87,7 +97,7 @@ class TLSAppointmentBot:
 
         # Make sure we're on the page, and that we can see the
         # appointment table
-        wait.WebDriverWait(self.driver, 10).until(
+        wait.WebDriverWait(self.driver, 20).until(
             ec.visibility_of_element_located((By.XPATH, "//tr[@class='amend']"))
         )