Seeing like a Bank

Patrick McKenzie (patio11)
Seeing like a Bank

The New York Times recently ran a piece on a purported sudden spate of banks closing customer accounts. Little of it is surprising if you have read previous issues of Bits about Money. The reported anecdotal user experiences have a common theme to them. Banks frequently present to their users as notably disorganized, discombobulated institutions. This is an alarming and surprising fact for the parts of society that are supposed to accurately keep track of all of the money.

Why does this happen? Why does it happen across issues as diverse as bank-initiated account closures, credit card or Zelle fraud, debit card reissuance, and mortgage foreclosures? Why does it happen in such a similar fashion across many institutions, of all sizes, who exist in vicious competition with each other and who know their customers hate this?

Banks are extremely good at tracking one kind of truth, ledgers. They are extremely bad at tracking certain other forms of truth, for structural reasons. In pathological cases, which are extremely uncommon relative to all banking activity but which nonetheless happen every day and which will impact some people extremely disproportionately, the bank will appear to lack object permanence. Every interaction of the user with it feels like being Bill Murray in Groundhog Day: the people you’re talking to remember literally nothing of what they’ve promised before, what you’ve told them, and the months or years of history that lead to this moment.

How did we end up here?

Recordkeeping systems

Like every bureaucratic system, banks run on a formal system of recordkeeping which requires an unrecognized, illegible shadow system to actually function. The interactions between those systems, and what they are optimized for tracking and not optimized for, cause a lot of the pathologies that people see. The seminal text on this, focused on government bureaucracies, is Seeing like a State.

Because banks are filled with extremely creative people, we call the primary system banking is conducted on a “core.” The largest banks in the world have complicated bespoke subsystems for this, but most banks are not in the software development business, and instead license a system from a so-called core processor like Jack Henry or Fiserv.

One could fill a book with architecture diagrams for a mid-sized financial institution. The key thing that non-specialists need to understand is a) the “core” does a lot of what you think of banking as, b) the core interfaces with many other systems which make up a bank, c) in particular, the core interfaces with the ledgers of the bank, and d) all of these systems together cannot represent reality nearly as well as you’d hope.

They typically grow over the years by accretion, caused by the normal processes of software development, regulatory changes, and competitive pressures. No system will ever be able to answer all interesting questions about a user; that is formally undecidable in computer science. Banks are extremely, painfully aware that the ordinary operation of the business of the bank will occasionally drop things on the floor. They have long-since automated the fat head of customer issues, and the long tail is kicked over to operational and customer support teams.

Every time responsibility moves between subsystems, be they different organizations, different computer systems, or different groups within the bank, some percentage of cases will simply break. The boundaries of systems are responsible for a huge percentage of all operational issues at banks. (They’re also where most security vulnerabilities live: systems A and B usually agree on reality, but a bad actor can sometimes intentionally get them to disagree, in ways which cause the bad actor to gain value before A and B reconcile their view of reality.)

A major technological advance over the course of the last few decades has been ticketing systems, which strikes many technologists as being crazy, because they’re almost the simplest software that you can describe as software. All a ticketing system does is enforce an invariant: if there is a problem with a case number assigned to it, and it goes between Group A and Group B, Group A needs to know it no longer is responsible and Group B needs to know it is now responsible. Then you can do can’t-believe-they-pay-us-for-this computing and observe things like “Group B is now working on 10,342 cases”, “There are 76 cases which Group B has not acted on within the last month”, and “Ginger seems to be anomalously unproductive at closing out cases relative to her nearest coworkers.”

So why didn’t ticketing systems solve this problem? Part of it is that the problem is self-referential: the ticketing system is not the core. The ticketing system is not the subsystem that is directly responsible for anything of interest to you. The ticketing system is an entirely new system, which requires integration with other subsystems and which will frequently need to do handovers to them. This interface is frightening, unexplored territory where new classes of issues that you’ve never seen before can spring up.

Bank systems are an interesting combination of designed and accidental. They accrete like sedimentary layers. A particular force which affects banks more than most institutions is that the banking industry has undergone decades of consolidation. When banks merge, one bank doesn’t simply eat the other and digest its balance sheet and people. They end up running their systems in parallel for years while working out an integration plan. That plan will, almost inevitably, cause one of the systems to mostly “win” and the other system to mostly “lose”, but for business reasons, something of the loser will be retained indefinitely. It now has to be grafted onto the winner, despite frequently being itself decades out of date, having its own collection of grafted acquirees partially attached to it, and needing expert input from people who are no longer with the firm.

Users can watch this play out in real time. For example, I banked at First Republic and also bank at Chase, which now owns First Republic. In something which sounds unimpressive and would blow the mind of bank CTOs from as recently as ten years ago, both sides of the bank understand that the same person has an account on the other side. (You wouldn't think testing Social Security Numbers for equality requires any high-tech wizardry, and you'd be right. The thing which was actually hard was building a process to allow complex ad hoc bidirectional synching of systems that were not built in tandem with each other.)

A screenshot of a banner in Chase's web application, welcoming First Republic clients.
Chase paid tens of billions of dollars over the years to get to the point where one engineer could bang this in-app banner out in 30 minutes.

But because that integration is ongoing and will take years to resolve, neither part of the bank knows consequential things the other part knows about me, even where it strikes most people as obvious that they should. Chase eagerly communicates timelines for transitioning the home loan that First Republic very definitely never wrote. It is utterly clueless about the Line of Credit that they factually did extend. And it will require a lot of midnight oil from hundreds or thousands of people for most of another year before I can walk into a Chase branch and ask what the balance is on an account serviced by First Republic's core.

Human accountability and its malcontents

So let’s talk about how banks spackle over the infelicities in their systems.

First, the bank builds many subsystems which interface with its core processing systems and ledgers. These systems are built so internal bank staff can see what a customer has done in their accounts and, perhaps, act upon those accounts on their behalf.

For those keeping score: yep, this interface boundary is another place which can cause the bank to fail to agree with reality. Relatively simple programming issues can cause the staff-exposed view of an account to fail to agree with reality known to the bank.

For example, they not infrequently fail to show some staff transactions which are “pending.” In many cases, “pending” has consequences which are extremely similar to being finalized from the perspective of the user, but a particular system might simply not show them. You’d think that is a confusing choice to make and often underrate the possibility that no one ever made this choice, not really. Sure, it exists (inarguably in this case) in code, and that code might be described in a requirements analysis document that someone handwaved together 18 years ago, but nobody ever said “Nah, exclude pending transactions”. This was a simple oversight, projected into the future indefinitely, to the enduring annoyance of old hands among staff and the continued surprise of non-specialist users. You might assume that senior members of operational staff have the ability to write a memo to engineering or procurement to tell them that the software that makes up the bank is broken. That is a thing which exists at surprisingly few firms.

(A repeated experience of my time at Stripe was watching engineers embed with Ops teams for a day, then run back to their laptops while saying “I’m so sorry! I can’t believe we did that to you! I will drop everything I am doing and fix it immediately!” In many cases, those bugs had existed for months or years. I watched senior engineering leadership ask senior Ops leadership why they had never been asked to fix them. Ops replied that their long experience in the financial industry had taught them that Ops never gets to use software which isn’t broken and that complaining about this is like complaining about gravity.)

Banks aggressively partition staff based on job duties and levels within those duties. The most relevant silo for retail consumers is actually a series of parallel silos which staff front-line phone support for the bank. Often, each line of business gets its own silo, which accounts for much of the Your Princess Is In Another Castle that happens when you call a bank with a seemingly straightforward question and then get passed between various departments.

Most products offered to retail consumers and small businesses are relatively low margin, in absolute dollar terms. To be able to offer these, banks use various methods to cram down their support costs. Offshoring is often the face of these initiatives, but stratification by skill levels and powers granted is probably more important to understand.

A fairly typical setup for a financial institution will have the retail bank support teams stratified into Tier One, Tier Two, and Tier Three. Each has management located with them, who may or may not be shared across tiers.

You truly haven’t lived until you’ve tried paying for your college education by being a Tier One customer service representative, like your humble correspondent did. (Not at a bank, thank goodness; I might have stayed in a field with that many interesting problems presented.) The reason Tier One exists is that the median problem, so-to-speak, from a retail user is not actually a problem. That retail user is extremely unsophisticated about the bank account, finance in general, and frequently many other things in life. Tier One exists to handhold this individual in getting something very straightforward done, or to pass the call off to Tier Two.

Many people in our social class want to be extremely compassionate in explaining challenges that some people endure. Sometimes this compassion extends to believing that people with substantial challenges don’t exist or don’t exist in any large numbers. It is extremely important to understand that those challenges exist and that they will dominate your frequent fliers for support. Some people have only emerging competence in English but will want services from a bank which does business in English. Some people, frequently with large account balances and long successful histories with you, are experiencing age-related decline in their faculties and need to be protected, frequently without that being a capital-F Fact within the system yet. Some people are crooks. Some people have a very interesting relationship with the truth, and say many things to banks which probably felt true to them in the moment. (Is that fraud? Eh, it’s complicated.)

But to zoom into one particular way people can differ from each other: Some people are not as intelligent as you are. That is uncouth to say. In the United States, almost every large organization will institutionally tamp down on any explicit discussion of it. They all must structure their affairs to deal with the reality of it, though.

Think of the person from your grade school classes who had the most difficulty at everything. The U.S. expects banks to service people much, much less intelligent than them. Some customers do not understand why a $45 charge and a $32 charge would overdraw an account with $70 in it. The bank will not be more effective at educating them on this than the public school system was given a budget of $100,000 and 12 years to try. This customer calls the bank much more frequently than you do. You can understand why, right? From their perspective, they were just going about their life, doing nothing wrong, and then for some bullshit reason the bank charged them $35.

The reason you have to “jump through hoops” to “simply talk to someone” (a professional, with meaningful decisionmaking authority) is because the system is set up to a) try to dissuade that guy from speaking to someone whose time is expensive and b) believes, on the basis of voluminous evidence, that you are likely that guy until proven otherwise.

And so every Tier One rep will talk to dozens of folks a day. Many of those calls are… fairly aggravating, from the perspective of the agent. Tier One has limited ability to do anything useful; this depends on the firm and the silo within the firm, but they are largely read-only interfaces to money. They have a few pre-programmed buttons to push which get 90%+ of people they talk to to not call again. They execute scripts and flowcharts, written by people better paid than them, which gate your access to Tier Two.

In the best operated systems in the world, Tier One gets about one tweet worth of context to pass over to Tier Two when doing a handoff to them. (“Cust didn’t rec new debit card to Japan plz next day air + waive fee.”) Most financial institutions are not the best operated systems in the world. The bank “forgets” about your issue as soon as you’re off the line with Tier One, and needs to be told it entirely de novo when you speak to Tier Two.

Tier Two typically spent a few years in Tier One and has begun to specialize in a subfiefdom of banking. They have emerging competence into the nitty gritty of operations at their institution, at least with regards to that subfiefdom. They’re paid more, though not by much. They’re typically given more ability to do what my shop called “accommodations”, which means self-authorizing a resolution for a customer which costs money. Tier Two might be able to, for example, credit an account a small amount of money for an arbitrary reason and have the bank charge it off as an operations loss.

Your humble correspondent had a soft limit of approximately $200, below which no number was worth trifling my management chain or a specialist about. An interesting observation about the physics of money is that Tier Two could conceivably cost the bank more by authorizing accommodations than they earn in salary. A line manager apprised of this probably will not investigate it for more than five minutes before deciding that the bank is satisfied.

Then you have Tier Three, which at some firms sits in Customer Service and at some firms sits in Operations. There exist some ambiguity and spectral ranges here, but at some point the job changes in character from “low-wage peon reciting a script” to “professional who has a career doing this and is no longer managed on a tickets-closed-per-hour basis.”

Tier Three, let’s call them for simplicity, engages in constant firefighting, because at the volume of transactions (and other sources of cases) in all-but-the-tiniest financial firms, something is always on fire. Sometimes you’re covering for hiccups in the technical systems of your institution or counterparties. Sometimes someone has found themselves in an odd edge case or been passed around for ages between departments. Sometimes you’ve received an escalation, about which more later.

A user of the banking system will often have to redundantly explain themselves when they hit Tier Three, for the same reason as they did when they hit Tier Two. However, because they’re no longer operating in time-starved tickets-per-hour crunch mode, Tier Three has richer access to systems at the bank and more ability to forensically reconstruct procedural history, including history that is not ledgered. They will frequently do this both to do their jobs and to do the legwork for other professionals at the bank who might have decisionmaking authority in some cases but do not have the access or acumen to pull together a view of a case from disparate systems.

The gaps in experience between getting passed around tiers are replicated for being passed around departments. Say, for example, that the bank owes you a check and you do not receive it in the mail. The vast majority of checks sent through the mail arrive without issue, but the bank knows that it will have to reissue some of them. There is a process for doing this. Unfortunately, because this is a relatively infrequent issue, Tier 2 does not have a Reissue Check button available to them. Instead, their interface to this process is likely “Raise a ticket with Ops and tell the customer someone will call them.” There is no system available to Tier 2 which can verify that that call was actually made. The agent has no basis in their training or experience to know whether the bank routinely makes that call. It is quite possible that success rates on that call being placed are quite low, even if you ask for it three times consecutively, and that the bank is entirely institutionally unaware of this.

And so the customer will feel frustrated and they have been lied to, Tier 2 certainly doesn’t feel like they’ve lied to anyone (they read the script, it’s a Tuesday), Ops feels like the world is on fire because the world is always on fire, and senior bank management cannot detect this problem because no metric available to them is capable of disaggregating it from the complex monster that is the financial system.

Two embedded surprises about bank staffing

Many traditionally-minded users of banks assume that someone at their branch can likely help them with issues. Due to the deskilling of the bank branch, the people at a bank branch, including the branch manager in many firms, can only offer solutions to relatively straightforward problems. For the other ones, they also have to call into a support phone tree. Sometimes the bank will have ability to e.g. share context between their screen and the Tier 2 rep; sometimes they’re literally incapable of proving to the bank that they work there. (You might think I’m joking. To beat a drum: the level of technical sophistication across the spectrum of U.S. financial institutions varies wildly.)

The other surprise is that substantially every financial institution has a parallel way to reach decisionmakers in every area it operates in, which skips most or all of the tiering system and the technical and organizational scar tissue that it carries. This goes by different names in different places but “escalations” is a fairly common one.

Much like the United States has decided, in its infinite wisdom, that caseworkers for immigration and passport services should be staffed in every Congressman’s office and not at the agency that actually handles immigration or passport issuance, there very likely exist people at the bank whose job is working the bank more than it is working for the bank. A number of functions which are not ordinarily customer-facing are given the contact information for that group, with the instruction “In case of emergency, skip Tier Everything and talk immediately to the highly-placed troubleshooting team.”

If you are a reporter and call a bank for comment about a widow on the cusp of being improperly foreclosed upon, you will (fairly reliably) find your words forwarded to the troubleshooting team within a few minutes. If you’re a regulator and intervene on behalf of an individual, same result. You can absolutely achieve this as a civilian, too; a paper letter to the VP of Retail Banking, Office of the President, or Investor Relations will often cause the bank to swing into motion in the same way. (I wrote a few hundred letters like that as a hobby back in the day.)

These folks are professionals who are capable of keeping paper notes and having day-to-day recollection of things they have done in complex cases. They are managed and incentivized in a way which allows them to have agency. The formal customer support organization is very, very bad at this, at every tier. It is very difficult to do in a model where you’re constantly bouncing cases around individual reps and between departments.

Is this because banks are malicious? Are they willing to grind retail users to bonemeal in the pursuit of another cent of earnings per share? The truth is a bit more mundane: supporting people with can-do-anything-you-throw-at-them professionals is ridiculously expensive and getting moreso over time. The per-case cost for the troubleshooting team can be more than 100X that of the tiering system.

Retail customers have relationships where they pay highly-educated high-agency jacks-of-all-trades to provide professional services in arbitrarily complex situations. They hate the experience of those relationships. They hate their medical bills. They are incredulous that lawyers bill hundreds of dollars per hour (in six minute increments).

You can get something approaching this level of service out of a bank, too, and the private bank generating $150,000+ in annual revenue per client would be happy to make your acquaintance. But if you want phone calls to the bank to be both answered at 2 AM and absolutely free, you want the tiering system. Society wants the tiering system. It is why a high school student with a paper route can open a checking account, get a debit card, and start buying things on Amazon. It is why bank branches can be operated in working class neighborhoods.

As a sophisticated user of the banking system, a useful skill to have is understanding whether the ultimate solution to an issue facing you is probably available to Tier Two or probably only available to a professional earning six figures a year. You can then route your queries to the bank to get in front of the appropriate person with the minimal amount of effort expended on making this happen.

You might think bank would hate this, and aggressively direct people who discover side channels to Use The 1-800 Number That Is What It Is For. For better or worse, the side channels are not an accident. They are extremely intentionally designed. Accessing them often requires performance of being a professional-managerial class member or otherwise knowing some financial industry shibboleths. This is not accidental; that greatly cuts down on “misuse” of the side channels by that guy.

It is also much more institutionally palatable to the bank and other stakeholders like e.g. regulators. No financial institution can say “We offer differential service levels to our community based on their education level, perceived social class, and perceived capability to bring power to bear on their behalf.” Every financial institution factually does that. The successful way to phrase it is “We offer contextually appropriate services to the entire range of customers, who come from all walks of life, and also we respond with alacrity to any issues impacting our important stakeholders via a variety of programs.” 

Society has goals which conflict with banks being good at banking

I hate sounding like a conspiracy theorist about banks, which for whatever reason seem to attract a disproportionate amount of attention from people who believe the Illuminati and lizardmen are conspiring to corrupt the free peoples of the world. And so ordinarily I do not want to say crazy things like “Sometimes banks suck because we want them to suck.”

Sometimes banks suck because we want them to suck.

In the specific case of “Why did the bank close my account, seemingly for no reason? Why will no one tell me anything about this? Why will no one take responsibility?”, the answer is frequently that the bank is following the law. As we’ve discussed previously, banks will frequently make the “independent” “commercial decision” to “exit the relationship” with a particular customer after that customer has had multiple Suspicious Activity Reports filed. SARs can (and sometimes must!) be filed for innocuous reasons and do not necessarily imply any sort of wrongdoing.

SARs are secret, by regulation. See 12 CFR § 21.11(k)(1) from the Office of Comptroller of the Currency:

No national bank, and no director, officer, employee, or agent of a national bank, shall disclose a SAR or any information that would reveal the existence of a SAR. Any national bank, and any director, officer, employee, or agent of any national bank that is subpoenaed or otherwise requested to disclose a SAR, or any information that would reveal the existence of a SAR, shall decline to produce the SAR or such information, citing this section and 31 U.S.C. 5318(g)(2)(A)(i)...

If the United States brings its subpoena power to bear against a bank teller and asks them about a SAR, they’re supposed to say nothing. That is the law! (Regulation, well, if one wants to be technical.) It is designed to be enforced against the interests of the United States of America! Customers have far less access than the U.S. awards to the U.S.! So does the teller, incidentally: to avoid constantly violating this, Compliance at most functioning institutions has long-since decided that SARs will live in their own walled garden of a subsystem, seen only by the people responsible for drafting them and sending them to FinCEN.

That subsystems’ interactions with every other system are, of course, a site for extremely painful hilarity to happen. If, for example, a SAR is misfiled because that subsystem doesn’t share the same view of account ownership as another part of the overall system, investigating that problem might require telling the customer that they were investigated, which you cannot do. And because this is insufficiently Kafkaesque, at some financial institutions, you can get a SAR filed for knowing what a SAR is, because “advanced knowledge of anti-moneylaundering procedure” is a characteristic only of financial professionals and terrorists. Compliance training can tell e.g. personal bankers to please look at the Know Your Customer questionnaire and see if “Professional background: I work in finance” is bubbled in and then draw the appropriate inference.

You might think I am joking. I am utterly not joking. Most of the times infelicities in the world have a logical explanation to them, a structural cause where each individual link in the chain sounded good at the time and the result just happens to be suboptimal. And sometimes the world is absolutely batshit insane.

So what can be done about this?

Like many structural problems, banks lacking object permanence didn’t happen overnight and can’t be fixed overnight.

A lot of the fix is technical. In the not-too-distant past, there were zero—zero—financial institutions which were competent at software. There are now a handful of them, after the expenditure of many tens of billions of dollars. That was the price of getting without-loss-of-generality Chase to the point where in-house engineers can cause the retail web app to react to me having an account at First Republic less than a year after their purchase of that bank.

Although it certainly doesn’t feel like it to people who hit edge cases, the tiered support model is a technology which took us decades to popularize and which made the world much better. It brought down the cost of financial services and supported product innovation which would have been impossible under the mid-century bank staffing model. We could not have credit cards or discount brokerages without the tiered support model. The biography of Charles Schwab makes this point persuasively at considerable length: competent telephone operations were instrumental to bringing equity ownership to the middle class. You should prefer a world with credit cards and discount brokerages to one which doesn’t have them, even as you listen to hold music occasionally.

It will similarly take decades to roll out the best-functioning refinements on customer service at scale to the entirety of the financial system. Partly this will happen through continued consolidation; the more banks Chase ends up owning, the higher the average operational competence in the U.S. financial system is. (And that’s… saying something.)

Partly this will happen as banks increasingly tap external providers for technology where the right things are recorded automatically and actioned appropriately. Partly, I continue to expect Operations to come further into its own as a high-status discipline, and to rewrite the internal structure of banks just as engineering has done over the last two decades.

Partly this will happen as banks increasingly partner with firms that impose a tech-inflected view of the customer experience. Google is, for example, a legendarily hostile organization to attempt to get customer support from. Google is also beloved by users because of overwhelming competence in shipping products that work almost all of the time. If you think that talking to a compassionate human is a core part of the banking experience, there are many banks in Iowa who will sell that service to you. If you simply want to access your money on your phone and have that almost always work, Cash App will happily operate as a front end over Lincoln Savings Bank to make that happen. (There are many layers to that onion. No particular equilibrium is necessarily the “right” one!)

And partly, we as a society have to make some tradeoffs. We want something from 12 CFR § 21.11(k)(1) . It was not written by accident or because the drafters were stupid. Every future with 12 CFR § 21.11(k)(1) in it will include many Americans whose bank accounts are closed for no reason that can be disclosed to them. Many of them will have done nothing wrong.

Plausibly, we should decide to stop doing the thing that no one wants us to do. And, as a particular thing which could help unlock that: if one cares a lot about the experience of people at the socioeconomic margins, one should perhaps spend less time fulminating about greedy capitalists and spend more time reading Requests For Public Comment by relatively obscure parts of the administrative state.

← The Bond villain compliance strategy
A review of Number Go Up, on crypto shenanigans →

Want more essays in your inbox?

I write about the intersection of tech and finance, approximately biweekly. It's free.