Skip to content
View PGupta-Git's full-sized avatar

Block or report PGupta-Git

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
PGupta-Git/README.md

Palash Gupta (B.Engg., MSc)

Senior Machine Learning & Data Engineer | Ex-IBM Senior Data Scientist | Open-Source Developer

With over 7 years of experience spanning enterprise product development at IBM (Watson Studio & AutoAI), high-performance sports analytics, and data transformation initiatives in the public sector, I specialise in architecting production-grade machine learning pipelines, high-throughput data ingestion systems, and containerised AI model deployments. I combine rigorous statistical research (peer-reviewed author) with machine learning engineering and cloud data platform best practices across modern cloud ecosystems (AWS, GCP, Azure, Databricks). As a Forward Deployed Engineer, I leverage my ability to rapidly prototype data systems and build supporting full-stack interfaces (React/TypeScript) to bridge the gap between raw data assets and business-critical AI applications.

  • Strengths: Machine Learning, Data Engineering, Cloud Data Architecture, MLOps & Containerisation, Rapid Prototyping, and Stakeholder Translation.
  • Domains: Big Tech, Retail/Commercial Analytics, Finance, Healthcare, Business, and Sports Analytics
  • Main Languages: Python, R, SQL, and TypeScript

Contact

How I Work (Engineering, Analysis & Product)

  • Define the Decision First: Begin by identifying the business decision, user workflow, and measurable KPI. The target interaction dictates the system architecture.
  • Design for Modularity & Speed: Build high-performance data pipelines and containerised cloud services alongside supporting full-stack prototypes to accelerate iteration.
  • Validate with Rigour: Establish robust baselines, define leakage-safe evaluation splits, and validate models using time-aware backtesting to ensure resilience against data drift.
  • Communicate Uncertainty: Translate model outputs into explainable decisions, calibrating probabilities and handling edge cases gracefully rather than presenting black-box predictions.

Open Source Contributions

Active contributor to popular open-source projects, libraries, and desktop utilities:

  • ageron/handson-mlp (Aurélien Géron's Hands-On Machine Learning book repository)
    • Full Polars Migration: Community Fork (polars_integration branch): Maintaining the community-endorsed Polars variant of all notebook exercises (19 chapters + appendices), with a dedicated tools_polars.ipynb added. The upstream author confirmed he won't maintain both variants but endorsed the fork (Issue #23). PR #41 (open, awaiting merge) adds a one-line README pointer from the upstream repo to this branch.
  • posit-dev/positron (Open-source data science IDE built on VS Code by Posit)
    • Console "Start Session" Button Spacing Fix (PR #14381merged as PR #14445): Fixed browser UA default padding on a native <button> used inline in emptyConsole.css, restoring flush baseline alignment with surrounding sentence text (fixes #14155). Positron's CI requires non-fork PRs; a maintainer applied the commits to a new PR with full credit.
    • Help Pane Find Widget: Enter Key Navigation (PR #14380merged as PR #14444): Wired plain Enter and Shift+Enter in the shared webview find widget to advance and reverse matches; removed a post-find focus redirect so the Find input retains focus after navigation (fixes #12921). Carried into a non-fork PR by a contributor with credited authorship.
  • can1357/oh-my-pi (AI coding harness for MCP server orchestration and provider routing)
    • OpenCode MCP Array Command & Environment Key Fix (PR #3181, fixes Issue #3180): Diagnosed and fixed two silent bugs in the OpenCode discovery provider: array-style command entries coerced to a comma-joined string causing ENOENT on spawn; environment key silently ignored in favour of env only. oh-my-pi requires vouched contributors, so the PR was closed and the owner implemented the equivalent fix (PR #3182, merged 2026-06-21), explicitly crediting the issue diagnosis.
    • Claude 4.6 Wire-ID Routing Fix on google-antigravity (PR #3068, fixes Issue #3067): Diagnosed two Claude 4.6 failure modes: (1) 404 from thinkingPair routing Sonnet thinking efforts to a non-existent -thinking wire ID the backend does not expose; (2) 400 from maxOutputTokens: 65536 exceeding the backend's 64000 cap. Authored a fix (PR #3068) that was closed in favor of the maintainer's follow-up fix commit 47cc464 (merged 2026-06-19), which explicitly credits "@PGupta-Git*"* in the commit message and includes a regression test named issue-3067-repro.test.ts.
    • Plan Approval Model Slider Fix (Issue #3554): Diagnosed an inverted model-retention bug in interactive-mode.ts where selecting the active plan-mode model on the approval slider caused the session to revert to the pre-plan default instead — root cause traced to cycle.currentIndex being compared against the selected tier when it should compare against the model #exitPlanMode would restore. The maintainer reproduced the issue, opened PR #3556 implementing the exact proposed fix, and merged it 2026-06-26; the fix PR cites "Fixes #3554".
    • Linux VTE/Ptyxis Desktop Notifications Fix (PR #3687, fixes Issue #3685): Diagnosed silent desktop notification failures on Linux VTE-based terminals (such as Ptyxis, GNOME Terminal, and Tilix) where terminal-capability fallbacks incorrectly resolved to BEL escape sequences instead of desktop notifications. Authored an initial fix (PR #3686) that was closed in favor of a D-Bus desktop notification integration implemented in PR #3687, which directly routes desktop-level notification prompts via D-Bus org.freedesktop.Notifications.
    • Temporary Model Switcher Thinking Level Override Fix (PR #5291 / PR #5297, fixes Issue #5290): Diagnosed a bug where the temporary model switcher (Alt+P or /switch) ignored custom role thinking level overrides from config.yml. Authored an initial fix (PR #5291) that was superseded by the merged robot/maintainer PR #5297 implementing the equivalent resolver logic and regression coverage.
  • andrewRowlinson/mplsoccer (Matplotlib-based soccer visualization library)
    • Speedometer & Gauge Charts (PR #118): Ported and integrated the Speedometer class into mplsoccer's API patterns (based on the original znstrider/speedo library; implements Issue #16), enabling highly customizable gauge and speedometer charts. PR open, pending maintainer review.
    • Curved Radar Text Labels (PR #120): Authored curved label support for radar charts along circular arcs using vector glyph paths (TextPath/PathPatch) and TextToPath metrics, resolving rounding jitter (fixes Issue #35). Supports multi-line curved labels and auto-flipping for bottom-half readability. PR open, all checks passing, pending maintainer review.
    • Wikipedia Rate-Limiting Fixes (PR #120): Resolved build failures in docstring gallery examples by standardizing Wikipedia thumbnail sizes and adding proper User-Agent headers to requests.
  • brilliantnz/flickernaut (GNOME Shell Extension adding custom Nautilus context menu entries)
    • Invalid Apps & Desktop Files Fix (PR #9): Resolved a critical bug causing extension crashes by implementing robust try-except error handling for invalid or missing desktop files (handling null Gio.DesktopAppInfo returns).
    • Duplicate Preferences Entries Fix (PR #9): Prevented application entries from appearing twice in the preferences dialog by ensuring the chooser respects the NoDisplay=true desktop configuration.
  • oseymour/ScraperFC (Python library for scraping soccer data from FBref, Understat, etc.)
    • FBref Team & Player ID Columns Regression (Issue #72): Diagnosed and reported a critical regression in the FBref scraper where Team ID and Player ID columns were no longer returned in dataframes, preventing correct record deduplication. The maintainer verified the issue and released v4.1.0 incorporating the requested fix.

Publications

Toolbox

💻 Core Languages & Runtime Environments

Python R SQL TypeScript Docker Git DVC GitHub Actions Kubernetes Cloud Run Cloud VM Vercel Positron VS Code PyCharm

📡 Distributed Compute, Cloud Storage & Data Orchestration

BigQuery Google Cloud Storage Amazon Redshift Amazon S3 Azure Synapse Azure Blob Storage Apache Airflow Prefect Dagster lakeFS dbt SQLMesh Databricks Snowflake Apache Spark

💾 Databases, ORMs & Local Dataframes

PostgreSQL Neon SQLAlchemy Drizzle ORM Oracle Polars pandas NumPy PyArrow narwhals Ibis DuckDB tidyverse

🧠 Machine Learning, Statistics & MLOps

scikit-learn CatBoost LightGBM PyTorch Lightning skorch Optuna PyMC statsmodels statsforecast scipy pingouin MLflow tidymodels mlr3 easystats

📊 Visualization, Web Apps & Reporting

Plotly plotnine Matplotlib Altair seaborn Great Tables D3.js Power BI Google Looker Studio

Shiny Dash React Next.js FastAPI Tailwind CSS

🧪 Testing, Quality & Reproducibility

pytest Vitest Hypothesis pyrefly Playwright Pandera Pointblank Dataframely Great Expectations uv renv Ruff Bun Quarto Copier Pydantic Jupyter marimo

Featured work

Project What it shows Links
Repeated sprint training trial (research) Statistical rigor, reproducible analysis artifacts Open Access Paper Published in Science and Medicine in Football

Data & Code Repo

R renv SQL tidyverse tidymodels mlr3 easystats
Drill Design App (production) Product thinking, data modelling, shipping a real app https://github.com/PGupta-Git/case-study-drill-design-app

https://www.drilldesignapp.com

Next.js React TypeScript Tailwind CSS PostgreSQL Vercel Bun Vitest Drizzle ORM Neon
Off-ball movement metric & player similarity (Premier League) Metric design from raw tracking data, dual-signal similarity framework, structural-null semantics, sensitivity checks, visual storytelling https://github.com/PGupta-Git/case-study-btla-framework

Python uv Polars NumPy scikit-learn SciPy PyTorch seaborn MLflow DVC Pandera
Player availability & decision support KPI redesign, feature engineering, time-aware validation, decision framing https://github.com/PGupta-Git/case-study-player-availability-decision-support

R renv SQL tidyverse tidymodels mlr3 easystats Python MLflow DVC Pandera
Tactical / recruitment / performance analysis Benchmarking, robustness checks, communication through visuals https://github.com/PGupta-Git/case-study-tactical-recruitment-performance-analysis

Python uv SQL pandas Polars scikit-learn PyTorch MLflow DVC Pandera
Open-data experimentation lab Public code: clean DS workflow, evaluation, visual storytelling https://github.com/PGupta-Git/open-football-experimentation-lab

Python uv SQL pandas Polars scikit-learn PyTorch

Note: case studies are anonymised (organisation names and private code/data are omitted).

Selected impact

  • Published a peer-reviewed parallel-arm RCT (Science and Medicine in Football, 2026) on repeated-sprint training protocols, using robust ANCOVA with sensitivity analysis across six fitness outcomes (see Paper and Data & Code Repo).
  • Designed a novel geometric metric (BtLA) from 25Hz optical tracking data to profile a player's off-ball movement between lines, with continuous passing-lane openness scoring and segment-aware smoothing (see BtLA Framework Case Study).
  • Built a dual-signal player similarity framework (cosine on movement shape + Euclidean on scaled level/volume) across a full season of Premier League event data, bridging tracking and event data paradigms (see BtLA Framework Case Study).
  • Built non-linear models on high-frequency biometric telemetry to separate signal from noise and predict failure-mode risk (injury-risk proxy; see Player Availability Case Study).
  • Engineered new "availability" features with domain experts, replacing legacy KPIs with more predictive signals (see Player Availability Case Study).
  • Built forecasting models and automated reporting workflows, saving ~15 hours/week and reducing data retrieval latency by ~30% (see Tactical/Recruitment Case Study).
  • Delivered analytical dashboards for tactical and recruitment decision-making (market sentiment, performance monitoring, opponent scouting; see Tactical/Recruitment Case Study).
  • Shipped a live production SaaS: Drill Design App, a full-stack Next.js / PostgreSQL (Neon) / Drizzle ORM application with billing, auth, and real users (see Case Study).
  • Led cross-functional delivery (Agile/Scrum) and bridged data engineering and non-technical stakeholders.

Pinned Loading

  1. Gupta_et_al_RST_Paper_Submission Gupta_et_al_RST_Paper_Submission Public

    Pragmatic parallel-arm RCT on repeated sprint training protocols (data + analysis scripts)

    R

  2. case-study-drill-design-app case-study-drill-design-app Public

    Public case study: Drill Design App (production)

  3. case-study-btla-framework case-study-btla-framework Public

    Case study: off-ball movement metric design and player similarity framework using Premier League tracking and event data

  4. case-study-player-availability-decision-support case-study-player-availability-decision-support Public

    Anonymized case study: availability KPI design, validation, and decision support

    1