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
- Email: palashcscs@outlook.com
- LinkedIn: in/pgds
- GitHub: PGupta-Git
- 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.
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.ipynbadded. 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.
- Full Polars Migration: Community Fork (polars_integration branch): Maintaining the community-endorsed Polars variant of all notebook exercises (19 chapters + appendices), with a dedicated
- posit-dev/positron (Open-source data science IDE built on VS Code by Posit)
- Console "Start Session" Button Spacing Fix (PR #14381 → merged as PR #14445): Fixed browser UA default padding on a native
<button>used inline inemptyConsole.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 #14380 → merged 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.
- Console "Start Session" Button Spacing Fix (PR #14381 → merged as PR #14445): Fixed browser UA default padding on a native
- 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
commandentries coerced to a comma-joined string causingENOENTon spawn;environmentkey silently ignored in favour ofenvonly. 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
thinkingPairrouting Sonnet thinking efforts to a non-existent-thinkingwire ID the backend does not expose; (2) 400 frommaxOutputTokens: 65536exceeding the backend's 64000 cap. Authored a fix (PR #3068) that was closed in favor of the maintainer's follow-up fix commit47cc464(merged 2026-06-19), which explicitly credits "@PGupta-Git*"* in the commit message and includes a regression test namedissue-3067-repro.test.ts. - Plan Approval Model Slider Fix (Issue #3554): Diagnosed an inverted model-retention bug in
interactive-mode.tswhere selecting the active plan-mode model on the approval slider caused the session to revert to the pre-plan default instead — root cause traced tocycle.currentIndexbeing compared against the selected tier when it should compare against the model#exitPlanModewould 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+Por/switch) ignored custom role thinking level overrides fromconfig.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.
- 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
- andrewRowlinson/mplsoccer (Matplotlib-based soccer visualization library)
- Speedometer & Gauge Charts (PR #118): Ported and integrated the
Speedometerclass 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) andTextToPathmetrics, 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.
- Speedometer & Gauge Charts (PR #118): Ported and integrated the
- 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-excepterror handling for invalid or missing desktop files (handling nullGio.DesktopAppInforeturns). - Duplicate Preferences Entries Fix (PR #9): Prevented application entries from appearing twice in the preferences dialog by ensuring the chooser respects the
NoDisplay=truedesktop configuration.
- Invalid Apps & Desktop Files Fix (PR #9): Resolved a critical bug causing extension crashes by implementing robust
- 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.0incorporating the requested fix.
- 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
- Published Article: A pragmatic, parallel-arm, randomised trial on the effects of two repeated-sprint training protocols on fitness outcomes in semi-professional male soccer players: preliminary report (Science and Medicine in Football, 2026) | Data & Code Repository
- ORCID: https://orcid.org/0009-0000-0172-4009
| 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 |
| 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 |
| 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 |
| Player availability & decision support | KPI redesign, feature engineering, time-aware validation, decision framing | https://github.com/PGupta-Git/case-study-player-availability-decision-support |
| Tactical / recruitment / performance analysis | Benchmarking, robustness checks, communication through visuals | https://github.com/PGupta-Git/case-study-tactical-recruitment-performance-analysis |
| Open-data experimentation lab | Public code: clean DS workflow, evaluation, visual storytelling | https://github.com/PGupta-Git/open-football-experimentation-lab |
Note: case studies are anonymised (organisation names and private code/data are omitted).
- 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.



