Arsh Ghotra
Arsh Ghotra

Arsh Ghotra

AI and Data Solutions Engineer
Overland Park, Kansas

I build guardrails for AI agents that work with data.

At Sara Software Systems I build LLM workflow systems and Databricks pipelines. On my own time I write small open source tools that stop coding agents from inventing column names, running a DELETE nobody approved, or making up the numbers in their answer.

Most of them ship with an eval you can rerun yourself, and every run's results are committed next to the code.

Email me GitHub LinkedIn

$ cat revenue_by_country.sql
select c.country,
       date_trunc('month', o.created_at) as month,
       sum(o.net_amount) as revenue
from analytics.orders o
join analytics.customers c on c.id = o.customer_id
group by 1, 2

$ schema-guard check revenue_by_country.sql
revenue_by_country.sql: `analytics.customers` has no column `country`. Did you mean: `country_iso2`?
revenue_by_country.sql: `analytics.orders` has no column `created_at`. Did you mean: `placed_at`?
revenue_by_country.sql: `analytics.customers` has no column `id`. Did you mean: `cust_id`?
revenue_by_country.sql: `analytics.orders` has no column `customer_id`. Did you mean: `cust_id`, `order_id`?
Real output. A query written from an out-of-date README, checked against the warehouse schema from schema-guard's own eval. schema-guard 0.1.0, run 26 Oct 2026. The eval

Open source

Seven tools from the last two months, most of them for AI agents that touch data. Code, tests and eval results are public on GitHub.

  1. Eight rules, five skills and a destructive-SQL seatbelt that stop coding agents from wiping, leaking or inventing data. Works with Claude Code, Codex, Cursor, Gemini CLI and Copilot.

    Python · DuckDB eval · Claude Code plugin · MCP server · v0.5.0

    25/27 risky tasks handled safely by Claude Haiku 4.5 with the rules. 10/27 without.
    eval results
    Claude Haiku 4.5, 9 risky scenarios, 3 runs each
    no rulesrules
    handled safely10/2725/27
    runs that wrote to prod10/270/27
    useful answer21/2722/27
    Without rules, one run wiped every row of prod.orders in the test warehouse while "removing duplicates". The full eval is 162 runs across three models.
  2. Checks the SQL an agent writes against a snapshot of your real tables and columns, and stops names that don't exist before the query runs. Ships as a Claude Code hook, an MCP server, a pre-commit hook and a CI check.

    Python · sqlglot · snapshots from dbt, DuckDB, Postgres, BigQuery, Snowflake, Databricks

    0 false blocks on 1,034 Spider queries. Caught 1,032 of 1,034 planted errors.
    eval results
    SQL files that ran, 4 requests, 3 runs each
    Haiku 4.5Sonnet 5
    repo only0/120/12
    snapshot + one-line rule12/1212/12
    snapshot + hook12/1212/12
    In the eval, the repo's README describes an older schema. Without a snapshot, both models trusted it and none of their 24 files ran.
  3. A multi-pane terminal workspace for Windows. Each workspace remembers its folders and startup commands, and broadcast typing sends one command to every pane.

    Python · Tk · ConPTY · v1.1.0 · winget install idk-arsh.MultiTerm

    winget accepted into Microsoft's package repository, Oct 2026.
    screenshot
    MultiTerm with a four-pane workspace running an API, tests, a web server and a worker.
    MultiTerm 1.1 running a four-pane workspace.
  4. A Claude Code hook that checks every number in the agent's final answer against the query results it actually saw, and sends the agent back when a number has no source.

    Python standard library · Claude Code Stop hook

    0/15 answers with a wrong number from Claude Haiku 4.5 with the hook. 3/15 without.
    eval results
    Claude Haiku 4.5, 5 questions, 3 runs each
    correctwrong
    no guard12/153/15
    rule only14/151/15
    hook15/150/15
    Every miss was the same kind: the agent queried eight country totals correctly, then added them up in its head.
  5. Runs known attacks through a database MCP server, then diffs the database itself to see whether "read-only" held. The verdict never depends on what the server said.

    Python · Postgres, SQLite, DuckDB · GitHub Action

    70 attack scenarios across Postgres, SQLite and DuckDB.
  6. A Claude Code plugin that reads your git history for bug fixes. If the agent tries to delete a line a fix added, it gets stopped once and shown the commit that explains why the line is there.

    TypeScript · Node 18+ · vitest · v0.1.0

    358 test cases, CI green.
  7. Lints Claude Code skills for the mistakes that make one quietly never trigger: frontmatter that doesn't parse, a name that drifted from its folder, a description with no trigger, dead file references.

    Python standard library · zero dependencies · v0.2.0

    15 checks, each tied to a way skills fail without an error.
    sample output
    $ skillint tests/fixtures/no-trigger
    …\tests\fixtures\no-trigger
      SL008  WARNING  `description` never says when to use the skill. Add a trigger clause such as "Use when the user asks to ..." or "Invoke when ..."; without one Claude rarely picks the skill on its own (claude-code issues #20986, #35053).
    
    1 findings (0 error, 1 warning)
    Real output from one of the repo's test fixtures, v0.2.0. Path shortened.
  8. Also

    data-test-guard stops an agent from hiding failing rows to turn a build green. claude-code-windows-kit is a setup kit for Claude Code on Windows.

About

I once asked a coding agent to remove duplicate orders from a small test warehouse. It deleted every row in the table. Most of what I've built since comes from that: the agent wrote SQL that looked reasonable, ran it, and moved on.

My day job is the same problem from the other side. At Sara Software Systems I build LLM systems that read long documents and find related past work, and I keep the model away from data it doesn't need to see. I'm also the partner manager for our Databricks partnership.

Python, SQL, DuckDB, Databricks (Unity Catalog, Lakeflow), PostgreSQL, the Claude API, MCP, Claude Code hooks and plugins, FAISS, pytest, GitHub Actions.

Experience

  1. Jul 2025 to now

    AI and Data Solutions Engineer Sara Software Systems

    LLM workflow systems for proposal and RFI work, including a document parser that turns a 60-page document into structured rows in about 12 seconds, and local retrieval over past projects. Partner manager for Databricks.

  2. May 2024 to May 2025

    Advanced Technology Assistant Indiana State University

    Automated reporting and data cleaning with Python, SQL and Power BI, and maintained the university website.

  3. Oct to Dec 2024

    IT Intern Glas-Col

    SQL reports and Power BI dashboards for sales, production and inventory.

Education

  1. Sep 2026

    Databricks Certified Data Analyst Associate

    Plus Databricks partner training on the Data Intelligence Platform and on governance with Unity Catalog.

  2. May 2025

    BS Computer Science Indiana State University

    Data Science concentration, GPA 4.0.

  3. May 2023

    Dog Breed Identification IRJET 10(5), first author

    A transfer learning model over 120 breeds. PDF

Contact

arsh9745774@gmail.com

Questions about any of these tools are welcome. Open an issue on the repo, or email me.