Inspiration

Most banking apps tend to fall short in terms of user experience; we have observed that users frequently have complaints—whether due to a lack of features or because existing ones are not easily discoverable or understood. Consequently, users are often dissatisfied and prefer to switch to a different bank that better meets their needs. We believe it is crucial to develop ideas for user retention and to create a simpler, more satisfying experience, all while adhering to regulations that safeguard data security and the app's reliability.

What it does

A financial assistant with generative UI, instead of replying in plain text, the LLM agent returns a declarative JSON payload that our renderer turns into real components in seconds, matched to whatever the user actually asked. Ask about spending and it builds a breakdown chart; ask about income trends and it builds a different widget entirely, each query gets the widget that fits it, assembled in real time from our own fixed component catalog.

How we built it

A single Next.js + TypeScript monorepo: agent/ for the LLM orchestration, mcp/ for tools and data, ui-catalog//widgets/ for the fixed component library, and schemas/ as the shared contract validated with Zod before anything reaches the renderer. Strict TypeScript, guaranteed structured JSON output, and a hard limit of four clarifying questions kept us focused on one complete end-to-end flow instead of five half-built ones.

Challenges we ran into

Keeping the LLM inside the lines, it's easy for a model to invent a slightly different component or JSON shape each time, and any drift breaks the renderer. Locking the team into a fixed schema fixed that, but meant real coordination overhead, since the agent, MCP tools, and renderer all share the same contract.

Accomplishments that we're proud of

Getting the full loop working end to end under hackathon time pressure: a question triggers the right MCP tool call, the agent picks the right widget on the fly, and savings goals actually persist as real state instead of a mock.

What we learned

Constraining a generative system (fixed catalog, schema validation, a hard question limit) makes it more trustworthy, not less, it's what lets an LLM-driven interface take a real financial action with confidence.

What's next for finance

Extrapolate the system to areas outside of financial management.

Built With

Share this project:

Updates