LLM-based credit scoring using transaction data
For Mission Mobile, a South African fintech, we built bank-statement extraction and a five-stage Financial Health Score pipeline that makes credit assessments more nuanced, fair and explainable — without traditional labelled data.
- Industry
- Fintech, Lending
- Region
- South Africa
- Services
- Data science, LLM engineering, Document extraction
- Duration
- 6 weeks

- Stages in the Financial Health Score pipeline
- 5
- Core Prosperity and Stability indicators
- 12
- Project duration
- 6 weeks
Intro
Mission Mobile, a South African fintech, asked whether LLMs could support modern credit underwriting in a market where labelled data is scarce.
We delivered a two-part system: a bank statement extraction pipeline that reliably parses complex formats, and a five-stage Financial Health Score (FHS) pipeline that turns transactions into structured features, enriched insights and explainable credit indicators — balancing deterministic math with LLM enrichment and interpretation.
Goals and challenges
- 01
Variable statement layouts
Earlier Beam-style rule-plus-OCR approaches struggled with layout variability such as borderless tables, and bank formats differ widely.
- 02
Scores without the “why”
Those approaches produced superficial scores with no behavioural explanation. The client needed modern AI, support for many banks and an explainable FHS.
- 03
Cost, scale and trust
OCR and LLM calls had to stay affordable at scale, outputs had to be grounded to control hallucinations, and scoring had to stay fair despite label scarcity.
Solution
Workstream 1: bank statement extraction
We iterated from PDF-to-Markdown tools through MistralOCR to a final DotsOCR-based architecture with a bank classifier and bank-specific formatters built on BeautifulSoup and Pandas. It runs as a high-performance cloud service with synchronous and asynchronous ingestion.
Workstream 2: the five-stage FHS pipeline
Deterministic math lives in code; LLMs handle enrichment and interpretation. The pipeline ships as an installable Python package with typed configs, schemas, logging and tests, and a classifier-formatter registry makes adding new banks straightforward.
FHS pipeline stages
- Processing and features: regex categorization, engineered features and monthly aggregates
- LLM enrichment: batched async gpt-4.1-mini calls for transaction-level enrichment
- Insights: grounded prompting so the model cites transaction evidence and base rates
- Indicator calculation: twelve core Prosperity and Stability indicators
- Score adjustment: a holistic LLM review with deltas and plain-language justifications
Team
- 1 Principal Data Scientist
- 2 Data Scientists
Results
- Extraction reliably parses complex statements through DotsOCR and bank-specific formatters.
- The FHS produces quantitative indicators with concise, evidence-backed summaries that analysts can audit.
- Behavioural insights such as post-salary spending and savings discipline make the scoring more competitive than traditional models.
What’s next
Planned next steps include OpenRouter failover, confidence intervals on indicators, continued model benchmarking, and retrieval-augmented generation for merchant metadata and local economic signals.
Project details
- Client
- Mission Mobile
- Industry
- Fintech, Lending
- Region
- South Africa
- Services
- Data science, LLM engineering, Document extraction
- Technologies
- Python
- FastAPI
- DotsOCR
- OpenAI gpt-4.1-mini
- BeautifulSoup
- Pandas
- Team
- 3 — 1 principal data scientist, 2 data scientists
- Duration
- 6 weeks

