About the project
Inspiration
A chemistry table can look clean and still be wrong for its intended use. Units, endpoints, chemical identities, and targets can be mixed. The data can also affect other datasets without the requester knowing.
Apollo connects research evidence to DataHub context and answers:
Can this named dataset enter this workflow, and who must act if it cannot?
What it does
Apollo evaluates a declared ChEMBL assay release for one target, one dataset version, and one purpose.
It checks:
- chemistry and provenance
- units, endpoints, identities, and target scope
- DataHub schema and quality checks
- lineage, usage, policies, and owners
Apollo returns a deterministic PROMOTE, HOLD, or REVIEW result with the reason and next action.
A failed DataHub assertion can produce HOLD. Missing DataHub context produces REVIEW, not silent approval.
Apollo saves the request, findings, evidence, receipt, and validation artifacts. Its read-only Analytics Agent explains a saved run but cannot change the decision.
Apollo is not a clinical, therapeutic, product-safety, or medical approval system.
How we built it
Apollo uses:
- Python and FastAPI for the API
- deterministic Python rules for release authority
- React and Vite for the web interface
- ChEMBL 37 data for
CHEMBL1806/Homo sapiens - DuckDB for local research data
- DataHub Core with a pinned MCP integration
- Docker for reproducible deployment
- a read-only DataHub Analytics Agent
- committed evidence packets and validation scripts
Challenges we ran into
The hardest part was preserving chemistry meaning while connecting it to DataHub.
We had to keep raw and normalized values separate. We also had to prevent different units, endpoints, identities, and targets from being silently combined.
DataHub MCP and self-hosted GMS exposed different capabilities. Large lineage queries could exceed the GMS limit. Apollo solved this with bounded requests, explicit source states, and honest fallbacks. It never invents missing lineage or DataHub evidence.
Accomplishments that we’re proud of
- DataHub context changes the accountable release outcome.
- A failed quality assertion can stop a release with
HOLD. - Missing context routes the release to
REVIEW. - The same request can be compared with and without DataHub context.
- Every run saves a contract, report, receipt, manifest, and validation test.
- Judges can inspect a public evidence packet without running Docker.
- The Analytics Agent explains a specific Apollo run with read-only evidence.
- The public Apollo site, documentation, and deployment are available online.
What we learned
Metadata matters when it changes an action.
Lineage and ownership show who may be affected and who must respond.
AI agents are useful when they explain bounded evidence and report gaps. Deterministic rules must remain responsible for the final decision.
What’s next for Apollo
We plan to build:
- version-to-version dataset comparisons
- stable DataHub context packages for agents
- authorized write-back with verified read-back
- automated repair suggestions
- stronger molecule identity and model-readiness checks
- refresh ownership and notifications
Log in or sign up for Devpost to join the conversation.