cdotsanghvi's picture
add Cold Start tab: SSL pretraining lifts new-merchant fraud catch ~5x
62bb516
|
Raw
History Blame Contribute Delete
4.3 kB
---
title: Transaction Encoder LFM2.5 multi-head + Co-Pilot surfaces
emoji: 🪙
colorFrom: gray
colorTo: indigo
sdk: gradio
sdk_version: 6.14.0
app_file: app.py
pinned: false
---
# Transaction Encoder — One Backbone, Many Surfaces
Reference implementation of the multimodal-encoder recipe applied to
discrete-feature transaction sequences, demonstrating cross-surface
reuse on **the same customer history**. Same recipe as Liquid AI's
[LFM2.5-Audio](https://huggingface.co/LiquidAI/LFM2-Audio-1.5B) and
[LFM2.5-VL](https://huggingface.co/LiquidAI/LFM2-VL-1.6B): a small
per-modality encoder produces continuous embeddings, a projection
adapter maps them into the LFM2.5 text backbone's hidden space, and a
per-surface LoRA adapts the attention layers.
## What this demo shows
Seven tabs over one shared LFM2.5-350M backbone:
- **Multi-Head Demo** — the original 4-task-head encoder demo. Live
inference on curated customer archetypes: fraud probability,
next-merchant prediction, amount-bucket prediction, MCC prediction.
- **Cold Start** — a brief self-supervised pretraining stage ("SSL")
catches ~5× more fraud at a fixed approval rate on a newly onboarded
merchant with almost no labels, while declining fewer good customers.
The same connector-pretraining stage LFM2.5-Audio and LFM2.5-VL use.
Synthetic-data demonstration with operating-point numbers + figure.
- **Why Liquid** — architectural pitch for the encoder-on-frozen-backbone
recipe.
- **Integration** — build-it-yourself guide.
- **Dispute Co-Pilot** — given a customer's transaction history + a
dispute complaint, classifies the dispute as likely / ambiguous /
unlikely friendly fraud, with per-transaction attribution.
- **Collections Co-Pilot** — given a delinquency context, predicts the
customer's likely response to each of 4 treatment options
(settlement / payment plan / soft-touch / no-offer).
- **Fraud Pattern Co-Pilot** — given an upstream-flagged transaction,
classifies the attack stage (5-way) AND the underlying type (4-way)
in two independent categorical outputs.
Each Co-Pilot surface ships its own slim checkpoint (~24 MB) alongside
the original multi-head checkpoint (~24 MB), but all four share the
LFM2.5-350M base weights — the demonstration that the backbone is the
product, and per-surface plumbing rides on top.
## How it works
```
feature_ids (1, 64, 15) ──► TransactionEncoder ──► ProjectionAdapter
(per-feature embed, (LayerNorm + MLP,
concat, MLP + d_encoder → d_lfm)
surface markers)
[tx pseudo-tokens, SEP, context tokens]
LFM2.5-350M (frozen) + LoRA r=16
┌─────────────────────┬─────────────────────┐
▼ ▼ ▼
Probability Head Attribution Head (LM head NOT trained;
(3 / K×3 / 5+4 (per-position reasoning rendered
per surface) binary) via Python template)
```
## Scope
Reference implementation on synthetic data. Backbone is
[LFM2.5-350M](https://huggingface.co/LiquidAI/LFM2.5-350M-Base) (frozen)
plus ~6M trainable parameters per surface (encoder + projector + LoRA +
heads). Quality numbers reflect synthetic data — they should not be
cited as performance on real payment data.
## Cast performance (held-out)
- Multi-Head V3 (step 4999): per-head accuracy reported on the test split.
- Dispute v7 (step 2000): 5/6 cast band-match, 6/6 attribution top-5
- Collections v3 (step 4500): 5/6 cast band-match
- Fraud v1 (step 3000): 6/6 stage AND type at 1.00 confidence
## Read more
- [LFM2 technical report (arXiv 2511.23404)](https://arxiv.org/abs/2511.23404)
- [LFM2 model weights on Hugging Face](https://huggingface.co/LiquidAI)