Research
Indian Parliamentary Data
Multi-vendor speech and translation evaluation followed by a recoverable end-to-end pipeline for parliamentary records, campaign audio, and structured analysis data.
- Contribution
- Tool benchmarking at Studio Lab · End-to-end data-pipeline engineering at Princeton
- Setting
- CU Boulder Studio Lab and Princeton University · Separate paid appointments
- Status
- Princeton appointment concluded · May 2026
Project evidence
- 40+ GB
- 2014 and 2019 campaign audio processed after multi-vendor tool evaluation
- Multi-decade
- Lok Sabha and Rajya Sabha records collected for research
- Thousands
- PDF statements parsed and mapped to standardized ministry names
Architecture
How the system is structured
Each step shows the job it does and the technical decision behind it.
- 01
Tool evaluation
Speech and translation services are compared against the needs of the research workflow before they become pipeline dependencies.
Implementation details
At Studio Lab, I set up WER-oriented comparisons across Deepgram, Google Speech-to-Text, Amazon Transcribe, and Azure Speech, plus translation comparisons across Google, AWS, and Azure services.
- 02
Archive scraping
Dynamic parliamentary pages and documents become a recoverable source collection.
Implementation details
At Princeton, I built the Selenium scraping logic, handled pagination, and persisted progress in SQLite so long collection runs could resume.
- 03
End-to-end orchestration
Audio, page metadata, and documents move through one inspectable research workflow.
Implementation details
The workflow coordinates source capture, speech and translation processing, PDF text extraction, and intermediate artifacts instead of relying on disconnected one-off scripts.
- 04
Data structuring
Inconsistent records become formats that researchers can inspect and analyze.
Implementation details
PyMuPDF extraction, metadata normalization, and fuzzy ministry-name mapping produce structured outputs for downstream analysis.
- 05
Recovery and review
A failed stage can restart without discarding completed work or hiding transformation decisions.
Implementation details
Saved state, intermediate outputs, and reviewable mappings keep processing recoverable and normalization decisions auditable.
The challenge
Indian political archives span dynamic web pages, long audio recordings, PDFs, and inconsistent institutional names. The work had two distinct phases: first determining which speech and translation tools fit the research workflow, then engineering the collection and processing pipeline end to end.
Studio Lab: evaluation phase
At CU Boulder’s Studio Lab, my primary work was comparative research. I designed word-error-rate evaluations across Deepgram, Google Speech-to-Text, Amazon Transcribe, and Azure Speech, then set up parallel translation comparisons across Google Cloud Translation, Amazon Translate, and Azure Translator. I also researched configuration and language-adaptation options for political names and domain-specific vocabulary.
The goal was not to promote one vendor. It was to understand how standard tools behaved on the project’s material and identify which components fit the workflow.
Princeton: engineering phase
Under the later Princeton appointment, I built the scraping logic and orchestrated the workflow end to end. That included dynamic Parliament Digital Library pagination, resumable SQLite state, speech and translation processing for more than 40 GB of 2014 and 2019 campaign audio, PDF text extraction with PyMuPDF, and structured outputs for further analysis.
I parsed thousands of parliamentary statements and used fuzzy matching to map inconsistent ministry names into a standardized research representation. Checkpoints and intermediate artifacts made long-running jobs restartable and kept transformations open to review.
Engineering decisions
- Evaluate interchangeable services before embedding one vendor into the research workflow.
- Persist collection state so interrupted sessions can resume near the failure rather than restarting.
- Keep raw source material, intermediate text, and normalized outputs distinct so transformations can be inspected.
- Treat source text and fuzzy matching as assistive normalization inputs that still need review, not unquestioned ground truth.
- Separate the campaign-audio corpus from the parliamentary-document corpus so scale and date claims are not merged.
Research context
The evaluation work began under a paid CU Boulder Studio Lab appointment from January 21 through April 13, 2024. After that appointment ended, I continued collaborating on the research. Princeton later paid me directly under a separate appointment beginning January 15, 2025 for the end-to-end engineering phase; that appointment concluded in May 2026. The roles are listed separately because the employers, appointments, and contribution phases were distinct even though the research project continued across them.
Technologies
Python · Selenium · SQLite · AWS · Google Cloud · Azure · Deepgram · PyMuPDF