active project
ICT Knowledge Engine
An ontology-driven knowledge engine for ICT trading concepts. Ingests source material, extracts concepts, links them in an ontology, and serves retrieval-augmented Q&A grounded in cited sources.
Problem
What it solves.
Trading knowledge is fragmented and contradictory across sources. Naïve RAG returns surface-level matches without context. The engine grounds answers in an ontology so retrieval reflects how concepts actually relate.
What I built
The specific parts I implemented.
What I owned
My responsibility surface.
Ontology design
Retrieval pipeline
Eval harness
Frontend graph view
Architecture
How data moves through the system.
Data model
What entities the system tracks.
- id - label - type - description
- source_id - target_id - relationship_type
- id - content - source - embedding_id - ontology_node_id
Failure handling
What happens when something breaks.
Concept extractor low confidence
Send to a manual review queue rather than auto-link.
Empty retrieval
Refuse to answer; surface 'no source found' instead of hallucinating.
Conflicting sources
Show both citations and tag the response as contested.
Verification
How I tested or evaluated it.
- ✓Coverage eval over a fixed query set with expected concepts.
- ✓Retrieval traces logged per query for offline audit.
- ✓Citation correctness check (cited chunk must contain claimed text).
Eval harness
Cases, expected, actual.
Concept coverage
pass- Input
- Query: 'What is a fair value gap?'
- Expected
- Retrieves FVG concept node + canonical source.
- Actual
- Retrieved FVG node, 3 supporting chunks, 1 canonical source.
No-source guard
pass- Input
- Query: out-of-corpus term.
- Expected
- Refuses with 'no source' message.
- Actual
- Refused. No fabricated definition.
Next improvements
Known gaps & next moves.
- →Add provenance scoring per source.
- →Add user-curated overrides for contested edges.
- →Cache hot subgraphs for low-latency reads.