All Portfolio Projects
Python · Core · Individual project

InsurancePY Core — Standalone

£99.00
One-off · 12 months access · 50 bonus pts

UK motor-claims FNOL reconciliation pipeline. Process claim notifications through the cover-rule × incident matrix every motor insurer runs. Instructor-reviewed submission, reviewer feedback within 10 working days.

Projects in this bundle

Project 1 · Financial Services (Insurance)

InsurancePY Core — Motor Claims Reconciliation

200 pts

## The scenario You have joined **CubedNet Insurance**, a fictional UK motor underwriter, as a junior data analyst on the Claims team. About half of CubedNet's policies are sourced through aggregators (Compare the Market, Confused.com style), a quarter direct, the rest through brokers. Every month, a CSV of **First Notification of Loss (FNOL) events** lands on your desk — each FNOL is one report from a policyholder: a collision, a stolen car, a cracked windscreen, vandalism, flood. Your manager has asked you to build a monthly claims reconciliation report that joins each FNOL to its policy (which carries the cover type and excess), looks up the appropriate payment rule from `cover_rules.csv`, computes the payable amount (`estimate × multiplier − excess`), aggregates by cover type, and flags audit-failing FNOLs. ## Deliverables A Python project that runs end-to-end with `python insurancepy_report.py` and produces two output CSVs: `cover_summary.csv` (one row per cover type with FNOL counts and total payable) and `flagged_fnols.csv` (one row per audit-failing FNOL with `flag_type` ∈ {`uncategorised_incident`, `backward_dates`, `missing_estimate`, `unknown_policy`}). **Stdlib only.** No pandas, no numpy. ## Cover-rule lookup Build a `(cover_type, incident_type) → rule` dict ONCE outside the FNOL loop. Linear scanning `cover_rules.csv` for every FNOL is a fail. If `is_payable = N`: payable amount is `0`. Still COUNT the FNOL — non-payable is not an error. Otherwise: `payable = estimate × payment_multiplier`. If `excess_applies = Y`, subtract policy's `excess_pence` (floor at 0). ## Acceptance criteria (summary) Runs in one command · stdlib only · both output CSVs correct · bad rows logged · incident types cleaned before lookup · cover-rule lookup is a real dict (no linear scan) · ≥3 named functions with docstrings · PEP 8 compliant · ≥8 conventional commits. Full brief and dataset orientation appear inside the lesson once enrolled.

Re-launch members

Re-launch prices on every course, live cohort and portfolio project — until 1 July.Browse offers →