diff --git a/nearby/service/java/com/android/server/nearby/fastpair/FastPairAdvHandler.java b/nearby/service/java/com/android/server/nearby/fastpair/FastPairAdvHandler.java
index 87045de..d3bc9e6 100644
--- a/nearby/service/java/com/android/server/nearby/fastpair/FastPairAdvHandler.java
+++ b/nearby/service/java/com/android/server/nearby/fastpair/FastPairAdvHandler.java
@@ -16,11 +16,13 @@
 
 package com.android.server.nearby.fastpair;
 
+import android.annotation.Nullable;
 import android.content.Context;
 import android.nearby.FastPairDevice;
 import android.nearby.NearbyDevice;
 import android.util.Log;
 
+import com.android.server.nearby.common.bloomfilter.BloomFilter;
 import com.android.server.nearby.common.locator.Locator;
 import com.android.server.nearby.fastpair.halfsheet.FastPairHalfSheetManager;
 import com.android.server.nearby.provider.FastPairDataProvider;
@@ -29,6 +31,8 @@
 
 import com.google.protobuf.ByteString;
 
+import java.util.List;
+
 import service.proto.Cache;
 import service.proto.Rpcs;
 
@@ -82,4 +86,21 @@
 
         }
     }
+
+    /**
+     * Checks the bloom filter to see if any of the devices are recognized and should have a
+     * notification displayed for them. A device is recognized if the account key + salt combination
+     * is inside the bloom filter.
+     */
+    @Nullable
+    static FastPairDevice findRecognizedDevice(
+            List<FastPairDevice> devices, BloomFilter bloomFilter, byte[] salt) {
+        for (FastPairDevice device : devices) {
+            // byte[] rotatedKey = concat(device.getAccountKey().toByteArray(), salt);
+//            if (bloomFilter.possiblyContains(rotatedKey)) {
+//                return device;
+//            }
+        }
+        return null;
+    }
 }
diff --git a/nearby/service/java/com/android/server/nearby/provider/FastPairDataProvider.java b/nearby/service/java/com/android/server/nearby/provider/FastPairDataProvider.java
index d59e696..34db620 100644
--- a/nearby/service/java/com/android/server/nearby/provider/FastPairDataProvider.java
+++ b/nearby/service/java/com/android/server/nearby/provider/FastPairDataProvider.java
@@ -20,7 +20,6 @@
 import android.annotation.Nullable;
 import android.content.Context;
 import android.nearby.FastPairDataProviderBase;
-import android.nearby.FastPairDevice;
 import android.nearby.aidl.FastPairAntispoofkeyDeviceMetadataRequestParcel;
 import android.nearby.aidl.FastPairEligibleAccountsRequestParcel;
 import android.nearby.aidl.FastPairManageAccountDeviceRequestParcel;
@@ -34,6 +33,7 @@
 
 import java.util.List;
 
+import service.proto.Data;
 import service.proto.Rpcs;
 
 /**
@@ -51,7 +51,6 @@
      * Initializes FastPairDataProvider singleton.
      */
     public static synchronized FastPairDataProvider init(Context context) {
-
         if (sInstance == null) {
             sInstance = new FastPairDataProvider(context);
         }
@@ -135,8 +134,9 @@
     /**
      * Get recognized device from bloom filter.
      */
-    public FastPairDevice getRecognizedDevice(BloomFilter bloomFilter, byte[] salt) {
-        return new FastPairDevice.Builder().build();
+    public Data.FastPairDeviceWithAccountKey getRecognizedDevice(BloomFilter bloomFilter,
+            byte[] salt) {
+        return Data.FastPairDeviceWithAccountKey.newBuilder().build();
     }
 
     /**
diff --git a/nearby/service/proto/src/fastpair/data.proto b/nearby/service/proto/src/fastpair/data.proto
new file mode 100644
index 0000000..37dfac2
--- /dev/null
+++ b/nearby/service/proto/src/fastpair/data.proto
@@ -0,0 +1,25 @@
+syntax = "proto3";
+
+package service.proto;
+
+// A device that has been Fast Paired with.
+message FastPairDeviceWithAccountKey {
+  // The account key which was written to the device after pairing completed.
+  bytes account_key = 1;
+
+  // The stored discovery item which represents the notification that should be
+  // associated with the device. Note, this is stored as a raw byte array
+  // instead of StoredDiscoveryItem because icing only supports proto lite and
+  // StoredDiscoveryItem is handed around as a nano proto in implementation,
+  // which are not compatible with each other.
+  bytes discovery_item_bytes = 3;
+
+  // SHA256 of "account key + headset's public address", this is used to
+  // identify the paired headset. Because of adding account key to generate the
+  // hash value, it makes the information anonymous, even for the same headset,
+  // different accounts have different values.
+  bytes sha256_account_key_public_address = 4;
+
+  // Deprecated fields.
+  reserved 2;
+}
