An Online Bank Metaverse for FinAThon
· 3 min read
An Online Bank Metaverse for FinAThon
I built this for FinAThon, a fintech hackathon at IIT Delhi, and it ended up being a winning entry. The idea was simple to say and much harder to pull off: instead of a form-and-button banking app, what if you could walk into a bank the way you walk into a game level, and talk to a staff member who happens to be an AI?
Why I made it
Most banking interfaces are flat. You tap through menus, fill fields, and hope you picked the right option. I wanted to see what banking would feel like as a space you move through — a proof-of-concept for an immersive branch you could explore in first person.
To get a head start on movement and controls, I began from a first-person game starter kit rather than building the player controller from scratch. That let me spend hackathon hours on the banking experience instead of camera math.
How it was built
The project is split into a 3D frontend and a small Python backend.
The frontend is a React + Three.js app built on @react-three/fiber, with:
@react-three/dreifor helpers and loading GLTF scenes,@react-three/rapierfor physics so the player actually collides with the world,- a
@chatscopechat UI for talking to the AI teller, gtts-driven text-to-speech so the teller could speak back,- and a UPI form component for the actual "banking" interaction.
The scene loads real GLTF models (bg.gltf, BG2.gltf) so you move through an environment rather than a menu.
The backend is a Flask server that hands the conversation to an OpenAI chat model with a system prompt that makes it behave strictly as bank staff — greeting the client, answering only banking questions, and staying on topic. One detail I enjoyed: every message is stored in a hash-chained structure, where each entry carries the SHA-512 hash of the previous one. It's a nod toward tamper-evident, ledger-style record keeping for the conversation history.
What I learned
- Starting from a kit is not cheating. In a hackathon, the win is the idea and the integration, not reinventing a movement controller.
- Constraining an LLM with a tight system prompt matters. Telling the model to only act as bank staff and greet the client first was the difference between a demo and a distraction.
- 3D adds real weight to a demo. Judges remember walking into a bank far more than they remember another dashboard.
It's very much a proof-of-concept — API keys hardcoded, rough edges everywhere — but as an experiment in what "online banking" could feel like, it was one of the more fun things I've built.
If you want to look at the code, here it is: IITDFinAThon on GitHub.