diff --git a/src/gpio-presence/device_presence.cpp b/src/gpio-presence/device_presence.cpp
index 1402996..11a76a9 100644
--- a/src/gpio-presence/device_presence.cpp
+++ b/src/gpio-presence/device_presence.cpp
@@ -25,8 +25,10 @@
 DevicePresence::DevicePresence(
     sdbusplus::async::context& ctx, const std::vector<std::string>& gpioNames,
     const std::vector<uint64_t>& gpioValues, const std::string& deviceName,
-    const std::unordered_map<std::string, bool>& gpioState) :
-    deviceName(deviceName), gpioState(gpioState), ctx(ctx)
+    const std::unordered_map<std::string, bool>& gpioState,
+    const std::vector<std::string>& parentInvCompatible) :
+    deviceName(deviceName), gpioState(gpioState), ctx(ctx),
+    parentInventoryCompatible(parentInvCompatible)
 {
     for (size_t i = 0; i < gpioNames.size(); i++)
     {
@@ -92,8 +94,13 @@
         info("Detected {NAME} as present, adding dbus interface", "NAME",
              deviceName);
 
+        const std::string firstCompatible =
+            parentInventoryCompatible.empty() ? ""
+                                              : parentInventoryCompatible[0];
+
         detectedIface = std::make_unique<DevicePresenceInterface>(
-            ctx, objPath.str.c_str(), DevicePresenceProperties{deviceName});
+            ctx, objPath.str.c_str(),
+            DevicePresenceProperties{deviceName, firstCompatible});
 
         detectedIface->emit_added();
     }
diff --git a/src/gpio-presence/device_presence.hpp b/src/gpio-presence/device_presence.hpp
index cf1a283..b9f2ccd 100644
--- a/src/gpio-presence/device_presence.hpp
+++ b/src/gpio-presence/device_presence.hpp
@@ -30,7 +30,8 @@
                    const std::vector<std::string>& gpioNames,
                    const std::vector<uint64_t>& gpioValues,
                    const std::string& deviceName,
-                   const std::unordered_map<std::string, bool>& gpioState);
+                   const std::unordered_map<std::string, bool>& gpioState,
+                   const std::vector<std::string>& parentInvCompatible);
 
     auto updateGPIOPresence(const std::string& gpioLine) -> void;
 
@@ -53,6 +54,8 @@
 
     sdbusplus::async::context& ctx;
 
+    const std::vector<std::string> parentInventoryCompatible;
+
     auto updateDbusInterfaces() -> void;
 
     // property added when the hw is detected
diff --git a/src/gpio-presence/gpio_presence_manager.cpp b/src/gpio-presence/gpio_presence_manager.cpp
index a543f50..46bbca7 100644
--- a/src/gpio-presence/gpio_presence_manager.cpp
+++ b/src/gpio-presence/gpio_presence_manager.cpp
@@ -14,6 +14,7 @@
 #include <sdbusplus/message/native_types.hpp>
 #include <xyz/openbmc_project/Configuration/GPIODeviceDetect/client.hpp>
 #include <xyz/openbmc_project/Configuration/GPIODeviceDetect/common.hpp>
+#include <xyz/openbmc_project/Inventory/Decorator/Compatible/client.hpp>
 
 #include <memory>
 #include <ranges>
@@ -24,6 +25,7 @@
 
 namespace gpio_presence
 {
+const std::string entityManagerBusName = "xyz.openbmc_project.EntityManager";
 
 GPIOPresenceManager::GPIOPresenceManager(sdbusplus::async::context& ctx) :
     ctx(ctx), manager(ctx, "/"),
@@ -139,7 +141,7 @@
 {
     auto props = co_await sdbusplus::client::xyz::openbmc_project::
                      configuration::GPIODeviceDetect<>(ctx)
-                         .service("xyz.openbmc_project.EntityManager")
+                         .service(entityManagerBusName)
                          .path(obj.str)
                          .properties();
 
@@ -150,9 +152,11 @@
         co_return;
     }
 
+    const auto parentInvCompatible = co_await getParentInventoryCompatible(obj);
+
     auto devicePresence = std::make_unique<DevicePresence>(
         ctx, props.presence_pin_names, props.presence_pin_values, props.name,
-        gpioState);
+        gpioState, parentInvCompatible);
 
     if (devicePresence)
     {
@@ -160,6 +164,36 @@
     }
 }
 
+auto GPIOPresenceManager::getParentInventoryCompatible(
+    const sdbusplus::message::object_path& obj)
+    -> sdbusplus::async::task<std::vector<std::string>>
+{
+    const auto parentInvObjPath = obj.parent_path();
+
+    auto clientCompatible = sdbusplus::client::xyz::openbmc_project::inventory::
+                                decorator::Compatible<>(ctx)
+                                    .service(entityManagerBusName)
+                                    .path(parentInvObjPath.str);
+
+    try
+    {
+        auto parentCompatibleHardware = co_await clientCompatible.names();
+        lg2::debug(
+            "Found 'Compatible' decorator on parent inventory path of {PATH}",
+            "PATH", obj);
+        co_return parentCompatibleHardware;
+    }
+    catch (std::exception& e)
+    {
+        // pass, since it is an optional interface
+        lg2::debug("Did not find interface {INTF} on path {PATH}", "INTF",
+                   sdbusplus::common::xyz::openbmc_project::inventory::
+                       decorator::Compatible::interface,
+                   "PATH", parentInvObjPath);
+        co_return {};
+    }
+}
+
 auto GPIOPresenceManager::removeConfig(const std::string& objPath) -> void
 {
     if (!presenceMap.contains(objPath))
diff --git a/src/gpio-presence/gpio_presence_manager.hpp b/src/gpio-presence/gpio_presence_manager.hpp
index d490fe3..bbf9f9e 100644
--- a/src/gpio-presence/gpio_presence_manager.hpp
+++ b/src/gpio-presence/gpio_presence_manager.hpp
@@ -55,6 +55,12 @@
     auto addConfigFromDbusAsync(sdbusplus::message::object_path obj)
         -> sdbusplus::async::task<void>;
 
+    // fetch the parent inventory items 'Compatible' Decorator
+    // @param[in] obj object path of our configuration
+    auto getParentInventoryCompatible(
+        const sdbusplus::message::object_path& obj)
+        -> sdbusplus::async::task<std::vector<std::string>>;
+
     // delete our configuration for the object at 'objPath'
     // @param[in] objPath         path of the object we want to forget
     auto removeConfig(const std::string& objPath) -> void;
