
An AI chat built into Finta, an accounting and tax product for startups. It answers questions in plain language, and it does the work: categorizing, cleanup, uploading transactions.
THE PROBLEM
Monotonous bookkeeping and categorizing is the backbone of accounting, but time spent poorly for a founder.
Founders don’t understand accounting concepts, and they shouldn’t need to. 90% of the founders we talked to had no concept of these features, meaning their workflows were much slower than they should be on Finta.
THE SOLUTION
A natively embedded chat layer that is always there for users to reach for and offload menial work, ask questions and get back to building.
It lives on every screen, at three sizes for different use cases and gives a source of truth for users to act on. We support uploading dense transactions (which used to be in a clunky third party tool), bulk categorization (that previously had poor accessibility) and product guidance.
upload transactions natively
bulk categorize easily
THE APPROACH
Finta strives to have agentic services everywhere and we believe it’s the frontier of accounting. We strive to be multi-channel (many services) and multi-model (multiple ways of interaction). So what channel should we start with first?
We chose a native chat first as it reaches every user (not just AI-native users), lets us gather data from real behaviours and can extend beyond the app later.
guiding principles
These were non-negotiables I designed with in mind. A portion of them were solidified before any designing happened and others through learnings from user interviews.
WHERE IT LIVES
This is Finta’s first AI surface, and eventually this same layer will live in our future products (forecasting, dashboards, taxes, landing page). The design problem wasn’t the chat; it was a layer that could sit on every surface mindfully.
the current layout

I dissected general layouts of constraints our products have, and general patterns (such as notification areas). These areas, we avoid because overlapping details cause friction.
placement iterations
I tried combinations of multiple chat placements (researched from many products such as Whispir Flow, Linear, Figma, Slack, etc.) on many product surfaces. Some unique constraints were that this needed to be embedded everywhere seamlessly, and that we have a webapp rather than a standalone app, meaning there is also noise from the browser’s interface. We also have all our details in a drawer on the right, which I can’t cover.
This is what I came up with originally:

THREE SIZES
User interviews showed moments of hesitation and slight pauses while navigating the product and chat. There was liberty with the chat always being where you expect it, but also a constraint that it couldn’t move anywhere else.
Instead of having chats shiftable on the bottom tabs, which was a short term solution, I modelled their use cases of quickly switching back and forth to create a side bar, and only focusing on the chat to create a full screen mode.
STILL A LAYER
I found the users got anxious when they didn’t know where exactly their previous screen went. The user should never feel like they have been permanently moved to another location, so I designed it so that the language showed the way back to their original screen.

THE SCROLL PROBLEM
A chat would get long, load from the top and users would scroll down every time, and lose their spot. Switch chats and they’d scroll again.
The cause was the stack: with Embedded Ruby + Turbo, the server rebuild the entire message on every update (around 20 times per response) so there was no persistent frontend state to remember your position. I migrated to Inertia (Rails feeding a React app), which updates the page in place, so scroll position persists and we can save where each user left off.
THE SMALL FRICTIONS
We’re opinionated on purpose. Any time a tool doesn’t work as expected, that’s a tool that doesn’t deserve my time, and the same applies to anyone else. This agent is made to offload headspace and give it back to the user to build.
DETAILS AND DELIGHT
All of these details is the difference between a tool and something that was crafted. I like to add small moments for users to feel joy while using our product.
REFLECTION
The early signal for Ask Finta is that people already want it to do more of the work than it can, and in the future, it will be the framework layered on top of every product we ship.
This is only a fraction of what went into making this. For the full story, say hi at leek@leakedleek.xyz.