Byzfunder, a direct lender that has funded more than 35,000 small businesses, relies on thousands of rules to categorize the freeform text that makes up millions of bank statements. At that volume, the rules can miss edge cases that only a slow manual audit might catch. For example, if a new lender appears on an applicant’s account statement, the regex rules have no pattern for it, and the loan is miscategorized as an ordinary transaction. When that happens, Byzfunder risks funding a borrower it would have otherwise turned down. This September, MotherDuck launched support for Jev. On his first day using Jev through MotherDuck, Byzfunder's Chief Risk Officer, Mike Failor, ran 120,000 transactions in under a minute through an audit the team had never done before. According to Mike, "Jev helps us iterate on processes today and find these missing areas quickly and efficiently."
The rules are the business
Byzfunder approves small businesses in minutes and funds them the same day. Reading bank statements accurately and completely is critical to their business. Every applicant sends three months (or more) of statements, and every transaction is labeled. Is it payroll? Real revenue? Money moving between accounts the owner controls to make revenue look bigger? Or a payment from another lender? That last label is most important. "As a lender, we want to avoid lending to small businesses that have multiple other open loans with competitors," says Mike Failor. "If we miss somebody and miscount how many competitor products they have, this is somebody we might not want to lend to, because they're a lot riskier." Most of the labeling runs on regex: thousands of lines of it, built up over years. New lender names can escape the manual classification rules. The rules are critical to Byzfunder's edge, and Mike calls them the secret sauce. The problem was that there was no practical way to check them.
A probability, not a paragraph
Byzfunder has run its data on MotherDuck since 2025. Mike considered running transactions through a general-purpose LLM but decided against it. "Dragging 100,000 of these through an LLM means there's going to be a lot that gets missed," he says. Jev answers a closed question with a calibrated probability instead of free text. "Here it's simple. We get a probability, we can rank order by the probability that we're right or wrong, and then dig into it."
How the check works
Byzfunder takes a month of transactions its deterministic rules have already labeled, typically 30,000 to 50,000 lines. For each one, a query passes Jev the transaction description and asks how likely it is that the line is funding from another lender. The rows where Jev most disagrees with the existing label go to the top of an analyst's list. Jev doesn't overrule anyone. "Jev's not going to be the piece that fills in that gap," Mike says. "It's going to identify the gap, and we're going to research it and figure out why." When analysts find a miss, they fix the rule so the case is caught upstream next time. The QA layer improves the deterministic system so that each subsequent check is more efficient.
Copy code
-- illustrative example of jev inside MotherDuck
WITH inputs AS (
SELECT
product_name || ' ' || format('${:,.2f}', price) AS product,
rule_label
FROM products
WHERE rule_label <> 'toy_duck'
)
SELECT
product,
rule_label,
round(prompt_jev(
product,
'Is this a toy duck?'
), 2) AS jev_duck_prob
FROM inputs
ORDER BY jev_duck_prob DESC
LIMIT 3;
| product | rule_label | jev_duck_prob |
|---|---|---|
| Squeaky Yellow Duckling Bath Toy $4.99 | bath_toy | 0.97 |
| Yellow Inflatable Pool Float, 48 in $19.99 | outdoor | 0.17 |
| Ducky Print Shower Curtain, 72 in $24.99 | home | 0.05 |
What's next
Mike, who spent years running credit and fraud risk at online lenders before Byzfunder, is starting to apply the same pattern to fraud. Jev can quickly iterate through attributes to find known fraud patterns and identify cases that deserve a closer look.

