Open-source pancreatic oncology discovery software with a cited research-intelligence core and explainable workflow surfaces such as radiology triage, benchmark proof, and case briefs.
Research-use workflow software. Not for autonomous diagnosis, treatment recommendation, or unsupervised clinical deployment.
| Reviewer worklist | Case detail with evidence highlights |
|---|---|
![]() |
![]() |
| Benchmark proof page | Research-intelligence workspace |
|---|---|
![]() |
![]() |
All data shown is synthetic demo data. To reproduce these surfaces locally, see the Quick Start below; screenshots can be refreshed with apps/web/scripts/capture-screenshots.cjs against a seeded local stack.
Pancreatic Signal is no longer a scaffold. As of 2026-04-03, this repository includes:
- a sibling
/research-intelworkspace for pancreatic oncology monitoring, topic watchlists, cited digests, and opportunity planning - seeded research-intel source catalogs, topic ontology, lightweight knowledge graph, action-spec opportunity engine, case briefs, and run-audit records
- a schedule-aware watchtower layer with due-source planning, curated connector expansion, and a
/research-intel/scheduleworkspace 8live-ready curated research watches spanning Europe PMC, ClinicalTrials.gov, official NCI and FDA feeds, and GitHub-backed open-source discovery- multi-run digest comparison with recurring open-question and disagreement tracking across digest history
- contributor-ready packets for issue, benchmark, dataset, rule, trial, case-brief, and tooling follow-through
- a sandboxed research-intel experiment runner for benchmark and rule proposals with readiness and stress-test modes plus ratchet-style keep or discard outcomes
- deterministic, evidence-backed report triage with rationale codes and auditability
- a reviewer worklist with case detail, review actions, and research-safe views
- evaluation and export paths for retrospective benchmarking
- CSV, JSON, JSONL, attachment-backed FHIR
DiagnosticReport, and HL7 ORU import paths - persisted import-run audit records with stable failure buckets and visibility rules
- a dedicated
/importsweb workspace for uploads and audit inspection - pilot-ready Docker overlays for trusted-proxy auth and header-auth demos
- live smoke coverage across success, failure, and cross-actor visibility paths
Pancreatic Signal v2 additionally ships:
- sentence-bounded negation in the triage engine and persisted structured
FindingRecordrows - an externalized
scoringblock indata/ontologies/pancreatic_signal_rules.json(newOntologyConfigschema) - Playwright e2e smoke for
/proof,/cases, case detail review, and/imports, wired into CI - an opt-in autoresearch lab subsystem inspired by karpathy/autoresearch: an external coding agent edits one file (
data/ontologies/pancreatic_signal_rules.json), a deterministic experiment driver scores it, an append-only run log keeps history, and humans explicitly promote winners. See docs/AUTORESEARCH.md. Triage, imports, and the worklist remain the primary product surfaces; autoresearch never writes to the live database.
For this project, a credible 1.0 is:
- a stable dual-pillar pancreatic workflow platform
- transparent and explainable in how it flags reports
- transparent and cited in how it monitors pancreatic oncology research
- benchmarkable on retrospective datasets
- usable by collaborators without private tribal knowledge
- explicit about safety boundaries and non-clinical positioning
It is not:
- clinical validation
- autonomous diagnosis
- production hospital deployment guidance for unsupervised use
- a claim of regulatory clearance
.
├── AGENTS.md
├── README.md
├── CHANGELOG.md
├── CONTRIBUTING.md
├── SECURITY.md
├── CODE_OF_CONDUCT.md
├── LICENSE
├── Makefile
├── docker-compose.yml
├── docs/
│ ├── PRD.md
│ ├── MVP_PLAN.md
│ ├── QUICKSTART.md
│ ├── LABELING_GUIDE.md
│ ├── BENCHMARK_SUBMISSIONS.md
│ ├── ARCHITECTURE.md
│ ├── PHASES.md
│ ├── API_SPEC.md
│ ├── DATA_MODEL.md
│ ├── EVALUATION.md
│ ├── RESEARCH_INTELLIGENCE.md
│ ├── RESEARCH_INTELLIGENCE_EXECUTION_PLAN.md
│ ├── RESEARCH_INTELLIGENCE_GOVERNANCE.md
│ ├── DEPLOYMENT.md
│ ├── RELEASE_RUNBOOK.md
│ ├── RELEASE_READINESS.md
│ ├── RELEASE_NOTES_TEMPLATE.md
│ ├── SAFETY_AND_COMPLIANCE.md
│ ├── OPEN_SOURCE_STRATEGY.md
│ ├── AUTORESEARCH.md
│ └── CODEX_HANDOFF.md
├── apps/
│ ├── api/
│ └── web/
├── autoresearch/
│ ├── program.md
│ ├── baseline/
│ └── runs/
├── data/
│ ├── examples/
│ └── ontologies/
├── deploy/
│ └── examples/
└── scripts/
Pancreatic Signal is an open pancreatic oncology discovery system. Its primary job is to organize literature, trials, guidance, and workflow gaps into cited digests, graph-backed topics, safe experiments, and open-source opportunity artifacts that other contributors can inspect and extend.
Explainable radiology triage remains an important applied surface, but it now sits downstream of that discovery loop. Research intelligence informs benchmark growth, trial-catalog upkeep, and case briefs without directly changing case scores or pretending to be autonomous diagnosis.
Current product focus:
- cited pancreatic oncology monitoring, topic watchlists, and opportunity surfacing
- structured discovery-to-action specs for benchmarks, rules, trial upkeep, and contributor tooling
- multi-run council history that preserves recurring disagreements and open questions across digests
- safe experiment runs that score proposal readiness or stress-test contributor packets without mutating code or case scores automatically
- CT and MRI abdomen report text
- deterministic rules and explainable scoring
- reviewer and navigator workflow support
- retrospective, pilot, and simulation workflows first
- interoperability paths that do not compromise explainability
API runtime requires Python 3.11+. This repo includes a root .python-version pinned to 3.12.0 for pyenv users so python3 resolves to a compatible interpreter inside the workspace.
If you want outside-collaborator proof before you touch the UI:
make validate-strict
make research-intel-refresh
make benchmark-demoThis validates the repo, writes research-intel artifacts to artifacts/research-intel/, and writes benchmark artifacts to
artifacts/benchmarks/. The checked-in published snapshot that powers the web proof page lives in
docs/examples/demo-benchmark-current.md and can be refreshed with
make refresh-demo-proof. The research-intel refresh path seeds the local pancreatic oncology watch catalog, writes
digest artifacts, and populates the /research-intel workspace for local exploration.
If you want to package a comparable external benchmark, start with docs/LABELING_GUIDE.md and docs/BENCHMARK_SUBMISSIONS.md.
To inspect the watchtower schedule or run only due sources:
make research-intel-schedule
make research-intel-ingest-due
make research-intel-watchtowerFor the discovery-ingest path specifically:
make research-intel-discovery-fixtureFor a comparable external results bundle:
make benchmark-external \
LABELS=docs/examples/benchmark-label-template.jsonl \
PREDICTIONS=docs/examples/benchmark-prediction-template.jsonl \
MANIFEST=docs/examples/benchmark-manifest-template.jsonFor the checked-in external proof packs:
make benchmark-external-sample
make refresh-external-sample-proof
make benchmark-external-wording-sample
make refresh-external-wording-sample-proofThe public /proof page now renders the checked-in demo comparison plus a side-by-side comparison of the published external benchmark packs listed in docs/examples/published-external-benchmarks.json, which currently includes the retrospective-style multi-cohort sample and a wording-variance challenge pack.
cd apps/api
python -m venv .venv
source .venv/bin/activate
pip install -e .[dev]
uvicorn app.main:app --reload --port 8000cd apps/web
npm install
npm run devmake validate
make validate-strictmake validate is tolerant of missing local prerequisites and reports readiness gaps as warnings. make validate-strict upgrades those same gaps to failures, validates the published external benchmark registry, and is the preferred pre-handoff or pre-release check.
GitHub Actions now runs the same make validate-strict gate on pull requests, on main, and via manual workflow dispatch. A separate hosted smoke workflow in .github/workflows/pilot-smoke.yml reuses the base proxy and header pilot smokes plus the report-path and structured adapter site-rejection variants on manual dispatch and a weekly schedule. The repo now also carries a cache-backed hosted discovery workflow in .github/workflows/research-watchtower.yml, which runs the audited watchtower tick on a six-hour cadence and on manual dispatch. The broader shared-visibility, audit-denial, and non-site structured failure matrix in docs/DEPLOYMENT.md remains a manual validation path.
For the release-facing evidence path that ties validation, hosted smoke artifacts, and docs updates together, use docs/RELEASE_RUNBOOK.md.
For a concise outside-collaborator path, see docs/QUICKSTART.md.
For the new oncology watchtower and case-brief workflow, see docs/RESEARCH_INTELLIGENCE.md.
For the long-running phase and context contract, see docs/RESEARCH_INTELLIGENCE_EXECUTION_PLAN.md.
To seed the local pancreatic oncology watchtower and build the first digest:
make research-intel-refreshTo run the full audited watchtower loop with due-only ingest plus digest gating:
make research-intel-watchtowerThen open:
/research-intelfor the primary discovery dashboard/research-intel/schedulefor due-source planning and watchtower cadence/research-intel/documentsfor the document explorer/research-intel/graphfor the pancreatic oncology knowledge graph/research-intel/digestsfor cited council summaries/research-intel/opportunitiesfor human-gated benchmark, rule, and tooling proposals
With the API running, you can import the sample dataset through the report ingestion endpoint:
curl -F "file=@data/examples/reports.jsonl" http://localhost:8000/api/v1/imports/reportsFHIR DiagnosticReport input is supported:
The same path now accepts supported text-like presentedForm attachments, including plain-text and XHTML narrative payloads, without changing the downstream triage or audit flow.
curl http://localhost:8000/api/v1/imports/fhir/diagnostic-reports \
-H "Content-Type: application/json" \
-d '{
"resourceType": "DiagnosticReport",
"id": "dr-demo-1",
"effectiveDateTime": "2026-03-19T10:00:00Z",
"category": [{"text": "CT abdomen"}],
"performer": [{"display": "Demo Hospital"}],
"conclusion": "Suspicious for pancreatic neoplasm. Recommend biopsy."
}'HL7 v2 ORU input is also supported:
curl http://localhost:8000/api/v1/imports/hl7/oru \
-H "Content-Type: text/plain" \
--data-binary $'MSH|^~\\&|RADSYS|Demo Hospital|PS|PS|20260319100000||ORU^R01|MSG-1|P|2.5\rPV1|1|O|RAD^^^Demo Hospital\rOBR|1|PLAC-1|R-HL7-1|CT ABDOMEN^CT Abdomen|||20260319100000\rOBX|1|TX|FINDINGS^Findings||Abrupt cutoff of the pancreatic duct with ill-defined pancreatic head lesion.|\rOBX|2|TX|IMPRESSION^Impression||Suspicious for pancreatic neoplasm. Recommend biopsy.|'For a local multi-service stack:
docker compose up --buildFor the pilot overlays that exercise built API and web images plus auth wiring:
make pilot-proxy-demo-up
make pilot-header-demo-upRepresentative smoke targets:
make pilot-proxy-demo-smoke
make pilot-proxy-demo-fhir-smoke
make pilot-proxy-demo-hl7-smoke
make pilot-proxy-demo-failed-shared-visibility-smoke
make pilot-proxy-demo-adapter-failed-shared-visibility-smoke
make pilot-proxy-demo-adapter-site-rejection-smoke
make pilot-proxy-demo-adapter-audit-visibility-smoke
make pilot-header-demo-smoke
make pilot-header-demo-failed-shared-visibility-smoke
make pilot-header-demo-adapter-failed-shared-visibility-smoke
make pilot-header-demo-adapter-site-rejection-smoke
make pilot-header-demo-adapter-audit-visibility-smokeThese smoke paths now exercise real import endpoints plus persisted import-run audit checks, including same-site visibility checks for successful runs, non-site failed runs, and denial checks for structured site-scope rejection runs. The full overlay and smoke matrix lives in docs/DEPLOYMENT.md.
For hosted smoke automation, GitHub Actions now reuses make pilot-proxy-demo-smoke, make pilot-proxy-demo-site-rejection-smoke, make pilot-proxy-demo-adapter-site-rejection-smoke, make pilot-header-demo-smoke, make pilot-header-demo-site-rejection-smoke, and make pilot-header-demo-adapter-site-rejection-smoke through .github/workflows/pilot-smoke.yml. That workflow is intentionally narrower than the full local smoke matrix and is meant to complement, not replace, the still-manual shared-visibility, audit-denial, and non-site structured failure checks.
Manual dispatch now also supports smoke_scope=fhir-success-only and smoke_scope=hl7-success-only, with pilot-smoke-summary.json and pilot-smoke-summary.md artifacts intended for release and handoff capture.
- Quickstart and published proof: docs/QUICKSTART.md, docs/examples/demo-benchmark-current.md
- Public benchmark pack: docs/LABELING_GUIDE.md, docs/BENCHMARK_SUBMISSIONS.md, docs/examples/benchmark-label-template.jsonl, docs/examples/benchmark-prediction-template.jsonl, docs/examples/benchmark-submission-template.json
- Architecture and roadmap: docs/ARCHITECTURE.md, docs/PHASES.md
- API and data model: docs/API_SPEC.md, docs/DATA_MODEL.md
- Evaluation and deployment: docs/EVALUATION.md, docs/DEPLOYMENT.md
- Release posture: CHANGELOG.md, docs/RELEASE_RUNBOOK.md, docs/RELEASE_READINESS.md, docs/RELEASE_NOTES_TEMPLATE.md
- Safety and project posture: docs/SAFETY_AND_COMPLIANCE.md, docs/OPEN_SOURCE_STRATEGY.md
- Audience one-pagers: docs/outreach/FOR_RESEARCHERS.md, docs/outreach/FOR_EDUCATORS.md, docs/outreach/FOR_INFORMATICS_PROFESSIONALS.md
- Agent handoff context: docs/CODEX_HANDOFF.md
Project expectations and community docs now live at the repo root:
- contribution workflow: CONTRIBUTING.md
- vulnerability reporting: SECURITY.md
- community expectations: CODE_OF_CONDUCT.md
Apache-2.0



