Project Management Suite

Discoverant Internal Documentation

Overview

Deployed 26 Feb 2026. Adds project roles, pipeline stages, team management, and stage transitions to Discoverant. Replaces dummy data in the Pipeline Dashboard with live role-filtered data.

Git commit a5c96d6 on dellb, rsync'd to della, deployed to both dev and prod containers.

Platform Roles (Org-Wide Ceiling)

A user's platform role sets the ceiling for what they can do across the entire organisation.

Role Access Level Pricing
super_admin System-wide access (Richard)
administrator Manage users in their org, see all projects, configure org settings
member Upload, register, search, export, run Workbench tools £2,000/year
trial_member Same as member for 30 days £99/30 days
guest View shared data only, no upload, no export except PDF Free

Project Roles (Per-Project Access)

Within each project, users are assigned a project-level role that determines their permissions.

Role Permissions
leader Full control — manage team, set stage, approve progression
contributor Upload data, edit compounds, run tools — can't change project settings
reviewer View and export, add comments — can be structure-masked
observer View only, no export, no comments

Role Compatibility Matrix

Not every platform role can hold every project role. Enforced by database trigger trg_project_members_role_check.

Platform Role leader contributor reviewer observer
super_admin Yes Yes Yes Yes
administrator Yes Yes Yes Yes
member Yes Yes Yes Yes
trial_member No Yes Yes Yes
guest No No Yes Yes

Structure Masking

Project Leaders can mark Reviewers as "structure-masked". Masked users see bioactivity data, ADMET predictions, and all other properties — except chemical structures (a locked icon is shown instead).

This protects intellectual property when giving CRO partners data access without revealing proprietary chemical matter.

Pipeline Stages

10 default stages, customisable per organisation:

IDE          HIT           H2L             LO              CS
Ideation --> Hit Finding --> Hit-to-Lead --> Lead Optimisation --> Candidate Selection
(1-3 mo)    (3-6 mo)      (6-12 mo)       (12-18 mo)            (1-3 mo)

  --> PC            --> IND         --> PH1       --> PH2       --> PH3
      Preclinical       IND Filing      Phase I       Phase II      Phase III
      (6-12 mo)         (1-3 mo)        (12-18 mo)    (18-24 mo)    (24-36 mo)

Gate Criteria

Each stage has configurable gate criteria (a checklist). When advancing a project to the next stage:

Default Gate Criteria (13 total)

Stage Criterion Required
HITConfirmed hits with IC50 < 10 µMYes
HITDose-response curves for ≥ 3 chemical seriesYes
HITCounter-screen data (selectivity)Yes
HITIP landscape assessment completedNo
H2LLead series with ≥ 100-fold selectivityYes
H2LPreliminary ADMET data on lead compoundsYes
H2LSAR established across ≥ 2 scaffoldsYes
H2LSynthetic route scalable to 100 mgNo
LOCandidate meets target product profileYes
LOIn vivo PK supporting QD/BID dosingYes
LOClean hERG (IC50 > 30x clinical Cmax)Yes
LOCMC package initiatedYes
LOBackup compound identifiedNo

Therapeutic Areas

8 default therapeutic area codes. Organisations can add custom codes.

Code Area
ONCOncology
CNSCentral Nervous System
INFInflammation
CVDCardiovascular
INXInfectious Disease
METMetabolic
RSPRespiratory
IMMImmunology

Database Tables Added

Table Purpose Key Details
pipeline_stages 10 default stages with codes, descriptions, typical durations Unique on (code, tenant_id)
gate_criteria Configurable checklist per stage 13 defaults for HIT/H2L/LO gates
project_members Project-level role assignments Unique on (project_id, user_id), structure_masked flag
stage_transitions Audit trail for stage changes Who, when, from/to stage, justification, gate criteria met
org_settings 4 configurable org-level settings Unique on (tenant_id, setting_key), JSONB values

Columns Added to projects Table

stage_id, therapeutic_area, status (enum: active/on_hold/at_risk/completed/cancelled), target_name, progress (0-100), budget_allocated*, budget_spent*, budget_currency*, cancel_reason, cancelled_at, stage_entered_at

*Budget columns exist in DB but are NOT exposed through API or UI (removed per Don's guidance — salary derivation risk).

Column Added to users Table

platform_role (enum, default 'member')

Enums Created

Enum Values
platform_rolesuper_admin, administrator, member, trial_member, guest
project_roleleader, contributor, reviewer, observer
project_statusactive, on_hold, at_risk, completed, cancelled
transition_statusapproved, pending_approval, rejected, overridden

Views

API Endpoints (14, all under /api/v1/pm/)

Method Path Auth Description
GET/pipeline-stagesmember10 stages
GET/therapeutic-areasmemberTA list
GET/portfolio/summarymemberDashboard data with filters (role-filtered)
GET/projects/{id}memberSingle project PM fields
PUT/projects/{id}memberUpdate stage/TA/status/progress
POST/projects/{id}/stage-transitionmemberAdvance stage with gate criteria
GET/projects/{id}/stage-historymemberTransition audit log
GET/projects/{id}/teammemberList team members
POST/projects/{id}/teammemberAdd team member
PUT/projects/{id}/team/{user_id}memberUpdate member role
DELETE/projects/{id}/team/{user_id}memberRemove member
GET/projects/{id}/team-candidatesmemberUsers available to add
GET/gate-criteria/{stage_id}memberGate criteria checklist
GET/org-settingsadminTenant settings
PUT/org-settings/{key}adminUpdate setting

Org Settings (Configurable Per Tenant)

Key Default Description
require_stage_approvalfalseLeaders can advance stages directly
admin_sees_all_projectstrueAdmins auto-see all projects
trial_member_can_leadfalseTrial members can't be Leaders
default_structure_maskfalseNew reviewers not auto-masked

Pipeline Dashboard (3 Views)

All views are wired to live data via /api/v1/pm/portfolio/summary.

Role-Based Filtering

Demo Data (Apex Pharma Tenant)

All demo users use password: Password1!

User Platform Role Project Assignment Project Role
Dr. Sarah TanadministratorAll 3 projects
Dr. James SmithmemberEGFRleader
Dr. Rachel JonesmemberEGFRcontributor
Dr. Anil PatelmemberEGFRcontributor
Sarah MitchellguestEGFRreviewer (masked)
Dr. Mark WilliamsmemberKRASleader
Dr. Wei ChenmemberNav1.7leader

Frontend Files

File Purpose
PipelineDashboard.tsxMain dashboard with 3 view tabs, filters, summary cards
PipelineView.tsxSwim-lane component
PipelineTable.tsxSortable table component
StageBoard.tsxKanban with drag-and-drop
ProjectDetailPanel.tsxSlide-out panel with Overview/Team/History tabs
TeamPanel.tsxTeam member list, add/remove, role changes, structure masking
AdvanceStageModal.tsxGate criteria checklist with justification
StageHistory.tsxTimeline of stage transitions
OrgSettingsPage.tsxAdmin settings with toggle cards

Backend File

api/v1/project_management.py — 809 lines, all PM routes. Registered in main.py at line 81 (import) and line 245 (include_router).