Skip to content
KEVINJONES

Kevin Jones · Chennai, India · B.Tech Computer Science and Engineering, 2027

Systems that know
when to stop.

Six projects below. Each one is introduced by the thing it refuses to do — because that’s the decision that took the thinking. The rest is implementation.

Projects
6
Deployed
5
Graduating
2027

Selected work

Six systems, and what each one won’t do.

Every refusal below is a documented decision in that project’s own README or agent context — not a claim written for this page.

Client-side MLLive

StarMatch

Upload a photo and find which public figure you most resemble. Face detection and the 128-dimension embedding both run inside your browser tab.

Refuses

It won’t upload your photo.

There is no endpoint to upload it to. The privacy claim is architectural rather than a promise on a policy page — adding a server-side inference path would mean deleting the property the project exists to demonstrate.

  • Euclidean, not cosine
  • 8/10 top-1 on held-out probes
  • 12 MB weights, lazy-loaded

Next.js 16 · TensorFlow.js · face-api · visx

Governed AILive

Frontier Platform

Three services — grounded retrieval, a multi-agent workflow, and the guardrail library both of them import — behind an evaluation suite wired into CI.

Refuses

It won’t answer when the evidence is weak.

Three independent floors gate every answer: IDF term coverage, reranker score, and a composite grounding score. Miss one and the service says which one it missed. On the committed golden set it refuses exactly the three unanswerable questions and none of the thirteen answerable ones.

  • 99 tests passing
  • CI fails on a quality drop
  • Runs offline, no API key

Python 3.12 · React · TypeScript · GitHub Actions

AutomationCLI

Job Autopilot

Seven public board APIs in, one ranked approval queue out. Hard gates disqualify and store the reason; survivors get a 0–100 score that carries its own For and Against.

Refuses

It won’t submit the application.

Unattended form-fill means typing a real address into third-party forms and clicking irreversible controls. It also gets accounts restricted and trips ATS duplicate filters, which costs you the roles you wanted. The pipeline stops at a queue a human reads.

  • 1,341 postings scanned in a day
  • 6 hard gates
  • 2 dependencies

Python 3.11 · SQLite · PyYAML

Visual toolingLive

CodeAuto

A drafting sheet for HR processes. You draw the workflow on a ruled grid and a checker marks up what is wrong in the margin before it will run.

Refuses

It won’t run a workflow that doesn’t check out.

The defining behaviour is the validation, not the canvas. “Must have an End node”, “node is not connected” — every outstanding issue is numbered in the margin, and clicking one selects the offending node. Numbering appears only there, where the count is real.

  • 5 node types
  • Click-to-locate issues
  • Live structural validation

React 19 · React Flow · Zustand · MSW

RetrievalLive

JobMatch RAG

Natural-language search over scraped remote listings. A metadata prefilter narrows the field, vector ranking orders what’s left, and results stream back as structured cards.

Refuses

It won’t serve a stale listing.

Every job carries a lastSeen stamp and anything past 48 hours is pruned from the index on ingest. A job board that returns filled roles is worse than no job board, so the index is allowed to shrink.

  • Hybrid metadata → vector
  • 48-hour prune
  • Portable JSON index

Next.js · Gemini · Vercel AI SDK · Cheerio

Agent memoryLive

MemoryVault AI

Durable memory for agents on CockroachDB. Facts, preferences and project context are distilled out of conversations and retrieved into later prompts automatically.

Refuses

It won’t call the scrollback buffer memory.

Chat history is ephemeral turns you scroll through to remind the model, and it is lost between sessions. Memory is distilled facts that survive across days and projects and are retrieved into every prompt. The vault is the product; chat is one way into it.

  • CockroachDB
  • Bedrock Titan embeddings
  • Cited retrieval

Next.js · Drizzle ORM · AWS Bedrock · Auth.js

How I work

Four rules that cost something to learn.

Each of these is committed to a docs file in the repo it came out of, alongside the failure that produced it.

Rejections are stored, not discarded.

Filtered jobs stay in the database with the reason they were filtered. That is what makes a threshold tunable against real data instead of a guess — the not-a-tech-role gate exists because the rejection log showed it was needed.

job-autopilot / AGENTS.md

A green test that tests the wrong thing is worse than no test.

A face benchmark reported 57% accuracy. The failures turned out to be a waxwork, a photo of a fan holding a picture of the subject, and a surname collision. Same code, corrected test set: 80%. The number was measuring the benchmark, not the system.

starmatch / docs/FRONTEND.md

Measure both sides of an improvement.

Flip-augmentation is a standard cheap win, so it looked obviously worth adding. Measured: identical accuracy, double the cost, and the naive form pulled impostors closer too. Rejected on the numbers, kept behind a flag so the negative result stays reproducible.

starmatch / docs/FRONTEND.md

Deploying is not pushing.

A CLI-created Vercel project is not necessarily linked to the repo. Three commits sat pushed and undeployed while the feature “wasn’t working”. After shipping, fetch the live URL and confirm the change is in the response.

starmatch / docs/FRONTEND.md

About

I build the boring parts on purpose.

I’m Kevin — a third-year computer science engineering student at SRM Institute of Science and Technology, Ramapuram, working out of Chennai.

Most of what I build is retrieval, evaluation and automation: the machinery that decides whether an answer is good enough to show someone. That machinery is where the failures live, so it’s where I spend the time — writing the gate, the benchmark and the rejection log before the interface that sits on top.

I write the reasoning down as I go. Every project here carries a decisions file explaining why it works the way it does, which is the only reason the rules in the section above are quotable.

Languages
Python · TypeScript · SQL · C++
Frontend
Next.js · React · Tailwind · GSAP · visx
Backend
FastAPI · Node · Drizzle · SQLite · Postgres
AI
RAG · reranking · embeddings · Bedrock · Gemini
Infra
Vercel · Docker · GitHub Actions
James Kevin Jones, portrait
James Kevin Jones presenting a project at an expo