Load the portfolio
Point at a file or table, and get a profile back before anything else happens.
Here's our historical loan book. I want to understand who tends to default before we build anything.
Loaded. 1000 applications, 20 attributes covering checking/savings history, loan purpose, employment, and demographics. No missing values.
700 applicants repaid as agreed, 300 were bad credit risk. Held out for testing: 250 of 1000.
Build a model
A small set of options gets compared before anything is finalized.
Build something underwriters could actually read through in a credit committee meeting.
I compared a few rule-set sizes on held-out applications:
12 rules is the sweet spot here -- a wider rule set doesn't reliably score higher on this portfolio.
Built. Every rule reads as a single applicant attribute. Want to tune it, or see what it found first?
Tune for the risk you care about
State the business trade-off in plain terms -- the comparison runs itself.
We'd rather decline a few extra borderline applicants than approve someone who defaults. Push it that direction.
I compared four versions, weighting "bad risk" more heavily rather than widening the rule set:
cw3 takes the catch rate from 0.347 to 0.773 for a precision cost of 0.531 to 0.430, at the same 12-rule budget.
I've made that one active. reversible
Plain-language summary
A restatement of the model's own readout -- nothing added, nothing smoothed over.
What's it actually basing decisions on?
The strongest signal is checking_status=< 0 DM (coefficient +1.524). Secondary signals contribute smaller corrections on top.
Score new applicants
A table ready to paste into an underwriting queue.
Score this morning's three applications.
| applicant | checking status | duration (mo) | amount | age | true | P(bad risk) | decision |
|---|---|---|---|---|---|---|---|
| #853 | < 0 DM | 18 | 1442 | 32 | bad | 0.900 | decline |
| #21 | < 0 DM | 6 | 2647 | 44 | good | 0.533 | decline |
| #297 | no checking account | 10 | 1287 | 45 | good | 0.098 | approve |
All three match how they actually performed.
Rule analysis
Every rule behind the active model, ranked by how much it moves the decision.
Show me all 12 rules, ranked.
Bar length is proportional to coefficient size.
Explain a decision
For any single applicant, the exact arithmetic behind their score.
Why did applicant #853 score 0.900?
7 of the 12 rules are active on this application. Walking the combination the model actually used:
Bars in the same direction stack; the final logit converts to the probability shown in the gauge.
Get it ready for sign-off
Trim the weakest rules for a shorter policy document, with a logged reason for every change.
Credit committee wants this down to 8 rules before they'll approve it for production. Can you tweak the actual scoring algorithm to be smarter about which ones matter, or just trim it?
I can trim the rule set -- that's a normal model edit. Changing how the underlying scoring algorithm decides importance is a different kind of change and isn't something this works on directly. Trimming will get you most of the way regardless:
removed (lowest |coefficient|): existing_credits=[1,2) coef=+0.0618 existing_credits=[2,4) coef=-0.0596 duration_months=[24,30) coef=+0.1212 duration_months=[12,15) coef=-0.1618
AUC moves from 0.716 to 0.716; catch rate from 0.773 to 0.760.
That trade is yours to confirm before I finalize it. awaiting confirm