Index: wordpress.org/public_html/wp-content/plugins/support-forums/inc/class-directory-compat.php
===================================================================
--- wordpress.org/public_html/wp-content/plugins/support-forums/inc/class-directory-compat.php	(revision 5770)
+++ wordpress.org/public_html/wp-content/plugins/support-forums/inc/class-directory-compat.php	(working copy)
@@ -23,6 +23,7 @@
 	var $loaded       = false;
 	var $authors      = null;
 	var $contributors = null;
+	var $support_reps = null;
 	var $query        = null;
 	var $term         = null;
 
@@ -316,6 +317,7 @@
 				$this->{$this->compat()} = $this->get_object( $slug );
 				$this->authors           = $this->get_authors( $slug );
 				$this->contributors      = $this->get_contributors( $slug );
+				$this->support_reps      = $this->get_support_reps( $slug );
 				$this->term              = $terms[0];
 
 				// Add output filters and actions.
@@ -331,7 +333,7 @@
 
 				// Instantiate WPORG_Stickies mode for topic view.
 				if ( class_exists( 'WordPressdotorg\Forums\Stickies_Compat' ) ) {
-					$this->stickies = new Stickies_Compat( $this->compat(), $this->slug(), $this->taxonomy(), $this->get_object( $this->slug() ), $this->term, $this->authors, $this->contributors );
+					$this->stickies = new Stickies_Compat( $this->compat(), $this->slug(), $this->taxonomy(), $this->get_object( $this->slug() ), $this->term, $this->authors, $this->contributors, $this->support_reps );
 				}
 
 				$this->loaded = true;
@@ -357,7 +359,7 @@
 		||
 			( ! empty( $this->contributors ) && in_array( $user->user_nicename, $this->contributors ) )
 		|| 
-			( is_a( $user, 'WP_User' ) && $user->supportrep == $this->slug() )
+			( ! empty( $this->support_reps ) && in_array( $user->user_nicename, $this->support_reps ) )
 		) {
 			$retval = true;
 		}
@@ -901,4 +903,38 @@
 		}
 		return $contributors;
 	}
+
+	public function get_support_reps( $slug ) {
+		global $wpdb;
+
+		if ( null !== $this->support_reps ) {
+			return $this->support_reps;
+		}
+
+		// Themes do not have support reps right now.
+		if ( $this->compat() == 'theme' ) {
+			$support_reps = array();
+			return $support_reps;
+		}
+
+		// Check the cache.
+		$cache_key = $slug;
+		$cache_group = $this->compat() . '-support-reps-slugs';
+		$support_reps = wp_cache_get( $cache_key, $cache_group );
+		if ( ! $support_reps ) {
+			$plugin = $this->get_object( $slug );
+			$prefix = $wpdb->base_prefix . WPORG_PLUGIN_DIRECTORY_BLOGID . '_';
+			$support_reps = $wpdb->get_col( $wpdb->prepare(
+				"SELECT slug
+				 FROM {$prefix}terms AS t
+				 LEFT JOIN {$prefix}term_taxonomy AS tt ON tt.term_id = t.term_id
+				 LEFT JOIN {$prefix}term_relationships AS tr ON tr.term_taxonomy_id = tt.term_taxonomy_id 
+				 WHERE tt.taxonomy = 'plugin_support_reps' AND tr.object_id = %d",
+				 $plugin->ID
+			) );
+
+			wp_cache_set( $cache_key, $support_reps, $cache_group, HOUR_IN_SECONDS );
+		}
+		return $support_reps;
+	}
 }
Index: wordpress.org/public_html/wp-content/plugins/support-forums/inc/class-plugin-directory-compat.php
===================================================================
--- wordpress.org/public_html/wp-content/plugins/support-forums/inc/class-plugin-directory-compat.php	(revision 5770)
+++ wordpress.org/public_html/wp-content/plugins/support-forums/inc/class-plugin-directory-compat.php	(working copy)
@@ -78,6 +78,7 @@
 			$this->plugin       = $plugin;
 			$this->authors      = $this->get_authors( $slug );
 			$this->contributors = $this->get_contributors( $slug );
+			$this->support_reps = $this->get_support_reps( $slug );
 		}
 	}
 
Index: wordpress.org/public_html/wp-content/plugins/support-forums/inc/class-stickies-compat.php
===================================================================
--- wordpress.org/public_html/wp-content/plugins/support-forums/inc/class-stickies-compat.php	(revision 5770)
+++ wordpress.org/public_html/wp-content/plugins/support-forums/inc/class-stickies-compat.php	(working copy)
@@ -12,7 +12,7 @@
 	var $object   = null;
 	var $term     = null;
 
-	public function __construct( $compat, $slug, $taxonomy, $object, $term, $authors = array(), $contributors = array() ) {
+	public function __construct( $compat, $slug, $taxonomy, $object, $term, $authors = array(), $contributors = array(), $support_reps = array() ) {
 		if ( empty( $compat ) || empty( $slug ) || empty( $taxonomy ) || empty( $object ) || empty( $term ) ) {
 			return;
 		}
@@ -24,6 +24,7 @@
 		$this->term         = $term;
 		$this->authors      = $authors;
 		$this->contributors = $contributors;
+		$this->support_reps = $support_reps;
 
 		// Remove global stickies from sticky array.
 		add_filter( 'bbp_get_super_stickies', array( $this, 'get_super_stickies' ) );
@@ -247,6 +248,11 @@
 			if ( $this->contributors && in_array( $user->user_nicename, $this->contributors ) ) {
 				$retval = true;
 			}
+
+			// Compat support reps.
+			if ( $this->support_reps && in_array( $user->user_nicename, $this->support_reps ) ) {
+				$retval = true;
+			}
 		}
 		return $retval;
 	}
Index: wordpress.org/public_html/wp-content/plugins/support-forums/inc/class-theme-directory-compat.php
===================================================================
--- wordpress.org/public_html/wp-content/plugins/support-forums/inc/class-theme-directory-compat.php	(revision 5770)
+++ wordpress.org/public_html/wp-content/plugins/support-forums/inc/class-theme-directory-compat.php	(working copy)
@@ -78,6 +78,7 @@
 			$this->theme        = $theme;
 			$this->authors      = $this->get_authors( $slug );
 			$this->contributors = $this->get_contributors( $slug );
+			$this->support_reps = $this->get_support_reps( $slug );
 		}
 	}
 
Index: wordpress.org/public_html/wp-content/plugins/wporg-bbp-user-badges/inc/class-plugin.php
===================================================================
--- wordpress.org/public_html/wp-content/plugins/wporg-bbp-user-badges/inc/class-plugin.php	(revision 5770)
+++ wordpress.org/public_html/wp-content/plugins/wporg-bbp-user-badges/inc/class-plugin.php	(working copy)
@@ -198,6 +198,8 @@
 				$contrib_type = 'author';
 			} elseif ( $this->is_user_contributor( $info['user_nicename'], $info['type'], $info['slug'] ) ) {
 				$contrib_type = 'contributor';
+			} elseif ( $this->is_user_support_rep( $info['user_nicename'], $info['type'], $info['slug'] ) ) {
+				$contrib_type = 'support-rep';
 			} else {
 				$contrib_type = '';
 			}
@@ -312,6 +314,15 @@
 				$help  = __( 'This person is a contributor to this theme', 'wporg-forums' );
 			}
 		}
+		elseif ( $this->is_user_support_rep( $info['user_nicename'], $info['type'], $info['slug'] ) ) {
+			if ( 'plugin' == $info['type'] ) {
+				$label = __( 'Plugin Support', 'wporg-forums' );
+				$help  = __( 'This person is a support representative for this plugin', 'wporg-forums' );
+			} else {
+				$label = __( 'Theme Support', 'wporg-forums' );
+				$help  = __( 'This person is a support representative for this theme', 'wporg-forums' );
+			}
+		}
 
 		return $label ? array( 'type' => $info['type'], 'label' => $label, 'help' => $help ) : false;
 	}
@@ -390,6 +401,32 @@
 	}
 
 	/**
+	 * Checks if the specified user is a support rep for the specified plugin/theme.
+	 *
+	 * A support representative is someone assigned as such by the plugin or theme author.
+	 *
+	 * @param string $user_nicename User slug.
+	 * @param string $type          Either 'plugin' or 'theme'.
+	 * @param string $slug          Slug for the plugin or theme.
+	 * @return bool                 True if user is a support rep, false otherwise.
+	 */
+	public function is_user_support_rep( $user_nicename, $type, $slug ) {
+		if ( class_exists( '\WordPressdotorg\Forums\Plugin' ) ) {
+			if ( 'plugin' === $type ) {
+				$compat = \WordPressdotorg\Forums\Plugin::get_instance()->plugins;
+			} else {
+				$compat = \WordPressdotorg\Forums\Plugin::get_instance()->themes;
+			}
+		} else {
+			$compat = null;
+		}
+
+		$support_reps = $compat ? $compat->get_support_reps( $slug ) : array();
+
+		return $support_reps && in_array( $user_nicename, $support_reps );
+	}
+
+	/**
 	 * Checks if the specified user is a forum moderator or keymaster.
 	 *
 	 * By default, this considers a keymaster as being a moderator for the purpose
Index: wordpress.org/public_html/wp-content/themes/pub/wporg-support/sass/elements/_badges.scss
===================================================================
--- wordpress.org/public_html/wp-content/themes/pub/wporg-support/sass/elements/_badges.scss	(revision 5770)
+++ wordpress.org/public_html/wp-content/themes/pub/wporg-support/sass/elements/_badges.scss	(working copy)
@@ -6,12 +6,14 @@
 	box-shadow: -4px 0 0 white, -6px 0 0 $color__moderator;
 }
 .by-plugin-author,
-.by-plugin-contributor {
+.by-plugin-contributor,
+.by-plugin-support-rep {
 	box-shadow: -4px 0 0 white, -6px 0 0 $color__plugin-author;
 }
 
 .by-theme-author,
-.by-theme-contributor {
+.by-theme-contributor,
+.by-theme-support-rep {
 	box-shadow: -4px 0 0 white, -6px 0 0 $color__theme-author;
 }
 
