Finance for illegible lives

September 2026

James C. Scott opens Seeing Like a State with a forest. The early modern state wanted revenue from timber, so it learned to see timber and nothing else. He puts the general rule this way: "Certain forms of knowledge and control require a narrowing of vision. The great advantage of such tunnel vision is that it brings into sharp focus certain limited aspects of an otherwise far more complex and unwieldy reality." And about the forest itself: "The forest as a habitat disappears and is replaced by the forest as an economic resource to be managed efficiently and profitably."

Now look at Brazil. In 2025, 38.1% of employed people worked informally, according to IBGE. There are more than 16.8 million active MEIs, one-person companies working in beauty, retail, food, transport and construction. Pix processed almost 80 billion transactions in 2025, and 148 million individuals had sent or received at least one. The Central Bank says 96.4% of adults have a bank or payment account. The same report counts 21.1 million adults, 11.6%, with no activity in the financial system during the year: no Pix, no credit, no boleto. Inactivity is higher, it notes, among "pessoas sem vínculo empregatício formal", people without formal employment.

So the country solved access. Almost everyone has an account, and everyday payments run on a rail the Central Bank built. But the system still can't read most of the lives it now touches. A credit bureau is a forester. It sees payroll, account age and repayment history, and everything else about a person disappears.

Brazil: account ownership, activity, informality and MEIs

My thesis is simple. The financial system rewards legibility: predictable income, stable behavior, moderate desire. Real lives are never like that. Almost every financial tool tries to correct people toward legibility. I think the better response is to accompany them: treat a life in motion as the normal case and follow it where it goes, instead of pushing it back toward the form.

The consensus in fintech treats inclusion as a funnel: open an account, build a file, get a score, then graduate to credit. Budget apps and financial education sit on top of that funnel and teach people to behave like the file expects. I think that gets the direction wrong. A cheap intelligence that can read a messy life on its own terms can raise the system to the level of real life, instead of lowering real life to the level of the form.

What the system can read

Scott's point is that seeing requires simplifying, and the simplification becomes the thing that gets managed. He is blunt about who pays: "An illegible society, then, is a hindrance to any effective intervention by the state, whether the purpose of that intervention is plunder or public welfare." Lenders face the same problem. They can't price what they can't see, whether they want to exploit a borrower or help one.

Venkatesh Rao, whose 2010 post introduced Scott to a lot of people in tech, named the psychological move behind it: "The big mistake in this pattern of failure is projecting your subjective lack of comprehension onto the object you are looking at, as 'irrationality.' We make this mistake because we are tempted by a desire for legibility." Financial software does this all the time. Irregular income gets labeled risk. Irregular spending gets labeled lack of discipline. Picture a manicurist whose Pix inflows triple in December and collapse in January. To a scorecard she looks unstable. She is running a seasonal business competently.

Even the count of invisible people was illegible. The best-known number in this debate is the CFPB's 2015 estimate that 26 million Americans were "credit invisible", with no credit record at all. It was cited for a decade. In June 2025 the Bureau published a technical correction: with updated data and a methodological correction, "the original estimate of credit invisibles should be roughly cut in half." The revised figure for December 2010 is 5.8% of adults, 13.5 million people, not 25.9 million. For December 2020 it's 2.7%, about 7.0 million.

The detail I like is where the missing people went. The same correction raised the share of adults with an unscored record in 2010 from 7.4% to 12.7%, from 17.2 million to 29.7 million. They weren't invisible. They had a file, and the file said nothing a model could use. Having a record and being legible are different things, and only the second gets you credit.

Brazil shows the same shape from the other side. Access is nearly universal, activity isn't, and the gap concentrates among people outside formal work. The Pix trace exists for 148 million people. The question is whether anyone reads it as a life or as noise around a missing payslip.

Correcting and accompanying

Most tools correct. They give you fixed categories and scold you when a month doesn't fit. They show a score and tell you which behaviors raise it. They assume the problem is you, and the fix is to become more like the file.

Accompanying starts from a different complaint: most finance apps show a lot of data and help very little. An accompanying assistant replaces the dashboard with conversation and alerts. It follows the person's transactions, notices deviations from their own pattern, and suggests adjustments.

The word that matters is own. A deviation from your own pattern is a different signal from a deviation from the population's pattern. The first treats your life as the baseline. The second treats you as noise around an average. I argued in Intelligence is a trajectory that the unit of intelligence is the trajectory, not the snapshot. A financial life works the same way. A bureau file is a snapshot of a few legible variables. An assistant with full context can hold the trajectory: the December spike and the January drought that follows it every year.

Accompanying is also what makes the rest of this possible. You can't underwrite a life you only see through a keyhole, and people don't open the door to software that scolds them.

How to raise the system

Five mechanisms. Some have public evidence behind them. Others are design ideas I hold but haven't tested in public, and I'll say which is which.

Read cash flow, not files. The strongest public evidence that illegible lives can be priced comes from FinRegLab. Its 2025 study of consumer underwriting found: "Across all models built for the study, the hybrid ML model that combined credit bureau data with cash flow data was the most predictive overall and across all subgroups. It also had the highest approval rates overall and for most subgroups at most risk thresholds, while also producing relatively low false positive rates." The caveat is in the same summary: in simulations at a conservative threshold, hybrid models raised approvals by only 0.6% to 1.6% over credit-only baselines, and at high-risk thresholds the effect on approvals was smaller or negative, because the models also rejected people who would have defaulted.

The small-business version is stronger. FinRegLab and NYU's Stern School analyzed over 38,000 small business loans from two fintech lenders, February 2015 to January 2024. Adding cash-flow variables to personal credit scores "predicted default risk more accurately across all borrower segments analyzed," and the gains "were particularly large for low-score entrepreneurs whose businesses are less than five years old." The predictive variables weren't exotic: deposits and balances, then withdrawals, balance volatility, and low or negative balance incidents. That's a description of an MEI's Pix history.

The lesson for anyone building a credit model is in how you score it. Accuracy alone rewards a model for rejecting everyone it can't read. I'd score it by AUC multiplied by the number of people it can newly reach, with a guard so AUC can't drop. A model that gets more accurate by rejecting everyone illegible scores zero on the second term. I wrote about why the metric should sit in a deterministic sensor the optimizer can't see in Show the problem, hide the metric.

Messages from a friend, not notifications. Brazilian banking apps already ship the legible layer of proactivity: reminders on request, and alerts when a new boleto is registered in your name. The next layer is harder. I think a proactive message should be judged the way you'd judge one from a friend. Whatever fires it, a date on the calendar or a change in the weather, is only the cue. The content should be about the person's world, their street, their city, their trade, and it shouldn't be an ad for the app that sent it. A piece of news alone isn't worth much. The same news told in a voice the person likes, by something that knows why it matters to them, is.

The channel already exists. Bank of America reported that in 2024 37.6 million clients opted into proactive alerts and received nearly 12 billion of them, mostly about account balances and debit card usage. Clients logged in 14.3 billion times. They interacted with Erica, the bank's AI assistant, 676 million times, and about 20 million clients have ever used it. By my arithmetic that's roughly 320 alerts per opted-in client per year, against about 34 conversations per Erica user.

Bank of America 2024: logins, proactive alerts, and assistant conversations

Push already dwarfs conversation. The alerts are the legible kind: your balance is low, your card was used. What's missing is content a person would read if it came from a friend. That's the part only full context can produce.

Here is what accompanying could look like in one day of a shopkeeper's life. It's a thought experiment, not a shipped feature. The shopkeeper sends a voice note while driving. The assistant opens a browser, copies the day's sales from his payment app into the point-of-sale system he pays for, replies "Opa, tudo feito," then asks if there's anything else. It builds an HTML report with charts and sends it on WhatsApp to his business partner, because it remembers he asked to keep the partner updated. It notices he always finishes at 4pm on weekdays and schedules the routine for that time. It closes by suggesting he stock raincoats, because it searched the forecast and it will rain tomorrow. Nothing in that sequence asks him to change how he works. The system moves to where he already is.

One more design choice: let the model decide when to send. Every proactive message spends a little of the person's attention, so the decision to send belongs to whatever has the most context about whether it's worth it.

Every message is also a question. This is the idea I'd defend hardest. A proactive message should end with one question and a few one-tap answers, chosen to extract the most signal for the next message. Think of Akinator. The question worth asking is the one that gives the assistant the biggest gradient descent delta on what it believes about the person. It should sit one ontology level above whatever triggered the message, and the copy should say the loop out loud: the more you answer, the better this gets.

The math behind Akinator is old. In twenty questions, if each question eliminates half the candidates, 20 questions distinguish 2^20 = 1,048,576 objects, and the best strategy is to split the remaining possibilities roughly in half every time. Peirce made the same point about science in 1901: "Thus twenty skilful hypotheses will ascertain what two hundred thousand stupid ones might fail to do." Akinator "learns the best questions to ask through experience from past players."

In information terms, a question is worth its expected information gain: the entropy of what you believe about the person, minus the expected entropy after the answer. A question whose answer you can already predict is worth zero bits. "Did you like this news?" is close to zero. After a story about flooding in the person's neighborhood, "Does rain help or hurt your sales?" separates the umbrella seller from the street-food stall, and the answer changes tomorrow's message, next week's stock advice and maybe next month's credit limit.

This ties back to the thesis. Scott's legibility is extracted: the state measures you whether you like it or not. One-tap questions make a person legible on their own terms, one voluntary bit at a time, in exchange for something useful. Pix itself worked like this. It's a state-built legibility project, nobody is required to use it, and 148 million people have. Legibility spreads fast when it pays the person back.

Answer with interfaces. I think an assistant should answer with widgets, charts and generated files more often than with paragraphs, and build the interface in SVG or HTML when none exists. It should be proactive with information and never with money: nothing moves a Pix or touches an account without an explicit yes. The proactivity worth rewarding is the kind that finds a need the person never stated, one only an assistant with their context could infer.

This connects back to Scott. A fixed dashboard is a map drawn in advance, with the same categories for everyone. A generated chart is drawn after the question, from one person's data, in the shape of that person's problem. Exame's line about apps that "show too much data and help too little" is a complaint about fixed maps.

Read what people say. People tell an assistant things no form asks: that sales drop when school is out, that a cousin pays back in installments, that the stall closes when it rains. Scott's name for that knowledge is metis: "Metis, far from being rigid and monolithic, is plastic, local, and divergent." Conversations are where people describe the parts of their lives the product's map doesn't have. I've argued elsewhere that the log is the truth and the context window is a derived view. For a financial assistant, the conversation log is the best record of what the formal data misses. It's also the most sensitive record, so it has to be read for the person, under the consent rules below, and not mined about them.

The tax reform is a legibility test

The clearest near-term case is tax. Brazil's consumption tax reform introduces CBS and IBS. For the first time, the option for Simples Nacional moved from January to September of the year before, and the window runs from September 1 to 30, 2026. Companies already in the Simples have to decide whether to keep CBS and IBS inside the single payment ("puro") or pay them through the regular regime ("híbrido"). The choice holds for January to June 2027, with another window in March 2027, and can be cancelled until November 30. Receita says the hybrid model "pode ser especialmente relevante para empresas que realizam operações com outras pessoas jurídicas", relevant for companies that sell to other businesses, and that the decision can affect "fluxo de caixa, relacionamento comercial, aproveitamento de créditos na cadeia produtiva", "exigindo análise individualizada de cada empresa." MEIs keep their January deadline and have no hybrid option.

Look at what the decision depends on: what share of your sales go to businesses that can use tax credits, and how your cash flow moves. For a small merchant that's exactly the illegible part. It lives in who paid by Pix from a CNPJ and who paid from a CPF, not in any form the merchant filled out.

Receita's own phrase, "análise individualizada de cada empresa", is the whole problem. An individualized analysis needs individual data, and for most small merchants that data has never been organized for anyone. This is inference, not evidence, but I think an assistant's job here is narrow: compute both regimes from the merchant's actual sales, show who the business customers are, and hand the choice to the merchant and an accountant who signs. The arithmetic is legible work. The judgment isn't. And puro or híbrido should come from the numbers, not from whichever option sounds safer.

Where accompanying fails

The counterarguments are serious, and some of them come from Scott himself.

Accompanying can enable bad behavior. A friend who never says no is a slot machine with a nice voice. An assistant that accepts your life as it is could accept a debt spiral as it is, and an engagement metric would reward it for doing so. The FinRegLab results are a useful corrective here: the better models approved slightly more people at conservative thresholds, and at high-risk thresholds the gain shrank or turned negative, because they could see who would default. Accompanying has to include saying the hard thing. The difference from correcting is that the hard thing is about your trajectory, measured against your own baseline, not against a category you were never in.

Personalization backfires past a line. Kim and Han ran a 360-person experiment in South Korea with three levels of personalization: generic, contextual, and based on personally identifiable information. When privacy concern was primed with a news article about data breaches, "highly intrusive, PII-based personalization was no more effective than a generic message and was significantly less effective than moderate, contextual personalization." Purchase intention was 5.91 for the contextual message, 5.58 for the intrusive one and 5.45 for the generic one. The effect was small, the participants played a hypothetical persona, and it's one culture. But the direction is a warning for any assistant that wants people to feel known. The message that reads as "this thing gets me" on a good day reads as "how do you know that?" on a day the person is worried, and finance is where people worry. A message about someone's neighborhood or trade sits in the contextual band. A message that recites their transactions back to them doesn't.

Surveillance has legal edges. A 2023 legal opinion from the Central Bank's attorney general's office quotes the LGPD's definition of consent: "manifestação livre, informada e inequívoca" for "uma finalidade determinada", free, informed and unambiguous, for a specific purpose. The Open Finance rules it quotes require consent to refer to specific purposes, to last at most twelve months, and forbid getting it through a pre-checked box or by presumption. The same opinion allows counterparty details to travel with a client's statements when the service needs them, but calls "a criação de perfis das contrapartes" of the client, profiling the people on the other side of the client's transactions, a misuse of purpose. That matters for anything that learns from Pix flows. Every Pix has two sides. An assistant can learn about its user. It can't quietly build a model of everyone who pays that user. 62 million Open Finance consents were active in January 2025, and each one is scoped to a purpose.

Legibility sometimes protects people. Scott never said simplification is bad. He wrote that state simplifications "are as vital to the maintenance of our welfare and freedom as they are to the designs of a would-be modern despot. They undergird the concept of citizenship and the provision of social welfare". Rao points out that we owe time zones, and with them railroads, airlines and the internet, to the same formula. The MEI is a legibility program, and the ministry says it "garantiu proteção previdenciária", guaranteed social security coverage, to millions of workers. Pix is one too. So the goal isn't illegibility. Rao names the actual failure: the formula is dangerous because it works "through the imposition of a singular view as 'best for all' in a pseudo-scientific sense."

That cuts against my own thesis. Scott warned that the lessons from failed social engineering "are as applicable to market-driven standardization as they are to bureaucratic homogeneity." One AI model advising a hundred million people is a standardizer. If every assistant nudges every merchant toward the same "optimal" behavior, that's high modernism with a chat interface. The defense is structural: the baseline is each person's own trajectory, the person decides what to reveal, and the system can be wrong about someone and reverse itself.

Distrust the headline numbers. The CFPB's 26 million stood for ten years before a correction cut it in half. The Bank of America figures are from a press release. Use them as orders of magnitude, and build sensors that would show when they're wrong.

Where the evidence stops

I'll mark where the evidence stops and the speculation starts.

The evidence supports three things: cash-flow data predicts default better than bureau data alone, proactive alerts already outnumber assistant conversations by more than an order of magnitude at a large bank, and contextual personalization beats both generic and intrusive messages. Everything past that is a bet.

The bet is that these pieces close into one loop, the kind I described in Find the loops. Proactive messages worth reading earn attention. One-tap questions turn attention into voluntary, consented facts about a person's life. Those facts plus the Pix trace make the life legible to a model, on the person's terms. The model extends credit to people the bureau couldn't see, and the reward function refuses to count accuracy gained by excluding them. The repayments and defaults become ground truth that improves the next message and the next limit.

One more hypothesis, held loosely: that how people talk to an assistant, the length, the variance, the tools they ask for, predicts repayment. I haven't seen public evidence for it, and it's exactly the kind of signal that crosses the creepy line if it's used without the person knowing. If it's ever tested, it should be tested as a null-first study, with consent scoped to that purpose.

The part I'm most confident about is also the least technical. A system that treats a seasonal, informal, irregular life as the normal case, rather than as an exception to be fixed, will see more of the country than one that doesn't. In Brazil the "exception" is 38% of everyone who works.

Design principles for an accompanying assistant

Scott ended his book with rules of thumb for planners. They transfer almost word for word: "Take small steps... Favor reversibility... Plan on surprises... Plan on human inventiveness." Here is my version for a financial assistant.

  1. Use the person's own trajectory as the baseline. Flag deviations from their pattern, not from the population's. Irregular income is a pattern to learn.
  2. Be proactive with information, never with money. Messages, charts and suggestions can arrive unasked. Pix, payments and credit actions need an explicit yes.
  3. Earn every message. A trigger is only a cue. If the content wouldn't be worth reading from a friend, don't send it, and let the model with the most context decide.
  4. Stay contextual. Use the neighborhood, the trade and the weather. Don't recite someone's transactions back to them to prove you know them.
  5. End with one question that teaches you something. See the spec below.
  6. Scope consent to a purpose and a time, and show it. Keep a page where the person sees what the assistant believes about them and can delete any of it. No pre-checked boxes.
  7. Model your user, not their counterparties. Every Pix has another person on the other side who never agreed to anything.
  8. Say the hard thing. Accompanying includes warning someone that their own trajectory is heading somewhere bad. An assistant that only agrees is optimizing engagement.
  9. Hand judgment to a human where stakes are individual. Tax regime choices and large credit decisions get a person who signs, and the software makes that person cheaper to reach.
  10. Take small, reversible steps. New limits start small and grow. Every automated decision can be undone.
  11. Hide the metric, measure the product. Score outcomes with deterministic sensors (default rate, newly reachable customers, opt-outs, next-day reads) that the generating model can't see.
  12. Audit your own numbers. Treat every headline figure, especially your own, as a claim that needs a sensor.

An information-gain question spec

The question at the end of a message is the piece most teams will get wrong, because the easy version ("Did you like this?") feels like engagement and teaches nothing. This is a minimal spec in TypeScript.

type Hypothesis = { id: string; p: number } // e.g. "sells mostly to businesses", "rain hurts sales"

type Option = { label: string } // short enough to tap

type Question = {
  text: string              // one line, one ontology level above the trigger
  options: Option[]         // 2 to 4 answers; "skip" is always implicit
  likelihood: (h: Hypothesis, o: Option) => number // P(o | h, answered), sums to 1 over options
  answerRate: number        // P(user answers at all), learned per user
  intrusiveness: 0 | 1 | 2  // 0 contextual, 1 personal, 2 never ask
}

const entropy = (ps: number[]) =>
  -ps.reduce((s, p) => (p > 0 ? s + p * Math.log2(p) : s), 0)

function expectedGain(belief: Hypothesis[], q: Question): number {
  const prior = entropy(belief.map(h => h.p))
  let posterior = 0
  for (const o of q.options) {
    const joint = belief.map(h => h.p * q.likelihood(h, o))
    const pOption = joint.reduce((a, b) => a + b, 0)
    if (pOption === 0) continue
    posterior += pOption * entropy(joint.map(j => j / pOption))
  }
  return prior - posterior
}

function score(belief: Hypothesis[], q: Question, lambda = 0.5): number {
  if (q.intrusiveness === 2) return -Infinity
  return expectedGain(belief, q) * q.answerRate - lambda * q.intrusiveness
}

The rules around it:

Sources

← The supermarket is an unfinished product
Improving Brazil Through Cybernetics →

Markdown version: /blog/finance-for-illegible-lives.md. Every essay: /agents.