diff --git a/inventory_provider/routes/poller.py b/inventory_provider/routes/poller.py
index 9561ce47a0c4a0de06a5f62fc97e00d6fb104065..85351cff6d3dac3946b69855b8161996ecb9c7f6 100644
--- a/inventory_provider/routes/poller.py
+++ b/inventory_provider/routes/poller.py
@@ -49,6 +49,7 @@ These endpoints are intended for use by BRIAN.
 
 
 """
+from enum import Enum, auto
 import json
 import logging
 import re
@@ -68,6 +69,32 @@ routes = Blueprint('poller-support-routes', __name__)
 
 Gb = 1 << 30
 
+
+class BRIAN_DASHBOARDS(Enum):
+    CLS = auto()
+    RE_PEER = auto()
+    RE_CUST = auto()
+    GEANTOPEN = auto()
+    GCS = auto()
+    L2_CIRCUIT = auto()
+    LHCONE_PEER = auto()
+    LHCONE_CUST = auto()
+    MDVPN_CUSTOMERS = auto()
+    INFRASTRUCTURE_BACKBONE = auto()
+    IAS_PRIVATE = auto()
+    IAS_PUBLIC = auto()
+    IAS_CUSTOMER = auto()
+    IAS_UPSTREAM = auto()
+    GWS_PHY_UPSTREAM = auto()
+
+    # aggregate dashboards
+    CLS_PEERS = auto()
+    IAS_PEERS = auto()
+    GWS_UPSTREAMS = auto()
+    LHCONE = auto()
+    CAE1 = auto()
+
+
 INTERFACE_LIST_SCHEMA = {
     '$schema': 'http://json-schema.org/draft-07/schema#',
 
@@ -104,12 +131,16 @@ INTERFACE_LIST_SCHEMA = {
                 'circuits': {
                     'type': 'array',
                     'items': {'$ref': '#/definitions/service'}
+                },
+                'dashboards': {
+                    'type': 'array',
+                    'items': {'enum': [d.name for d in list(BRIAN_DASHBOARDS)]}
                 }
             },
             'required': [
                 'router', 'name', 'description',
                 'snmp-index', 'bundle', 'bundle-parents',
-                'circuits'],
+                'circuits', 'dashboards'],
             'additionalProperties': False
         },
     },
@@ -296,6 +327,70 @@ def after_request(resp):
     return common.after_request(resp)
 
 
+def _get_dashboards(interface):
+
+    router = interface.get('router', '').lower()
+    ifc_name = interface.get('name', '')
+    description = interface.get('description', '').strip()
+
+    if 'SRV_CLS' in description:
+        yield BRIAN_DASHBOARDS.CLS
+    if 'SRV_CLS PRIVATE' in description:
+        yield BRIAN_DASHBOARDS.CLS_PEERS
+    if 'SRV_IAS PUBLIC' in description:
+        yield BRIAN_DASHBOARDS.IAS_PUBLIC
+        yield BRIAN_DASHBOARDS.IAS_PEERS
+    if 'SRV_IAS PRIVATE' in description:
+        yield BRIAN_DASHBOARDS.IAS_PRIVATE
+        yield BRIAN_DASHBOARDS.IAS_PEERS
+    if 'SRV_IAS CUSTOMER' in description:
+        yield BRIAN_DASHBOARDS.IAS_CUSTOMER
+    if 'SRV_IAS UPSTREAM' in description:
+        yield BRIAN_DASHBOARDS.IAS_UPSTREAM
+    if 'SRV_GLOBAL RE_INTERCONNECT' in description:
+        yield BRIAN_DASHBOARDS.RE_PEER
+    if re.match('(PHY|LAG|SRV_GLOBAL) CUSTOMER', description):
+        yield BRIAN_DASHBOARDS.RE_CUST
+    if re.match('^SRV_GCS', description):
+        yield BRIAN_DASHBOARDS.GCS
+    if 'GEANTOPEN' in description:
+        yield BRIAN_DASHBOARDS.GEANTOPEN
+    if 'SRV_L2CIRCUIT' in description:
+        yield BRIAN_DASHBOARDS.L2_CIRCUIT
+    if 'LHCONE' in description:
+        if 'SRV_L3VPN RE' in description:
+            yield BRIAN_DASHBOARDS.LHCONE_PEER
+        if 'SRV_L3VPN CUSTOMER' in description:
+            yield BRIAN_DASHBOARDS.LHCONE_CUST
+    if re.match('SRV_L3VPN (CUSTOMER|RE_INTERCONNECT)', description):
+        yield BRIAN_DASHBOARDS.LHCONE
+    if re.match('^SRV_MDVPN CUSTOMER', description):
+        yield BRIAN_DASHBOARDS.MDVPN_CUSTOMERS
+    if 'LAG' in description and \
+            re.match('(SRV_GLOBAL|LAG|PHY) INFRASTRUCTURE BACKBONE',
+                     description):
+        yield BRIAN_DASHBOARDS.INFRASTRUCTURE_BACKBONE
+    if router == 'mx1.lon.uk.geant.net' \
+            and re.match(r'^ae12(\.\d+|$)$', ifc_name):
+        yield BRIAN_DASHBOARDS.CAE1
+    if re.match('^PHY UPSTREAM', description):
+        yield BRIAN_DASHBOARDS.GWS_PHY_UPSTREAM
+
+
+def _add_dashboards(interfaces):
+    """
+    generator that dashboards to each interfaces.
+
+    :param interfaces: result of _load_interfaces
+    :return: generator with `dashboards` populated in each element
+    """
+
+    for ifc in interfaces:
+        dashboards = _get_dashboards(ifc)
+        ifc['dashboards'] = sorted(list(d.name for d in dashboards))
+        yield ifc
+
+
 def _load_interface_bundles(hostname=None):
     result = dict()
 
@@ -476,15 +571,20 @@ def _load_interfaces_to_poll(hostname=None):
     :return: generator yielding interface elements
     """
     basic_interfaces = _load_interfaces(hostname)
+    # basic_interfaces = list(basic_interfaces)
     with_bundles = _add_bundle_parents(basic_interfaces, hostname)
     with_circuits = _add_circuits(with_bundles, hostname)
+    # with_circuits = list(with_circuits)
     with_snmp = _add_snmp_indexes(with_circuits, hostname)
+    # with_snmp = list(with_snmp)
 
+    # only return interfaces that can be polled
     def _has_snmp_index(ifc):
         return 'snmp-index' in ifc
 
-    # only return interfaces that can be polled
-    return filter(_has_snmp_index, with_snmp)
+    to_poll = filter(_has_snmp_index, with_snmp)
+
+    return _add_dashboards(to_poll)
 
 
 @routes.route("/interfaces", methods=['GET', 'POST'])
diff --git a/test/test_general_poller_routes.py b/test/test_general_poller_routes.py
index e17d8f3f6c1cbd2438020a7b21740bf7390bd05b..8774542b32677408d5b039cf03d8fd71cf9be39a 100644
--- a/test/test_general_poller_routes.py
+++ b/test/test_general_poller_routes.py
@@ -215,3 +215,20 @@ def test_dcu_oid_values(ifIndex, expected_oid):
 def test_fw_counter_bytes_oid_values(customer, interface_name, expected_oid):
     assert poller._jnx_fw_counter_bytes_oid(
         customer, interface_name) == expected_oid
+
+
+@pytest.mark.parametrize('description,expected_dashboards', [
+    ('SRV_IAS CUSTOMER JISC #JISC-AP1-IAS IASPS | ASN786',
+     ['IAS_CUSTOMER']),
+    ('SRV_L2CIRCUIT CUSTOMER JISC JISC #DUB-LON-NRENBBEXT-JANET-13015 | backup for niran ',  # noqa: E501
+     ['L2_CIRCUIT'])
+])
+def test_interface_dashboard_mapping(description, expected_dashboards):
+    interface = {
+        'router': '',
+        'name': '',
+        'description': description
+    }
+    dashboards = poller._get_dashboards(interface)
+    dashboards = [d.name for d in dashboards]
+    assert set(list(dashboards)) == set(expected_dashboards)