diff --git a/back/backend/policy.py b/back/backend/policy.py
index 381405e..7af3281 100644
--- a/back/backend/policy.py
+++ b/back/backend/policy.py
@@ -45,7 +45,7 @@ general_section = Section(
 
 general_section.add_rule(
     title="Destination city check",
-    rule=lambda report, section: section.field.destination == "Timbuktu",
+    rule=lambda report, fields: fields['destination'] == "Timbuktu",
     rule_break_text="What did the cowboy say about Tim, his wild horse?"
 )
 
@@ -68,7 +68,7 @@ flight_section = Section(
 
 flight_section.add_rule(
     title="Airline fare pre-approval check",
-    rule=lambda report, section: section.fields.fare < 500, 
+    rule=lambda report, fields: fields['fare'] < 500, 
     rule_break_text="Fares cannot be more than $500"
 )
 
@@ -88,14 +88,14 @@ lodging_section = Section(
     }
 )
 
-def nightly_rate_check(report, section):
-    checkin_date = date(section.fields.checkin_date)
-    checkout_date = date(section.fields.checkout_date)
+def nightly_rate_check(report, fields):
+    checkin_date = date(fields['checkin_date'])
+    checkout_date = date(fields['checkout_date'])
     duration = checkout_date - checkin_date
-    return section.fields.cost <= duration * section.fields.rate
+    return fields['cost'] <= duration * fields['rate']
 
 lodging_section.add_rule(
-    title="",
+    title="Average nightly rate",
     rule=nightly_rate_check,
     rule_break_text="The average nightly rate cannot be more than the USGSA rate."
 )
@@ -108,14 +108,14 @@ transport_section = Section(
     title="Local Transportation",
     html_description="<p>How much did you spend on local transportation, in total?</p>",
     fields={
-        "duration": {"label": "How many days was your trip?", "field_type": "decimal"},
+        "duration": {"label": "How many days was your trip?", "field_type": "integer"},
         "cost": {"label": "Total cost", "field_type": "decimal"}
     }
 )
 
 transport_section.add_rule(
     title="Total cost check",
-    rule=lambda report, section: section.fields.cost <= section.fields.duration * 10,
+    rule=lambda report, fields: fields['cost'] <= fields['duration'] * 10,
     rule_break_text="Local transportation costs must be less than $10 per day, on average."
 )
 
@@ -136,7 +136,7 @@ per_diem_section = Section(
 
 per_diem_section.add_rule(
     title="Per Diem Cost Check",
-    rule=lambda report, section: section.fields.cost <= section.fields.duration * section.fields.rate,
+    rule=lambda report, fields: fields['cost'] <= fields['duration'] * fields['rate'],
     rule_break_text="The average cost per day for per diem expenses cannot be more than the rate specified by the USGSA."
 )
 
diff --git a/back/backend/views.py b/back/backend/views.py
index 04fc6dd..4445435 100644
--- a/back/backend/views.py
+++ b/back/backend/views.py
@@ -28,15 +28,31 @@ def get_sections(r_id):
     # create a dict of arrays for section
     section_set = {"sections": []}
     queryset = Section.objects.filter(report_id=r_id)
-    for i in queryset:
+    for index in range(len(queryset)):
+        i = queryset[index]
         data = {
             "id": i.id,
             "completed": i.completed,
             "title": i.title,
             "html_description": i.html_description,
+            "rule_violations": [],
         }
         # append the fields for corresponding section
         data.update(get_fields(i.id))
+        # process rules from the policy file if the section is completed
+        if i.completed:
+            rules = pol.sections[index].rules
+            for rule in rules:
+                try:
+                    named_fields = generate_named_fields_for_section(data['fields'])
+                    if not rule['rule'](data, named_fields):
+                        info = {
+                            "label": rule['title'],
+                            "rule_break_text": rule['rule_break_text'],
+                        }
+                        data['rule_violations'].append(info)
+                except Exception as e:
+                    print('Rule "{}" encountered an error. {}'.format(rule['title'], e))
         # append section to the array
         section_set["sections"].append(data.copy())
 
@@ -67,6 +83,14 @@ def get_fields(s_id):
     return field_set
 
 
+def generate_named_fields_for_section(fields):
+    result = {}
+    for field in fields:
+        key = field['field_name']
+        value = field['value']
+        result[key] = value
+    return result
+
 # API Endpoints
 @api_view(['POST'])
 def report(request):
diff --git a/back/db.sqlite3 b/back/db.sqlite3
index df940de..7617b83 100644
Binary files a/back/db.sqlite3 and b/back/db.sqlite3 differ