Back to portfolio

CIRAD · 2026 internship · agentic genomics graph workbench

GenomInt

Query a genomic graph without writing Cypher.

For Ganoderma, GenomInt combines dialogue with graph exploration. I built the agent and the explorer’s backend: Neo4j queries and APIs.

At a glance

Setting
CIRAD internship · UMR AGAP · April–August 2026
My work
Pi agent · graph explorer backend (Neo4j queries and APIs) · security and deployment
Team
Supervisor: Létizia Camus-Kulandaivelu · interface: Théodore de Boisseson
Next
Closed code · research paper in preparation (co-author)

Context and scope

The Neo4j graph connects genomes, pangenes, transcripts and annotations to study Ganoderma pathogenicity. The goal: let biologists query this data directly.

Personal scope

I built the agent and the GKG Explorer backend: Neo4j queries, APIs, traversals and exports. I also worked on security and deployment. Théodore de Boisseson led the interface; we shared API contracts and integration.

The interface

Green GenomInt home screen presenting Chat, GKG Explorer and Graph Query.
HomeThree ways in: chat, graph exploration and direct queries.
GKG Explorer with chromosome filters on the left, a node graph in the center and a gene table on the right.
Explore the graphGenomic filters, node network and linked data.
GenomInt chat showing a question about the G. boninense core genome and READ_SKILL, GET_GRAPH_SCHEMA and QUERY_NEO4J calls.
Follow the agentBiological question, tool calls and Neo4j query in view.
GenomInt administration view showing roles, capabilities, account statuses and actions, with identities redacted.
Manage accessRoles, capabilities and statuses; account details redacted.
  1. 01 · Choose the retrieval strategy

    For retrieval, I compared a classic RAG pipeline, where a frozen index supplies one context before generation, with a fully agentic RAG: the model chooses its own tool calls, iterates and verifies. On a pangenomic graph, the comparison was decisive. The answers live in the schema and in Cypher traversals, not in text passages, so the agent drives GET_GRAPH_SCHEMA, READ_SKILL and QUERY_NEO4J as the question unfolds.

    That agentic steering is paired with a small RAG system suited to pangenomic graph data: Neo4j’s native vector index, used for hybrid search. Pangene descriptions and annotations are embedded in the database; vector similarity surfaces nodes a literal query would have missed, then one or two traversals tie them back to neighbouring genomes, transcripts and annotations.

    The division of labor stays strict: the vector suggests, Cypher proves. Sequence facts, such as pangene presence or core-genome membership, come from the graph, never from the model’s parameters.

    Trade-off
    Agentic retrieval spends more tool calls and tokens than a precomputed context; in exchange, every answer remains traceable to the graph nodes behind it.
  2. 02 · Serve the explorer and exports

    For GKG Explorer, I built the queries and APIs behind the filters, graph and results. Filters stay server-side; pagination precedes enrichment so narrow selections do not prepare an entire chromosome.

    For exports, sequences resolve in batches, FASTA segments retain their orientation and large state moves to SQLite or JSONL before the archive is assembled.

    Limit
    Row size, Neo4j buffers and ZIP files are not all byte-bounded: peak memory and load behavior remain unmeasured.

    Pagination: fewer pages, not a benchmark

    For 15,615 segments, page size 1,000 → 10,000.

    Before · 1,000 / page16pages
    After · 10,000 / page2pages

    14 fewer page requests; no measured time or memory gain.

  3. 03 · Constrain Cypher

    The validator normalizes and tokenizes Cypher, rejects writes and inspects subqueries. QueryService adds read-only execution and a timeout; the client opens a Neo4j READ_ACCESS session.

    The route enforces permissions and rate limits. These application controls do not prove least-privilege Neo4j credentials.

    Not established
    Adversarial fuzzing, penetration testing and a Neo4j privilege audit.
  4. 04 · Deploy and verify

    Podman images, a compatible OCI registry, Helm and K3s. A local mirror worked around an image-format mismatch with the GitLab registry.

    helm upgrade --install --atomic --wait, followed by checks of pods, services and protected routes: a repeatable procedure, not a guarantee under load.

    Still open
    Cross-replica stream resumption, load behavior and biological validation.