Skip to content
OnlyProjects
M.Sc · Information TechnologyFor educational purposes only
Code included

A Data-Engineering Pipeline with Quality Monitoring for TRAI Crowdsourced Mobile-Speed Data

From monthly TRAI MySpeed downloads to a validated PostgreSQL warehouse and dashboard, with every number checked twice

Mapped to your syllabusBharathiar University M.Sc CS 2023-24 · Project Work & Viva-Voce · Semester 4

Overview

1 min read

A Data-Engineering Pipeline with Quality Monitoring for TRAI Crowdsourced Mobile-Speed Data is an advanced M.Sc (IT) project that treats the regulator's public speed measurements the way a data team in industry would: as a monthly feed that must be landed, validated, modelled, monitored and published — automatically and repeatably.

TRAI's MySpeed app lets any mobile user in India run a speed test; the results are published as monthly downloadable files covering operator, licence service area (LSA), network technology, signal strength and download/upload speed. The data is large, messy and self-selecting — exactly the kind of input that breaks naive scripts. This project builds a pipeline that ingests each monthly file into an immutable landing zone, runs a rule-based validation stage (schema, ranges, duplicates, referential integrity), loads clean rows into a PostgreSQL star schema, and quarantines rejected rows with the rule that rejected them.

The pipeline is orchestrated by an Apache Airflow DAG supporting incremental loads and full monthly backfills, containerised with Docker, and tested on every push by GitHub Actions. A Streamlit dashboard answers the analytical questions — operator comparisons within an LSA, 4G/5G median trends month over month, and signal-versus-throughput behaviour — and every headline number is cross-checked in an independent R notebook, so the quality-monitoring story is part of the evidence.

The evaluation is measured, not asserted: ingestion throughput, rejection rates per rule, warehouse query latency (p50/p95) against direct CSV scans, and backfill runtime — reported with the commands that reproduce them.

Relevant for
Tamil Nadu
Level
Advanced · 24 weeks · team of 2
Common at
Bharathiar University, University of Madras
Updated
Nov 2026

Syllabus alignment

Bharathiar University · M.Sc CS 2023-24

Project Work & Viva-Voce · Semester 4 · 8 credits · 200 (project 100 + viva 50 + …)

Subjects this project applies
  • Data Science
  • Cloud
  • Web App Dev & Hosting
  • Data Mining Lab in R
  • Python programming
How it is evaluated

See your department's project guidelines.

Also fits: University of Madras PG CBCS.

What's in the box

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

Problem & synopsis

5 min read

Problem statement

TRAI's MySpeed programme produces one of the largest public collections of real user network experience in India, yet the monthly files are published as raw exports that cannot be queried, joined or trusted without substantial cleaning. Averages quoted in the press are computed by hand from single files, with no validation of malformed rows, no deduplication, and no record of what was thrown away.

There is a need for a reproducible data-engineering pipeline that (a) ingests every monthly file into an immutable landing zone, (b) applies explicit, auditable validation rules and quarantines rejects with reasons, (c) loads a dimensional model optimised for the real analytical questions (operator × LSA × technology × month), (d) runs on a schedule with idempotent incremental loads and backfills, and (e) measures itself — throughput, rejection rates, query latency — so the report can state the pipeline's behaviour with numbers instead of adjectives. Without such a pipeline, the dataset's analytical value is lost within days of each release, and no result produced from it can be reproduced.

Synopsis

Abstract

TRAI publishes monthly crowdsourced mobile-speed measurements from its MySpeed app — millions of rows describing what Indian users actually experience on each operator and technology. The data is public but raw: inconsistent headers, malformed rows, duplicate submissions and strong self-selection bias. This project designs and builds an end-to-end data-engineering pipeline that turns those files into a validated PostgreSQL warehouse and an analytical dashboard, with data-quality monitoring as a first-class component rather than an afterthought, and evaluates the pipeline itself with measured performance numbers.

Introduction

Regulators, operators and journalists quote average network speeds, but the underlying crowdsourced measurements are rarely analysed with engineering discipline. The interesting questions — does operator A really beat operator B in your LSA, are 5G medians rising faster than the marketing claims, does signal strength explain throughput — require months of files joined consistently and cleaned honestly. That is a data-engineering problem before it is an analytics problem, and it is precisely the gap between what the syllabus teaches (databases, data mining, cloud) and what industry expects (pipelines, tests, monitoring).

Existing system and gap

Typical student treatments of public datasets load a single CSV into a notebook, plot an average and stop. They have no schema discipline, no validation, no incremental processing, and no way to reproduce last month's number after the code changes. Industry practice — landing zones, dimensional warehouses, orchestration, CI and data-quality reports — is described in textbooks but almost never built by students end to end on real Indian public data. The gap this project fills: a complete, tested, reproducible pipeline on a genuinely messy national dataset, with the pipeline's own performance and rejection behaviour measured and reported.

Proposed system

  • Landing zone: each monthly TRAI file archived unmodified with checksums and a manifest.
  • Validation stage: declarative rules — column schema, value ranges (speeds, latency, signal), duplicate keys, LSA/operator code whitelists — routing clean rows forward and rejects to a quarantine table with rule identifiers.
  • Warehouse: a PostgreSQL star schema (fact_speed_test with date, operator, LSA and network dimensions) loaded incrementally per month, with idempotent, restartable loads.
  • Orchestration & CI: an Airflow DAG for nightly incremental loads and monthly backfills; Docker images; GitHub Actions running pytest and lint on every push.
  • Analytics: a Streamlit dashboard (operator-by-LSA comparison, technology trends, signal-vs-throughput scatter) plus an independent R notebook that recomputes every headline figure from the landing zone as a cross-check.

Feasibility study

  • Technical: PostgreSQL, Airflow, Docker and Streamlit are open source; one year of data is a few million rows — comfortably handled by a 16 GB laptop. The team has completed DBMS, data-mining-lab and cloud coursework that the stack directly extends.
  • Economic: zero licence cost; everything runs locally (Docker) or on a free-tier VM for the demo.
  • Operational: the pipeline is self-contained; the only external dependency is the TRAI download itself, which is archived in the landing zone so the demo never depends on the portal being up.

Objectives

  1. 01Design and implement a three-zone pipeline (landing → validated → warehouse) with an immutable landing zone, checksums and a load manifest for every TRAI MySpeed monthly file.
  2. 02Define a declarative validation rule set (schema, ranges, duplicates, code whitelists) and implement quarantine-with-reason storage for every rejected row.
  3. 03Model a PostgreSQL star schema — fact_speed_test with date, operator, LSA and network dimensions — justified against the dashboard's query patterns, and load it idempotently per month.
  4. 04Orchestrate incremental loads and full monthly backfills with an Apache Airflow DAG, containerised with Docker and tested by GitHub Actions on every push.
  5. 05Build a Streamlit dashboard answering operator-by-LSA comparison, technology trend and signal-vs-throughput questions, backed by pre-aggregated marts.
  6. 06Cross-check every headline number with an independent R notebook reading the landing zone, so no published figure depends on a single code path.
  7. 07Evaluate the pipeline with measured metrics — ingestion throughput, per-rule rejection rates, warehouse vs CSV query latency (p50/p95), backfill runtime — and report them with reproduction commands.

Scope

In scope

  • TRAI MySpeed monthly mobile-data exports (a rolling 12+ months) as the sole source.
  • Batch ingestion and validation; monthly incremental loads plus on-demand backfills.
  • Star-schema warehouse in PostgreSQL, Airflow orchestration, Docker packaging, GitHub Actions CI, Streamlit dashboard, R cross-check notebook.
  • Measured pipeline evaluation and a written dissertation.

Out of scope

  • Fixed-broadband exports and the app-side collection process — consumed as published, not modified.
  • Streaming ingestion (the source is monthly files; a batch design is the honest choice).
  • Statistical modelling beyond descriptive analytics and simple trend decomposition — prediction is future scope.
  • A production deployment with authentication/multi-tenancy; the demo runs locally or on a single VM.

Methodology

Process model: the project follows an incremental (iterative) engineering model — each zone of the pipeline is delivered as a working increment, reviewed against the guide, and hardened by the next increment. This suits a two-member team over 24 weeks because a thin end-to-end slice exists by week 8 and every later change is verified by an already-running test harness.

PhaseWeeksActivitiesDeliverable
1. Study & design1–3Survey data-engineering practice (Kimball dimensional modelling, data-quality dimensions); design zones, star schema and rule setDesign document + schema DDL
2. Landing zone4–6File archiving, checksums, manifest, first importerThin slice: file → landing → row count
3. Validation & quarantine7–10Rule engine, quarantine table, DQ report generator; pytest suite for rulesValidated loads + DQ report
4. Warehouse & loads11–14Star schema, idempotent monthly loads, incremental + backfill modesLoaded PostgreSQL warehouse
5. Orchestration & CI15–17Airflow DAG, Docker images, GitHub Actions (pytest, lint) on every pushScheduled pipeline
6. Analytics18–20Marts, Streamlit dashboard, R cross-check notebookDashboard + cross-check log
7. Evaluation & writing21–24Measured evaluation runs, results tables, dissertation, PPT, mock vivaFinal submission

Work division (team of 2): Member A owns landing/validation and CI; Member B owns the warehouse, orchestration and dashboard; both co-own the design document and the measured evaluation, and each member can demo every stage — the viva asks individuals, not teams.

Testing strategy: pytest unit tests for every validation rule (with malicious fixtures), integration tests running the loader against a disposable PostgreSQL container, idempotency tests (double-load = single-load), and dashboard acceptance checks against known months.

Architecture & tech stack

2 diagrams · 7 technologies · 2 min read

  • Python 3 (pandas, PyArrow)
  • PostgreSQL 15 (warehouse)
  • Apache Airflow (orchestration — industry-standard extra)
  • Docker + GitHub Actions (CI — industry-standard extras)
  • Streamlit (dashboard)
  • pytest (pipeline tests)
  • R (Data Mining Lab — independent cross-check of headline numbers)

The pipeline is organised as a directed flow through three zones, orchestrated end to end; every box is a tested unit.

flowchart LR
  M["TRAI MySpeed monthly downloads"] --> L["Landing zone: immutable files + checksums + manifest"]
  L --> V["Validation: schema, ranges, duplicates, code whitelists"]
  V -->|"clean rows"| T["Conform & load: star schema"]
  V -->|"rejects"| Q["Quarantine table + data-quality report"]
  T --> D[("PostgreSQL warehouse")]
  D --> A["Analytics marts: operator x LSA x month, technology trends"]
  A --> S["Streamlit dashboard"]
  A --> R["R cross-check notebook (independent recomputation)"]
  F["Airflow DAG: incremental + backfill"] -.orchestrates.-> V
  F -.orchestrates.-> T
  C["GitHub Actions: pytest + lint on every push"] -.builds & tests image.-> F
erDiagram
  DIM_DATE ||--o{ FACT_SPEED_TEST : keys
  DIM_OPERATOR ||--o{ FACT_SPEED_TEST : keys
  DIM_LSA ||--o{ FACT_SPEED_TEST : keys
  DIM_NETWORK ||--o{ FACT_SPEED_TEST : keys
  DQ_RESULT ||--o{ QUARANTINE_ROW : "groups rejects"

  FACT_SPEED_TEST {
    int test_id PK
    int date_id FK
    int operator_id FK
    int lsa_id FK
    int network_id FK
    real download_mbps
    real upload_mbps
    real latency_ms
    real signal_dbm
  }
  DIM_DATE {
    int date_id PK
    date cal_date
    string month_key
  }
  DIM_OPERATOR {
    int operator_id PK
    string operator_name
  }
  DIM_LSA {
    int lsa_id PK
    string lsa_name
  }
  DIM_NETWORK {
    int network_id PK
    string technology
  }
  DQ_RESULT {
    int run_id PK
    int rule_id
    string rule_name
    int rows_rejected
  }
  QUARANTINE_ROW {
    int row_id PK
    int run_id FK
    int rule_id
    string raw_payload
  }

Three decisions are worth defending in the viva. First, the landing zone is immutable — every analytical number can be recomputed from the original bytes, which is what makes the R cross-check meaningful. Second, validation precedes the warehouse: the fact table only ever contains rows that passed declared rules, and the DQ report records how many did not and why, so data quality is measured rather than assumed. Third, the warehouse is a star schema, not a normalised OLTP schema — the dashboard's questions (operator × LSA × month medians) are dimensional by nature, and the measured query-latency comparison against raw CSV scans is the evidence.

Modules

6 modules

  1. Module 01

    Landing zone & manifest

    Archives every monthly TRAI file unmodified with SHA-256 checksums, maintains a manifest of files, versions and load status, and refuses to overwrite raw bytes — the basis of reproducibility for every downstream number.

  2. Module 02

    Validation engine & quarantine

    Applies declarative rules (column schema, speed/latency/signal ranges, duplicate test keys, LSA and operator whitelists), routes clean rows forward, stores rejects with rule IDs in a quarantine table, and generates a per-run data-quality report with rejection rates per rule.

  3. Module 03

    Dimensional warehouse & loader

    Implements the PostgreSQL star schema with surrogate keys, an idempotent monthly loader supporting both incremental and full-backfill modes, and pre-aggregated marts (operator × LSA × month, technology × month) that the dashboard queries directly.

  4. Module 04

    Orchestration, containerisation & CI

    An Airflow DAG sequencing land → validate → load → mart refresh with retries and alerting on failure; Docker images for pipeline and dashboard; GitHub Actions running pytest, lint and an integration test against a disposable PostgreSQL container on every push.

  5. Module 05

    Dashboard & R cross-check

    Streamlit views: operator league table for a chosen LSA, technology trend lines with monthly medians and interquartile bands, signal-vs-throughput scatter, and drill-down to test counts; plus an independent R notebook that recomputes every headline figure straight from the landing zone.

  6. Module 06

    Measured evaluation & reporting

    Benchmark scripts that measure ingestion throughput (rows/second), per-rule rejection rates, warehouse query latency (p50/p95) against direct CSV scans over the same months, and backfill runtime; results land in the dissertation with the exact commands to reproduce them.

Slides

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

  1. Slide 1

    Data-Engineering Pipeline for TRAI Crowdsourced Mobile-Speed Data

  2. Slide 2

    The Data: TRAI MySpeed

  3. Slide 3

    Problem Statement

  4. Slide 4

    Existing vs Proposed

  5. Slide 5

    Objectives

  6. Slide 6

    Pipeline Architecture

  7. Slide 7

    Dimensional Model

  8. Slide 8

    Validation & Data Quality

  9. Slide 9

    Orchestration & CI

  10. Slide 10

    Dashboard & Cross-Check

  11. Slide 11

    Measured Evaluation

  12. Slide 12

    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 14 answered free · 11 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 data lake, a landing zone and a warehouse, and where do you use each?

    A data lake stores raw data in open formats for flexible later use; my landing zone is a small, disciplined lake that stores only TRAI's files unmodified with checksums. The warehouse is the opposite extreme: modelled, typed and query-optimised. The pipeline connects them — raw bytes preserved for recomputation, validated truth in the star schema for analytics.

  2. 02Concept

    Why a star schema instead of a fully normalised schema or a snowflake?

    The dashboard's questions — medians by operator, LSA, technology and month — are dimensional queries with fixed, small dimensions. A star schema puts one fact table against four narrow dimensions, so every dashboard query is a single join and the marts can pre-aggregate. A snowflake would add joins without saving meaningful space, and an OLTP-normalised design would push analysts into multi-join queries for no benefit.

  3. 03Concept

    What are data-quality dimensions, and which do your rules implement?

    Standard dimensions are completeness, validity, consistency, uniqueness and timeliness. My schema rules implement validity, range checks implement validity again at value level, duplicate detection implements uniqueness, code whitelists implement consistency against reference lists, and the load manifest implements timeliness by recording which months are present. The DQ report reports each rule's rejection count so every dimension is measured.

+11 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

8 steps · complete source code · unlocks with the project

Unlocks with the project · ₹2,000

8 steps · source code zip

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

Unlock for ₹2,000

READMEFIRST

284 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

284 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

283 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

283 words · ~1 min read

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

Unlock for ₹2,000

References

7 sources

  1. TRAI MySpeed — crowdsourced network measurement portal and monthly data downloads
  2. Telecom Regulatory Authority of India (TRAI) — official website and publications
  3. PostgreSQL 15 Documentation
  4. Apache Airflow Documentation
  5. pandas Documentation
  6. Kimball, R. & Ross, M., The Data Warehouse Toolkit: The Definitive Guide to Dimensional Modeling, 3rd ed., Wiley
  7. Reis, J. & Housley, P., Fundamentals of Data Engineering, O'Reilly, 2022

Cite this bundle

OnlyProjects. (2026). A Data-Engineering Pipeline with Quality Monitoring for TRAI Crowdsourced Mobile-Speed Data: M.Sc Information Technology project bundle [Educational resource]. https://onlyprojects.online/projects/msc-it-trai-myspeed-data-engineering-pipeline

Future scope

1 min read

  • Add a forecasting module (per-LSA monthly median speeds with prediction intervals) once twelve-plus months of validated history exist.
  • Join TRAI's quarterly Performance Indicator Reports to compare crowdsourced measurements against drive-test figures.
  • Replace batch loads with Change-Data-Capture-style incremental processing when the publisher offers finer-grained releases.
  • Package the warehouse and dashboard as a hosted demo with read-only credentials and usage analytics.
  • Generalise the validation engine into a configuration-driven library reusable for other government open-data feeds.

Keep browsing

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