JPMorgan & Amex: AI / Data Science (2025)
JPMorgan Chase & American Express: AI / Data Science Interview Experiences (2025). Rounds, real reported questions and model answers, compiled from public candidate reports (sources at the end). Practice mode hides every answer: say your answer first, press Show answer, then rate yourself. Use 🔁 Review again to build your revision list and 🎲 Random question for a quick drill.
About this interview
Compiled from public candidate reports: JPMorgan Chase VP, AI/ML & Data Science (Bengaluru, May 2025) and American Express AI Engineer (Hyderabad, campus, November 2025) and Analytics, Software & Sciences (India, September 2025). Public process guides for both firms are used for context. The questions are paraphrased, and the model answers are written by EasyLearnSpace.
| JPMorgan Chase | American Express | |
|---|---|---|
| Role | VP, AI/ML & Data Science | AI Engineer (campus); Analytics, Software & Sciences |
| Reported round | First round: hands-on EDA in Python/NumPy | Project guesstimates, ML and DL basics, introduction and languages |
| Outcome | Not progressed after round 1 (candidate felt it went well) | Not selected; both rated the experience positive |
| Lesson | Even VP roles start with practical coding and data skills | Be ready to quantify your project with estimates |
01Rounds at a glance
- JPMC round 1: given a dataset, do EDA, find, handle and plot outliers, and explain your choices. Later rounds (from the guides): ML case studies (fraud, credit), system design, behavioural.
- Amex: a guesstimate on your own project ("how many users or transactions would this handle?"), ML and DL basics, a short introduction. Amex teams work on credit risk, fraud and marketing models.
02Questions and model answers
import pandas as pd, numpy as np, matplotlib.pyplot as plt
df = pd.read_csv("transactions.csv")
print(df.shape, df.dtypes, df.isna().mean().round(3), sep="\n")
print(df.describe(percentiles=[.01, .25, .5, .75, .99]).T)
col = "amount"
q1, q3 = df[col].quantile([.25, .75]); iqr = q3 - q1
lo, hi = q1 - 1.5 * iqr, q3 + 1.5 * iqr
out = (df[col] < lo) | (df[col] > hi)
print(f"outliers: {out.mean():.2%}")
fig, ax = plt.subplots(1, 2, figsize=(10, 4))
ax[0].boxplot(df[col].dropna()); ax[0].set_title("Amount (raw)")
ax[1].hist(np.log1p(df[col].clip(lower=0)), bins=50); ax[1].set_title("log(1+amount)")
plt.tight_layout(); plt.show()
df["amount_capped"] = df[col].clip(lo, df[col].quantile(.995)) # winsorise, keep the rows
df["is_outlier"] = out.astype(int) # keep the signal for fraud models
- Say why: in banking, outliers are often the signal (fraud), so flag them rather than deleting them. Cap them for linear models, and log-transform skewed money amounts.
- Also mention z-scores vs IQR (IQR is robust to skew), and Isolation Forest for multivariate outliers.
- First ask whether the outlier is an error or a real rare event. Data-entry errors get fixed or removed; real extremes (large transactions) are kept.
- Options:
- Winsorise or cap.
- Log or Box-Cox transform.
- Robust scaling (median/IQR).
- Tree models, which are insensitive to outliers.
- Robust losses (Huber).
- A separate model for the extreme segment.
- Multivariate outliers: Isolation Forest, LOF, Mahalanobis distance.
- Document the decision and its effect on model metrics; regulators may ask.
- Real-time scoring within about 100 ms at authorisation.
- Features:
- Velocity (transactions in 1 h / 24 h).
- Amount vs the user's typical spend.
- Merchant risk, geography and travel distance.
- Device and channel.
- Time of day.
- Graph links (shared cards, devices, merchants).
- Model: gradient boosting for tabular data plus rules for known patterns; consider a sequence model for transaction history.
- Imbalance: class weights; PR-AUC; recall at a fixed false-positive rate.
- Decision layer: approve / step-up (OTP) / decline, with thresholds tuned on fraud loss vs customer friction.
- Operations:
- Labels arrive with a delay (chargebacks), so handle that.
- Monitor drift, retrain weekly or monthly.
- Model risk management (SR 11-7 style validation) and explainability via reason codes.
- Common use cases:
- Internal knowledge assistants (policies, procedures).
- Document extraction (KYC, trade documents).
- Call summarisation.
- Code assistants.
- Research summarisation for analysts.
- Extra constraints:
- Data residency.
- No customer PII leaving the bank's boundary (private endpoints or self-hosted models).
- Explainability and audit trails.
- Model risk governance.
- Strict accuracy on numbers.
- Patterns: RAG with citations, a human in the loop for any customer-facing or decision output, deterministic tools for calculations (never let the LLM do the arithmetic), and red-teaming for prompt injection.
Answer (show the structure, not the exact number):
- Assume about 100 million active cards, with about 1.5 transactions per card per day → about 150 million transactions per day.
- 150M / 86,400 s ≈ 1,700 TPS on average. Peak (festive sales, evenings) is roughly 3–5× → design for about 8,000 TPS.
- At a p99 latency budget of about 50 ms per score, with each instance handling about 500 requests per second → about 16 instances, plus headroom across 2 regions.
- State your assumptions clearly, sanity-check them, and tie them to the design (caching features in Redis, horizontal scaling).
- The problem: in backpropagation through many layers, gradients are products of derivatives. With sigmoid or tanh (derivatives below 1), they shrink exponentially, so early layers barely learn. RNNs suffer this over time steps.
- Fixes:
- ReLU / GELU activations.
- Residual connections (ResNets, Transformers).
- Normalisation (Batch / Layer Norm).
- Careful initialisation (He / Xavier).
- LSTM / GRU gates for sequences.
- Gradient clipping, for exploding gradients.
- Own it: "Our credit model failed independent validation on stability (PSI 0.3 in one segment)."
- Act: 1. Run a root-cause review with the team, without blame. 2. Find the issue: a feature driven by a policy change. 3. Rebuild with stable features and add segment-level monitoring. 4. Communicate the timeline to the business and risk teams every week.
- Result: "It passed revalidation in five weeks. We added stability tests to our standard development checklist, and the next two models passed on the first submission."
- A VP-level answer shows governance, communication, coaching and process improvement.
03How to prepare for banking AI roles
- Hands-on first: practise timed EDA, outlier handling and plotting in pandas, NumPy and matplotlib.
- Know fraud, credit risk, imbalance, calibration and model risk management basics.
- For GenAI roles, emphasise privacy, governance, citations and human-in-the-loop design.
- Practise guesstimates on your own projects (users, TPS, cost).
Sources
- Taro: JPMorgan Chase VP AI/ML & Data Science, Bengaluru (May 2025)
- Taro: American Express AI Engineer, Hyderabad (Nov 2025)
- Taro: American Express Analytics, Software & Sciences (Sep 2025)
- Interview Query: JPMorgan Chase data scientist guide