Product Designer
Hilo on desktop, with the inbox, an open conversation and the client panel, and the owner’s mobile inbox beside it

The AI suggests, a person decides

Hilo is a shared WhatsApp inbox for small accounting firms in Costa Rica, with an AI layer that summarizes conversations, suggests who should answer and flags clients with a deadline today. I designed it end to end and built a working prototype with my own design system, Trama.

  • Product Design
  • AI UX
  • B2B SaaS
  • Prototyping
  • Accessibility
Role
Product Designer: flows, AI rules, UI and front-end prototype
Type
Self-initiated product concept
Scope
6 screens · desktop and mobile · 2 roles
Tools
Figma, Trama, React, Claude Code
Timeline
October 2026

Where accounting firms really talk to clients

In Costa Rica, small accounting firms run on WhatsApp. Clients send invoices, ask how much they owe in taxes and remind their accountant of deadlines, all in one chat on one shared phone.

I saw this up close designing GoEasy Chat at GEXP Software, a desktop app that centralizes those conversations for accounting teams. Hilo is what I would build next: the same job, rethought for a team of five with an AI that helps without taking over.

When everyone can answer, nobody does

A shared inbox has no owner per chat. Two people answer the same client, or nobody does. The owner only finds out a client was waiting when that client calls, upset, on the day a tax filing is due.

Deadlines make it worse. A message that says “I have to pay before 3” looks like any other message in the list, and a missed IVA filing means a fine for the client and a lost client for the firm.

Goal: every chat has an owner, urgent clients surface on their own, and the owner can see in seconds who is falling behind, without the AI ever speaking for the firm.

What the prototype covers

  • 6screens: 5 for desktop and a mobile inbox for the owner
  • 5new components added back to Trama, in Figma and React
  • 1action the AI takes on its own: flagging urgent chats
  • 0accessibility violations in 7 automated checks of the live prototype

Two people, two different questions

The agent

“Which client do I answer next, and what do they need?”

Ana handles about 14 clients a day. She needs her chats, the context to reply without reading the whole thread, and the client’s pending filings at hand.

The owner

“Is anyone being left waiting, and who can take more?”

Daniela runs the firm and assigns new clients. She checks the team from her phone between meetings and steps in when someone is overloaded.

One rule: the AI suggests, a person decides

I wrote the rules before drawing any screen. For each thing the AI could do, I asked what a mistake would cost and whether it can be undone. Only one action passed that test to run on its own.

What the AI doesWho decidesWhy
Summarize each conversationThe agent confirms or corrects itSaves reading a long thread, but a wrong summary must never become the record.
Suggest who gets a new chatA person confirms the assignmentUses each person’s load and history with the client. The owner knows things the data doesn’t.
Draft the owner’s daily reportThe owner edits and sends itThe report goes to the whole team, so it carries the owner’s voice.
Flag urgent chatsAutomatic. Anyone can remove the markMissing a tax deadline costs far more than a false alarm. Removals are counted, so the rules can be tuned.
Reply to clientsNeverOff and locked in this version: an accounting firm can’t send advice nobody reviewed.

From the next reply to the whole team

Every screen uses real content: Costa Rican tax filings (D-104, CCSS payroll), amounts in colones and names that are long enough to break a layout. All of them come from the working prototype.

Hilo inbox: list of client chats with status chips, the open conversation with an automatic urgent notice and an AI summary, and the client panel with pending tax filings
Inbox. The urgent notice and the AI summary sit above the thread; the client panel lists what is due this month.
Client view for Café Cordillera: header with tax tags, four metrics, a timeline grouped by month, and side cards for the AI client summary, contacts and team history
Client view. The full history in one place, grouped by month, with who has handled the client since 2022.
Assignment dialog for three new chats: the AI suggests Luis Jiménez with a reason, and each team member shows a load bar, with Ana marked near her limit
Assignment. The AI suggests a person and says why; the load bars show the cost of each choice.
Owner view: today’s metrics, a load table per person, chats falling behind with reassign buttons, the AI daily report and today’s automatic urgencies
Owner view. Who is overloaded, which chats are waiting and the urgencies Hilo flagged today.
Settings: connected WhatsApp number, assignment mode set to suggest with AI and confirm, team roles with an invite field, and automatic urgency switches and rules
Settings. The owner decides how chats are assigned and which messages count as urgent.
Three mobile screens: the owner’s inbox with three key numbers and an urgent banner, an open conversation, and the team view
Mobile, for the owner: three numbers, the urgent chat nobody has answered and the team at a glance.

The choices that shaped Hilo

  1. The urgent notice sits above the thread, not inside it

    An urgent mark buried between messages gets scrolled past. Pinned above the conversation, with the reason in plain words, it is the first thing the agent reads.

  2. AI is labeled with text, not sparkles

    Every AI output carries an “IA” badge and a screen reader label that says it was generated. No gradients or glows: in an accounting office, trust comes from looking like a tool, not a toy.

  3. Assignment shows the load before and after

    Each person has a load bar and the count changes as you pick (8 → 11 chats). The owner sees the cost of a choice before making it, and who is near their limit.

  4. The owner gets a different view, not more filters

    Agents need the next chat to answer. The owner needs to know who is falling behind and act on it, so the team view leads with load, waiting chats and a reassign button.

  5. Mobile is for the owner, not the agents

    Agents work at a desk. The owner checks in between meetings, so the mobile inbox opens with three numbers and the one urgent chat nobody has answered.

The product fed the system back

Hilo is built only with Trama’s components and tokens. When a screen needed something the system didn’t have, I added it to Trama first, in Figma and in React with Storybook docs, and then used it in Hilo. The list row also gained a time, and the system a scrim token for dialogs.

  1. AI card

    A text “IA” badge, a timestamp and optional confirm actions.

  2. Message bubble

    Incoming and outgoing, with time and who replied. Announces its side to screen readers.

  3. Tabs

    With counts, arrow-key navigation and an underline that doesn’t rely on color.

  4. Metric card

    Label, value and a one-line note, as a definition list.

  5. Switch

    role="switch", a required label and a linked description.

Usable with a keyboard and a screen reader

Trama already covered contrast and focus. The product added the harder part: flows. I tested them with the keyboard and with automated checks on every screen, the dialog and the mobile views.

  • The assignment dialog traps focus, closes with Esc and returns focus to the button that opened it
  • Tabs move with the arrow keys, Home and End
  • Urgency is never only red: the notice says why in words, and chips always carry text
  • A skip link jumps past the navigation, and each screen moves focus to its content
  • Every AI output is announced as generated by AI

Testing it with real firms

The next step is to put the prototype in front of three accounting firms and watch them assign and answer a morning’s chats. The questions I most want answered: do agents trust the summaries enough to skip the thread, and do the urgency rules catch the right messages?

What I learned

  • Decide what the AI may do alone before designing a single screen. It changed the layout of every view.
  • A design system proves itself in the second product. Hilo needed five components Trama didn’t have, and now Ruta gets them for free.
  • Real content finds problems placeholder text hides: long client names, tax terms and amounts in colones broke three layouts.

Next project

Ruta

View case study