Resume

Jakub Sobolewski

I build quality by testing. I started in R/Shiny and now work across the full stack, as comfortable in React and TypeScript on the front end as in Python and FastAPI on the back. Testing is the constant. Because I lead with TDD and BDD, moving into React and Python wasn’t a jump, just the same discipline with different tools. I write plenty of code with AI now, and acceptance and unit tests keep it honest, so I can move fast without dreading over whether the output actually works. My focus these days is technical quality across teams and building full-stack apps with AI-infused features.

Industry Experience

Now

Appsilon

2021-04 → present

Career progression:

  • Staff Engineer (2025-07 → present) — technical leader in projects and ensuring technical quality across the whole Appsilon tech team, spanning ~20 projects and ~60 tech team members.
  • Senior R/Shiny Developer (2023-07 → 2025-07) - technical leader in projects, mentoring other developers, and teaching test automation internally.
  • R/Shiny Developer (2021-04 → 2023-07) - team member in R/Shiny projects.

Projects:

Now

Appsilon Quality Test

internal initiative, 2025-07 → present

One-person team, Full Stack Developer

  • Assessing the technical quality of Appsilon projects to highlight risks that may impact projects’ success. Collection of metrics for C-level reporting.
  • Running a quarterly technical-health review across the 60-person Appsilon tech team.
  • Refined the process from human-driven to self-service via a more detailed questionnaire and a dedicated app (React + CopilotKit + FastAPI + PydanticAI).
  • The app implements:
    • Automatic AI-assisted draft reviews of surveys including projects’ historical data.
    • AI-assistant for intra-project and cross-project reviews.
    • MCP server (FastMCP) to interact with app data via external chat apps (Claude Desktop). MCP server interacts with the app data via a REST API.
    • Slack integration for scheduled survey reminders and survey completion notifications.
  • Tested with pytest (backend) and Playwright + MSWJS (frontend).
Now

A global pharmaceutical company

2024-06 → present

Tech Leader, 5-person team, Full Stack Developer

Led development of multiple AI-enabled applications with a team of software and data engineers.

  • AI-powered pharmacovigilance platform (React + FastAPI). Surfaces issues across case reports for manufactured drugs. AI-assisted chat interface for querying and summarizing data across reports. Agentic code built with PydanticAI. AI-agent integrated with PostgreSQL and MongoDB. AI-agent evaluation (Pydantic Evals) consists of a golden set collected from business experts, evaluation report is created on schedule on production dataset. Per user feedback, compiling data together now takes hours instead of weeks. Tested with pytest (backend) and Playwright + MSWJS (frontend).

  • Clinical data quality platform (React + FastAPI). Monitors data quality across 2 clinical studies with custom ECharts visualizations. Combines SQL-based validation with AI-assisted analysis to identify potential data issues (binary classification), support review workflows, and enable natural-language querying of study data. AI-agent evaluation (Pydantic Evals) consists of verifying whether AI classification complies to human classification of potential data issues. AI-agents integrated with PostgreSQL and MongoDB. Built agentic backend components with PydanticAI. Comprehensive backend test suites using pytest (backend) and Playwright + MSWJS (frontend).

  • Internal analytics portal (React + FastAPI). Developed internal applications for discovering analytics products and reports and for managing content submissions, improving visibility of analytics teams’ work across the organization.

  • Clinical data quality monitoring app (R/Shiny). Built an interactive dashboard for monitoring clinical data quality metrics (3 studies) with Apache ECharts visualizations. Developed the application outside-in using Behavior-Driven Development (BDD) with Cucumber acceptance tests. The application has been used as part of the team’s (~10 people) regular data review process for over two years with no reported production defects since launch.

2025

Jazz Pharmaceuticals

2024-06 → 2025-06

Tech Leader, 2-person team, R/Shiny Developer

  • JazzAIR Shiny apps framework. Took over the framework from an internal team. Delivered a framework that ~15 developers across 6 clinical studies use to build Shiny apps for analysis of ADaM clinical datasets; ~20 apps built on it to date. Improvements I drove with the team cut the time to deliver an analytics module/page from ~2 weeks to ~2 days.
  • Worked with business experts and developers (users) on the direction of the framework.
  • Presented the test automation and development approach at PHUSE EU Connect 2025 Hamburg
2024

Health Policy Analysis

2023-08 → 2024-06

Tech Leader, R/Shiny Developer

  • Built a framework for defining and implementing modeling Scenarios, driven by automated testing (unit, module, acceptance) to verify business logic.
  • Made the modeling Scenarios and their business logic verifiable with Cucumber acceptance tests whose outcomes are tables showing how each Scenario affects the data — so business experts can see the logic works exactly as intended. Previously, correctness wasn’t guaranteed and had to be checked by hand through the app UI.
  • Replaced manual Excel export/reupload with persistent in-app session storage using Pins on Posit Connect, saving time previously lost to external download/upload for state management; improved data-retrieval speed with Pins and DuckDB.
  • Refactored a complex health scenario-modeling Shiny app for an Australian government health agency from {golem} to {rhino}, making it enterprise-ready.
  • Modularized the codebase, set up continuous integration, refactored the UI/UX for database views and Scenario creation, and delivered personalized R/Shiny training to the client team.
  • Case study: https://www.appsilon.com/case-studies/improving-health-scenario-modeling-with-rhino
2023

A global pharmaceutical company

2021-05 → 2023-08

Tech Leader, R/Shiny Developer

2021

A bioinformatics analytics company

2021-05

Team member, R/Shiny Developer

  • Performance analysis of the genomics app; proposed which parts to speed up and how; prepared a list of practices to improve codebase quality.
  • Highlight: reduced initial loading time from 2 min to 45 sec.
2021

A geospatial monitoring company

2021-05

Team member, R/Shiny Developer

  • Implemented a provided design into an existing app.
  • Development of a custom, map-based visualization of geospatial data with Leaflet.
2021

A non-profit research organization

2021-05

Team member, R/Shiny Developer

  • Gathered socio-economic data for building a model to help understand hate crimes in the US.
  • Highlight: built an easily extendable {targets} pipeline producing a single ML-ready dataset.
2021

A global aerospace and defense company

2021-07

Team member, R/Shiny Developer

  • Consulting on best practices for working with databases in R.
2021

A multinational industrial gases company

2021-05

Team member, R/Shiny Developer

  • Built a POC from a provided dataset with specific visualization and control requirements.
  • Custom visualizations in ECharts.
  • Highlight: the anonymized app was presented to another client and led to a contract.
2021

ING Tech Poland

Junior Risk Modeling Specialist

2020-09 → 2021

  • Operational risk, model development division.
  • Development and maintenance of models implemented in R and SAS.
  • R Shiny model diagnostic tools.
  • Streamlined multiple modeling processes by refactoring and packaging an existing R codebase.
2020

Allianz Partners

Junior Actuarial Analyst

2019-07 → 2020-07

  • Insurance pricing models: GLM, Random Forests, ElasticNet.
  • Created a prototype frequency modeling framework based on interactive RMarkdown documents — later reimplemented into a production system.
  • Process automation: data quality assessment, pre-processing, analysis.
  • Developed a Shiny data analysis tool.
2018

Nordcurrent

Junior C++/Objective-C Developer

2018-07 → 2018-10

  • Implemented gameplay logic. Multiplatform software (Mac, iOS, Windows).

Research Experience

2017

Warsaw University of Technology, Solid State Ionics Division

Laboratory Assistant

Summer 2017

  • Lab help in research on conductive glasses.
  • Assembly of prototype power cells.

Education

2020

M.Sc., Applied Physics

Data Mining and Interdisciplinary Modeling

2019 → 2020

  • Warsaw University of Technology, Physics in Economy and Social Sciences Division.
  • Thesis: Data mining of information about suicides in Poland.
  • Subjects: machine learning, statistics, complex systems, agent-based modeling, signal analysis.
2019

B.Sc., Applied Physics

Computer Physics

2015 → 2019

  • Warsaw University of Technology, Physics of Complex Systems Division.
  • Thesis: Creation of an applet for visualizing complex networks with community structure.
  • Subjects: programming laboratory equipment, Monte Carlo simulations, electronics.

Writing

  • Author of an ongoing blog on automated testing (since 2023), covering TDD, BDD, and testing practices across R/Shiny and full-stack work. jakubsobolewski.com/blog

Talks

All talks centered on testing, TDD, and BDD.

  • Behavior-Driven Development with Cucumber for R — useR! 2025. From vague requirement to working code: collaborating with stakeholders, writing Gherkin scenarios, and executing them with Cucumber for R.
  • Shiny Test-Driven Development — ShinyConf 2024 and useR! 2024. Inside-out unit tests, outside-in acceptance tests, and the loop connecting them.

Open Source Projects

cucumber

R
  • BDD framework for R: write Gherkin scenarios and execute them as tests.
  • Subject of my useR! 2025 talk.
  • GitHub: github.com/jakubsob/cucumber

muttest

R
  • Mutation testing for R: measures test-suite strength by checking whether tests catch deliberately introduced code changes.
  • GitHub: github.com/jakubsob/muttest