Vishal Banwari

AI engineer and software engineer. I design AI agents and the systems around them.

See the work Get in touch

Human in the loop. Code in the wild.

Selected work
Behind the mask

Who I am

Kaiserslautern, Germany

I spent seven years shipping industrial software in C++, C# and Angular before going back to school in 2023 to study how people and models actually work together.

I'm finishing an MSc in Computer Science at RPTU Kaiserslautern, specialising in Intelligent Systems, and I'm back at DFKI as a research assistant. Before that I spent six months at ABB, applying LLMs to industrial fault diagnosis and building retrieval pipelines over machine logs.

The engineering years are the part I'd keep. Shipping software to people who call you when it breaks teaches you to distrust a demo that works once. Most of what I build now gets an eval harness before it gets a UI, and I'd rather have six components that each run on their own than one integration that only holds together in the demo.

My published work covers the energy footprint of LLM APIs and web agents, and HILL, a framework that lets a person reshape a model's latent space during training instead of only judging the output afterwards.

Based in
Kaiserslautern, Germany
Now
Research Assistant, DFKI
Studying
MSc Computer Science, RPTU
Focus
Human-AI interaction · LLM agents · Sustainable ML

Selected work

Five in enough detail to judge, including the parts that did not work first time.

Issue No. 01

Grid Copilot

An anomaly detector tells you something broke. This one tells you why, and cites its evidence.

The Grid Copilot dashboard: telemetry sparklines for turbine_1 with bearing_temp_c and vibration_mm_s flagged as faults, a ten-step investigation timeline calling query_telemetry, retrieve_docs and recall_incident, a cited incident report concluding a degrading rolling-element bearing at 85% confidence and matching ground truth, and the HAI detector benchmark table.
Dashboard Telemetry, the investigation timeline, and a report where every claim is cited. Full size ↗

Problem

Detection on grid telemetry stops at the alert. An operator still has to reconstruct what happened from raw signals, equipment manuals, and whatever they remember about that asset.

Approach

A streaming detector flags the anomaly. An agent then investigates it, pulling evidence from the telemetry window, from equipment and protocol documentation, and from memory of prior incidents on the same asset, and writes a root-cause report where every claim is cited. It runs entirely on public data (the HAI ICS dataset), and reuses Cortex for orchestration and mnemos for per-asset memory.

Result

A multivariate autoencoder, trained on HAI's dedicated attack-free file rather than a prefix of the test file, takes point-adjusted F1 from 0.57 to 0.70 at full recall. The harness also reports the stricter per-timestep score, where the same change matters more (0.26 to 0.58), and the precision-recall curve behind that single operating point, because which point is right is a product decision about how many false alarms a maintenance lead will tolerate per caught attack. Recall holds at 87% across all 118 labelled attack intervals in HAI's five test files, not just the friendlier one.

Issue No. 02

Due Diligence

Document intelligence for supply-chain compliance, and a reminder that the boring baseline sometimes wins.

Problem

Supply-chain compliance runs on documents. Supplier reports, sustainability certificates, audit findings, in two languages, where the same supplier turns up under several spellings. You have to resolve all of that before you can answer a question as simple as which suppliers have expired certifications.

Approach

Six components, each a standalone runnable slice rather than one big-bang integration at the end: corpus generation, LLM structured extraction with Pydantic schemas and forced tool-calling, transformer NER plus entity resolution, a risk classifier, RAG search, and a FastAPI service with observability and Docker. Everything runs on synthetic data by design. 45 suppliers, 139 English and German documents, with name variants and near duplicates deliberately seeded, because the whole point of entity resolution is having something ambiguous to resolve.

Result

139 of 139 documents extracted, with retry handling for malformed output. RAG search 5/5 on a ground-truth-checked eval set. The classifier milestone is the one worth reading: TF-IDF and logistic regression scored 85.2%, the few-shot LLM 81.5%. Two milestones shipped a first version that looked fine and was quietly wrong. A blocking bug silently fragmented 30 of 45 suppliers, and a few-shot classifier never saw a labelled certificate example. Both turned up by checking against ground truth instead of eyeballing the output.

Issue No. 03

mnemos

Persistent memory for LLM agents, including the unglamorous half: forgetting.

Live demo The memory browser on its forgotten tab, showing a low-confidence fact struck through rather than silently dropped.

Problem

Agent memory demos well and ages badly. Facts pile up, contradict each other, and go stale, and most systems have no story at all for removing anything.

Approach

Episodic and semantic memory, retrieval that adapts its own similarity and recency strategy per user, and a reflection engine that merges, decays and forgets stale facts, with every step written to an audit trail. Three storage backends (Postgres/pgvector, Qdrant, Neo4j) sit behind one interface.

Result

A FastAPI backend and a React dashboard, plus a benchmark that measures recall over simulated time rather than over one impressive session.

Issue No. 04

memlens

Every memory tool tells you what it retrieved. None of them tell you what it threw away.

Live demo A mem0-backed trace. The two excluded memories, below the 0.1 similarity threshold, are exactly the candidates mem0's own search() would have returned nothing about.

Problem

Ask any memory system for relevant memories and you get a list and nothing else. No scores, no record of what was considered and dropped, and so no way to tell a silent miss, where the memory existed but scored too low, from a memory that was never stored. Debugging a memory-driven bug is guesswork.

Approach

memlens retrieves nothing itself. It wraps a backend's own retrieval call and reports the scores that backend actually computed, so the numbers are real rather than re-estimated. An adapter is any object with a name and an async trace() method, no inheritance required. The awkward case was mem0, whose public search() only returns candidates that already cleared its threshold: the adapter calls its internal vector-store search and reapplies the threshold itself to recover the ones thrown away.

Result

Three backends behind one interface: mnemos, mem0, and raw Postgres with pgvector, which is not a memory framework at all and is ranked by pgvector's own cosine-distance operator. A terminal viewer renders any saved trace, so a capture can be read without writing code against it.

Issue No. 05

Cortex

A cognitive loop for embodied agents that keeps going when a step fails.

The scene before the run: a cupboard against the wall, and a table holding a plate and a red mug, each labelled by the vision model. Before
The scene after the run, marked GOAL ACHIEVED: the red mug is now on the cupboard shelf, with a line tracing its path from the table. After
The task Put the red mug in the cupboard. The vision model labels what it sees, and the run ends with the mug moved and the goal checked.
Live demo Getting there is the interesting part. The grasp fails because the robot is at the dock and the mug is on the table, so the loop replans with a navigate step and carries on.

Problem

Getting from a natural-language goal to a physical action is the easy demo. Recovering when step four fails is the actual problem.

Approach

The loop perceives a scene with a vision-language model, breaks the goal into a multi-step plan, dispatches each step through a modular skill registry, and re-plans in real time when a step fails.

Result

Provider-agnostic by construction. The same loop runs on Groq, on Anthropic, or on a deterministic mock with no code changes, which is also what makes it testable.

Back issues

    Research

    1. PerCom 2026 · Conference

      This Is Taking Too Long — Time as a Proxy for LLM Energy Consumption

      You cannot meter a hosted model, but you can time it. On when wall-clock latency is a usable stand-in for energy draw behind an API.

      LLM energy · Inference time · API

    2. HHAI 2025 · Conference

      HILL: Interactively Guiding Model Training Through Human Intuition

      Human in the Latent Loop. Lets a person reshape latent representations during training through a distillation-inspired objective, rather than only correcting the model's outputs afterwards.

      Human-in-the-loop · Latent space · Distillation

    3. AAAI 2025 · Workshop

      Sustainable Web Agents: Benchmarking Energy Consumption

      What it actually costs, in energy and CO₂, to let an agent browse the web on your behalf.

      Web agents · CO₂ · Sustainability

    Experience

    1. Jul 2026 – present

      Research Assistant · DFKI

      Kaiserslautern, Germany

      • Back on human-in-the-loop learning and the energy cost of LLM systems.
    2. Jan 2026 – Jun 2026

      AI Research Intern · ABB

      Mannheim, Germany

      • Root-cause analysis over machine logs using LLMs.
      • Retrieval pipelines and internal tooling for log intelligence.
      • Applied LLM reasoning to industrial fault-diagnosis workflows.
    3. Apr 2024 – Dec 2025

      Research Assistant · DFKI

      Kaiserslautern, Germany

      • Python tooling for human-in-the-loop ML workflows.
      • Loss functions driven by real-time human feedback signals.
      • Visualisations for model confidence and embedding structure.
      • Energy and efficiency benchmarking of LLMs and agents.
    4. Jun 2021 – Feb 2023

      Senior Engineer · Rugged Monitoring

      Hyderabad, India

      • Full-stack product work in Angular and .NET Core.
      • Industrial monitoring dashboards, design through delivery.
      • Led backend architecture for data-analytics features.
    5. Feb 2017 – May 2021

      Software Engineer · Qualitrol

      Ahmedabad, India

      • WPF desktop applications in C++ and C#.
      • Integrated ML modules into energy-sector systems.
      • Interface work for electrical data visualisation tools.

    Toolkit

    Daily

    Python, PyTorch, Hugging Face, FastAPI, Postgres, Docker, Linux, Git, Claude Code.

    Research

    LoRA / PEFT, RAG and retrieval, sentence transformers, continual learning, LLM evaluation harnesses.

    Still fluent

    C++, C#, .NET Core, Angular, WPF. Seven years' worth, and it still shows up in how I build.

    Away from the desk

    Guitar and piano, table tennis, chess, running, hiking, a garden that mostly survives me.

    Say hello

    Happy to talk about research collaborations, engineering problems that need a model in them, or anything in the projects above.

    vishalbanwari26@outlook.com