noise -> signal

000

press any key to skip

AI engineer — LLM apps, agents, RAG, full-stack

 Harshal Somkuwar

I buildAI agents

I build AI agents that survive messy, real-world data.

PythonTypeScriptLangGraphQdrantPostgreSQLNext.jsFastAPIRedis

Story

01

Computer science first

A BSc in Computer Science, graduating in 2026. Databases, networks, the unglamorous fundamentals — which turned out to be exactly what agent work is made of.

02

Thrown at real client problems

From March to September 2026 at Acube AI I designed and built AI agents for multiple clients, each shaped around their requirements: an education organisation whose knowledge lived in scattered, constantly changing documents, a law firm's internal knowledge assistant, a cricket association whose coaching data had to be analysed per player.

evidenceacube-educationacube-legalacube-lms
PDF
XLSX
DOCX
PDF
XLSX
DOCX
PDF
XLSX
DOCX
PDF
XLSX
DOCX

03

The model is the easy part

Real client data is messy: PDFs, spreadsheets, multi-language text, documents that change next week. What makes an agent work is ingestion, retrieval quality, guardrails and evaluation — not the model call.

evidenceacube-educationqueryai
ingestionretrievalguardrailsevaluationmodelthe easy part

Simplified — concept only

04

Building my own systems to go deeper

To pressure-test those lessons I built my own systems: QueryAI, a text-to-SQL agent with a read-only SQL guard and an evaluation harness, and TalkDoc, an asynchronous RAG pipeline for PDF question answering.

evidencequeryaitalkdoc
schema retrievalread-only SQLmemory searchmemory writepromptQueryAI agentanswer

Simplified — concept only

05

Pitching beyond the internship

Alongside client work I built full-stack POCs for meetings and pitches to CEOs and companies — turning an idea into something a decision-maker can click through.

evidencespotchecksme-credit-checkmyccro-plus-landing

client work · anonymised

Acube work

client names withheld
01An education organisation

Website chatbot over scattered, changing documents

A large volume of documents (PDFs, Excel, Word) contained tables, images, and multi-language text, and were updated frequently. The public-facing bot needed to stay current with them.

Built a RAG-style system that could ingest and re-index the mixed document set so the website chatbot always reflected the latest material — keeping the bot current with changing documents.

Simplified — concept only

02A law firm

Internal chatbot for legal knowledge

Employees needed answers from internal legal documentation: case histories, contract templates, compliance policies, previous judgments, and case management material.

Built an internal knowledge agent over the firm's document corpus so staff could query it instead of searching manually.

Simplified — concept only

03A cricket association

AI-analysed coaching LMS

Many coaches were assigned to many players, and match and practice data needed to be recorded, analysed, and turned into personalised tips and session schedules. Coaches also needed to query anything about their assigned players.

Built the AI layer that analysed recorded sessions and matches, generated personalised recommendations for each player, and let coaches ask natural-language questions about any player they were assigned — giving them the full picture.

Simplified — concept only

noteBeyond these three systems: several full-stack POCs built for meetings and pitches during the internship.

05 · agent trace

Plain English in, guarded SQL out.

Text-to-SQL agent chat over your own database, with hybrid schema retrieval and memory. The replay shows what wraps every model call: capped hybrid schema retrieval, sqlglot-validated read-only SQL with a row cap, Mem0 long-term memory, and SSE streaming to the chat UI.

agent-trace — queryai

simulation — replays a recorded run shape

you ❯ Which categories brought in the most revenue this quarter?

  1. schema.retrieval — retrieve_context — hybrid dense + BM25 schema search in Qdrant, RRF-fused, tenant-filtered · tables: orders · order_items · products · customers
  2. sql.readonly — run_sql — sqlglot AST validation: single SELECT/WITH/UNION only, writes and DDL rejected, 51-row cap · SELECT p.category, SUM(oi.quantity * oi.unit_price) AS revenue FROM order_items oi JOIN products p ON p.id = oi.product_id JOIN orders o ON o.id = oi.order_id WHERE o.status = 'completed' AND o.created_at >= date_trunc('quarter', now()) GROUP BY p.category ORDER BY revenue DESC LIMIT 5; · rows returned: 3 of 51 max — executed as the least-privilege read-only role
  3. memory.search — search_db_facts — durable facts + user preferences from Mem0; short-term state from Redis checkpoints · hit: revenue counts completed orders only, shown in order currency
  4. memory.write — memory_write (infer=False) — queued through the Celery worker, chat responses stay off the write path · queued: stored verbatim, exactly as the agent produced it

Accessories leads this quarter with 12,480 in revenue, ahead of footwear at 9,120. Apparel follows at 7,340 across the largest number of orders.

front-end simulation of a recorded run shape — mechanism text matches the shipped QueryAI agent; demo rows are illustrative, and the QueryAI landing-page demo workspace touches no real database.

06 · Skills

Capability map

Every skill links to the work that evidences it. Hover or focus a skill to light up its evidence; hover or focus a project to light the skills behind it.

legend: every skill links to the work that evidences it

Languages

  • Python

    queryai

  • TypeScript

    queryaitalkdocspotcheck

  • JavaScript

    myccro-plus-landing

  • SQL

    queryaitalkdoc

AI / LLM

  • LLM APIs (DeepSeek, Gemini)

    queryaitalkdocspotchecksecond-brain

  • LangChain

    queryaitalkdocspotcheck

  • LangGraph

    queryaitalkdoc

  • RAG

    talkdocsecond-brainacube-educationacube-legal

  • Embeddings

    queryaitalkdocsecond-brain

  • Hybrid search

    queryai

  • Tool calling

    queryaitalkdoc

  • Agent memory (Mem0)

    queryai

  • Structured output

    spotchecktalkdoc

  • Prompt engineering

    queryaispotcheckacube-educationacube-legalacube-lms

  • LLM evaluation (DeepEval)

    queryai

Backend / data

  • FastAPI

    queryai

  • Express

    talkdocexcalidraw-collab

  • REST

    queryaitalkdoc

  • SSE

    queryai

  • PostgreSQL

    queryaitalkdoccricanalysis

  • pgvector

    second-brain

  • Qdrant

    queryaitalkdoc

  • Redis

    queryaitalkdoc

  • Celery

    queryai

  • BullMQ

    talkdoc

  • SQLAlchemy

    queryai

  • Prisma

    second-brainexcalidraw-collab

  • Drizzle

    talkdoc

Frontend

  • React

    queryaitalkdocsolconnectnexis

  • Next.js

    queryaitalkdocspotcheckcricanalysissme-credit-check

  • Tailwind

    queryaitalkdocspotcheckcricanalysis

Tools

  • Git

    queryaitalkdocspotcheck

  • Pydantic

    queryai

  • Zod

    spotchecktalkdoccricanalysis

  • Turborepo

    queryaitalkdoc

  • uv

    queryai

08 / contact

let's talk

AI engineer — LLM apps, agents, RAG, full-stack

Command palette

Jump to a section, project or link