diff --git a/main.py b/main.py
index 6afa9b5a16380ea519ca85f8696e71a9828b0c0f..63a426165e9f04f4a70cb70ef5b9b1a74aabdfd5 100644
--- a/main.py
+++ b/main.py
@@ -67,29 +67,50 @@ def format_user(user):
 
 def format_location_days(location_days):
     days, location, update_datetime = location_days
-    header = f"<b>RU {location.name}</b>"
+    used_indicators = set()
+    strings = []
+    strings.append(f"<b>RU {location.name}</b>")
     if len(days):
-        body = "\n\n".join(
-            f"<b>{day.date_raw}</b>\n"
-            + "\n".join(
-                f"  <b>{menu.meal_name}</b>\n"
+        for day in days:
+            for menu in day.menus:
+                for item in menu.items:
+                    used_indicators |= item.indicators
+        strings.append(
+            "\n\n".join(
+                f"<b>{day.date_raw}</b>\n"
                 + "\n".join(
-                    f"    • {item.name} "
-                    + "".join(indicator.emoji for indicator in item.indicators)
-                    for item in menu.items
+                    f"  <b>{menu.meal_name}</b>\n"
+                    + "\n".join(
+                        f"    • {item.name} "
+                        + "".join(
+                            indicator.emoji
+                            for indicator in sorted(item.indicators)
+                        )
+                        for item in menu.items
+                    )
+                    for menu in day.menus
                 )
-                for menu in day.menus
+                for day in days
             )
-            for day in days
         )
     else:
-        body = "<i>Cardápio indisponível</i>"
-    updated_on = (
+        strings.append("<i>Cardápio indisponível</i>")
+
+    if len(used_indicators):
+        strings.append(
+            "<b>Legenda:</b>\n"
+            + "\n".join(
+                f"  • {indicator.emoji} · {indicator.description}"
+                for indicator in sorted(used_indicators)
+            )
+        )
+
+    strings.append(
         "<i>Atualizado às "
         + update_datetime.strftime("%H:%M:%S")
         + " de hoje</i>"
     )
-    return header + "\n\n" + body + "\n\n" + updated_on
+    return "\n\n".join(strings)
 
 
 @dataclass
diff --git a/model.py b/model.py
index d1d5746e3f593a39a104290a67609dc7e5988605..fe0219b58c4ad4a3bb48a84840fb2fce27a7131b 100644
--- a/model.py
+++ b/model.py
@@ -37,24 +37,31 @@ WorkingWeekDay = [
 
 
 class MenuItemIndicator(Enum):
-    VEGAN = ("🌱", "Indicado para veganos")
-    GLUTEN = ("🌾", "Não indicado para celíacos por conter glúten")
+    VEGAN = (1, "🌱", "Indicado para veganos")
+    GLUTEN = (2, "🌾", "Não indicado para celíacos por conter glúten")
     LACTOSE = (
+        3,
         "🥛",
         "Não indicado para intolerantes à lactose por conter lactose",
     )
-    ANIMAL = ("🥩", "Contém produtos de origem animal")
-    EGG = ("🥚", "Contém ovo")
-    HONEY = ("🍯", "Contém mel")
-    ALERGIC = ("⚠️", "Contém produto(s) alergênico(s)")
+    ANIMAL = (4, "🥩", "Contém produtos de origem animal")
+    EGG = (5, "🥚", "Contém ovo")
+    HONEY = (6, "🍯", "Contém mel")
+    ALERGIC = (7, "⚠️", "Contém produto(s) alergênico(s)")
 
-    def __new__(cls, emoji, description):
+    def __new__(cls, ordering, emoji, description):
         obj = object.__new__(cls)
         obj._value_ = (emoji, description)
+        obj.ordering = ordering
         obj.emoji = emoji
         obj.description = description
         return obj
 
+    def __lt__(self, other):
+        if self.__class__ is other.__class__:
+            return self.ordering < other.ordering
+        return NotImplemented
+
 
 @dataclass(frozen=True)
 class MenuItem: