diff --git a/inventory_provider/tasks/worker.py b/inventory_provider/tasks/worker.py
index dd1689d934ad5a39695e5ee5b509ff9716fab12a..b9e48a8c46a1975667d4321f4f0004005d64b352 100644
--- a/inventory_provider/tasks/worker.py
+++ b/inventory_provider/tasks/worker.py
@@ -1,3 +1,4 @@
+import enum
 import json
 import logging
 import os
@@ -654,15 +655,19 @@ def refresh_finalizer(self, pending_task_ids_json):
     self.log_info('latched current/next dbs')
 
 
+class PollerServiceCategory(str, enum.Enum):
+    MDVPN = 'mdvpn'
+    LHCONE = 'lhcone'
+
+
 @log_task_entry_and_exit
 def _build_service_category_interface_list(update_callback=lambda s: None):
 
     def _classify(ifc):
         if ifc['description'].startswith('SRV_MDVPN'):
-            return 'mdvpn'
+            yield PollerServiceCategory.MDVPN
         if 'LHCONE' in ifc['description']:
-            return 'lhcone'
-        return None
+            yield PollerServiceCategory.LHCONE
 
     update_callback('loading all known interfaces')
     interfaces = data.build_service_interface_user_list(InventoryTask.config)
@@ -674,13 +679,11 @@ def _build_service_category_interface_list(update_callback=lambda s: None):
     rp = r.pipeline()
 
     for ifc in interfaces:
-        service_type = _classify(ifc)
-        if not service_type:
-            continue
-        rp.set(
-            f'interface-services:{service_type}'
-            f':{ifc["router"]}:{ifc["interface"]}',
-            json.dumps(ifc))
+        for service_category in _classify(ifc):
+            rp.set(
+                f'interface-services:{service_category.value}'
+                f':{ifc["router"]}:{ifc["interface"]}',
+                json.dumps(ifc))
 
     rp.execute()