diff --git a/res/values/strings.xml b/res/values/strings.xml
index 860b96e..daba0be 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -7891,6 +7891,12 @@
     <!-- Configure Notifications: setting summary [CHAR LIMIT=200] -->
     <string name="asst_capability_prioritizer_summary">Automatically set lower priority notifications to Gentle</string>
 
+    <!-- Configure Notifications: setting title [CHAR LIMIT=80 BACKUP_MESSAGE_ID=6691908606916292167] -->
+    <string name="asst_capability_ranking_title">Adaptive notification ranking</string>
+
+    <!-- Configure Notifications: setting summary [CHAR LIMIT=200] -->
+    <string name="asst_capability_ranking_summary">Automatically rank notifications by relevance</string>
+
     <!-- Configure Notifications: setting title [CHAR LIMIT=80] -->
     <string name="asst_capabilities_actions_replies_title">Suggested actions and replies</string>
 
diff --git a/res/xml/development_settings.xml b/res/xml/development_settings.xml
index 2607c09..3ddf1db 100644
--- a/res/xml/development_settings.xml
+++ b/res/xml/development_settings.xml
@@ -536,6 +536,11 @@
             android:title="@string/asst_capability_prioritizer_title"
             settings:controller="com.android.settings.notification.AssistantCapabilityPreferenceController" />
 
+        <SwitchPreference
+            android:key="asst_capability_ranking"
+            android:title="@string/asst_capability_ranking_title"
+            settings:controller="com.android.settings.notification.AssistantCapabilityPreferenceController" />
+
         <Preference
             android:key="inactive_apps"
             android:title="@string/inactive_apps_title"
diff --git a/src/com/android/settings/notification/AssistantCapabilityPreferenceController.java b/src/com/android/settings/notification/AssistantCapabilityPreferenceController.java
index 812bc65..3c6f17f 100644
--- a/src/com/android/settings/notification/AssistantCapabilityPreferenceController.java
+++ b/src/com/android/settings/notification/AssistantCapabilityPreferenceController.java
@@ -28,6 +28,7 @@
 public class AssistantCapabilityPreferenceController extends TogglePreferenceController {
 
     static final String PRIORITIZER_KEY = "asst_capability_prioritizer";
+    static final String RANKING_KEY = "asst_capability_ranking";
     static final String SMART_KEY = "asst_capabilities_actions_replies";
     private NotificationBackend mBackend;
 
@@ -45,7 +46,9 @@
     public boolean isChecked() {
         List<String> capabilities = mBackend.getAssistantAdjustments(mContext.getPackageName());
         if (PRIORITIZER_KEY.equals(getPreferenceKey())) {
-           return capabilities.contains(Adjustment.KEY_IMPORTANCE);
+            return capabilities.contains(Adjustment.KEY_IMPORTANCE);
+        } else if (RANKING_KEY.equals(getPreferenceKey())) {
+            return capabilities.contains(Adjustment.KEY_RANKING_SCORE);
         } else if (SMART_KEY.equals(getPreferenceKey())) {
             return capabilities.contains(Adjustment.KEY_CONTEXTUAL_ACTIONS)
                     && capabilities.contains(Adjustment.KEY_TEXT_REPLIES);
@@ -57,6 +60,8 @@
     public boolean setChecked(boolean isChecked) {
         if (PRIORITIZER_KEY.equals(getPreferenceKey())) {
             mBackend.allowAssistantAdjustment(Adjustment.KEY_IMPORTANCE, isChecked);
+        } else if (RANKING_KEY.equals(getPreferenceKey())) {
+            mBackend.allowAssistantAdjustment(Adjustment.KEY_RANKING_SCORE, isChecked);
         } else if (SMART_KEY.equals(getPreferenceKey())) {
             mBackend.allowAssistantAdjustment(Adjustment.KEY_CONTEXTUAL_ACTIONS, isChecked);
             mBackend.allowAssistantAdjustment(Adjustment.KEY_TEXT_REPLIES, isChecked);
diff --git a/tests/robotests/src/com/android/settings/notification/AssistantCapabilityPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/notification/AssistantCapabilityPreferenceControllerTest.java
index 397b72e..5244c7e 100644
--- a/tests/robotests/src/com/android/settings/notification/AssistantCapabilityPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/notification/AssistantCapabilityPreferenceControllerTest.java
@@ -19,6 +19,7 @@
 import static com.android.settings.core.BasePreferenceController.AVAILABLE;
 import static com.android.settings.core.BasePreferenceController.DISABLED_DEPENDENT_SETTING;
 import static com.android.settings.notification.AssistantCapabilityPreferenceController.PRIORITIZER_KEY;
+import static com.android.settings.notification.AssistantCapabilityPreferenceController.RANKING_KEY;
 import static com.android.settings.notification.AssistantCapabilityPreferenceController.SMART_KEY;
 
 import static com.google.common.truth.Truth.assertThat;
@@ -56,8 +57,10 @@
 
     private Context mContext;
     private AssistantCapabilityPreferenceController mPrioritizerController;
+    private AssistantCapabilityPreferenceController mRankingController;
     private AssistantCapabilityPreferenceController mChipController;
     private Preference mPrioritizerPreference;
+    private Preference mRankingPreference;
     private Preference mChipPreference;
 
     @Before
@@ -71,6 +74,13 @@
         mPrioritizerPreference.setKey(mPrioritizerController.getPreferenceKey());
         when(mScreen.findPreference(
                 mPrioritizerController.getPreferenceKey())).thenReturn(mPrioritizerPreference);
+        mRankingController = new AssistantCapabilityPreferenceController(
+                mContext, RANKING_KEY);
+        mRankingController.setBackend(mBackend);
+        mRankingPreference = new Preference(mContext);
+        mRankingPreference.setKey(mRankingController.getPreferenceKey());
+        when(mScreen.findPreference(
+                mRankingController.getPreferenceKey())).thenReturn(mRankingPreference);
         mChipController = new AssistantCapabilityPreferenceController(mContext, SMART_KEY);
         mChipController.setBackend(mBackend);
         mChipPreference = new Preference(mContext);
@@ -111,6 +121,27 @@
         capabilities.add(Adjustment.KEY_IMPORTANCE);
         when(mBackend.getAssistantAdjustments(anyString())).thenReturn(capabilities);
         assertThat(mPrioritizerController.isChecked()).isTrue();
+
+        capabilities = new ArrayList<>();
+        capabilities.add(Adjustment.KEY_RANKING_SCORE);
+        when(mBackend.getAssistantAdjustments(anyString())).thenReturn(capabilities);
+        assertThat(mPrioritizerController.isChecked()).isFalse();
+    }
+
+    @Test
+    public void isChecked_rankingSettingIsOff_false() {
+        List<String> capabilities = new ArrayList<>();
+        capabilities.add(Adjustment.KEY_IMPORTANCE);
+        when(mBackend.getAssistantAdjustments(anyString())).thenReturn(capabilities);
+        assertThat(mRankingController.isChecked()).isFalse();
+    }
+
+    @Test
+    public void isChecked_rankingSettingIsOn_true() {
+        List<String> capabilities = new ArrayList<>();
+        capabilities.add(Adjustment.KEY_RANKING_SCORE);
+        when(mBackend.getAssistantAdjustments(anyString())).thenReturn(capabilities);
+        assertThat(mRankingController.isChecked()).isTrue();
     }
 
     @Test
@@ -121,6 +152,11 @@
         assertThat(mChipController.isChecked()).isFalse();
 
         capabilities = new ArrayList<>();
+        capabilities.add(Adjustment.KEY_RANKING_SCORE);
+        when(mBackend.getAssistantAdjustments(anyString())).thenReturn(capabilities);
+        assertThat(mChipController.isChecked()).isFalse();
+
+        capabilities = new ArrayList<>();
         capabilities.add(Adjustment.KEY_CONTEXTUAL_ACTIONS);
         when(mBackend.getAssistantAdjustments(anyString())).thenReturn(capabilities);
         assertThat(mChipController.isChecked()).isFalse();
@@ -153,6 +189,18 @@
     }
 
     @Test
+    public void onPreferenceChange_rankingOn() {
+        mRankingController.onPreferenceChange(mRankingPreference, true);
+        verify(mBackend).allowAssistantAdjustment(Adjustment.KEY_RANKING_SCORE, true);
+    }
+
+    @Test
+    public void onPreferenceChange_rankingOff() {
+        mRankingController.onPreferenceChange(mRankingPreference, false);
+        verify(mBackend).allowAssistantAdjustment(Adjustment.KEY_RANKING_SCORE, false);
+    }
+
+    @Test
     public void onPreferenceChange_chipsOn() {
         mChipController.onPreferenceChange(mChipPreference, true);
         verify(mBackend).allowAssistantAdjustment(Adjustment.KEY_CONTEXTUAL_ACTIONS, true);
