About

This is Ayan and I am always building things that need to exist. A frustrating process, an outdated system, or a problem people have quietly accepted is usually where the best ideas begin. The goal is to find a modern way through it and make something people actually enjoy using.

Shahzada Ayan.

Background

Outside work

Coffee, soccer, and being outside shape a lot of my days.

Moving across the world for college made it easy to walk into unfamiliar rooms, start conversations, and find common ground with people from all kinds of backgrounds. California has become home in its own way, especially the Bay Area. There is something motivating about being around people who are excited about their work, chasing big ideas, and building lives they care about.

Soccer has always been a big part of life. Five years playing, three of them club, has meant early mornings, long drives, tough losses, good teammates, and the kind of friendships that form when everyone is working toward the same thing. It keeps me competitive, but more than that, it taught me how to show up, bring energy, and make the people around me better.

Outside of work there is usually a coffee shop to try, a hike to take, or another stretch of Highway 1 worth driving. Most of the route has been explored by now. Beaches, viewpoints, roadside stops, small towns. The best part has always been the people and the conversations along the way.

The work matters, but so do the people around it. The best projects, teams, and ideas usually start with a good conversation.

How I got here

I do not like settling for what is handed to me. A degree is a title. It does not set the limit on what you learn or how far you take it.

Being stuck inside a problem and building the way out is what has moved me toward the places I want to be.

How I work

I start by finding where a system will be wrong, then design so that being wrong costs as little as possible.

That sounds defensive. In practice it moves fast. Deciding up front what happens when the model is unsure, when the scan is unreadable, when the guidance has changed since last month, means you are not rebuilding later after something silently breaks.

When I am stuck, I read the code instead of the tests. Twice on Fraqt the tests were green while the system was wrong, and both times reading found what running did not.

What I will not do is ship something that guesses. A refusal is a real answer. A confident wrong answer is not.

Approach

Find where it breaks

Before building, work out what happens when the input is bad, the source is stale, or the model is unsure.

Put the safeguard where it cannot be forgotten

Tenant isolation lives in the database, not in application code, because application code changes.

Make it refuse

If the system cannot support an answer, it says so. Every refusal is a design decision, not a gap.

Write down what it cannot do

The research paper states its limits. The churn model ships a limitations table. Fraqt lists its known gaps.

Toolkit

Languages and databases

Python

SQL

TypeScript

PostgreSQL

AI and machine learning

scikit-learn

Data and analytics

Power BI

DAX

Power Query

JMP Pro

Excel

Engineering

Next.js

React

AWS

Git

Also

AI and machine learning

LLM application design

Retrieval-augmented generation

Vector search

Embeddings

Prompt engineering

Grounding and refusal design

AI guardrails

LLM evaluation

Classification

Regression

Data and analytics

ETL pipelines

Data modeling

ERD design

Dashboards

KPI reporting

A/B testing

Customer segmentation

Survey methodology

Statistical analysis

Data validation

Engineering

OCR

Multi-tenant architecture

Application and database security

Automated testing

PII handling