Work

Original research and systems at the intersection of LLMs, agentic AI, and production ML.

20,000+ governmentprocurement sites
Distributed crawl& discovery pipeline
NLP/LLM extraction(tender classification)
Entity resolution(suppliers, buyers, tenders)
Monitored feedfor procurement teams

Procurement Intelligence at National Scale

Applied NLP & Data Pipelines / In production — Prospecto (current role), no public repo

20,000+ government sitesSources monitored
Continuous, automatedDiscovery

Government tender data is public but not usable: it's spread across 20,000+ agency websites with no shared schema, no shared identifiers for who's bidding on what, and no reliable way to tell a reissued tender from a genuinely new one. This is the pipeline I built at Prospecto to fix that: distributed crawlers for discovery, NLP/LLM-assisted extraction to turn unstructured notices into structured records, and entity resolution to unify the same supplier or buyer across sources that spell its name three different ways. The output feeds procurement teams a monitored, deduplicated view of tenders instead of a pile of PDFs.

PythonNLPLLM ExtractionEntity ResolutionDistributed Pipelines
Regulations(GDPR / EU AI Act)
RAG retrieval(LangChain + ChromaDB)
Drift check(LegalDrift engine)
YAML reasoner(rule packs)
Explainable report(MD / JSON)

Compliance Agent: Explainable Policy Copilot

Applied RAG & Reasoning / Public on GitHub

5 of 10 rules flagged as violationsSample run
Obligation / permission / prohibitionRule types

Most legal-tech LLMs act as black-box oracles. Compliance Agent flips the architecture: it uses LangChain and ChromaDB for regulatory retrieval, but screens policies using a lightweight DDL-style reasoner to evaluate explainable YAML rules. It acts as a deterministic screening layer that surfaces risk indicators and policy drift for human experts, rather than attempting to give unsupervised legal advice.

LangChainChromaDBPythonYAML Reasoner
Document v1 / v2
Legal-BERTembeddings
4 statistical tests(KS, MWU, MMD, Energy)
Fisher's methodp-value + severity
Drift report+ audit log

LegalDrift: Semantic Version Control for Law

Statistical NLP / Public on GitHub & PyPI

0.0012P-value (illustrative)
99.88%Confidence (illustrative)

Redlines tell you what words changed; LegalDrift tells you if the substantive meaning changed. By leveraging statistical NLP and embedding-based monitoring, this tool detects semantic drift across legal document revisions. It allows contract managers to verify that renegotiated agreements haven't silently introduced new obligations, treating legal documents with the same observability we apply to software state.

PythonStatistical NLPEmbeddingsAudit Logging
Live schema +agent-proposed schema
Parse to AST
Diff → operational graph
Safety policy check
Dialect-specific SQL(Postgres / MySQL)

DiffDDL: Semantic Schema Migrations

Database Engineering & ASTs / Public on GitHub

Safe / review / blockedRisk classes
Postgres, MySQLDialects

String-based diffs for database schemas are notoriously fragile. DiffDDL solves this by parsing Data Definition Language (DDL) statements into an Abstract Syntax Tree (AST) and computing the minimal operational graph to transition between states. This provides a deterministic foundation for LLM-driven database agents, allowing them to propose and validate schema migrations safely without dropping state.

AST ParsingSQLSchema ValidationAgent Tooling
Pretrained weight W
Decompose intomagnitude m + direction V
KAN adapter(B-spline ΔV, nonlinear)
RecomposeW' = m · (V+ΔV)/‖V+ΔV‖
Fine-tuned model

DoRA × KAN: Nonlinear Weight Adapters

LLM Fine-tuning Research / Experimental — design + math implemented, no public repo yet

B-spline KAN on directionAdapter
Not yet publishedPublic repo

DoRA decomposes pretrained weights into magnitude and direction, then applies LoRA to the directional component. This project replaces the linear low-rank adapter with a KAN, using learnable B-spline activations instead of fixed linear projections. The result is a PEFT method that captures nonlinear relationships in the weight residual space, adapting patterns that vanilla LoRA systematically misses.

PyTorchDoRAKANLoRAPEFT
Query
Planner agent(vector vs. graph?)
Vector searchor Neo4j traversal (MCP)
Critic agent(faithfulness check)
Answer

Graph-Augmented Agentic RAG

Agentic Systems & RAG / Prototype — exercised on a synthetic corpus, no public repo yet

Vector + Neo4j graphRetrieval
Not yet publishedPublic repo

Standard RAG retrieves semantically similar chunks. Graph RAG traverses entity relationships. Agentic RAG iterates and self-corrects. This project combines all three: an MCP server exposes the knowledge graph, a planning agent decides whether to retrieve by similarity or traverse by relationship, and a critic agent evaluates faithfulness before returning. The synthesis handles multi-hop questions that defeat flat vector search.

LangGraphNeo4jMCPRAGGPT-4o
Problem
Draft agent proposesnext N reasoning steps
Verifier agentaccepts / rejects (parallel)
Accepted steps appendedto scratchpad
Final answer

Speculative Multi-Agent Reasoning

Inference Optimization / Prototype — orchestration loop implemented, benchmark numbers not yet public

2-3×Target speedup (unverified)
Not yet publishedPublic repo

Speculative decoding uses a small draft model to propose tokens that a large model verifies in parallel. This project lifts that idea to the reasoning level: a lightweight draft agent proposes the next N reasoning steps, and a larger verifier agent accepts or rejects each in a single forward pass. The target is a wall-clock speedup on long multi-step traces with no accuracy loss, the same way token-level speculative decoding works; that target is not yet backed by a public benchmark.

LangGraphClaudeGPT-4o-miniPythonvLLM
Agent step output
Schema validation gate
Pass → continueFail → reinject + retry
Confidence check
Below threshold →human escalation

Deterministic Gate: A Validation Layer for Multi-Agent Pipelines

Agentic Systems & Reliability / Design only — not implemented, no public repo

Schema gates + memory reinjectionScope
Design onlyStatus

A 5-agent pipeline of 90%-accurate agents produces 59% end-to-end accuracy: the math compounds against you, not for you. Most of that loss isn't model capability, it's unchecked error propagation between steps. This is a design for a deterministic gate placed between every agent handoff: validate the output against a schema, reinject the original task state so context doesn't drift, and route anything below a confidence threshold to a human queue instead of letting it flow downstream silently.

LangGraphJSON SchemaPython
PR opened
Run eval set(RAGAS faithfulness / hit-rate)
Compare against thresholds
Pass → mergeFail → block + log
New failure →new eval case

Eval-Gated Deploy: Blocking Releases on Regression

LLMOps & Evaluation / Design only — not implemented, no public repo

RAGAS-based CI gateScope
Design onlyStatus

An eval test case is a compressed record of a moment the system failed, which means a deploy pipeline that doesn't re-run that set on every change is shipping blind. This is a design for a CI gate: run the production-failure-derived eval set (RAGAS faithfulness, retrieval hit-rate, schema compliance) before merge, block on regression, and pipe every new production failure caught by tracing straight back into the eval set as a new case.

RAGASCI/CDLangfusePython