Enrich bank transactions on Chalk GPUs
This demo shows how to run Modern GLiNER and Clef-Flash on a Chalk GPU to extract merchants and categorize bank transactions. Generate a sample batch to try it, then explore the code to see how it works.
Compare a raw bank memo with the extracted result
The sample batches are synthetic. Inspect extraction and classification as separate outputs.
Try this experiment · expected results
1Inspect one transaction
Compare its original memo with the extractor’s highlighted tags.
Expected: The tags show which text supports the merchant or other extracted attributes.
2Compare the decision
Read the category or other decision-model output for that same row, then try another synthetic batch.
Expected: Extraction finds text spans; classification assigns the example’s structured labels.
Compare each raw bank memo with its merchant, category, and extracted entities. Chalk serves the two GPU models used by this enrichment pipeline.
Built on Chalk
Chalk runs the extractor, decision model, and web app on one NVIDIA L40S. The example uses extracted memo spans as merchant candidates, then asks typed questions about each transaction.
A model ready to use
Deploy the model and its web app together. Chalk provisions the GPU and returns an HTTPS URL.
Deploy from Python
Define the container and its model weights in Python. Later builds can reuse cached image layers.
Two models on one GPU
Modern GLiNER extracts entities and Clef-Flash selects merchants and spending categories. The example loads both models on the same L40S and batches the decision step.
Evaluate your enrichment pipeline
The repository includes an evaluator that calls your Chalk endpoint and compares the results with labeled synthetic transactions. Use your own labeled data to check the pipeline for your workflow.
The models are Clef-Flash and modern-gliner-bi-large. The demo uses synthetic transactions. Its merchant cleanup selects spans from the memo, so abbreviations may remain unexpanded and category predictions can be wrong.
Run it on your own
Clone the example, log in to Chalk, and run the deploy script. Chalk builds the image, provisions an NVIDIA L40S, and prints the demo URL. Run the included evaluator against that URL to score the sample transactions.
You will need uv and a Chalk environment with a 48 GB GPU such as an L40S. The image contains the GLiNER weights; Clef-Flash downloads at startup. Adapt the categories and evaluate on your own labeled transactions.
git clone https://github.com/chalk-ai/bank-transaction-enrichment
cd bank-transaction-enrichment
# Or export CHALK_CLIENT_ID and CHALK_CLIENT_SECRET.
chalk login
# Builds the image, provisions an L40S, prints your demo's URL.
./deploy.py --gpu nvidia-l40s
# Score it against the synthetic generator's labels.
./evaluate.py https://<web_url> --seeds 3Turn transaction memos into useful features
Build merchant cleanup and categorization into your data pipeline. Talk to an engineer about serving transaction models on Chalk GPUs.