Yogendrasinh Sodha

Data engineer. I make messy operational data answer questions.

How the production analysis MCP server works A question in plain language goes to an MCP tool layer offering SQL execution, document generation and retrieval. The layer reads the production SQL Server and an index of equipment manuals, returns an answer, and writes every access to an audit log. A question in plain language An answer MCP tool layer SQL execution Document generation Retrieval over manuals Production SQL Server Equipment manuals Audit log - every access recorded
Schematic. The tools are separate on purpose, and every call is logged.

Production analysis MCP server

Used by analysts and managers where I work.

Someone asks a question in plain English. The answer comes back from the production database, with the equipment manuals read alongside it.

Underneath, running SQL, generating a document and looking something up in a manual are three separate tools rather than one. The model inspects the schema before it asks, so it knows what exists, and every call it makes is written to an audit log.

Questions used to queue behind an analyst. Now it is the first thing I open.

Python · FastMCP · SQL Server · RAG

How the production data pipelines are arranged Three sources feed in: the ERP system, machine sensors over PLC and OPC-UA, and entries made on the shop floor. They are ingested in batch and streaming pipelines, modelled into fact and dimension tables, and read back out by dashboards, reports, alerts and the MCP server. ERP Machine sensors PLC · OPC-UA Shop-floor entry Ingestion Python · PySpark batch + streaming Dimensional models fact + dimension Dashboards Reports Alerts MCP server
Schematic. Around fifteen pipelines feed these models, and everything downstream reads them.

Pipelines and dimensional models

Used by every report the business runs on.

Every number the business reports comes through here.

Around fifteen pipelines, batch and streaming, pull from the ERP system and from the machines themselves, reading sensors straight off the hardware over OPC-UA. Terabyte scale, and no two sources agree on anything until they land.

What they land in is a set of fact and dimension tables. Everything downstream reads those: the dashboards, the weekly report, the alerts, and the question-answering above.

Python · PySpark · SQL Server · Kepware / OPC-UA

Titan's dashboard: 3 of 3 nodes online, node 1 the leader. All three cards show term 222 and commit index 21.
All three nodes up. Node 1 leads.
The same dashboard after node 1 is killed: 2 of 3 online, node 2 now the leader. Node 1's card reads offline; the other two have moved to term 223 and still show commit index 21.
Node 1 killed. Node 2 elected, and writes carry on.
The same dashboard after node 1 restarts: 3 of 3 online, node 2 still the leader, node 1 marked follower. All three cards agree again, at term 288 and commit index 21.
Node 1 back, following, caught up to the same commit index.

Titan - distributed SQLite

Used by anyone who pip installs it.

Kill the machine holding the database and the database keeps working.

Three nodes agree on every write using Raft, which I implemented from scratch in Rust rather than pulling in a library. When the leader dies the remaining two elect a new one and writes carry on. When the old leader comes back it rejoins as a follower and catches up.

SQLite underneath, an HTTP API on top, a Python client, and pip install titan-db to try it.

Rust · Raft · SQLite · Tokio

The Today tab: the dish being cooked tonight with a time estimate, a progress bar,
                      and the prep and cooking steps ticked off as they are done.
The Week tab: a dish for each day, a button to generate the week's menu, and
                      controls to swap a dish or change how many people it serves.
The Grocery tab: a shopping list built from the week's menu, grouped by aisle,
                      each item showing the quantity and which dish it is for.
The Recipes tab: a searchable recipe book filtered by cuisine, each dish showing
                      prep time, cook time and how many it serves.
Four of the five tabs: tonight's plan, the week, the grocery list, the recipe book.

MenuWeek

Used by my roommates, every evening.

In a shared house, nobody knows what is for dinner or whose turn it is to cook.

Pick the week's menu and the shopping list builds itself from it. The prep and cooking steps get ticked off as they happen, and the recipes stay searchable. Everyone signs in to the same plan, so whoever walks into the kitchen sees the same list.

A React progressive web app, installable to a phone's home screen.

React · Supabase · Vercel

Also built

About

I'm a data engineer. The work has the same shape wherever I do it: raw data in, something people can act on out.

Right now that is a manufacturer in New York, where the data comes off physical machines. Before that, a data lake on AWS. Evenings I build small things that remove a bottleneck; Titan is Rust, a language I learned by building it.

Badminton is the love. Pickleball and volleyball are what actually get played.

Photograph to come.