Knowledge Graph Engineering

I build knowledge graphs enterprises can trust in production.

Eight years building production-shaped knowledge graphs and Graph-RAG systems — ontologies in RDF/OWL/SHACL/LinkML, Neo4j and AWS Neptune, graph ML, and retrieval that answers in natural language with citations. Across healthcare, security, and commerce.

10graph systems, prototype → production-shaped
RDF·OWL·SHACL+ LinkML governed ontologies
Neo4j · NeptuneCypher & SPARQL at scale
Graph-RAGNL → query, cited answers

What I build with graphs

The full lifecycle — model the domain, load it, query it, reason over it, and serve it back as answers people trust.

Ontology & semantic modeling

Governed schemas — entities, relationships, constraints — validated on every load.

RDFOWLSHACLLinkMLTopBraid

Graph platforms & query

The right engine, exposed through the query language that fits the workload.

Neo4jAWS NeptuneCypherSPARQLGraphQL

Entity resolution

Collapse fragmented identities with probabilistic matching and embeddings.

probabilistic matchingembeddingssurvivorship

Graph machine learning

Centrality, community detection, and embeddings that surface what tables can't.

PageRankLouvainnode embeddings

Graph-RAG

Natural-language answers over the graph, with citations and provenance.

LangChainhybrid retrievalNL→Cypher/SPARQL

Validation & trust

SHACL, lineage, and evaluation that catch bad data before it ships.

SHACLlineageeval harness

Selected graph systems

HCP Next-Best-Action Platform

Architecture

Healthcare · Recommendation · Knowledge Graph

Problem. Approval doesn't produce adoption. Commercial teams must turn clinical evidence, approved content, market access, and omnichannel engagement into one timely, compliant, explainable action per HCP.

Graph decision. An HCP-360 knowledge graph under a production next-best-action platform: retrieve → rank → adjust for business utility → enforce eligibility → explain → measure incrementality. Eligibility is a deterministic graph decision, kept separate from relevance.

  • HCP-360 KG
  • next-best-action
  • eligibility rules
  • incrementality
  • MLR governance
Scale 500K HCPs · 45K HCOs · 1.2M nodes / 14M edges · 40K approved messages
Data Lakehouse + Kafka/Spark streaming · 340-feature store · point-in-time correct
Retrieval Five-retriever hybrid union — content lineage, affiliation, barrier matching
Ranking LightGBM LambdaMART over HCP × action × content × channel tuples
Trust SHACL validation · entity resolution · end-to-end lineage · deterministic eligibility
Serving Cited NL→Cypher answers · drift monitoring (PSI, NDCG) · P95 ~180 ms
Read the full architecture →

ontoloop

Public

Pharmacovigilance · SHACL

Problem. Drug-safety narratives must become structured records, but a language model will produce a record that reads perfectly and is quietly wrong.

Graph decision. Make the acceptance test a SHACL validator, not another model — an agent loop extracts to RDF and repairs until the shapes graph conforms. The verifier never calls an LLM.

  • RDF
  • SHACL
  • SPARQL
  • agent loop
Agent loop: narrative extracted to RDF, repaired until the SHACL shapes graph conforms View on GitHub →

crypto-risk-kg

Public

Security · Post-Quantum · Graph ML

Problem. Enterprises can't see which cryptographic assets are quantum-vulnerable, or who owns them, across thousands of certificates, keys, and protocols — and harvest-now-decrypt-later makes it urgent.

Graph decision. A 6,400-node crypto-posture knowledge graph with SHACL validation, PQC risk scoring against NIST/FIPS/PCI, and graph ML to rank vulnerable assets — queried in natural language via NL→Cypher, fully on-prem.

  • Knowledge Graph
  • Graph ML
  • SHACL
  • NL2Cypher
  • on-prem LLM
Crypto-posture knowledge graph feeding SHACL validation, PQC risk scoring, graph ML, and NL to Cypher answers View on GitHub →

cex-knowledge-graph

Private

Healthcare/Pharma · Neptune

Problem. Commercial customer data at an enterprise is scattered across 20+ systems with no shared meaning, so every question becomes a bespoke SQL request.

Graph decision. A production-shaped customer KG — Redshift → S3 → LinkML/RDF → AWS Neptune, an evolving ontology, graph analytics, GraphQL serving, and an evaluation framework to keep it honest.

  • AWS Neptune
  • LinkML
  • RDF
  • GraphQL
Pipeline: Redshift to S3 to LinkML/RDF to AWS Neptune, served through GraphQL and analytics Private · walkthrough on request

mincalvina

Private

Privacy-first KG · Streaming

Problem. A commercial knowledge graph is only usable if sensitive identities never leak — de-identification can't be an afterthought bolted on at the end.

Graph decision. A de-identification moat (AWS Secrets Manager/KMS) wrapped around a streaming ingestion pipeline into an evolving LinkML ontology, with GraphQL, caching, graph analytics, and evaluation.

  • LinkML
  • KMS
  • streaming
  • graph analytics
De-identification moat with AWS KMS wrapping a streaming ingest into a LinkML ontology graph with GraphQL and analytics Private · walkthrough on request

Graph-RAG customer intelligence

Prototype

E-commerce · Graph-RAG

Problem. Business teams want answers about customers in plain English, not another dashboard or a two-day SQL wait.

Graph decision. A 4,300-node / 225k-edge customer graph with PageRank, Louvain communities, and SVD embeddings, behind an NL→Cypher assistant that answers with citations.

  • Neo4j
  • graph embeddings
  • NL2Cypher
  • RAG
NL to Cypher over a Neo4j customer graph with PageRank, Louvain, and SVD, returning cited answers Case study · available on request

blastradius

Public

Data lineage · Reachability

Problem. A dropped column looks unused to dbt, then breaks a pandas script and a tablet app nobody linked to it.

Graph decision. Parse SQL and Python into one dependency graph, so "what breaks if I change this column" becomes a reachability query — statically, before the change ships.

  • graph
  • static analysis
  • reachability
SQL and Python parsed into one dependency graph, so column impact is a reachability query View on GitHub →

GraphForge

Prototype

Graph-as-IR · App generation

Problem. Turning business requirements into a working app means re-modeling the same domain by hand every time — schema, API, UI — and it drifts out of sync.

Graph decision. Use a knowledge graph as the intermediate representation: extract the domain into a graph, then generate the schema, API, and React app from it, so one model drives the whole build.

  • graph-as-IR
  • domain extraction
  • codegen
  • React
Requirements extracted into a graph intermediate representation that generates schema, API, and a React app Prototype · walkthrough on request

Local NL→Cypher

Prototype

On-prem · Fine-tuning

Problem. Analysts want to ask a graph questions in plain English, but the data is sensitive and can't be sent to a hosted model.

Graph decision. An ontology-grounded NL→Cypher pipeline running fully offline (Neo4j + Ollama), with a LoRA-fine-tuned Qwen2.5 for the translation, validated against a held-out query set.

  • NL2Cypher
  • ontology-grounded
  • LoRA (MLX)
  • Neo4j
On-prem natural-language question through a LoRA-tuned Qwen2.5 to Cypher over Neo4j, returning an answer Prototype · walkthrough on request

Graph-augmented forecasting

Prototype

Retail · Graph ML

Problem. Store × SKU demand forecasts ignore how products and stores relate — cannibalization, substitution, and shared demand shocks.

Graph decision. A graph encoder over cross-product / cross-store relationships feeds node embeddings into a global LightGBM across 4,000+ SKUs × 33 stores. ML beats naive by ~23%, with an honest read on where the graph lift stays small.

  • graph encoder
  • node embeddings
  • LightGBM
  • spatiotemporal
Product and store graph through a graph encoder to node embeddings, combined with tabular features into LightGBM forecasts Prototype · walkthrough on request

Behind the graphs

  MATCH (me) RETURN who
CREATE (me:Engineer:Leader {  name:      "Kavyasri Jadala",  role:      "Senior AI/ML & Data Products",  based_in:  "Dubai, UAE · Golden Visa",  focus:     ["Knowledge Graphs", "Graph-RAG", "GenAI", "MLOps"],  domains:   ["Healthcare", "Energy", "E-commerce", "Supply Chain"],  education: "M.S. Data Science, Purdue"})MATCH (me)-[:BUILDS]->(system:MLSystem)WHERE system.verified = true          // the part everyone skipsRETURN me.mission; // ▸ "Build machine-learning systems you can actually trust in production."

Knowledge Graphs & Semantics

Neo4jAWS NeptuneRDFOWLSHACLSPARQLCypherGraphQLLinkMLTopBraid

LLM · RAG · GenAI

LangChainLlamaIndexGraph-RAGPineconeFAISSHugging FaceOpenAI

Machine Learning

PythonPyTorchTensorFlowscikit-learnXGBoostLightGBM

Data Engineering & MLOps

dbtAirflowMLflowDockerKubernetesSparkSQL

Cloud & BI

AWSGCPAzureSageMakerPower BITableau