diff --git a/semantic_router/index/base.py b/semantic_router/index/base.py
index 5e65894bffb5505b51d5ea59b4c030c986fcd53d..31ff24d8d6ef52ff10254c6109dd00d60f8c3da4 100644
--- a/semantic_router/index/base.py
+++ b/semantic_router/index/base.py
@@ -48,17 +48,7 @@ class BaseIndex(BaseModel):
         :rtype: List[Tuple]
         """
         _, metadata = self._get_all(include_metadata=True)
-        route_tuples: List[
-            Tuple[str, str, Optional[Dict[str, Any]], Dict[str, Any]]
-        ] = [
-            (
-                x["sr_route"],
-                x["sr_utterance"],
-                None if (fc := x.get("sr_function_schema", None)) == "null" else fc,
-                x.get("sr_metadata", {}),
-            )
-            for x in metadata
-        ]
+        route_tuples = parse_route_info(metadata=metadata)
         return route_tuples
 
     def get_routes(self) -> List[Route]:
@@ -264,7 +254,7 @@ def parse_route_info(metadata: List[Dict[str, Any]]) -> List[Tuple]:
         sr_route = record.get("sr_route", "")
         sr_utterance = record.get("sr_utterance", "")
         sr_function_schema = json.loads(record.get("sr_function_schema", "{}"))
-        if sr_function_schema == {}:
+        if sr_function_schema == {} or sr_function_schema == "null":
             sr_function_schema = None
 
         additional_metadata = {