My contribution
- Similarity-first retrieval and resilient batch classification
- Approve, reject and correct review workflow
- Reviewer-confirmed learning memory and audit history
- Import, reporting and tenant-isolated data handling
Ledger classification that learns from reviewers, reusing known decisions and calling the LLM only for what’s new.
My roleDesigned and implemented the system end-to-end, including the AI logic, backend, frontend, data processing and automation workflows.
Problem
Transactions often land in the wrong ledger head. Reviewing every posting by hand is slow, and sending every transaction to an LLM is costly and repeats decisions reviewers have already made.
System pipeline
Approach
Flags transactions posted to the wrong ledger, recommends the right one with confidence and reasoning, and learns from every review. The workflow keeps inputs, decisions and exceptions visible so that a reviewer can understand how the output was reached.
My contribution
Try the demo
Narration → ledger: normalisation, similarity search, local classifier, confidence, approve / change, learning memory.
Read id, date, narration and amount.
Run the sample or upload CSV. Recommendations come from token similarity and transparent local keyword features—not an external API.
This interactive demonstration is a simplified, synthetic representation inspired by an enterprise project. Production systems, company data and proprietary implementation details are not publicly exposed.
Result
The portfolio demo classifies narrations with approved-memory similarity and local features, exposes confidence and reasoning, and learns corrections for the current session.
Technical architecture
CSV / XLSX / PDF → Transactions with current ledger
Narration + current ledger → Reused decision or miss
Unmatched transactions → Suggested ledger + reason
Suggestion → Scored decision
Scored decisions → Confirmed ledger
Confirmed ledger → Updated memory
Tech stack
The portfolio demo itself is static TypeScript running locally in the browser with synthetic data and no API key.