diff --git a/res/drawable/new_badge_background.xml b/res/drawable/new_badge_background.xml
new file mode 100644
index 0000000..be18ade
--- /dev/null
+++ b/res/drawable/new_badge_background.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2016 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+    <solid android:color="@color/dialtacts_secondary_text_color"/>
+    <corners android:radius="@dimen/nav_new_badge_corners"/>
+</shape>
\ No newline at end of file
diff --git a/res/layout/assistant_new_badge.xml b/res/layout/assistant_new_badge.xml
new file mode 100644
index 0000000..6ca8cc5
--- /dev/null
+++ b/res/layout/assistant_new_badge.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2016 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<TextView xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/assistant_new_badge"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    android:layout_gravity="center_vertical"
+    android:paddingLeft="@dimen/nav_new_badge_horizontal_pad"
+    android:paddingTop="@dimen/nav_new_badge_vertical_pad"
+    android:paddingRight="@dimen/nav_new_badge_horizontal_pad"
+    android:paddingBottom="@dimen/nav_new_badge_vertical_pad"
+    android:background="@drawable/new_badge_background"
+    android:textSize="@dimen/nav_new_badge_font_size"
+    android:textAllCaps="true"
+    android:textColor="#FFFFFF"
+    android:text="@string/menu_assistant_new_badge"/>
\ No newline at end of file
diff --git a/res/menu/activity_main_drawer.xml b/res/menu/activity_main_drawer.xml
index 75deb8b..877c726 100644
--- a/res/menu/activity_main_drawer.xml
+++ b/res/menu/activity_main_drawer.xml
@@ -16,7 +16,8 @@
   limitations under the License.
   -->
 
-<menu xmlns:android="http://schemas.android.com/apk/res/android">
+<menu xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto">
 
     <group android:id="@+id/nav_utilities">
         <item
@@ -25,6 +26,7 @@
             android:title="@string/contactsList" />
         <item
             android:id="@+id/nav_assistant"
+            app:actionViewClass="android.widget.LinearLayout"
             android:icon="@drawable/ic_assistant"
             android:title="@string/menu_assistant"/>
         <item
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index 896d4e6..d3431fb 100644
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -248,6 +248,11 @@
     <dimen name="nav_activity_horizontal_margin">16dp</dimen>
     <dimen name="nav_activity_vertical_margin">16dp</dimen>
 
+    <dimen name="nav_new_badge_corners">3dp</dimen>
+    <dimen name="nav_new_badge_vertical_pad">2dp</dimen>
+    <dimen name="nav_new_badge_horizontal_pad">5dp</dimen>
+    <dimen name="nav_new_badge_font_size">11sp</dimen>
+
     <!-- Top padding for the image for empty group view -->
     <dimen name="empty_group_view_image_padding_top">8dp</dimen>
 
diff --git a/res/values/strings.xml b/res/values/strings.xml
index d8f3362..29c92c2 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -926,6 +926,9 @@
     <!-- The menu item to open the link/merge duplicates activity. [CHAR LIMIT=20]-->
     <string name="menu_duplicates">Duplicates</string>
 
+    <!-- Assistant 'NEW' badge text. Badge shown next to Assistant in left drawer menu when user has not visited it yet. [CHAR LIMIT=10] -->
+    <string name="menu_assistant_new_badge">New</string>
+
     <!-- Open drawer content descriptions [CHAR LIMIT=40] -->
     <string name="navigation_drawer_open">Open navigation drawer</string>
 
diff --git a/src/com/android/contacts/ContactsDrawerActivity.java b/src/com/android/contacts/ContactsDrawerActivity.java
index caaa326..29ac4f8 100644
--- a/src/com/android/contacts/ContactsDrawerActivity.java
+++ b/src/com/android/contacts/ContactsDrawerActivity.java
@@ -28,11 +28,13 @@
 import android.support.annotation.LayoutRes;
 import android.support.design.widget.NavigationView;
 import android.support.v4.view.GravityCompat;
+import android.support.v4.view.MenuItemCompat;
 import android.support.v4.widget.DrawerLayout;
 import android.support.v7.app.ActionBarDrawerToggle;
 import android.support.v7.app.AppCompatActivity;
 import android.support.v7.widget.Toolbar;
 import android.util.Log;
+import android.view.Gravity;
 import android.view.LayoutInflater;
 import android.view.Menu;
 import android.view.MenuItem;
@@ -40,6 +42,7 @@
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.LinearLayout;
+import android.widget.TextView;
 import android.widget.Toast;
 
 import com.android.contacts.activities.ActionBarAdapter;
@@ -138,6 +141,7 @@
             // overlaid by the action bar of the newly-created fragment.
             stopSearchAndSelection();
             updateStatusBarBackground();
+            initializeAssistantNewBadge();
         }
 
         private void stopSearchAndSelection() {
@@ -198,6 +202,9 @@
     // The account the new group will be created under.
     private AccountWithDataSet mNewGroupAccount;
 
+    // Recycle badge if possible
+    private TextView mAssistantNewBadge;
+
     // Checkable menu item lookup maps. Every map declared here should be added to
     // clearCheckedMenus() so that they can be cleared.
     // TODO find a better way to handle selected menu item state, when switching to fragments.
@@ -247,6 +254,7 @@
         mNavigationView.setNavigationItemSelectedListener(this);
         setUpMenu();
 
+        initializeAssistantNewBadge();
         loadGroupsAndFilters();
 
         if (savedState != null && savedState.containsKey(KEY_NEW_GROUP_ACCOUNT)) {
@@ -255,6 +263,25 @@
         }
     }
 
+    private void initializeAssistantNewBadge() {
+        if (!Flags.getInstance().getBoolean(Experiments.ASSISTANT)) {
+            return;
+        }
+        final LinearLayout newBadgeFrame = (LinearLayout) MenuItemCompat.getActionView(
+                mNavigationView.getMenu().findItem(R.id.nav_assistant));
+        final boolean showWelcomeBadge = !SharedPreferenceUtil.isWelcomeCardDismissed(this);
+        if (showWelcomeBadge && newBadgeFrame.getChildCount() == 0) {
+            if (mAssistantNewBadge == null) {
+                mAssistantNewBadge = (TextView) LayoutInflater.from(this)
+                        .inflate(R.layout.assistant_new_badge, null);
+            }
+            newBadgeFrame.setGravity(Gravity.CENTER_VERTICAL);
+            newBadgeFrame.addView(mAssistantNewBadge);
+        } else if (!showWelcomeBadge && newBadgeFrame.getChildCount() > 0) {
+            newBadgeFrame.removeAllViews();
+        }
+    }
+
     public void setDrawerLockMode(boolean enabled) {
         // Prevent drawer from being opened by sliding from the start of screen.
         mDrawer.setDrawerLockMode(enabled ? DrawerLayout.LOCK_MODE_UNLOCKED
diff --git a/src/com/android/contacts/util/SharedPreferenceUtil.java b/src/com/android/contacts/util/SharedPreferenceUtil.java
index a1767fa..14f5494 100644
--- a/src/com/android/contacts/util/SharedPreferenceUtil.java
+++ b/src/com/android/contacts/util/SharedPreferenceUtil.java
@@ -57,6 +57,9 @@
     private static final String PREFERENCE_KEY_DISMISSED_DEVICES =
             "dismissedDevices";
 
+    public static final String PREFERENCE_WELCOME_CARD_DISMISSED =
+            "welcome-reminder-card-dismissed";
+
     public static boolean getHamburgerPromoDisplayedBefore(Context context) {
         return getSharedPreferences(context)
                 .getBoolean(PREFERENCE_KEY_HAMBURGER_PROMO_DISPLAYED_BEFORE, false);
@@ -233,6 +236,16 @@
                 .commit();
     }
 
+    public static boolean isWelcomeCardDismissed(Context context) {
+        return getSharedPreferences(context).getBoolean(PREFERENCE_WELCOME_CARD_DISMISSED,
+                false);
+    }
+
+    public static void setWelcomeCardDismissed(Context context, boolean isDismissed) {
+        getSharedPreferences(context).edit().putBoolean(PREFERENCE_WELCOME_CARD_DISMISSED,
+                isDismissed).apply();
+    }
+
     public static void clear(Context context) {
         getSharedPreferences(context).edit().clear().commit();
     }
