diff --git a/reviewboard/accounts/admin.py b/reviewboard/accounts/admin.py
index 67e1218820a6393f3700b3f8d8199b6f74f3bbe7..b9583f90d081e06d580e685b145a282d204938f9 100644
--- a/reviewboard/accounts/admin.py
+++ b/reviewboard/accounts/admin.py
@@ -96,6 +96,7 @@ class LocalSiteProfileInline(admin.StackedInline):
                        'total_incoming_request_count',
                        'pending_outgoing_request_count',
                        'total_outgoing_request_count',
+                       'unreviewed_outgoing_request_count',
                        'starred_public_request_count'),
         }),
     )
@@ -143,6 +144,7 @@ def fix_review_counts():
         total_incoming_request_count=None,
         pending_outgoing_request_count=None,
         total_outgoing_request_count=None,
+        unreviewed_outgoing_request_count=None,
         starred_public_request_count=None)
     Group.objects.update(incoming_request_count=None)
 
diff --git a/reviewboard/accounts/models.py b/reviewboard/accounts/models.py
index 004ff9be6df7ffc016a1c5c528562e6bfb592c4a..ad612665b348463471b316117d73bde620f79d40 100644
--- a/reviewboard/accounts/models.py
+++ b/reviewboard/accounts/models.py
@@ -235,6 +235,9 @@ class LocalSiteProfile(models.Model):
     local_site = models.ForeignKey(LocalSite, null=True, blank=True,
                                    related_name='site_profiles')
 
+    OUTGOING_UNREVIEWED = 'O'
+    INCOMING_UNREVIEWED = 'I'
+
     # A dictionary of permission that the user has granted. Any permission
     # missing is considered to be False.
     permissions = JSONField(null=True)
@@ -266,6 +269,20 @@ class LocalSiteProfile(models.Model):
             ReviewRequest.objects.from_user(
                 p.user, p.user, None, local_site=p.local_site).count()
             if p.user_id else 0))
+    unreviewed_outgoing_request_count = CounterField(
+        _('unreviewed outgoing review request count'),
+        initializer=lambda p: (
+            ReviewRequest.objects.from_user(
+                p.user, p.user, local_site=p.local_site,
+                unreviewed_status=LocalSiteProfile.OUTGOING_UNREVIEWED).count()
+            if p.user_id else 0))
+    unreviewed_incoming_request_count = CounterField(
+        _('unreviewed incoming review request count'),
+        initializer=lambda p: (
+            ReviewRequest.objects.to_user(
+                p.user, p.user, local_site=p.local_site,
+                unreviewed_status=LocalSiteProfile.INCOMING_UNREVIEWED).count()
+            if p.user_id else 0))
     starred_public_request_count = CounterField(
         _('starred public review request count'),
         initializer=lambda p: (
diff --git a/reviewboard/datagrids/builtin_items.py b/reviewboard/datagrids/builtin_items.py
index e2140cdeca795bc1a8a38114eec147a3ce1f960c..de7357e0aa6766befd99e1fea9379a094f001a9d 100644
--- a/reviewboard/datagrids/builtin_items.py
+++ b/reviewboard/datagrids/builtin_items.py
@@ -9,13 +9,16 @@ from reviewboard.datagrids.sidebar import (BaseSidebarItem,
 class OutgoingSection(BaseSidebarSection):
     """The "Outgoing" section on the Dashboard sidebar.
 
-    This displays two links: "All" and "Open".
+    This displays two links: "All" and "Open" and "Unreviewed".
 
     "All" links to a Dashboard view showing all outgoing review requests
     made by the user, including those that are closed.
 
     "Open" links to a Dashboard view showing only open outgoing review
     requests made by the user.
+
+    "Unreviewed" links to a Dashboard view showing the outgoing review
+    requests made by the user which haven't been reviewed.
     """
     label = _('Outgoing')
 
@@ -30,6 +33,11 @@ class OutgoingSection(BaseSidebarSection):
                              label=_('Open'),
                              view_id='outgoing',
                              count=site_profile.pending_outgoing_request_count)
+        yield SidebarNavItem(self,
+                             label=_('Unreviewed'),
+                             view_id='out_unreviewed',
+                             count=site_profile.
+                             unreviewed_outgoing_request_count)
 
 
 class IncomingSection(BaseSidebarSection):
@@ -67,6 +75,12 @@ class IncomingSection(BaseSidebarSection):
                              view_id='to-me',
                              count=site_profile.direct_incoming_request_count)
 
+        yield SidebarNavItem(self,
+                             label=_('Unreviewed'),
+                             view_id='in_unreviewed',
+                             count=site_profile.
+                             unreviewed_incoming_request_count)
+
         if site_profile.starred_public_request_count > 0:
             yield SidebarNavItem(
                 self,
diff --git a/reviewboard/datagrids/grids.py b/reviewboard/datagrids/grids.py
index d23ed7ec225665ab62e616c23469b4a7952a0bd8..96745ec1df4a7636137573d0120d85df6630bc9c 100644
--- a/reviewboard/datagrids/grids.py
+++ b/reviewboard/datagrids/grids.py
@@ -270,6 +270,16 @@ class DashboardDataGrid(DataGridSidebarMixin, ReviewRequestDataGrid):
             self.queryset = ReviewRequest.objects.from_user(
                 user, user, None, local_site=self.local_site)
             self.title = _('All My Review Requests')
+        elif view == 'out_unreviewed':
+            self.queryset = ReviewRequest.objects.from_user(
+                user, user, local_site=self.local_site,
+                unreviewed_status=LocalSiteProfile.OUTGOING_UNREVIEWED)
+            self.title = _('All Unreviewed Outgoing Reviewed Requests')
+        elif view == 'in_unreviewed':
+            self.queryset = ReviewRequest.objects.to_user(
+                user, user, local_site=self.local_site,
+                unreviewed_status=LocalSiteProfile.INCOMING_UNREVIEWED)
+            self.title = _('All Unreviewed Incoming Review Requests')
         elif view == 'to-me':
             self.queryset = ReviewRequest.objects.to_user_directly(
                 user, user, local_site=self.local_site)
diff --git a/reviewboard/datagrids/views.py b/reviewboard/datagrids/views.py
index 4608a483444c6b7db073e916dfb300946396aafa..8d2c4b3df1f82236e3888fe04ab6f4f28d43cd9f 100644
--- a/reviewboard/datagrids/views.py
+++ b/reviewboard/datagrids/views.py
@@ -56,6 +56,8 @@ def dashboard(request,
         * 'starred'
         * 'incoming'
         * 'mine'
+        * 'out_unreviewed'
+        * 'in_unreviewed'
     """
     grid = DashboardDataGrid(request, local_site=local_site)
     return grid.render_to_response(template_name)
diff --git a/reviewboard/reviews/managers.py b/reviewboard/reviews/managers.py
index dff84858baa1bdb0f84c5c8b382a7e37c4bfaf08..3e9d08f269234f592151c987f8ccc5d3aef0fc25 100644
--- a/reviewboard/reviews/managers.py
+++ b/reviewboard/reviews/managers.py
@@ -292,11 +292,12 @@ class ReviewRequestManager(ConcurrencyManager):
             extra_query=self.get_from_user_query(user_or_username),
             *args, **kwargs)
 
-    def _query(self, user=None, status='P', with_counts=False,
-               extra_query=None, local_site=None, filter_private=False,
-               show_inactive=False, show_all_unpublished=False,
-               show_all_local_sites=False):
+    def _query(self, user=None, status='P', unreviewed_status=None,
+               with_counts=False, extra_query=None, local_site=None,
+               filter_private=False, show_inactive=False,
+               show_all_unpublished=False, show_all_local_sites=False):
         from reviewboard.reviews.models import Group
+        from reviewboard.accounts.models import LocalSiteProfile
 
         is_authenticated = (user is not None and user.is_authenticated())
 
@@ -312,7 +313,11 @@ class ReviewRequestManager(ConcurrencyManager):
             query = query & Q(submitter__is_active=True)
 
         if status:
-            query = query & Q(status=status)
+            query &= Q(status=status)
+
+            if (unreviewed_status in (LocalSiteProfile.OUTGOING_UNREVIEWED,
+                                      LocalSiteProfile.INCOMING_UNREVIEWED)):
+                query &= Q(last_review_activity_timestamp=None)
 
         if show_all_local_sites:
             assert local_site is None
diff --git a/reviewboard/reviews/models/review.py b/reviewboard/reviews/models/review.py
index 96e9ded372f09383dba3f49e1bb97eb62f91c4dd..de7e77b8ef2596282aaf7d231c4020f60135eb82 100644
--- a/reviewboard/reviews/models/review.py
+++ b/reviewboard/reviews/models/review.py
@@ -203,6 +203,7 @@ class Review(models.Model):
 
         self.save()
 
+        last_review = self.review_request.last_review_activity_timestamp
         self.comments.update(timestamp=self.timestamp)
         self.screenshot_comments.update(timestamp=self.timestamp)
         self.file_attachment_comments.update(timestamp=self.timestamp)
@@ -210,8 +211,9 @@ class Review(models.Model):
         # Update the last_updated timestamp and the last review activity
         # timestamp on the review request.
         self.review_request.last_review_activity_timestamp = self.timestamp
-        self.review_request.save(
-            update_fields=['last_review_activity_timestamp', 'last_updated'])
+        self.review_request.save(update_counts=True,
+                                 last_review_timestamp=last_review,
+                                 update_fields=['last_review_activity_timestamp', 'last_updated'])
 
         if self.is_reply():
             reply_published.send(sender=self.__class__,
diff --git a/reviewboard/reviews/models/review_request.py b/reviewboard/reviews/models/review_request.py
index 118ce1dfe6855e72a598d2eff4328a377f531ac5..7f08997f6807f9b9237fc231457f10d97ae0e9d8 100644
--- a/reviewboard/reviews/models/review_request.py
+++ b/reviewboard/reviews/models/review_request.py
@@ -646,9 +646,15 @@ class ReviewRequest(BaseReviewRequestDetails):
 
         return self._blocks
 
-    def save(self, update_counts=False, **kwargs):
+    def save(self, update_counts=False, last_review_timestamp=None, **kwargs):
+        """This method saves the review requests.
+
+        The argument update_counts means if the counts need to be updated.
+
+        The argument last_review_timestamp means if there're reviews already.
+        """
         if update_counts or self.id is None:
-            self._update_counts()
+            self._update_counts(last_review_timestamp)
 
         if self.status != self.PENDING_REVIEW:
             # If this is not a pending review request now, delete any
@@ -675,6 +681,9 @@ class ReviewRequest(BaseReviewRequestDetails):
         site_profile.decrement_total_outgoing_request_count()
 
         if self.status == self.PENDING_REVIEW:
+            if self.last_review_activity_timestamp is None:
+                site_profile.decrement_unreviewed_outgoing_request_count()
+
             site_profile.decrement_pending_outgoing_request_count()
 
             if self.public:
@@ -829,7 +838,7 @@ class ReviewRequest(BaseReviewRequestDetails):
                                       review_request=self,
                                       changedesc=changes)
 
-    def _update_counts(self):
+    def _update_counts(self, last_review_timestamp):
         from reviewboard.accounts.models import Profile, LocalSiteProfile
 
         profile, profile_is_new = \
@@ -860,21 +869,50 @@ class ReviewRequest(BaseReviewRequestDetails):
             r = ReviewRequest.objects.get(pk=self.id)
             old_status = r.status
             old_public = r.public
-
         if self.status == self.PENDING_REVIEW:
             if old_status != self.status:
                 site_profile.increment_pending_outgoing_request_count()
 
+                if self.last_review_activity_timestamp is None:
+                    site_profile.increment_unreviewed_outgoing_request_count()
+
             if self.public and self.id is not None:
-                self._increment_reviewer_counts()
-        elif old_status == self.PENDING_REVIEW:
+                self._increment_reviewer_counts(
+                    self.last_review_activity_timestamp)
+
+        if old_status == self.PENDING_REVIEW and old_public:
             if old_status != self.status:
                 site_profile.decrement_pending_outgoing_request_count()
+                if self.last_review_activity_timestamp is None:
+                    site_profile.decrement_unreviewed_outgoing_request_count()
+            elif (self.last_review_activity_timestamp is not None and
+                  last_review_timestamp is None):
+                site_profile.decrement_unreviewed_outgoing_request_count()
+                self._unreviewed_incoming_decrement()
 
             if old_public:
-                self._decrement_reviewer_counts()
+                self._decrement_reviewer_counts(
+                    self.last_review_activity_timestamp)
+
+    def _unreviewed_incoming_decrement(self):
+        """Decrease the count of unreviewed incoming requests.
+
+        The count is only decreased if a review request that was previously
+        unreviewed has become reviewed.
+        """
+        from reviewboard.accounts.models import LocalSiteProfile
 
-    def _increment_reviewer_counts(self):
+        groups = self.target_groups.all()
+        people = self.target_people.all()
+
+        LocalSiteProfile.unreviewed_incoming_request_count.decrement(
+            LocalSiteProfile.objects.filter(Q(user__review_groups__in=groups) |
+                                            Q(user__in=people),
+                                            local_site=self.local_site))
+
+    def _increment_reviewer_counts(self, last_review_timestamp=None):
+        """Increase the counts of the incoming review requests.
+        """
         from reviewboard.accounts.models import LocalSiteProfile
 
         groups = self.target_groups.all()
@@ -884,17 +922,26 @@ class ReviewRequest(BaseReviewRequestDetails):
         LocalSiteProfile.direct_incoming_request_count.increment(
             LocalSiteProfile.objects.filter(user__in=people,
                                             local_site=self.local_site))
+
+        if last_review_timestamp is None:
+            LocalSiteProfile.unreviewed_incoming_request_count.increment(
+                LocalSiteProfile.objects.filter(
+                    Q(user__review_groups__in=groups) |
+                    Q(user__in=people),
+                    local_site=self.local_site))
         LocalSiteProfile.total_incoming_request_count.increment(
             LocalSiteProfile.objects.filter(
-                Q(local_site=self.local_site) &
-                Q(Q(user__review_groups__in=groups) |
-                  Q(user__in=people))))
+                Q(user__review_groups__in=groups) |
+                Q(user__in=people),
+                local_site=self.local_site))
         LocalSiteProfile.starred_public_request_count.increment(
             LocalSiteProfile.objects.filter(
                 profile__starred_review_requests=self,
                 local_site=self.local_site))
 
-    def _decrement_reviewer_counts(self):
+    def _decrement_reviewer_counts(self, last_review_timestamp=None):
+        """Decrease the count of the incoming review requests.
+        """
         from reviewboard.accounts.models import LocalSiteProfile
 
         groups = self.target_groups.all()
@@ -905,11 +952,17 @@ class ReviewRequest(BaseReviewRequestDetails):
             LocalSiteProfile.objects.filter(
                 user__in=people,
                 local_site=self.local_site))
+
+        if last_review_timestamp is None:
+            LocalSiteProfile.unreviewed_incoming_request_count.decrement(
+                LocalSiteProfile.objects.filter(
+                    Q(user__review_groups__in=groups) |
+                    Q(user__in=people),
+                    local_site=self.local_site))
         LocalSiteProfile.total_incoming_request_count.decrement(
-            LocalSiteProfile.objects.filter(
-                Q(local_site=self.local_site) &
-                Q(Q(user__review_groups__in=groups) |
-                  Q(user__in=people))))
+            LocalSiteProfile.objects.filter(Q(user__review_groups__in=groups) |
+                                            Q(user__in=people),
+                                            local_site=self.local_site))
         LocalSiteProfile.starred_public_request_count.decrement(
             LocalSiteProfile.objects.filter(
                 profile__starred_review_requests=self,
