Skip to content
OnlyProjects
B.Tech / B.E. · Data ScienceFor educational purposes only
Code included

MGNREGA Employment Analytics: ETL, Data Warehouse and Dashboard

A data-quality-gated pipeline from NREGA progress reports to a decision-ready warehouse and dashboard

Mapped to your syllabusVTU 2022 Scheme (OBE/CBCS) · BCS685 Major Project Phase-I · Semester 6

Overview

1 min read

MGNREGA Employment Analytics is a data-engineering project that turns the Mahatma Gandhi National Rural Employment Guarantee Scheme's public progress reports into a clean, queryable data warehouse and an interactive dashboard. MGNREGA guarantees up to 100 days of paid work per rural household every year, and the Ministry of Rural Development publishes monthly progress data — person-days generated, households demanded and worked, wages paid, works taken up — for every state, district and financial year through its NIC public data portal.

The catch is that the reports are published for humans, not for analysis: one file per state × district × financial-year × indicator combination, with merged headers, Indian digit grouping, - and NA placeholders, lakh/crore units and district names that change over time. Answering a simple question — which districts met less than half of the work demanded last year? — takes days of clicking and pasting into spreadsheets.

This project builds a three-stage pipeline: an ingestion layer that registers report extracts downloaded from the portal; a quality layer whose data-quality gates (schema, type, completeness, referential and outlier checks) quarantine bad rows with reasons; and a MySQL warehouse in a star schema at district-month-indicator grain. A Streamlit dashboard (an industry-standard Python dashboarding extra on top of the VTU-taught Python/MySQL stack) gives state and district drilldowns, and a scikit-learn linear-regression module forecasts next-quarter person-days. Four team members each own one module end to end.

Relevant for
Karnataka
Level
Intermediate · 14 weeks · team of 4
Common at
Visvesvaraya Technological University, Dr. A.P.J. Abdul Kalam Technical University, Anna University, Chennai
Updated
Oct 2026

Syllabus alignment

VTU · 2022 Scheme (OBE/CBCS)

BCS685 · Major Project Phase-I · Semester 6 · 2 credits · CIE 100

Subjects this project applies
  • BCS403 DBMS (MySQL)
  • BCS602 Machine Learning (scikit-learn)
  • BCSL606 Machine Learning Laboratory (Python)
  • Statistics / R for data analysis
How it is evaluated

Team: individual or group ≤ 4

report : presentation : Q&A = 50 : 25 : 25; report marks identical for all batch-mates; SEE by two university examiners

Also fits: AKTU NEP scheme (3rd yr 2024-25, 4th yr 2025-26), Anna University Regulation 2021, JNTUH R22.

What's in the box

11 parts · 5 free · 2 previewed · 4 unlock for ₹2,000

Problem & synopsis

5 min read

Problem statement

MGNREGA's performance data is public, but it is not usable: it lives in hundreds of separately downloaded portal reports that each need manual cleaning, and every analyst rebuilds that cleaning from scratch in personal spreadsheets. Indian number formats, -/NA placeholders, unit columns and renamed districts make silent errors easy — a wrong sum can turn a performing district into a failing one, and nothing records which rows were altered or dropped.

There is a need for a reproducible data pipeline that ingests the raw report extracts exactly as downloaded, applies explicit and documented data-quality gates before any analysis, keeps rejected rows in a quarantine with reasons, loads a properly modelled warehouse at district-month grain, and answers real questions — demand met, person-day trends, wage outflow, seasonal patterns, next-quarter forecast — through a dashboard any stakeholder can open.

Synopsis

Abstract

This project designs and builds an end-to-end analytics pipeline for MGNREGA, India's largest public works programme. The pipeline extracts progress reports from the Ministry of Rural Development's public data portal, cleans and validates them through a catalogue of data-quality gates, loads a MySQL star-schema warehouse, and presents the results in a Streamlit dashboard with a lightweight forecasting module. The deliverable is a reproducible system: one command refreshes the warehouse from raw files, and a data-quality scorecard reports exactly how much of the source data passed each gate.

Introduction

MGNREGA generates more than 250 crore person-days of employment every year across all states. Researchers, journalists, district officials and students who want to study its performance must work with the NIC public data portal, which lets users generate and download progress reports for any state, district and financial year. The data is complete and authoritative — but it is fragmented into hundreds of downloadable report combinations, and every file needs manual cleaning before it can be compared with another.

Existing System

  • Analysts generate reports one state or district at a time and paste them into Excel workbooks.
  • Cleaning is repeated by hand for every new financial year; there is no shared, versioned dataset.
  • Numbers use mixed formats (12,345, 12,345.67, -, NA), and district renames (e.g. after bifurcation) silently split a district's time series into two.
  • Limitations: no single source of truth, no audit trail of what was changed, no record of rows dropped, and dashboards built on one person's spreadsheet cannot be reproduced.

Proposed System

  • An ingestion module that treats every downloaded extract as an immutable raw file with metadata (source report, financial year, download date) stored in a file inventory.
  • A data-quality gate engine: schema check, type parsing, completeness threshold, referential checks (district must belong to its state) and range/outlier gates (e.g. person-days per household above 365 are impossible). Rows that fail go to a quarantine table with a reason code; a scorecard summarises pass rates per file.
  • A MySQL warehouse modelled as a star schema: fact_employment at the district × month × indicator grain, with dim_state, dim_district (with validity dates to handle renames), dim_date and dim_indicator.
  • A Streamlit dashboard: state and district drilldowns, demand-met ratio, wage and person-day trends, district league tables, CSV export.
  • A forecast module using scikit-learn linear regression on monthly person-days, with train/test split and reported MAE.

Feasibility Study

  • Technical: Python, pandas and MySQL are all part of the VTU curriculum (BCS403 DBMS, BCSL606 ML Lab); Streamlit and Plotly are free, documented extras. The bundle ships with downloaded extracts for three financial years, so the demo runs fully offline.
  • Economic: ₹0 — open data, open-source stack, a laptop with 8 GB RAM is enough for district-level data.
  • Operational: the pipeline is a set of commands documented in the README; refreshing a financial year is a single command, so even a non-programmer can maintain it with the user guide.

Objectives

  1. 01Study the NIC MGNREGA public data portal and catalogue the report layouts, indicators and formats it publishes.
  2. 02Build an ingestion module that registers raw report extracts with metadata so every downstream number can be traced to a source file.
  3. 03Design and implement five data-quality gates (schema, type parsing, completeness, referential, outlier) with a quarantine store and a per-file scorecard.
  4. 04Model and load a MySQL star-schema warehouse at district × month × indicator grain, handling renamed districts with validity-dated dimension rows.
  5. 05Build a Streamlit dashboard with state/district drilldowns, demand-met ratio, trends and CSV export.
  6. 06Implement and evaluate a linear-regression forecast of monthly person-days with a reported MAE on a held-out test set.
  7. 07Write reproducible ETL tests (pytest) that reconcile warehouse totals against the original source reports.

Scope

In scope

  • MGNREGA monthly progress indicators published on the NIC public data portal (person-days, households demanded/worked/completed-100-days, wages, works) for 5 selected states × all their districts × 3 financial years.
  • Batch ingestion of locally downloaded extracts (CSV/Excel saved from the portal); no login, no scraping of authenticated pages.
  • Data-quality gates, quarantine with reason codes, DQ scorecard report.
  • MySQL star schema, idempotent reloads, SQL views for dashboard queries.
  • Streamlit dashboard (state/district/trend/league-table views) and a linear-regression forecast with MAE.

Out of scope (v1)

  • Work-level (individual muster roll) data and beneficiary-level records — only aggregated monthly indicators.
  • Live scheduled crawling of the portal; refreshes run on saved extracts.
  • Real-time streaming, geospatial maps beyond simple state outlines, and role-based user management.
  • Machine-learning models beyond linear regression (kept deliberately simple so results are explainable in the viva).

Methodology

The project follows the Incremental SDLC model, mapped onto VTU's two-phase Major Project: Phase-I (BCS685, Sem 6) delivers analysis and design; Phase-II (BCS786, Sem 7) delivers the working, tested system. Each increment ends with something runnable to show the guide.

PhaseWeeksActivitiesDeliverable
Phase-I: study1–2Literature survey (data warehousing, data-quality frameworks, MGNREGA studies); portal walkthrough; indicator catalogueSurvey notes, problem statement
Phase-I: design3–5Requirements; star-schema design; DQ rule catalogue; wireframes; Phase-I reportBCS685 report + schema
Increment 16–8Ingestion module + raw inventory; sample extracts collectedFiles registered end to end
Increment 29–10DQ gate engine + quarantine + scorecard; warehouse schema and loadersClean warehouse for 1 state
Increment 311–12Full load (5 states, 3 FYs); dashboard views; forecast moduleWorking dashboard
Testing & docs13–14pytest reconciliation tests, UAT with sample questions, final report and demo prepBCS786 submission

Testing approach: reconciliation tests that sum warehouse facts and compare against the original portal report totals; unit tests for each gate (bad file in → expected quarantine reason); boundary tests for number parsing; a small UAT script of ten analysis questions the dashboard must answer correctly.

Architecture & tech stack

2 diagrams · 7 technologies · 2 min read

  • Python
  • pandas
  • MySQL
  • Streamlit
  • Plotly
  • scikit-learn
  • pytest

The system is a layered batch-analytics architecture.

  1. Ingestion layer — a Python module that reads report extracts saved from the NIC portal, records each file in a raw_files inventory (path, financial year, report type, checksum) and copies it into an immutable raw zone.
  2. Quality layer — the DQ gate engine parses files into typed tables, applies the five gates, and routes rows either to the clean zone or to a quarantine table with a reason code; a scorecard view reports pass rates per file and per gate.
  3. Data tier — MySQL holds staging, quarantine and the star-schema warehouse; loaders are idempotent (a file re-loaded never duplicates facts).
  4. Analytics & presentation layer — SQL views aggregate facts for the Streamlit dashboard (Plotly charts, drilldowns, CSV export) and feed the scikit-learn forecast module.
flowchart TD
  A["MGNREGA public data portal<br/>(dynamic reports, CSV/Excel extracts)"] --> B["Ingestion layer<br/>register + checksum + raw zone"]
  B --> C["Parser + normaliser<br/>Indian numbers, units, month columns"]
  C --> D{"Data-quality gates<br/>schema · type · completeness · referential · outlier"}
  D -->|pass| E["Clean zone"]
  D -->|fail| Q["Quarantine store<br/>row + reason code"]
  E --> F[("MySQL warehouse<br/>star schema")]
  Q --> S["DQ scorecard report"]
  F --> G["SQL views + aggregations"]
  G --> H["Streamlit dashboard<br/>drilldowns, league tables, CSV export"]
  G --> I["Forecast module<br/>linear regression, MAE report"]

Warehouse (star schema)

erDiagram
  DIM_STATE ||--o{ DIM_DISTRICT : contains
  DIM_DISTRICT ||--o{ FACT_EMPLOYMENT : "is measured for"
  DIM_DATE ||--o{ FACT_EMPLOYMENT : "keys"
  DIM_INDICATOR ||--o{ FACT_EMPLOYMENT : "keys"
  RAW_FILE ||--o{ DQ_CHECK_LOG : "is checked by"

  FACT_EMPLOYMENT {
    int sk_district FK
    int sk_date FK
    int sk_indicator FK
    int raw_file_id FK
    decimal value
    string unit
  }
  DIM_DISTRICT {
    int sk_district PK
    string district_name
    int sk_state FK
    date valid_from
    date valid_to
  }
  DIM_INDICATOR {
    int sk_indicator PK
    string indicator_name
    string unit
  }
  DQ_CHECK_LOG {
    int check_id PK
    int raw_file_id FK
    string gate_name
    string status
    string reason_code
  }

The grain of fact_employment is one indicator value for one district in one month of one financial year. Every fact row carries the raw_file_id it came from, so any number on the dashboard can be traced back to the exact downloaded report — the audit trail the spreadsheet workflow never had.

Modules

4 modules

  1. Module 01

    Ingestion & Source Registry (Member 1)

    Owns everything between the portal download and the raw zone: a connector that reads CSV/Excel extracts saved from the NIC portal, detects the report layout, extracts metadata (state, district level, financial year, indicator set), computes a checksum, stores the file immutably and registers it in the raw-file inventory table. Re-downloads and duplicates are detected via checksum, so the warehouse never double-counts a report.

  2. Module 02

    Data-Quality Gate Engine (Member 2)

    Owns parsing and validation: normalises Indian digit grouping, -/NA placeholders and unit columns into typed values, then applies the five gates — schema, type, completeness (reject files above a null threshold), referential (district belongs to state; month exists in dim_date) and outlier (range checks such as person-days per household ≤ 365). Failed rows go to quarantine with a reason code; the module also generates the per-file DQ scorecard that the report and viva use as evidence.

  3. Module 03

    Warehouse Modelling & Load (Member 3)

    Owns the MySQL design and loaders: creates the star schema (fact_employment, dim_state, dim_district with validity dates for renamed districts, dim_date, dim_indicator), implements idempotent load procedures keyed on file checksum, builds indexes and the aggregate SQL views used by the dashboard, and writes the reconciliation queries that prove warehouse totals match the original portal reports.

  4. Module 04

    Dashboard & Forecast (Member 4)

    Owns the Streamlit application and the scikit-learn forecast: state and district selector pages, demand-met ratio and person-day trend charts in Plotly, a district league table with search, CSV export of any filtered view, and a linear-regression forecast of monthly person-days per selected district with a train/test split and reported MAE. Also owns the forecast evaluation notebook shown in the viva.

Slides

13 slides · titles free · bullets, notes and the .pptx unlock

  1. Slide 1

    MGNREGA Employment Analytics

  2. Slide 2

    Context: MGNREGA and its open data

  3. Slide 3

    Problem Statement

  4. Slide 4

    Existing vs Proposed System

  5. Slide 5

    Objectives

  6. Slide 6

    Technology Stack

  7. Slide 7

    System Architecture

  8. Slide 8

    Warehouse Design (Star Schema)

  9. Slide 9

    Data-Quality Gates

  10. Slide 10

    Modules & Individual Contribution

  11. Slide 11

    Testing & Results

  12. Slide 12

    Demo

  13. Slide 13

    Conclusion & Future Scope

Bullets, speaker notes and the .pptx · ₹2,000

The titles above are the real outline. The rest is what you present from.

Unlock for ₹2,000

Viva questions & answers

3 of 16 answered free · 13 unlock

Read each answer, close it, and say it in your own words. Your viva will ask. Now you'll know.

  1. 01Concept

    What is the difference between a database and a data warehouse, and why did this project need a warehouse?

    A database is optimised for day-to-day transactions on current records, while a warehouse is optimised for read-heavy analysis over historical, aggregated data. Our workload is analytical — comparing districts and years across many indicators — so we model a star schema in MySQL with a fact table and dimensions, which makes comparisons fast and queries simple instead of joining many normalised tables every time.

  2. 02Concept

    Explain ETL. Where exactly does your pipeline transform data?

    ETL is Extract, Transform, Load. We extract report extracts saved from the NIC portal into an immutable raw zone, transform them in the quality layer — parsing Indian number formats, unit columns, placeholder values and applying the five data-quality gates — and then load the clean rows into the MySQL star schema. The transformation logic lives entirely in the gate engine, so it is testable and documented in one place.

  3. 03Concept

    What is a data-quality gate and why did you build gates instead of just cleaning with pandas?

    A data-quality gate is an explicit, named validation rule that every row must pass before entering the warehouse, with failures recorded rather than silently fixed. Cleaning with pandas is invisible — no one later knows which rows were changed or dropped. Our gates (schema, type, completeness, referential, outlier) produce a quarantine table with reason codes and a scorecard, so the cleaning itself becomes auditable evidence in the report.

+13 more questions, with answers

Try the free ones out loud first. Your examiner will not accept “it's in the PPT”.

Source code & how to run

7 steps · complete source code · unlocks with the project

Unlocks with the project · ₹2,000

7 steps · source code zip

Prerequisites, install, seed data and tests, written for demo day. Plus the complete source.

Unlock for ₹2,000

READMEFIRST

251 words · unlocks with the project

What to change before it goes anywhere near a submission. Skipping it is how the demo fails live.

Unlocks with the project · ₹2,000

251 words · ~1 min read

The checklist of things to rename, re-seed and re-think so the project reads as yours.

Unlock for ₹2,000

Instructions

357 words · unlocks with the project

How to study it, adapt it and walk your examiner through it, step by step.

Unlocks with the project · ₹2,000

357 words · ~2 min read

Report structure, formatting rules and the submission checklist your department will grade.

Unlock for ₹2,000

References

8 sources

  1. MGNREGA Public Data Portal — dynamic progress reports (NIC / Ministry of Rural Development)
  2. Ministry of Rural Development, Government of India — official portal
  3. India Data Portal — MGNREGA dataset package (district-wise analysis)
  4. MySQL 8.0 Reference Manual
  5. pandas documentation
  6. scikit-learn documentation (linear regression, model evaluation)
  7. Streamlit documentation
  8. Ralph Kimball & Margy Ross, The Data Warehouse Toolkit: The Definitive Guide to Dimensional Modeling, 3rd ed., Wiley

Cite this bundle

OnlyProjects. (2026). MGNREGA Employment Analytics: ETL, Data Warehouse and Dashboard: B.Tech / B.E. Data Science project bundle [Educational resource]. https://onlyprojects.online/projects/btech-ds-mgnrega-employment-data-warehouse

Future scope

1 min read

  • Scheduling refreshes with a task scheduler or Apache Airflow for multi-year unattended loads.
  • Geospatial layer — district choropleth maps of demand-met ratio using GeoJSON boundaries.
  • Better forecasts — seasonal (SARIMA) or gradient-boosted models compared against the linear baseline.
  • Public deployment — hosting the dashboard so panchayat researchers can use it directly.
  • Cross-scheme analytics — joining with PM-Kisan or housing-scheme datasets in the same warehouse to study welfare overlap.

Keep browsing

Same degree, same syllabus slot, different idea. Pick the one your guide will actually approve.

B.Tech / B.E.Code included

Aerospace / Aeronautical

Low-Speed Open-Circuit Wind Tunnel with Force Balance for Aerofoil Lift-Drag Measurement

Build a subsonic test tunnel on a student budget, then trace lift and drag on a 3D-printed NACA 0012 against theory

  • C / Arduino Uno (industry-standard extra) — HX711 load-cell and serial logging firmware
  • Python (NumPy, Matplotlib) — calibration, force coefficients and plots
  • MATLAB / Scilab — thin-airfoil theory overlay and regression
  • +4

intermediate14 wk4 students