Contact
Loading

Index

I build systems that refuse to guess.

Retrieval, pipelines, and the parts that decide when not to answer. Five of them.

AI & ML, third year, Hyderabad.

Retrieval decides
what the model knows.

Orchestration decides
what it does.

Evaluation decides whether
either of them worked.

Retrieval decides
what the model knows.

Orchestration decides
what it does.

Evaluation decides whether
either of them worked.

Work

What's running.

Five systems. Each one built around the thing it refuses to do.

01Retrieval · advisory · Oyelabs

Cite or Decline

Answers from what the index actually returned, or from nothing.

[ N ]
records embedded
0.60
similarity floor before an answer counts
0
cross-user rows
Before
Reasons fluently over the nearest chunk, answers anyway.
After
Clears the floor, or declines.
Python · FastAPI · PostgreSQL · pgvector · bge-small-en-v1.5 · AWS BedrockRead the build
02Pipelines · outbound · Oyelabs

Verified or Empty

Turns a map search into contactable leads, or leaves the contact field blank.

[ N ]
businesses crawled
[ N ]%
of extracted emails correct, n = 50 hand-checked
0
cross-tenant rows
Before
Guesses at the address, sends anyway, burns the domain.
After
Checks the mail domain, or leaves the field empty.
Next.js · TypeScript · Supabase · PostgreSQL · n8n · GroqRead the build
03Pipelines · media

What, Then When

The model decides what each scene shows. Real audio decides when it shows it.

4
components in the pilot library
1
alignment, driving sync and captions both
0
model-authored timestamps
Before
Emits plausible times; the arrow draws two seconds early.
After
Derives every frame from the voice that already exists.
Python · Node.js · LangGraph · Remotion · WhisperX · FFmpegRead the build
04Automation · meetings

Assign or Flag

Turns a meeting transcript into owned, dated tasks. Never invents an owner.

[ N ]
meetings processed
4
owner states, not one
at-most-once
delivery, leased before send
Before
Picks the likeliest Priya and moves on.
After
Names both candidates, or nobody, and says which.
n8n · Claude · JavaScript · DockerRead the build
05Security · email

Inconclusive

Screens recruiter mail for fraud, and says so when it can't tell.

7
signals, none decisive alone
0
links opened
three
outcomes, not two
Before
Every message gets a verdict, including the ones it can't call.
After
The unresolved ones go back to a human with the evidence.
Python · SQLite · ClaudeRead the build

Work

What's running.

01Retrieval · advisory · Oyelabs

Cite or Decline

Answers from what the index actually returned, or from nothing.

[ N ]
records embedded
0.60
similarity floor before an answer counts
0
cross-user rows
Before
Reasons fluently over the nearest chunk, answers anyway.
After
Clears the floor, or declines.
Python · FastAPI · pgvector · BedrockRead →
02Pipelines · outbound · Oyelabs

Verified or Empty

Turns a map search into contactable leads, or leaves the contact field blank.

[ N ]
businesses crawled
[ N ]%
of extracted emails correct, n = 50
0
cross-tenant rows
Before
Guesses at the address, sends anyway, burns the domain.
After
Checks the mail domain, or leaves the field empty.
Next.js · Supabase · n8n · GroqRead →
03Pipelines · media

What, Then When

The model decides what each scene shows. Real audio decides when it shows it.

4
components in the pilot library
1
alignment, sync and captions both
0
model-authored timestamps
Before
Emits plausible times; the arrow draws two seconds early.
After
Derives every frame from the voice that already exists.
Python · LangGraph · Remotion · WhisperXRead →
04Automation · meetings

Assign or Flag

Turns a meeting transcript into owned, dated tasks. Never invents an owner.

[ N ]
meetings processed
4
owner states, not one
at-most-once
leased before send
Before
Picks the likeliest Priya and moves on.
After
Names both candidates, or nobody, and says which.
n8n · Claude · DockerRead →
05Security · email

Inconclusive

Screens recruiter mail for fraud, and says so when it can't tell.

7
signals, none decisive alone
0
links opened
three
outcomes, not two
Before
Every message gets a verdict, including the ones it can't call.
After
The unresolved ones go back to a human with the evidence.
Python · SQLite · ClaudeRead →

The interesting failures
are the quiet ones.

Method

Five steps, in order.

Skipping one doesn't save time. It just moves the cost later.

01

Observe

Read what already exists — the documents, the logs, the thing that broke — before writing anything.

02

Analyse

Did it look in the wrong place, or think about it wrongly? Those need different fixes.

03

Simplify

Remove before adding. Most problems get solved by deleting a step, not writing one.

04

Build

Say exactly what goes in, what comes out, and what happens when it fails.

05

Measure

Test the same questions every time. A result you can't repeat isn't a result.

Method

Five steps, in order.

Skipping one doesn't save time. It just moves the cost later.

01

Observe

Read what already exists before writing anything. Skip it and you solve a problem nobody had.

02

Analyse

Did it look in the wrong place, or think about it wrongly? Skip it and you tune the model when the retrieval was wrong.

03

Simplify

Remove before adding. Skip it and you automate something that should have been deleted.

04

Build

Say exactly what goes in, what comes out, and what happens when it fails. Skip it and the failure mode gets discovered by a user.

05

Measure

Test the same questions every time. Skip it and every improvement is a story.

Stack

Picked for the job, not the résumé.

Built with.

Stack · 02

What was hard.

Most of these are common. Three of them are not.

About

Where I am.

Third year of a B.E. in Artificial Intelligence and Machine Learning at Lords Institute of Engineering and Technology, Hyderabad. Graduating 2028.

About

Where I am.

I started building systems in first year instead of waiting for the degree to finish. Three of the five above came out of that.

The other two were built at Oyelabs, on an AI Automation internship that's still running. Requirements arrive from somebody else there — a different discipline from choosing your own.

The degree provides the scaffolding. The projects build the muscle.

Most of it was written after midnight. Not discipline — that's just when the room goes quiet.

Web development is the hobby that got out of hand. This page is hand-built: every section, every transition, no template. It's where an idea gets tested against a browser instead of a notebook.

Away from the screen: chess, cricket, film, and whatever's playing.

Contact

Where this is useful.

Retrieval that has to be right. Agents that have to fire once. Generation that has to stay inside a schema.

Open to internships and project work. More interested in the problem than the title.

Writing about a corpus? Say what's in it, what questions it needs to answer, and what a wrong answer would cost. That saves a round trip.

MOHAMMED SHABAAZ IST · UTC +5:30 Hyderabad, India

Every problem leaves a pattern.