Conflict of Interest (COI) Detection System
The Waldur proposal module includes an automated Conflict of Interest detection system that identifies potential conflicts between reviewers and proposals. This ensures fair and unbiased peer review processes.
Architecture Overview
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | |
Detection Algorithms
The system runs three detection algorithms for each reviewer-proposal pair:
1. Named Personnel Detection
Checks if the reviewer is named in the proposal team. This is considered a real conflict that requires automatic recusal.
Match criteria:
- User ID match (most reliable)
- ORCID identifier match
- Email address match
- Fuzzy name match (threshold: 90% similarity)
- Alternative names match
2. Institutional Affiliation Detection
Identifies conflicts based on organizational affiliations between reviewers and applicant institutions.
Detection rules:
| Scenario | COI Type | Severity |
|---|---|---|
| Current same institution | INST_SAME |
Real |
| Former institution (within lookback) | INST_FORMER |
Apparent |
| Same department | INST_DEPT |
Apparent |
3. Co-authorship Detection
Analyzes shared publications between reviewers and proposal team members.
Matching logic:
- Get reviewer's publications within the lookback period
- Extract coauthors from each publication
- Compare against proposal team members using:
- ORCID matching (most reliable)
- Fuzzy name matching (threshold: 85%)
Severity determination:
- Recent co-authorship (last year) + 3+ papers → Real conflict
- Older co-authorship or fewer papers → Apparent conflict
COI Types
| Type Code | Description | Severity |
|---|---|---|
ROLE_NAMED |
Reviewer is named in proposal personnel | Real |
INST_SAME |
Same current institution as applicant | Real |
INST_FORMER |
Former institution overlap within lookback | Apparent |
INST_DEPT |
Same department affiliation | Apparent |
COAUTH_RECENT |
Recent co-authored papers | Apparent |
COAUTH_OLD |
Older co-authored papers | Potential |
FIN_DIRECT |
Direct financial interest | Real |
REL_FAMILY |
Family relationship | Real |
REL_MENTOR |
Mentor/mentee relationship | Real |
REL_SUPERVISOR |
Supervisor/supervisee relationship | Real |
COLLAB_ACTIVE |
Active collaboration | Real |
COLLAB_GRANT |
Shared grant funding | Apparent |
REL_EDITORIAL |
Editorial relationship | Apparent |
COMPET |
Competitive relationship | Apparent |
ROLE_CONF |
Conference organizer relationship | Apparent |
INST_CONSORT |
Consortium membership | Potential |
CONF_ATTEND |
Conference participation | Potential |
SOC_MEMBER |
Professional society membership | Potential |
Severity Levels
| Level | Description | Action Required |
|---|---|---|
| Real | Must recuse from review | Reviewer cannot participate |
| Apparent | Requires management | May proceed with management plan |
| Potential | Disclosure only | Document and monitor |
Status Workflow
1 2 3 4 5 6 7 8 9 10 11 | |
Status Descriptions
| Status | Description | Use Case |
|---|---|---|
| PENDING | Awaiting manager review | Initial state for all detected conflicts |
| DISMISSED | Not a valid conflict | False positive or outdated information |
| WAIVED | Allowed with management plan | Conflicts where reviewer may proceed with mitigation |
| RECUSED | Reviewer removed from assignment | Serious conflicts requiring removal |
Configuration
Each call can have its own COI detection configuration via CallCOIConfiguration:
1 2 3 4 5 6 7 8 9 10 11 12 | |
Invitation Proposal Disclosure Levels
The invitation_proposal_disclosure setting controls what proposal information reviewers see when receiving invitations:
| Level | Description | Use Case |
|---|---|---|
titles_only |
Only proposal titles shown | Maximum confidentiality |
titles_and_summaries |
Titles and project summaries | Balanced approach |
full_details |
Complete proposal details | Full transparency |
This helps reviewers identify potential conflicts before accepting invitations.
Data Sources
The detection system uses data from multiple sources:
Reviewer Data
1 2 3 4 5 | |
Proposal Data
1 2 3 4 5 | |
API Endpoints
Trigger COI Detection
1 | |
Creates a COIDetectionJob and queues background processing.
View Conflicts for a Call
1 | |
Returns all detected conflicts for the call.
Manage Individual Conflicts
1 2 3 | |
Background Processing
COI detection runs as a Celery background task to handle large reviewer pools:
1 2 3 4 5 6 7 8 | |
Job States
| State | Description |
|---|---|
PENDING |
Job created, waiting for worker |
RUNNING |
Detection in progress |
COMPLETED |
All pairs processed successfully |
FAILED |
Error occurred during processing |
CANCELLED |
Job cancelled by user |
Progress Tracking
The job tracks progress during execution:
total_pairs: Total reviewer-proposal pairs to checkprocessed_pairs: Pairs checked so farconflicts_found: Number of conflicts detected
Evidence Storage
Each detected conflict stores structured evidence:
1 2 3 4 5 6 7 8 9 | |
Integration with Review Assignment
COI detection integrates with the review assignment workflow:
- Before assigning reviewers, check for confirmed/recused conflicts
- Reviewers with real conflicts are excluded from assignment pool
- Reviewers with waived conflicts may be assigned with oversight
Self-Disclosure
The system supports two types of self-disclosed conflicts:
Periodic General Disclosures
Reviewers can submit periodic disclosure forms (annual, call-level) for general conflicts:
1 2 3 4 5 6 | |
These forms track general financial interests and relationships with valid_until expiry.
Proposal-Specific Conflicts at Invitation Acceptance
When accepting a reviewer invitation, reviewers can optionally declare conflicts with specific proposals. This creates ConflictOfInterest records (not disclosure forms):
1 2 3 4 5 6 7 8 9 10 | |
Key differences from periodic disclosures:
| Aspect | COIDisclosureForm | ConflictOfInterest (self-disclosed) |
|---|---|---|
| Scope | General/call-level | Specific proposal |
| Timing | Periodic/annual | At invitation acceptance |
| Fields | valid_until, is_current |
proposal, coi_type, severity |
| Detection method | N/A | self_disclosed |
Self-declared conflict workflow:
- Reviewer receives invitation with proposal list
- Reviews proposals (based on
invitation_proposal_disclosuresetting) - Optionally declares conflicts with specific proposals
- Accepts invitation (NOT blocked by declared conflicts)
- Manager reviews self-declared conflicts via normal COI management
Best Practices
- Run detection early: Trigger COI detection as soon as the reviewer pool is finalized
- Review pending conflicts: Don't leave conflicts in pending status
- Document waivers: Always provide management plans for waived conflicts
- Update reviewer profiles: Ensure reviewer publications and affiliations are current
- Configure appropriately: Adjust lookback periods based on field norms
Related Documentation
- Proposals Overview - Complete proposal module documentation
- Reviewer-Proposal Matching - Affinity scoring and assignment algorithms
- Review System - Review assignment and scoring