Project Info
Inspiration
Clinical trials are the bridge between scientific discovery and real-world cures -- but that bridge, currently, is slow, fragile, and expensive. While studying how trials operate, I was struck by how much time and money go into one repetitive task: verifying and reviewing data by hand. Monitors spend weeks cross-checking PDFs, lab reports, and CRFs. It a process that consumes up to 30% of a trial’s cost and delays life-saving medicines from reaching patients. I wanted to change that. My inspiration was simple: what if an AI agent could handle this repetitive verification work -- allowing researchers to focus on science, safety, and innovation instead? By automating Source Data Verification and Review, I aim to help trials move faster, cut costs, save more lives, and invite more innovation into the clinical space -- so that life-saving treatments reach people sooner.
What it does
This platform automates and simplifies clinical trial monitoring by connecting directly to the technologies already used in research — such as Veeva Vault, Medidata Rave, and EHR/EDC systems — eliminating the need to copy or migrate data across tools. It includes a Protocol Analyzer, powered by Fetch.ai and Gemini, which reads the clinical trial protocol and automatically generates a Monitoring Plan based on the study’s endpoints, schedule of activities, and key compliance requirements. Once attached to a study, this plan enables autonomous monitoring by AI agents that follow the defined schedule, retrieve data, and execute tasks automatically. The platform also supports Source Data Verification (SDV) on demand — extracting relevant information from CRFs, eCRFs, or connected EHR/EDC systems, gaining access to source documents, and cross-referencing the two to verify accuracy. When discrepancies are detected, it flags them for review and can take predefined corrective actions — providing faster, smarter, and more integrated clinical trial monitoring.
How we built it
I built the platform from the ground up as a full-stack web application designed to integrate seamlessly with existing clinical-trial systems. The frontend was built with React.js, CSS, and JavaScript, giving it a modern UI and smooth transitions. The login and sign-up flow includes both standard authentication and SSO integrations with Google, Veeva Vault, and Medidata Rave (mocks), enabling secure, role-based access for sponsors and investigators. The backend uses Flask (Python) for the API layer, with REST endpoints that manage user sessions, study creation, and file intake. Each uploaded or fetched file—protocols, eSource PDFs, and CRFs—is stored securely in a database (ChromaDB). I integrated Fetch.ai agents and Gemini and Claude models to power the Protocol Analyzer. The analyzer parses trial protocols, identifies endpoints, study arms, inclusion/exclusion criteria, and the schedule of activities, then automatically generates a Monitoring Plan tailored to the study design. Along with this I built a monitor agent that is fluent in clinical trail processes, protocols, addressing schedule of events, and more. Once attached to a study, the monitoring plan serves as a guide for autonomous AI agents. These agents connect to linked EDC or EHR systems through APIs, retrieve CRF and source data, and perform Source Data Verification when triggered. The verification engine uses a mix of document parsing, entity matching, and cross-referencing logic to detect inconsistencies between eCRFs and source data. When discrepancies are found, the system flags them in real time and can trigger notifications or corrective actions, all recorded in an audit trail.
Challenges we ran into
One of the biggest challenges I faced was finding usable data. Real clinical trial data is highly protected for privacy and compliance reasons, and the public examples I found were incomplete, inconsistent, or missing key components like full protocols, CRFs, or source documents. To move forward, I had to study what “complete” datasets look like in real trials — learning the structure and expectations for each type of document: protocols, CRFs, eCRFs, source data, and monitoring reports. From there, I handcrafted realistic mock studies from scratch — writing detailed protocols, building CRF templates, and fabricating example source data that reflected how actual investigators document patient visits. This process gave me a much deeper understanding of clinical data standards and what monitors actually look for, which shaped how I designed the platform’s data models, extraction logic, and AI validation pipeline.
Accomplishments we're proud of
I built a fully functional AI agent capable of autonomously understanding clinical trial protocols, generating monitoring plans, and verifying study data against its sources. I designed a complete workflow that connects directly to existing EDC platforms like Veeva Vault and Medidata Rave, eliminating the need to manually move data between systems — a real bottleneck in current clinical operations. I also developed a Protocol Analyzer and Monitor agnet that interprets endpoints, inclusion criteria, and schedules of activities, translating them into actionable monitoring tasks for AI agents. The system demonstrates how agentic AI can lead to a future where clinical trials are faster, more connected, and more efficient — cutting costs, reducing human error, and accelerating the delivery of life-saving treatments.
What we learned
I learned how complex and interconnected the clinical trial process really is — and how much of it depends on accurate, traceable data. Even small verification errors or delays can cost millions of dollars and slow down access to life-saving treatments. Through building this project, I gained a deep understanding of how protocols, CRFs, and source data interact, and how crucial monitoring is for maintaining data integrity and patient safety. Most importantly, I learned how AI and automation can help reduce this burden — not by replacing people, but by empowering researchers to focus on innovation, science, and patient outcomes instead of repetitive manual work.
What's next
I plan to build and fine-tune my own AI models trained specifically on clinical trial documents — including protocols, CRFs, monitoring plans, and site communications — to make the system smarter and more context-aware. I want to make the platform bulletproof and production-ready, capable of handling real-world variability in data formats, terminologies, and regulatory requirements. Future versions will focus on improving autonomous agent reliability, secure integrations with EHR/EDC APIs, and deeper alignment with CDISC and GCP standards. The ultimate goal is to create a robust, trusted AI monitoring assistant that can operate safely in live trials — saving time, cutting costs, and pushing the boundaries of what’s possible in clinical research.
Analysis
View
Metric
- 40
Figures cover GitHub contributors during the hackathon window. A co-authored commit counts in full for each author, so per-member totals add up to more than the whole-team figures.
Technology
- CSSIn code
- FlaskIn code
- HTMLIn code
- JavaScriptIn code
- PythonIn code
- ReactIn code
- Google GeminiClaimed
6 of 7 appear in the indexed code. 1 claimed on Devpost could not be matched to code, which may simply mean the tool leaves no trace in the repository.
AI coding agents
No AI coding agent signals were found in this repository.
Detected from committed agent config files and commit authorship. Absence of a signal is not proof an agent was unused.
Codebase size
Source size
787 KB
Source files
78
Counts recognized source files only; vendored directories, binaries and lockfiles are excluded, so this is smaller than the repository on disk.
Repository
sulabhkatila/MonitorMachine
146 files · 4.8 MB · @ 7fd9773
Structure
Interface
12 files · 8%Screens, components and styles rendered to the user.
Application logic
49 files · 34%Domain rules, services and shared utilities.
+3 more
Supporting
Layers are inferred from where files sit in the tree, not from reading the code. A project that names its directories unconventionally will read oddly here — open the file browser to check anything the diagram implies.
Languages
- JavaScript40%
- Python35%
- Markdown14%
- CSS10%
- HTML1%
Share of indexed source by file size. Binary and vendored files are excluded.
Dependencies
sdvsdr/package.json
npm · 9- @testing-library/dom
- @testing-library/jest-dom
- @testing-library/react
- @testing-library/user-event
- react
- react-dom
- react-router-dom
- react-scripts
- web-vitals
backend/requirements.txt
pypi · 6- chromadb
- Flask
- pandas
- PyPDF2
- python-dotenv
- Werkzeug
agents2/requirements.txt
pypi · 4- google-genai
- python-dotenv
- typing-extensions
- uagents
mock_trial_site/backend/requirements.txt
pypi · 3- Flask
- flask-cors
- Werkzeug
mock_trial_site/frontend/package.json
npm · 3- react
- react-dom
- react-scripts
Declared in the repository’s manifests at the indexed commit. A declared package is not proof it is used, and runtime dependencies are listed first.
Feature verification
File storage of protocols, eSource PDFs, and CRFs in ChromaDBVerified
Each uploaded or fetched file is stored securely in a database (ChromaDB)
Claimed on Devposthigh confidencebackend/app.py:5— Imports chromadb, creates PersistentClient/CloudClient, and the /upload endpoint stores parsed file content in a Chroma collectionbackend/app.py:192— upload_file() stores the processed document into the ChromaDB collection
Flask REST API backend managing user sessions, study creation, and file intakeVerified
The backend uses Flask (Python) for the API layer, with REST endpoints that manage user sessions, study creation, and file intake
Claimed on Devposthigh confidencebackend/app.py:25— Flask app defined with CORS, and routes like /api/studies, /upload, /api/users implement session/study/file endpointsbackend/app.py:419— create_study() endpoint implements study creation
React.js frontend with modern UI and transitionsVerified
The frontend was built with React.js, CSS, and JavaScript, giving it a modern UI and smooth transitions
Claimed on Devposthigh confidencesdvsdr/package.json— React app dependency and project structuresdvsdr/src/App.js— Main React app component
SSO login integrations with Google, Veeva Vault, and Medidata Rave (mocked)Verified
Login/sign-up includes SSO integrations with Google, Veeva Vault, and Medidata Rave (mocks)
Claimed on Devposthigh confidencesdvsdr/src/components/SSOModals.js:7— GoogleSSOModal component simulates Google SSO flowsdvsdr/src/components/SSOModals.js:253— VeeraSSOModal component simulates Veeva Vault SSO flowsdvsdr/src/components/SSOModals.js:481— MedidataSSOModal component simulates Medidata SSO flowsdvsdr/src/components/LoginIsland.js:1— Imports and renders the SSO modal components as part of login flow
Protocol Analyzer using Gemini and Fetch.ai (uagents) to parse protocols and generate a Monitoring PlanCode-supported
A Protocol Analyzer, powered by Fetch.ai and Gemini, reads the clinical trial protocol and automatically generates a Monitoring Plan
Claimed on Devpostmedium confidenceagents2/clinical_trial_agent.py:8— Uses google.genai (Gemini) client and uagents Agent/Protocol for protocol analysisagents2/trial_monitor_agent.py:88— System prompt lists Monitoring Plan Generation as a supported request type, calling Geminibackend/app.py:502— The /api/analyze-protocol endpoint does not call the Gemini/Fetch.ai agent at all; it returns a hardcoded, simulated analysis_result dict, so the agent code exists but is not wired end-to-end into the app
Role-based access for sponsors and investigatorsCode-supported
SSO integrations enable secure, role-based access for sponsors and investigators
Claimed on Devpostlow confidencebackend/models.py— User model likely includes role/company fields used by get_users_by_role/get_users_by_company endpoints in backend/app.pybackend/app.py:320— get_users_by_company_endpoint suggests company/role based user segregation, but no access-control enforcement (authorization checks) was found gating routes by role
Source Data Verification (SDV): extract CRF/eCRF data and cross-reference against source documents to flag discrepanciesCode-supported
The platform supports SDV on demand, extracting relevant information from CRFs/eCRFs, cross-referencing with source documents, and flagging discrepancies
Claimed on Devpostmedium confidenceagents2/patient_data_validator_agent.py:57— Agent system prompt defines patient/data verification and comparison logic via Gemini promptagents2/trial_monitor_agent.py:93— Response format includes discrepancy_data_points, verified/unverified/missing data points from a Data Verification Request, but this is LLM-prompted text generation rather than a deterministic entity-matching engine as claimed
Autonomous AI agents that follow the monitoring plan schedule and execute tasks automaticallyClaimed only
Once attached to a study, the monitoring plan enables autonomous monitoring by AI agents that follow the defined schedule, retrieve data, and execute tasks automatically
Claimed on Devpostmedium confidenceClaude model integration powering the Protocol AnalyzerClaimed only
I integrated Fetch.ai agents and Gemini and Claude models to power the Protocol Analyzer
Claimed on Devposthigh confidenceDiscrepancy flagging with predefined corrective actions and audit trailClaimed only
When discrepancies are detected, the system flags them for review and can take predefined corrective actions, all recorded in an audit trail
Claimed on Devpostmedium confidenceIntegration with Veeva Vault, Medidata Rave, and EHR/EDC systems to retrieve CRF and source data via APIClaimed only
Connects directly to Veeva Vault, Medidata Rave, and EHR/EDC systems, agents retrieve CRF and source data through linked EDC/EHR APIs
Claimed on Devposthigh confidencePrototype built for CalHacks 12.0, funded by a travel grantBlocked
Project for Calhacks 12.0. Made possible by travel Grant of $500 provided by Saint Joseph's University of New York.
Claimed on readmelow confidence
An AI agent derived these features from the project’s Devpost page and readme, then searched the code for each one. Verified features are backed by cited code; claimed-only features had no supporting code, which is not by itself proof a feature is missing.
Export this project's context (description, README, evidence, key source files) to chat with an AI agent elsewhere.
