This simulation demonstrates how bias enters real machine-learning systems even when the protected attribute (group membership) is never fed to the model. Two hundred synthetic loan applicants are split into Group A and Group B with identical underlying qualification distributions, but Group B's recorded credit-history feature is historically suppressed by an adjustable amount — modelling biased record-keeping, redlining, or systematic under-scoring. A genuine logistic-regression classifier trains itself by gradient descent in your browser on this data, and its 3D decision boundary — a tilted plane through a point cloud of applicants — shows exactly how a single shared approval threshold produces disparate approval and false-rejection rates between equally-qualified groups. A one-click "fairness fix" swaps in group-specific thresholds to equalize approval rates (demographic parity), with the accuracy trade-off shown live, so you can see both how algorithmic bias is manufactured and how one standard mitigation actually works.