1st Place, Vectors in Orbit
QDesign, Explainable AI for Biological Discovery

- Role
- Co-Architect, Distributed Systems & AI
- Timeline
- January 2026
- Duration
- Hackathon sprint
- Team
- Team: Seleçaooooo (Moetez Fradi, Ghassen Naouar, Ahmed Saad, Omar Chiboub)
Overview
QDesign is a research workbench for biologists, and it won first place at the Vectors in Orbit hackathon. Scientists drop in papers, protein structures, sequences, and images, and the tool doesn't just tell them which proteins are similar, it tells them why, in biological terms. A team of AI agents then helps form hypotheses and drafts the paper.
The problem
A normal vector database is a black box for a scientist: it gives a similarity score with no reasoning. In protein work, "why are these similar?" matters as much as "how similar are they?". On top of that, researchers juggle structures, sequences, papers, and images in separate formats with nothing tying them together.
What I built
- 01
Made the similarity explainable
We forked the Qdrant vector database in Rust so that every result breaks its score down into the biological properties that drove it, like helix shape and surface charge, instead of a bare number.
- 02
One search across every format
Structures, sequences, papers, and images are all embedded and searchable together, so a scientist can move between them without converting anything by hand.
- 03
Auto-built knowledge graphs
Uploaded files are wired into a semantic graph where each connection carries a biological explanation of why it's there, and it's rendered as an interactive map.
- 04
A five-agent co-scientist
A pipeline of agents, planner, ontologist, scientist, a deeper scientist, and a critic, works through a hypothesis, with a human able to approve, tweak, or reject at each step, and drafts a formatted paper at the end.
- 05
A real collaborative app around it
A NestJS core handles accounts, shared workspaces with version history, and live collaboration, with 3D molecule viewing in the browser.
Architecture
A Next.js frontend talks to a NestJS core, which delegates to two Python services: one that builds the knowledge graph and retrieval, and the co-scientist that runs the five-agent pipeline. Both query XQdrant, our explainable Qdrant fork, across separate collections for structures, sequences, text, and images.
Tech stack
XQdrant (Rust fork)
Custom Qdrant fork with `explainability.rs`, decomposes 1280-dim ESM-2 cosine similarity into biological property contributions
ESM-2 (1280-dim)
Meta AI protein language model powering structure and sequence similarity across PDB/CIF and FASTA files
MiniLM-L6-v2 + CLIP ViT-B-32
Text embeddings (384-dim) for PDFs/papers and image embeddings (512-dim) for diagrams/microscopy
SciAgents Pipeline (5 Agents)
Planner → Ontologist → Scientist → Scientist² → Critic calling OpenRouter via httpx; HITL via /v2/hitl/run; Streamlit UI on :8501
NestJS 11 + MongoDB
Core backend, auth (JWT/Passport), project workspaces with git-like versioning, Socket.io real-time sync
Next.js 16.1 + React 19
Collaborative UI, @xyflow/react knowledge graph, NGL 3D molecular viewer, Framer Motion animations
FastAPI (Knowledge + Co-Scientist)
Knowledge Service on :8001 for graph generation; Co-Scientist on :8000 (API) + :8501 (Streamlit HITL UI) for inference and export
Results
1st Place
Vectors in Orbit, Qdrant × InstaDeep × YellowSys hackathon
4 Vector Collections
ESM-2 structures/sequences (1280-dim), MiniLM text (384-dim), CLIP images (512-dim)
Explainable Search
XQdrant score_explanation maps similarity to α-helix, surface charge, and flexibility
HITL Co-Scientist
5-agent SciAgents pipeline: Planner → Ontologist → Scientist → Scientist² → Critic via OpenRouter
IEEE Export
Auto-generates formatted research papers from project findings and knowledge graph
Live Demo
Deployed at qdesign.moetezfradi.me with real-time collaboration
Moments


What I took away
- 01
Forking Qdrant's Rust core to add the explainability module was the single highest-risk bet of the hackathon, but the `score_explanation` field it unlocked was also what won us first place. Judges asked 'can you show why?' and we could.
- 02
The dimension-to-biological-property mapping needed probing experiments done offline before the hackathon sprint, not during it, that upfront research investment was what made XQdrant's explanations scientifically meaningful rather than arbitrary.
- 03
Running 4 embedding models (ESM-2, MiniLM-L6-v2, CLIP, Biopython) in a unified search pipeline across different vector dimensions required careful collection architecture. Keeping them in separate named collections with type filters was simpler than a single mixed collection.
- 04
Building the Co-Scientist as a custom 5-agent SciAgents pipeline (Planner → Ontologist → Scientist → Scientist² → Critic), rather than using a framework like LangGraph, meant full control over prompt structure, retry logic, and JSON parsing per agent, no abstraction layer fighting us under hackathon time pressure. The Scientist² step (quantitative expansion with predictions and experimental protocols) was the detail that convinced the judges the system produced actionable science, not just chatbot output.
- 05
Biologists and hackathon judges both responded far more strongly to the knowledge graph visualization than to any other feature, seeing PDF nodes, protein nodes, and image nodes connected by biologically-labeled edges made the platform's value immediately legible.