Vivaan Jain
Quantitative Researcher · Systematic Equity · Mumbai, India
Open to quant research internships
Abstract. I build and operate systematic equity strategies on Indian markets: point in time data, cross sectional signals, portfolio construction under the full cost stack, and the validation that separates skill from luck. One book trades itself nightly against real closes. The most useful thing I have produced is a documented list of what does not work.
- Net Sharpe
- 1.02
- Net CAGR
- 13.7%
- Max drawdown
- −28%
- PBO, ML study
- 0.86
- Documented nulls
- 7
- Tests in CI
- 243
Live book, 2012 to 2026, net of the complete Indian cost stack.
§1
Quantitative Research
Point in time data, cross sectional signals, portfolio construction under real costs, and the validation that decides whether any of it is skill. Each entry expands into the protocol, the numbers, and the results that did not work.
- IC
- Spearman rank correlation between a signal and the forward return it is meant to predict.
- Sharpe
- Annualised mean excess return divided by its standard deviation, always quoted net of costs here.
- DSR
- Deflated Sharpe. The Sharpe discounted for how many configurations were tried before this one. Below 0.95 is not an edge.
- PBO
- Probability of backtest overfitting. The share of splits where the in sample winner loses out of sample. 0.5 is a coin flip.
- CPCV
- Combinatorially purged cross validation. Train and test blocks separated by a purge and an embargo so overlapping labels cannot leak.
- SPA
- Hansen's Superior Predictive Ability test, for whether the best strategy in a family beats the benchmark once the whole family is counted.
1.1
Artha · Systematic Equity Trading System
● Live · Operated
A weekly cross sectional momentum book on Indian equities: researched, validated, and actually operated, on zero paid data. Net Sharpe 1.02 and 13.7% CAGR across 2012 to 2026 after the complete Indian cost stack. It runs itself at 19:00 every evening, it knows when it has been fooled, and its most valuable output is a documented list of things that do not work.
Net Sharpe1.02Net CAGR13.7%Max drawdown−28%
A weekly cross sectional momentum book on Indian equities: researched, validated, and actually operated, on zero paid data. Net Sharpe 1.02 and 13.7% CAGR across 2012 to 2026 after the complete Indian cost stack. It runs itself at 19:00 every evening, it knows when it has been fooled, and its most valuable output is a documented list of things that do not work.
Artha builds a point in time NSE panel from primary bhavcopy and declared corporate actions, delistings included, ranks the cross section on weekly momentum, constructs a 25 name book with Ledoit-Wolf minimum variance weights and Gârleanu-Pedersen partial adjustment, targets volatility, caps participation against ADV, and executes at the T+1 close. The full Indian cost stack is charged: STT, stamp duty, exchange and SEBI fees, GST, flat DP charges, and square root market impact.
The larger half of the project is proving the result is not luck. Validation is purged walk forward plus combinatorially purged cross validation, deflated Sharpe measured against an append only trial ledger, White's Reality Check and Hansen's SPA. The live layer holds backtest and engine parity as a CI gate, uses deterministic idempotent order ids, enforces drawdown rails, and runs a heartbeat that alarms on silence rather than only on failure. One line: a research lab that happens to trade, built so its own results cannot lie to it.
| Configuration | CAGR | Sharpe | Max DD | Turnover |
|---|---|---|---|---|
| LW min-var + GP τ0.5 · live config | 13.7% | 1.02 | −28% | 4.2× |
| Equal weight + no-trade bands | 12.8% | 0.96 | −27% | 5.2× |
| Naive momentum 12-1 | 23.6% | 0.96 | −49% | · |
| NIFTY 500 synthetic TRI | 14.97% | 0.94 | −38% | · |
corporate actions · F&O · news
sha256 manifest · CA sanity gate
purged CV · CPCV · PBO · DSR · SPA
LW min-var · GP τ · vol target
parity gate in CI · OMS
IC decay · PSI drift · heartbeat
- Machine learning does not beat momentum. Ridge, LightGBM, MLP and a Transformer under one purged protocol: PBO 0.86, meaning the in sample winner is overfit in 24 of 28 splits
- Post earnings drift runs backwards in India. Across 1.48M timestamped exchange announcements the biggest positive surprises reverse, t = −6.9, and event features add no weekly alpha
- The single name model zoo loses to buy and hold. GRU, LSTM, Transformer and ensemble all land under half the always long floor after costs, under both retraining schemes. Retraining cadence turned out irrelevant: the problem is absence of signal, not staleness
- News sentiment gating subtracts value, 0.06 against 0.58 Sharpe, consistent with the inverted drift above
- A learned trading speed policy ties the fixed constant. LinUCB over 728 weekly decisions returns PBO 0.93 and near uniform action counts: the agent itself reporting that the objective surface is flat and the Gârleanu-Pedersen constant is already near optimal
- Momentum crash regime gates add nothing beyond the volatility targeting already shipped, and EWMA covariance does not beat Ledoit-Wolf, paying for faster adaptation in churn
The headline finding, written up as a working paper: decomposition preprocessing is look ahead. A large literature reports Sharpe 3+ on daily equity forecasting after EMD or CEEMDAN preprocessing. Artha reproduced those numbers exactly, IC 0.41 and Sharpe 3.6, then recomputed the identical transform causally so no future data could touch any training input. The entire edge vanished, IC −0.04. The leaky minus causal gap is the published result, and it is what a global transform applied before a temporal split does to you.
- The data feed lied. The declared corporate action feed carried a 1:5 TVSMOTOR split that never happened, manufacturing a +398% phantom return. The adjuster now verifies every declared factor against the ex day price in both directions and has caught 14 phantom events across the history
- A headline was caught being inflated by its own author. Construction v2 first measured Sharpe 1.119 at −21% drawdown; internal code review found a position cap bug silently parking gross in cash, which is accidental de-risking. Corrected to 1.018, and both numbers stay in the record
- A significance claim was corrected downward. The claim that the family beats the index at SPA p = 0.0415 turned out to be carried by a naive fully invested baseline inside that family; across constructed configurations alone, p = 0.655
- A promising upgrade was refused. A momentum plus low volatility blend scored Sharpe 1.30 against the live 1.02, then failed two of four pre registered gates, PBO 0.500 and SPA 0.655. It was held, not shipped, and the friendlier re-test that might have rescued it was deliberately not run
Synthetic total return benchmark because no free NIFTY 500 TRI exists; a static current sector map; cash earns 0%; hedge margin financing unmodelled; paper slippage degenerate until live quotes arrive; an announcement taxonomy audited at 81% accuracy; GDELT news coverage reaching 72 of 115 months before the free API rate limited it; and a deflated Sharpe of 0.20 that counts every single name experiment against the cross sectional book, which is deliberately conservative. Each one is tracked with a confirmation date, because a limitation you disclose cannot ambush you later.
1.2
FullBacktester · Leakage Resistant Backtesting Framework
v0.1 · Alpha
A Python backtesting library for people who have been burned by backtests. Point in time data access that makes look ahead a construction error rather than a discipline problem, an AST scanner and a perturbation tester for leakage in strategy code, two execution engines whose disagreement is itself the diagnostic, and performance statistics that account for how many strategies you tried before picking this one.
Engine agreement1e-9Test suite~80Python versions in CI3.11–3.13
A Python backtesting library for people who have been burned by backtests. Point in time data access that makes look ahead a construction error rather than a discipline problem, an AST scanner and a perturbation tester for leakage in strategy code, two execution engines whose disagreement is itself the diagnostic, and performance statistics that account for how many strategies you tried before picking this one.
Most backtesting frameworks leave the hard part to the user's discipline: not reading the future, not trusting a fill that would never happen, not forgetting how many strategies were tried before this one looked good. FullBacktester moves each of those from a habit into a construction constraint. A strategy never receives a full price history, only a PanelView of bars up to and including the current one, with read only arrays and bars stamped at their close instant in UTC, so a daily bar is not knowable until the exchange has actually closed.
Every strategy in an Arena runs against the same panel, the same execution config, and the same battery of checks, and the overfitting statistics use the number of entries as the number of trials. The summary reports CAGR, Sharpe, deflated Sharpe given that trial count, max drawdown, turnover, cost drag, and the Sharpe gap between the idealized and realistic engines, with every HIGH severity validation finding printed underneath.
| Pitfall | Defence |
|---|---|
| Look ahead through the data | PanelView ends at the current bar; UTC close stamping |
| Look ahead in strategy code | StaticScanner AST patterns + FutureLeakTester perturbation |
| Look ahead in ML training | Embargoed WalkForwardMLStrategy + PurgedKFold |
| Unrealistic execution | Event driven engine, cash ledger, next open fills, participation caps |
| Vectorized wishful thinking | Same cost model, checked against the event driven engine |
| Trying many strategies | Deflated Sharpe and CSCV probability of backtest overfitting |
yfinance · NSE bhavcopy · local
read only, ends at bar t
weights or on_bar
event driven · vectorized
AST · perturbation · parity · data QA
DSR · PBO · cost drag
- Point in time by construction:
PanelViewexposes bars [0, t] as read only arrays, so look ahead is a type of code that cannot be written rather than a mistake to be caught in review - Two independent leakage detectors: a static AST scanner over strategy source, and a dynamic perturbation tester that corrupts the future and checks whether the present decision moves
- Dual engine design where agreement is the test: the vectorized engine exists for speed and shares the cost model exactly, and any divergence from the event driven ledger is surfaced as implementation risk
- Multiple testing taken seriously:
probabilistic_sharpe_ratio,deflated_sharpe_ratio,minimum_backtest_length, and CSCVprobability_of_backtest_overfittingare first class metrics, not an appendix - Packaging verified the way users experience it: a clean room script builds the wheel, installs it into a fresh virtualenv with the source tree off the path, and exercises the installed copy, which catches a module missing from the wheel, a lost
py.typedmarker, or an extra that is not really optional - Limitations stated in the README rather than discovered later: corporate actions are not modelled point in time, intraday fills assume the bar's open is attainable, the leakage tests cannot see a strategy that reads the future from a global, and no options, futures margining, borrow costs or FX in v0.1
1.3
ML Research: Equity Forecasting + Sentiment Alpha
Research
Two related quantitative finance ML projects: a custom Transformer for multi horizon Nifty 50 direction forecasting (0.62 AUC, 0.6+ Sharpe), and a controlled experiment testing whether news sentiment provides incremental alpha beyond price.
AUC (Transformer)0.62L/S Sharpe0.6+Training days4,900+
Two related quantitative finance ML projects: a custom Transformer for multi horizon Nifty 50 direction forecasting (0.62 AUC, 0.6+ Sharpe), and a controlled experiment testing whether news sentiment provides incremental alpha beyond price.
A Transformer encoder built from scratch in TensorFlow that outputs directional forecasts for 4 horizons simultaneously: 1, 5, 10, and 20 trading days: from one forward pass. Trained on 4,900+ trading days (Jan 2006–Feb 2026). FinBERT news sentiment fused as a parallel signal. Achieved 0.62 AUC and 0.6+ non overlapping long short Sharpe on the held out test set.
Jan 2006 to Feb 2026
OHLCV + technicals
sentiment score
60-day self attention · TensorFlow
1/5/10/20d · 0.62 AUC
A rigorous controlled experiment testing a specific hypothesis: does news sentiment provide incremental predictive signal beyond pure price based models in financial markets? Pipeline fuses historical price, volume, and API sourced news sentiment. Found a 5-day return correlation improvement from 0.43 to 0.46 using sentiment features, supported by MAE and RMSE diagnostics and shuffle testing. Conclusion: gains were modest, unstable, and highly sensitive to validation design: which is itself a meaningful finding about the fragile nature of financial signals.
- TensorFlow throughout: Transformer encoder built from scratch, custom multi head attention, positional encoding, 60-day temporal context window
- Fully vectorized backtesting engine: long short strategy evaluated at decile level without any lookahead: the backtester was built from scratch, not a library
- Walk forward validation: multiple expanding train windows evaluated in sequence, not a single temporal split, providing more robust out of sample estimates
- Leakage free scaling: mean and std computed only on training windows, applied to val/test: prevents a common source of overly optimistic results in finance ML
- Sentiment alpha experiment designed to falsify, not confirm: MAE/RMSE diagnostics and shuffle testing specifically to distinguish genuine signal from validation artefacts
1.4
Overnight Return Prediction · Quant Research Submission
Research
Predicting the overnight gap into the next open across 208 NSE symbols: move size, direction, and calibrated confidence as four independently fitted models rather than one model wearing four hats. Pooled rank IC 0.178 at t = 24.5, and a residual direction score of 0.0001 that the write up leads with instead of burying.
rank_ic (t = 24.5)0.1782magnitude_score0.2401conf_magnitude residual0.2696
Predicting the overnight gap into the next open across 208 NSE symbols: move size, direction, and calibrated confidence as four independently fitted models rather than one model wearing four hats. Pooled rank IC 0.178 at t = 24.5, and a residual direction score of 0.0001 that the write up leads with instead of burying.
Given the close on day T for roughly 208 NSE stocks, the pipeline predicts the overnight gap into the open on day T+1: how large the move will be, which direction it goes, and how confident the model is about each. These are four separate, independently fitted models. Magnitude is a LightGBM regressor on log1p(|return|), log space because the target is right skewed and a handful of genuinely extreme moves sit far out in the tail. Direction is a separate LightGBM classifier with its own features and its own hyperparameters, trained independently rather than derived from magnitude.
Direction confidence is deliberately not the classifier's raw probability, because tree ensemble probabilities are typically miscalibrated. Magnitude confidence is fitted on genuinely out of fold errors via a walk forward split on train, never on in sample residuals, because in sample residuals answer an easier question than the one that matters at prediction time.
| Metric | Pooled | Residual |
|---|---|---|
| rank_ic (t = 24.5) | 0.1782 | · |
| magnitude_score | 0.2401 | 0.2245 |
| conf_magnitude_score | 0.2340 | 0.2696 |
| direction_score | 0.2414 | 0.0001 |
| ece_10 · calibration error | 0.0211 | · |
Pooled direction looks strong. After subtracting the common market wide move, it is 0.0001. Rather than average that away, three explanations were checked with the actual numbers printed at each step. Is the classifier degenerate? No, raw probabilities have genuine two sided spread and hundreds of rows score below 0.5 before calibration. Is the calibrator broken? No, bucketing the validation split into deciles and checking the realized up rate in each shows even the lowest decile is well above 50% on held out data, so the calibrated output is reflecting reality rather than fighting it. Is the confidence flip rule over triggering? No, the calibrated probability never dropped below 0.5 on test before that rule ran.
Overnight returns in this dataset are up 67 to 73% of the time across all three chronological splits. A correctly calibrated model has limited honest basis to call down. Forcing more down calls would have produced better looking recall and a less truthful model.
- Feature importance showed
breadth_pos_fracandxs_dispersion, pure market regime indicators identical across all 208 stocks on a given day, dominating the direction model, while the one feature capturing a stock's standing against its peers ranked 15th and was barely used - Rank and z score versions of two absolute features tied to the overnight persistence mechanism were added and the model retrained. Down calls on test went from zero to 103 genuine ones, and the fraction of stocks beating their own naive always up rate moved off zero for the first time, to 0.029
- Breadth reported with the same honesty: 204 of 208 stocks clear a 50% hit rate, but since the direction model calls up on nearly every row, a stock's hit rate is mechanically close to its own historical up rate, and the correlation between the two is effectively 1.0. The meaningful breadth result is the magnitude side, where all 208 beat the naive baseline and that does not reduce to the always up mechanism
- A separate model trained directly on the residual target, the sign of a stock's return minus the universe mean, showed real skill on its own terms: 56.6% hit rate on a genuinely near even target, and a 0.183 mean daily cross sectional rank correlation between its confidence and which stocks actually beat the market across 282 test days
- That model was tested for inclusion and then left out. On the 60% of test rows where the two models disagree, the primary model is right 64% of the time. The combination was measured rather than assumed, found not to help, and not shipped
- Reproducibility as a checked property, not a claim: a single seed threaded through every model's
random_stateand the walk forward splitter, verified by two independent fresh runs producing byte identicalpredictions.csvandstatistics.csv
§2
Research
Independent research under the ACM Research Core programme, and the conventional baseline it is defined against. The second card is on the page precisely because the first one exists to break it.
2.1
Cost Sensitive Deep Learning for Credit Scoring
ACM Research · 2025
A novel deep learning architecture that learns non linear latent borrower risk embeddings, models temporal debt acceleration, optimises for economic loss (not AUC), and produces regulator grade explanations, built in, not post hoc.
DatasetConfirmedBase paperFoundArchitectureDesigned
A novel deep learning architecture that learns non linear latent borrower risk embeddings, models temporal debt acceleration, optimises for economic loss (not AUC), and produces regulator grade explanations, built in, not post hoc.
Credit scoring sits at an intersection of three unsolved problems. First, high performing deep models learn complex non linear borrower representations that are impossible to explain to risk teams or satisfy regulators, explainability is now a legal requirement under frameworks like Basel and GDPR, and post hoc methods like SHAP produce approximations, not faithful explanations. Second, misclassification costs in lending are fundamentally asymmetric and instance dependent: rejecting a creditworthy borrower costs differently to approving a defaulter, and that ratio varies per loan. Optimising for AUC ignores this entirely. Third, existing models treat borrower risk as stationary, they miss that financial distress typically accelerates non linearly before a default event.
This research addresses all three with one unified architecture: learn latent risk embeddings, explicitly model debt acceleration dynamics, optimise directly on economic loss with an instance dependent cost function, and keep the decision process inherently interpretable.
financial + behavioural
non linear representations
borrower risk manifold
temporal sequence
rate of change dynamics
instance dependent asymmetric loss
+ inherent XAI
- Non linear latent risk embeddings, the model learns a borrower risk manifold from raw financial and behavioural inputs rather than relying on hand crafted credit features, capturing interaction effects that linear scorecards cannot represent
- Temporal debt acceleration modelling, explicitly models the rate of change of debt accumulation over time; financial distress rarely appears suddenly, it accelerates, and this module learns those pre default dynamics from borrower history
- Instance dependent cost sensitive optimisation, trained directly on economic loss where the asymmetric cost ratio is per borrower, not a fixed global hyperparameter; makes the learning objective match what a lender actually cares about
- Inherently interpretable architecture, explainability is built into the model's forward computation, not added as a post hoc approximation; explanations are faithful to what the model actually computed, satisfying regulatory interpretability requirements
A model that correctly identifies 90% of defaults but misclassifies every large loan defaulter as creditworthy scores well on AUC and is catastrophic in practice. This research trains directly on business loss: the asymmetric financial cost of each misclassification type, weighted by the specific borrower's loan profile. The evaluation metric is expected economic loss on the held out set, not AUC.
2.2
Automated Credit Risk Evaluation for Loan Approval
Foundation work
Binary classification on historical loan applications: income, loan amount, credit history, education, employment and property area in, an approve or reject decision out. A full supervised pipeline from EDA through feature engineering to a Flask app that serves the trained model. This is the standard formulation of credit scoring, and it is here because the research above exists to attack what it gets wrong.
TaskBinaryObjectiveSymmetricTemporal modellingNone
Binary classification on historical loan applications: income, loan amount, credit history, education, employment and property area in, an approve or reject decision out. A full supervised pipeline from EDA through feature engineering to a Flask app that serves the trained model. This is the standard formulation of credit scoring, and it is here because the research above exists to attack what it gets wrong.
An end to end supervised learning pipeline over historical loan application data: exploratory analysis, preprocessing, feature engineering, and a binary classifier that predicts whether an application should be approved. A Flask interface wraps the trained model so applicant details can be entered and scored directly, which is the part that turns a notebook into something a person can actually use.
applicant + loan features
missing values · encoding
approve / reject
form in, prediction out
- It optimises a symmetric objective. Approving a defaulter and rejecting a creditworthy borrower cost different amounts, and the ratio moves with the size of the loan. R1 replaces this with an instance dependent asymmetric loss trained directly on economic loss
- It treats borrower risk as stationary. A single snapshot of features carries no notion of debt accumulating faster over time, which is how distress actually shows up before a default. R1 adds an explicit debt acceleration module
- Whatever explanation it offers is post hoc. A classifier plus SHAP produces an approximation of a decision, not the decision itself, which is the wrong side of the line for a regulated credit decision. R1 makes interpretability part of the forward pass
Kept on the page for that contrast. The honest description is a competent, conventional credit scoring pipeline with a working demo, and the value of having built it is knowing precisely which of its assumptions to go after.
§3
Engineering
Production systems built alongside the research: agentic finance tooling, retrieval infrastructure, and multilingual speech pipelines. These are shipped applications rather than research, and they are here because the research above needs someone who can also build the thing.
3.1
FinIntel — Agentic Equity Desk
● Live
An agentic AI equity research desk for Indian markets (NSE): six specialised LLM agents grounded in live market data, LangGraph human in the loop approval gates, a mandatory compliance pipeline, and deterministic Python maths so the model interprets numbers rather than inventing them.
Interactive agents6ReAct tools31Human in the loop agents4
An agentic AI equity research desk for Indian markets (NSE): six specialised LLM agents grounded in live market data, LangGraph human in the loop approval gates, a mandatory compliance pipeline, and deterministic Python maths so the model interprets numbers rather than inventing them.
FinIntel is a multi agent system for equity research on India's National Stock Exchange. A fleet of specialised LLM agents, each grounded in live market data, lets a user analyse a single stock, screen the market by custom criteria, audit portfolio risk, or request a full research report. A five question suitability profile gates every recommendation against the user's stated risk tolerance, and human in the loop approval gates keep a person in control of consequential steps.
Every output passes a mandatory compliance pipeline: input validation, semantic screening, grounded rewrites that avoid fabrication, PII scrubbing, and SEBI style disclaimers. Deterministic mathematics (volatility, Sharpe, beta, drawdown, CAGR, XIRR, stress tests) is computed in Python; the LLM interprets the results rather than performing the arithmetic, which removes a whole class of hallucination.
React · SSE
PBKDF2 · Supabase
ReAct · 31 tools
interrupt() human gate
PII scrub · SEBI
streamed · sourced
- Six interactive agents (Analyst, Brief, Discover, Portfolio, War Room, Report) across a seven tab desk; the ReAct chat agent exposes 31 grounded tools
- LangGraph StateGraph with interrupt() / Command(resume=...) human in the loop on four agents: the graph checkpoints, pauses for approval, and resumes without losing state
- Mandatory compliance pipeline on every output: input validation, semantic screening, grounded rewrite of unsourced claims, PII scrubbing, and SEBI style disclaimers
- Deterministic quant maths in Python (volatility, Sharpe, beta, RSI, drawdown, CAGR, XIRR, stress test factors); the LLM interprets results rather than doing arithmetic, cutting hallucination risk
- Five question suitability questionnaire builds a per user risk profile that gates recommendations; a Groq multi key failover pool and a TTL cache for deterministic calls keep it resilient and cheap
3.2
MindVault
● Live
Production grade multi tenant RAG system with hybrid retrieval (semantic + BM25 + FlashRank reranking via Reciprocal Rank Fusion), real time streaming, multimodal ingestion, and RAGAS validated quality across 25+ test cases.
Query latency40% fasterRAGAS test cases25+Prod incidents fixed6+
Production grade multi tenant RAG system with hybrid retrieval (semantic + BM25 + FlashRank reranking via Reciprocal Rank Fusion), real time streaming, multimodal ingestion, and RAGAS validated quality across 25+ test cases.
A multi tenant RAG system where users upload documents and query them with natural language. Under the hood it uses three retrieval methods fused together: semantic vector search, BM25 keyword matching, and FlashRank cross encoder reranking combined via Reciprocal Rank Fusion. This eliminates the blind spots that any single retrieval method has. Real time streaming responses, multimodal document and image ingestion, shareable conversation links.
Built to run reliably on constrained 512MB infrastructure. Diagnosed and resolved 6+ critical production incidents including memory leaks, race conditions, and rate limit cascades. RAGAS evaluation suite covers faithfulness, context precision, and context recall across 25+ test cases.
PDF · image · text
500 chars
FAISS · BM25 · FlashRank
Reciprocal Rank Fusion
streaming
- Hybrid retrieval via Reciprocal Rank Fusion: FAISS semantic search, BM25 keyword matching, and FlashRank cross encoder reranking each run in parallel, results fused to eliminate single method blind spots
- 40% query latency reduction through parallel async retrieval and selective LLM call pruning on chunks below a confidence threshold
- RAGAS evaluation suite: automated faithfulness, context precision, and context recall scoring across 25+ curated test cases, run on every significant change
- 6+ critical production incidents resolved: memory leaks from embedding model loading, race conditions in concurrent session writes, rate limit cascades under burst load: zero downtime reliability on 512MB infrastructure
- Knowledge graph construction from LLM extracted typed entity relationships across 50+ concept nodes, stored in NetworkX, rendered as interactive node graph in Next.js frontend
- Intent classification chain rewrites ambiguous or context dependent queries before retrieval, improving relevance without the user needing to rephrase
3.3
ApplyPilot AI
● Live
A full stack AI application copilot: upload a resume, paste a job post, and get a tailored cover letter, application email, fit score, and reworded resume bullets in 10 to 20 seconds. Three tier app on Groq Llama 3.3 70B, no paid API.
Time per application10–20sGroq calls / application3Free tier throughput14,400 req/min
A full stack AI application copilot: upload a resume, paste a job post, and get a tailored cover letter, application email, fit score, and reworded resume bullets in 10 to 20 seconds. Three tier app on Groq Llama 3.3 70B, no paid API.
Upload a resume, paste a job posting, and in 10 to 20 seconds ApplyPilot returns a cover letter, an application email, a fit score, adapted resume bullets, and grounded answers to custom application questions. Resume and job parsing extract structured profiles; the fit score is computed in plain Python before any model call; generation runs through Groq's free Llama 3.3 70B. A real status pipeline (ready → approved → submitted → interviewing → offered/rejected) tracks every application.
The AI never invents experience. Resume adaptation carries explicit prompt level constraints: reword existing bullets to hit JD keywords, never add a skill or change a date. It was tested specifically by feeding a resume missing an obvious JD keyword to confirm it reframes rather than fabricates.
upload · paste JD
JWT REST · BackgroundTasks
3 sequential calls
profiles · application state
- Three tier app: Next.js 14 frontend with polling based state, JWT secured REST to a FastAPI backend, PostgreSQL for persistence: no unnecessary moving parts
- Fit score is deterministic Python (skill set intersection) computed before any LLM call: transparent and explainable rather than an opaque embedding similarity
- Three Groq calls per application run sequentially inside one FastAPI BackgroundTask: no Celery, no Redis, no broker: genuinely sufficient at this scale
- Original design used Celery + Redis + LangGraph + Ollama: scrapped after testing because five extra containers and a message broker added complexity with no benefit, cut to BackgroundTasks + Groq
- Resume adaptation is constrained at the prompt level to reword existing bullets only, never fabricate skills or dates: verified by adversarial testing with a missing keyword
3.4
AuditMind AI
In Development
End to end multilingual audio intelligence pipeline for 13 Indian languages. Processes noisy field interview audio through ASR (Whisper large-v3), speaker diarization (SpeechBrain ECAPA-TDNN), and semantic question mapping: speaker labelled transcripts, zero paid API dependency.
End to end multilingual audio intelligence pipeline for 13 Indian languages. Processes noisy field interview audio through ASR (Whisper large-v3), speaker diarization (SpeechBrain ECAPA-TDNN), and semantic question mapping: speaker labelled transcripts, zero paid API dependency.
Processes noisy field interview recordings in 13 Indian languages into clean, speaker labelled transcripts with zero paid API dependency. Raw audio goes through signal preprocessing, ASR via Whisper large-v3, speaker diarization via SpeechBrain ECAPA-TDNN, and semantic question mapping to produce structured outputs from unstructured conversational audio at scale.
noisy field recordings
bandpass · noise reduction · RMS norm
ASR · 13 Indian languages
speaker diarization
speaker labelled output
- Whisper large-v3 for multilingual ASR across 13 Indian languages including dialects where cloud APIs degrade on noisy field recordings; runs entirely locally with no per call cost
- SpeechBrain ECAPA-TDNN separates overlapping speech and assigns speaker identities so transcripts are labelled by who said what, not just a flat stream of text
- 16-configuration preprocessing evaluator: systematic search over combinations of bandpass filters, noise reduction, and RMS normalisation; selects the best scoring variant per input using Whisper confidence as the objective metric
- Semantic question mapping layer maps transcript segments to structured question slots, enabling downstream analysis without manual review of raw transcripts
§4
Skills
Aggregated from research and shipped work, grouped by domain. Quantitative methods first, because that is what the rest of this page is in service of.
§5
Education
Mumbai, India
One of Mumbai's top engineering colleges, affiliated with the University of Mumbai. The degree supplies the fundamentals, data structures, algorithms, operating systems, computer networks, and database systems, and it is not where the work on this page came from. Every project here was scoped, built, validated, and shipped alongside it, under nobody's syllabus. Current CGPA 9.25/10. Coursework is the floor.
| Course | Grade |
|---|---|
| Mathematics I | 10 |
| Mathematics II | 10 |
| Statistical Modelling | 10 |
| Operational Research | 9 |
| Advanced Operational Research | 9 |
The five courses closest to what this work actually runs on. Statistical modelling and operational research are where the portfolio construction and the validation protocol come from, rather than from anything a framework hands you.
§6
Experience
Full Stack AI Intern
Architected and built a production grade, end to end audio intelligence pipeline on AWS that transforms unstructured conversational audio into structured outputs at scale. Pipeline covers audio preprocessing, Automatic Speech Recognition, speaker diarization, and semantic question mapping across 13+ Indian languages.
- Built the full pipeline end to end: audio preprocessing, ASR, speaker diarization, semantic question mapping: all integrated and deployed to production on AWS
- Improved question mapping accuracy by 20% and transcription quality by 15% through preprocessing optimisation, architecture level experimentation, and speaker segmentation refinement
- Reduced overall pipeline latency by 30% through integration of speech processing frameworks and targeted bottleneck analysis
- Extended question mapping to 13+ Indian languages: built and tested the multilingual pipeline from preprocessing through to structured output
Sole Developer
Took a real manufacturing business from zero web presence to a fully operational production site: sole developer across design, build, and deployment. The brief was a professional catalogue site that the client could own permanently without needing a developer on retainer.
- Chose React 18 with TypeScript and Vite for a maintainable, type safe codebase that any developer could pick up later without context; Tailwind for rapid iteration without fighting a CSS framework
- Designed a product catalogue system for 18 alloy grades (ADC12, A380, A413, 6061, 6063 and more) with individual spec pages, built so adding a new grade requires editing one data file
- Wired EmailJS for the contact form so enquiries go directly to the client without any backend to maintain or server costs to worry about
- Built scroll reveal animations and animated counters with IntersectionObserver, no libraries, keeping bundle size minimal and load time fast
- Deployed on Vercel with a custom domain, configured DNS, and handed over with documentation so the client can manage content changes without developer involvement
§7
Writing
Technical articles published on Medium.
NLP: From Fundamentals to Modern Applications
A deep technical series for engineers who want to understand NLP from first principles, not just use the APIs. Covers the full pipeline: how raw text is collected and preprocessed, how tokenisation works mechanically, what word embeddings represent mathematically, how self attention (Q·K·V) is computed step by step, and how modern architectures like BERT and GPT are structured. Written so that every design decision in the pipeline is visible and reasoned about, not abstracted away.
From Motion to Prompts: AI Powered Video Creation
How AI generates, edits, and transforms video from a single text prompt, covering the computer vision pipeline underneath: pixel grids and RGB representations, CNN based feature extraction, compression to latent vectors, and how modern generative models produce temporally consistent frames. Also covers the commercial implications, AI generated ads, lip sync video, and where the line between generated and real content currently sits.
§8
Achievements
Mathematics came first and everything on this page is downstream of it. The results below are the record of that, in the order it happened.
-
School OlympiadSecond prize, SOF International Mathematical OlympiadSchool level, Science Olympiad Foundation
A placed result in the olympiad round, sat over several years. Not the IMO proper, and worth naming precisely: this is the SOF school olympiad, which is where the habit of treating a problem as something to be proved rather than guessed started.
-
2024 EntranceMHT-CET · 99 overall, 98.6 in mathematicsMaharashtra Common Entrance Test, percentile
Examination Mathematics Overall MHT-CET 98.6 99 JEE Main 95.4 · Percentile in both cases. The mathematics section is the one that mattered to me and it is the one I optimised for.
-
2025 CompetitionFirst prize, Urban EmpireData driven strategy competition
Built a winning data driven city budget allocation strategy: a constrained allocation problem under a fixed budget, which is the same shape as sizing a book.
-
Ongoing Coursework10/10 in Mathematics I, Mathematics II and Statistical ModellingFull grade points, with 9/10 in both Operational Research courses
Listed in full under §5 Education. The five courses that the research on this page actually runs on, rather than the five that were easiest.
§9
Contact
Open to quantitative research internships, research collaborations, and problems where nobody already knows the answer. Email is fastest, and I read all of it. If you're hiring, tell me what the desk actually trades and what the first six months look like, and skip the pitch. It saves time for both of us.