diff --git a/opentech/apply/funds/models/applications.py b/opentech/apply/funds/models/applications.py
index 62a6e13faa09dec1ff67c4a45150d162d12ea2f1..01a754b170c50fa9616b622ee9e1b0e3bbbb80d6 100644
--- a/opentech/apply/funds/models/applications.py
+++ b/opentech/apply/funds/models/applications.py
@@ -158,6 +158,10 @@ class RoundBase(WorkflowStreamForm, SubmittableStreamForm):  # type: ignore
         # Make sure all children use the shared template
         return 'funds/round_landing.html'
 
+    @cached_property
+    def fund(self):
+        return self.get_parent()
+
     @property
     def is_sealed(self):
         return self.sealed and self.is_open
diff --git a/opentech/apply/funds/templates/funds/submissions_by_round.html b/opentech/apply/funds/templates/funds/submissions_by_round.html
new file mode 100644
index 0000000000000000000000000000000000000000..2e4391d1673b741b8be72124fc3f5860807f15bb
--- /dev/null
+++ b/opentech/apply/funds/templates/funds/submissions_by_round.html
@@ -0,0 +1,22 @@
+{% extends "base-apply.html" %}
+{% block title %}{{ object }}{% endblock %}
+
+{% block content %}
+<div class="admin-bar">
+    <div class="admin-bar__inner">
+        <div>
+            <h5><a href="{% url "apply:submissions:list" %}">< Submissions</a></h5>
+            <h1 class="gamma heading heading--no-margin heading--bold">{{ object }}</h1>
+            <h5>{% if object.fund %}{{ object.fund }} | {% endif %}Lead: {{ object.lead }}</h5>
+        </div>
+    </div>
+</div>
+
+<div class="wrapper wrapper--large">
+    <div>
+        <h2>THERE WILL BE A TABLE HERE</h2>
+    </div>
+
+</div>
+
+{% endblock %}
diff --git a/opentech/apply/funds/tests/test_views.py b/opentech/apply/funds/tests/test_views.py
index 62c1c7928e19ee032c3145562016a34399935c98..5f6643b3b59cc01229090e1f3d844b70d79577c4 100644
--- a/opentech/apply/funds/tests/test_views.py
+++ b/opentech/apply/funds/tests/test_views.py
@@ -7,7 +7,9 @@ from opentech.apply.funds.tests.factories import (
     ApplicationSubmissionFactory,
     ApplicationRevisionFactory,
     InvitedToProposalFactory,
+    LabFactory,
     LabSubmissionFactory,
+    RoundFactory,
     SealedRoundFactory,
     SealedSubmissionFactory,
 )
@@ -547,3 +549,39 @@ class TestSuperUserSealedView(BaseSubmissionViewTestCase):
         self.assertTrue('peeked' in self.client.session)
         self.assertTrue(str(first.id) in self.client.session['peeked'])
         self.assertTrue(str(second.id) in self.client.session['peeked'])
+
+
+class ByRoundTestCase(BaseViewTestCase):
+    url_name = 'apply:submissions:{}'
+    base_view_name = 'by_round'
+
+    def get_kwargs(self, instance):
+        return {'pk': instance.id}
+
+
+class TestStaffSubmissionByRound(ByRoundTestCase):
+    user_factory = StaffFactory
+
+    def test_can_access_round_page(self):
+        new_round = RoundFactory()
+        response = self.get_page(new_round)
+        self.assertContains(response, new_round.title)
+
+    def test_can_access_lab_page(self):
+        new_lab = LabFactory()
+        response = self.get_page(new_lab)
+        self.assertContains(response, new_lab.title)
+
+
+class TestApplicantSubmissionByRound(ByRoundTestCase):
+    user_factory = UserFactory
+
+    def test_cant_access_round_page(self):
+        new_round = RoundFactory()
+        response = self.get_page(new_round)
+        self.assertEqual(response.status_code, 403)
+
+    def test_cant_access_lab_page(self):
+        new_lab = LabFactory()
+        response = self.get_page(new_lab)
+        self.assertEqual(response.status_code, 403)
diff --git a/opentech/apply/funds/urls.py b/opentech/apply/funds/urls.py
index 4e6d71099b9fca6dab860b3f5588699f9b0ed8cc..d9f29072400c042075367adee6bcb78654ff56b0 100644
--- a/opentech/apply/funds/urls.py
+++ b/opentech/apply/funds/urls.py
@@ -3,6 +3,7 @@ from django.urls import include, path
 from .views import (
     RevisionCompareView,
     RevisionListView,
+    SubmissionsByRound,
     SubmissionDetailView,
     SubmissionEditView,
     SubmissionListView,
@@ -31,6 +32,7 @@ submission_urls = ([
         path('', include('opentech.apply.determinations.urls', namespace="determinations")),
         path('revisions/', include(revision_urls, namespace="revisions")),
     ])),
+    path('rounds/<int:pk>/', SubmissionsByRound.as_view(), name="by_round"),
 ], 'submissions')
 
 
diff --git a/opentech/apply/funds/views.py b/opentech/apply/funds/views.py
index c8a6f2c13dce7356074fcf667454f364b6161ccf..b96a1fbe15c7f7ded3bf76e94318c92c5d5e7017 100644
--- a/opentech/apply/funds/views.py
+++ b/opentech/apply/funds/views.py
@@ -3,7 +3,7 @@ from copy import copy
 from django.contrib.auth.decorators import login_required
 from django.contrib import messages
 from django.core.exceptions import PermissionDenied
-from django.http import HttpResponseRedirect
+from django.http import HttpResponseRedirect, Http404
 from django.shortcuts import get_object_or_404
 from django.urls import reverse_lazy
 from django.utils.decorators import method_decorator
@@ -14,6 +14,8 @@ from django.views.generic import DetailView, ListView, UpdateView
 from django_filters.views import FilterView
 from django_tables2.views import SingleTableMixin
 
+from wagtail.core.models import Page
+
 from opentech.apply.activity.views import (
     AllActivityContextMixin,
     ActivityContextMixin,
@@ -28,7 +30,7 @@ from opentech.apply.utils.views import DelegateableView, ViewDispatcher
 
 from .differ import compare
 from .forms import ProgressSubmissionForm, UpdateReviewersForm, UpdateSubmissionLeadForm
-from .models import ApplicationSubmission, ApplicationRevision
+from .models import ApplicationSubmission, ApplicationRevision, RoundBase, LabBase
 from .tables import AdminSubmissionsTable, SubmissionFilter, SubmissionFilterAndSearch
 from .workflow import STAGE_CHANGE_ACTIONS
 
@@ -418,3 +420,17 @@ class RevisionCompareView(DetailView):
         to_revision = self.object.revisions.get(id=self.kwargs['to'])
         self.compare_revisions(from_revision, to_revision)
         return super().get_context_data(**kwargs)
+
+
+@method_decorator(staff_required, name='dispatch')
+class SubmissionsByRound(DetailView):
+    model = Page
+    template_name = 'funds/submissions_by_round.html'
+
+    def get_object(self):
+        # We want to only show lab or Rounds in this view, their base class is Page
+        obj = super().get_object()
+        obj = obj.specific
+        if not isinstance(obj, (LabBase, RoundBase)):
+            raise Http404(_("No Round or Lab found matching the query"))
+        return obj