diff --git a/opentech/public/home/models.py b/opentech/public/home/models.py
index d6cfb5e6902fc5121f7dfeffc72d2cfd21dd89bc..f3a1045939dc1a5177ea39c4ce42cf7944867650 100644
--- a/opentech/public/home/models.py
+++ b/opentech/public/home/models.py
@@ -1,3 +1,4 @@
+import datetime
 from django.db import models
 
 from modelcluster.fields import ParentalKey
@@ -105,7 +106,17 @@ class HomePage(BasePage):
         yield from self.pages_from_related(base_list)
         selected = list(base_list.values_list('page', flat=True))
         extra_needed = self.NUM_RELATED - len(selected)
-        yield from page_type.objects.exclude(id__in=selected)[:extra_needed]
+        extra_qs = page_type.objects.exclude(id__in=selected)[:extra_needed]
+        yield from self.sorted_by_deadline(extra_qs)
+
+    def sorted_by_deadline(self, qs):
+        def sort_by_deadline(value):
+            try:
+                return value.deadline or datetime.date.max
+            except AttributeError:
+                return datetime.date.max
+
+        yield from sorted(qs, key=sort_by_deadline)
 
     def pages_from_related(self, related):
         for related in related.all():