diff --git a/opentech/public/people/migrations/0004_funding.py b/opentech/public/people/migrations/0004_funding.py
new file mode 100644
index 0000000000000000000000000000000000000000..583eef7f80badf26f89b09ddbbec763dc8ac42f4
--- /dev/null
+++ b/opentech/public/people/migrations/0004_funding.py
@@ -0,0 +1,34 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.11.8 on 2018-01-10 16:25
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+import django.db.models.deletion
+import modelcluster.fields
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('wagtailcore', '0040_page_draft_title'),
+        ('people', '0003_update_contact_information'),
+    ]
+
+    operations = [
+        migrations.CreateModel(
+            name='Funding',
+            fields=[
+                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+                ('sort_order', models.IntegerField(blank=True, editable=False, null=True)),
+                ('value', models.PositiveIntegerField()),
+                ('year', models.PositiveIntegerField()),
+                ('duration', models.PositiveIntegerField(help_text='In months')),
+                ('page', modelcluster.fields.ParentalKey(on_delete=django.db.models.deletion.CASCADE, related_name='funding', to='people.PersonPage')),
+                ('source', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='wagtailcore.Page')),
+            ],
+            options={
+                'ordering': ['sort_order'],
+                'abstract': False,
+            },
+        ),
+    ]
diff --git a/opentech/public/people/models.py b/opentech/public/people/models.py
index f002d9e4052d38a691d32652937d49af81627bbd..3155811a25173f4dee0538c20d493f4798c0fe25 100644
--- a/opentech/public/people/models.py
+++ b/opentech/public/people/models.py
@@ -13,6 +13,7 @@ from wagtail.wagtailadmin.edit_handlers import (
     FieldRowPanel,
     InlinePanel,
     MultiFieldPanel,
+    PageChooserPanel,
     StreamFieldPanel
 )
 from wagtail.wagtailimages.edit_handlers import ImageChooserPanel
@@ -71,6 +72,29 @@ class PersonPagePersonType(models.Model):
         return self.person_type.title
 
 
+class Funding(Orderable):
+    page = ParentalKey('PersonPage', related_name='funding')
+    value = models.PositiveIntegerField()
+    year = models.PositiveIntegerField()
+    duration = models.PositiveIntegerField(help_text='In months')
+    source = models.ForeignKey(
+        'wagtailcore.Page',
+        blank=True,
+        null=True,
+        on_delete=models.SET_NULL
+    )
+
+    panels = [
+        FieldRowPanel([
+            FieldPanel('year'),
+            FieldPanel('value'),
+            FieldPanel('duration'),
+        ]),
+        # This is stubbed as we need to be able to select from multiple
+        PageChooserPanel('source'),
+    ]
+
+
 class PersonContactInfomation(Orderable):
     methods = (
         ('irc', 'IRC'),
@@ -144,7 +168,8 @@ class PersonPage(BasePage):
         ], heading='Contact information'),
         InlinePanel('person_types', label='Person types'),
         FieldPanel('introduction'),
-        StreamFieldPanel('biography')
+        StreamFieldPanel('biography'),
+        InlinePanel('funding', label='Funding'),
     ]
 
 
diff --git a/opentech/public/utils/models.py b/opentech/public/utils/models.py
index c284e259039e465988ccc69ab39367e0d545867d..08d72f3bbfe463094b0e4eb5ad085cfcf498578b 100644
--- a/opentech/public/utils/models.py
+++ b/opentech/public/utils/models.py
@@ -23,7 +23,7 @@ class LinkFields(models.Model):
     """
 
     link_page = models.ForeignKey(
-        'wagtailcore.Page',
+        'wagtailcore.FieldPanelPage',
         blank=True,
         null=True,
         on_delete=models.SET_NULL