Tampermonkey Automator

Role: Solo Developer Timeline: Ongoing (2024–Present) Platform: Browser (Chrome / Firefox / Edge)

A suite of Tampermonkey userscripts that eliminate repetitive manual workflows across three platforms used in clinical research: ClinSpark (trial management), Florence eBinder / Research Binders (electronic document signing), and Microsoft Teams (meeting attendance tracking). Each script injects a floating control panel into the host platform and automates multi-step operations that previously consumed hours of daily staff time. The Florence Automator logic has since been migrated into a standalone Manifest V3 browser extension.

The Problem

Clinical trial platforms require meticulous data entry for every subject visit: vital signs, lab results, eligibility checks, dosing records, and more. Each activity plan can involve dozens of form fields across multiple pages, and a single study day might require processing 20–50 subjects.

Platform Coverage

ClinSpark Automator

Targets the ClinSpark clinical trial management platform. Multiple specialized scripts handle different workflows:

  • Test Automator — full-featured script covering all study workflows (v3.8.7, ~1.9 MB)
  • ClinSpark Automator — production deployment covering routine study operations
  • Lab Automator — focused on lab sample collection and processing
  • Admin Automator — study setup, cohort configuration, and eligibility mapping
  • Build Procedure — procedure log activity plan builder
  • 20+ automated features per script; 85+ documented calculation methods in the shared methods library

Florence Automator

Targets Florence eBinder (researchbinders.com), a clinical document management platform used for electronic log book sign-offs.

  • Batch eLog signing: scans all log entries and signs them on behalf of a selected team member
  • Handles Angular CDK virtual scroll viewports — progressively scrolls and scans large entry lists
  • Status tracking per entry: pending, found, not found, duplicate
  • Progress panel with live scan count and stop control
  • Robust retry logic for dynamically loaded content and aria-busy states
  • Migrated into a Manifest V3 browser extension for managed install/update and Chrome Web Store distribution

Microsoft Teams Automator

Targets Microsoft Teams (teams.microsoft.com). Automates meeting attendance tracking during live sessions.

  • Polls the participant panel at a configurable interval and records each attendee's first-seen timestamp
  • Tracks join order (page order) alongside alphabetical name for flexible reporting
  • Floating GUI with log output, sortable participant list, and scan counter
  • Configurable keyboard shortcut to toggle the panel
  • Persists GUI visibility and scale preferences via localStorage

ClinSpark — Core Engine

Core Automation Engine

  • Floating control panel with start/pause/stop controls
  • State machine persisted across page reloads via localStorage
  • Configurable delays between actions for platform stability
  • Activity log panel showing real-time progress and errors
  • Draggable, collapsible UI with scalable dimensions

Form Automation

  • Automatic field population from collected data
  • Multi-step navigation: open form, fill fields, save, return
  • Handles dynamic form elements loaded via AJAX
  • Calculated fields: averages, medians, differences, BMI, QTcF
  • Protocol-specific edit checks and validation triggers

Barcode Integration

  • Subject identification via barcode scan input
  • Automatic subject lookup and context switching
  • Sample tracking with accession number generation
  • Informed consent barcode verification workflow

Method Library

  • 85+ documented calculation and validation methods for clinical data
  • Methods for vitals, ECG, lab panels, dosing checks, edit checks, and date windows
  • Reusable across different study protocols and shared across scripts
  • Markdown documentation and a JSON index for discovery and updates

Tech Stack

JavaScript (ES5/ES6) Tampermonkey DOM Manipulation localStorage MutationObserver GM_* APIs GM.openInTab GM.xmlHttpRequest Virtual Scroll (CDK)

Screenshots

Challenges & Solutions

Outcomes & Impact

Lessons Learned

Future Improvements