For organisations with technical teams

R development that survives production

I support technical teams with Shiny applications, R packages, data pipelines and deployment. With tests, reproducible environments and a handover that leaves your team able to carry on without me.

Selected clients

  • AthlyticZ
  • IQTIG
  • International pharmaceutical group

Services

I take on self-contained work packages as readily as the ongoing development of existing applications, working closely with your own developers.

Shiny applications

Modularised Shiny apps that stay fast even with large data volumes and heavy computation. From the initial architecture through reactivity design and performance work to test coverage with shinytest2.

R package development

Reusable internal packages instead of copied scripts: clean interfaces, documentation with roxygen2, unit tests with testthat and input validation with checkmate.

Reporting with Quarto & R Markdown

Reproducible reports in Word, PDF and HTML, at scale and under strict layout requirements. With officer and flextable, even demanding corporate design rules can be reproduced exactly.

Data pipelines & ETL

Reproducible workflows with targets that only recompute what has actually changed. Plus data validation, incremental updates and parallelisation once the data gets big.

APIs with plumber

Exposing R code as a REST API that your other systems can call, with authentication, error handling and containerisation.

Deployment & operations

The step from “runs on my machine” to running in production. On Posit infrastructure I help with Workbench, Connect and Package Manager, from rollout to day-to-day operation. Without Posit, Docker, ShinyProxy with role-based access control, renv and CI/CD pipelines in your cloud environment do the same job.

References from technical projects

Automatically generated Word tables from the national quality report
Healthcare

Automated reporting system

Around 2,000 formatted Word tables are produced by a reproducible pipeline built on targets, officer and flextable.

“Building the entire pipeline in R takes work off the shoulders of IQTIG staff, considerably reduces the scope for error and, thanks to clear and straightforward programming logic, gives us a maintainable and durable solution for years to come.”

Dr Jens Meier

Project lead, IQTIG

Read the case study
Web interface for recording and analysing measurement data in the lab
Pharma & biotech

Interactive lab data platform

A Shiny application for high-throughput experiments with an audit trail that evaluates measurement data and generates robot-ready worklists.

“Thanks to Stefan's deep knowledge of R and R Shiny we were able to automate complex processes and edge cases efficiently.”

Product Owner

International pharmaceutical group · translated from German

Read the case study

Some engagements are too short for a case study. For an insurance group I took a Shiny application that had grown over the years, turned it into an R package with golem and brought it into production with Docker, all within a month.

How I work & quality standards

What I deliver has to keep running long after I have left the project. That is why these points are always part of the deal.

  • Reproducible environments: renv for package versions, Docker for the runtime. A build that passes today still passes in two years.
  • Tests where they earn their keep: testthat for the logic, shinytest2 for the interface, checkmate for incoming data. High coverage is not a goal in itself. Tests go where bugs would stay hidden for a long time and then get expensive.
  • CI/CD from day one: build, tests and deployment run automatically via GitHub Actions. That turns a release into routine.
  • Code other people can read: readability matters more to me than elegance. Your team should be able to pick the code up without doing archaeology first.
  • Documentation and handover: technical documentation, a walkthrough for your team and a clearly defined state at the end of the project.
  • Code review & mentoring: on request in an advisory role too, for example on architecture decisions, in reviews, or while building up R know-how in the team.

Technical stack

The tools I work with, grouped by the job they do in a project.

R ecosystem

The core of the work: apps, packages, reports, pipelines and LLM integration.

Shiny R Packages Quarto R Markdown plumber tidyverse data.table officeverse targets testthat shinytest2 checkmate ellmer

Deployment & infrastructure

Everything it takes for a solution to run reliably and reproducibly in production, in your own data centre, in the cloud or on Posit infrastructure.

Posit Workbench Posit Connect Posit Package Manager ShinyProxy Docker renv Cloud infrastructure GitHub Actions CI/CD pipelines Git

Web & data technologies

For connecting to existing systems, building custom interfaces and working with databases.

JavaScript HTML CSS SQL PostgreSQL MySQL DuckDB RESTful APIs XML

Working together

The points procurement and project leads tend to want settled first.

Type of contract

  • Fixed-scope contract for self-contained work packages with a defined deliverable
  • Retainer with a fixed monthly hour allowance for ongoing support and development
  • Time-and-materials contract for support over a defined period
  • Contracting through your staffing provider is possible

Availability

  • Current capacity on request
  • Starting at short notice is often possible
  • Single work packages as well as longer-term support

Ways of working

  • Usually remote
  • On-site meetings by arrangement, for example at project kick-off
  • Work happens in your repositories and your review process

Terms

  • Billed on a day-rate basis
  • A concrete quote after a short briefing
  • An NDA before you share project details is possible at any time

I regularly work in environments with sensitive health and business data. If you have particular requirements around data storage, approval processes or documentation, we settle those before the project starts.

Frequently asked questions

What is your team working on right now?

Give me a short description of what you have in mind, where it stands and the constraints around it. I will tell you whether I am the right person for it, and if I am, send you a concrete quote.