Both models are trained only on Loan Amount, Annual Income, and DTI. The human-assigned credit Grade is deliberately excluded โ an earlier benchmark pass that included Grade leaked obviously, since Grade trivially predicts Grade.
On this restricted feature set, both models still score a suspiciously perfect 1.000 on every metric. That traced back to annual_inc == 0 for essentially all "No Grade" (rejected) rows, versus only a handful of the 2.26M graded rows. After review this was judged not leakage: income is only collected once an application proceeds to full underwriting โ the same event as being graded. So "was income even collected" is a real, live-available signal at screening time. Try setting Annual Income to 0 above and watch both models flip to Rejected.
One limitation stated plainly: because annual_inc == 0 is such a dominant signal, the model doesn't meaningfully sanity-check Loan Amount or DTI. Enter an extreme value โ a $100,000,000 loan against a modest income โ and it still predicts "Approved" as long as income is non-zero. That isn't a bug: the model predicts whether an application reached underwriting, not whether a loan is financially sound.
Decision Tree was chosen for production despite Random Forest, LightGBM, and AdaBoost scoring almost identically, because it trains and predicts far faster. KNN scored near-perfect too but was disqualified for a ~2,631s prediction time on the full dataset. Ridge Classifier is the cautionary example: a near-perfect ROC-AUC masked terrible recall and F1 โ the worst model despite one good-looking metric.
AEGIS โ AI augments judgment, it does not replace it. Accuracy tuning was not the goal; this is a simple, testable wrapper around the production model. Static edition โ runs entirely in your browser, no server. Predictions are bit-exact reproductions of the original scikit-learn / LightGBM models (verified to machine epsilon).