JoonaPay

JoonaPay is a spend-management platform designed and built for the construction, agriculture, telecoms, and logistics industries in West Africa. I joined the team when the product was being conceptualized and had an unfinished design that I believed didn't meet the design or quality standards of financial tools available in the United States.

Role: Product Design and Design System

Tools: Figma

Timeline: 2024 to 2025

My role covered everything from early research and design strategy to creating the full interface and design system. With a 10-hour time difference, I worked remotely with the Founder and CEO, CMO, CTO and a small French-speaking development team to define what the product should look and feel like before development began.

My role covered everything from early research and design strategy to creating the full interface and design system. With a 10-hour time difference, I worked remotely with the Founder and CEO, CMO, CTO and a small French-speaking development team to define what the product should look and feel like before development began.

My role covered everything from early research and design strategy to creating the full interface and design system. With a 10-hour time difference, I worked remotely with the Founder and CEO, CMO, CTO and a small French-speaking development team to define what the product should look and feel like before development began.

The Challenge

Although the product was still in its conceptual phase, the preexisting design already felt dated and inconsistent. The color palette and interface design didn't convey the trust or professionalism expected in a product that would handle large financial transactions.

We returned to the drawing board to turn the product into something credible and clear - something that could be used confidently in investor demos and customer pitches while preparing the foundation for a full product development cycle.

The Challenge

Although the product was still in its conceptual phase, the preexisting design already felt dated and inconsistent. The color palette and interface design didn't convey the trust or professionalism expected in a product that would handle large financial transactions.

We returned to the drawing board to turn the product into something credible and clear - something that could be used confidently in investor demos and customer pitches while preparing the foundation for a full product development cycle.

The Challenge

Although the product was still in its conceptual phase, the preexisting design already felt dated and inconsistent. The color palette and interface design didn't convey the trust or professionalism expected in a product that would handle large financial transactions.

We returned to the drawing board to turn the product into something credible and clear - something that could be used confidently in investor demos and customer pitches while preparing the foundation for a full product development cycle.

Approach

I started with the basics - a design system in Figma that defined type, color, spacing, and reusable components. Once that was in place, designing screens became quick and consistent.

Using our product requirements and user insights from over 30 interviews with potential customers, I mapped out the key workflows for account creation, single payments, batch payments, approvals, reporting, auditing, customer management, and vendor management. I studied similar products like Stripe and LemonSqueezy to identify established patterns that could work in our market.

Senior leadership and I huddled weekly to review progress and strategy, while I shared more detailed Loom updates on the design with the broader team. Because the development team worked primarily in French, I documented components and interface text in both English and French to keep communication clear.

Approach

I started with the basics - a design system in Figma that defined type, color, spacing, and reusable components. Once that was in place, designing screens became quick and consistent.

Using our product requirements and user insights from over 30 interviews with potential customers, I mapped out the key workflows for account creation, single payments, batch payments, approvals, reporting, auditing, customer management, and vendor management. I studied similar products like Stripe and LemonSqueezy to identify established patterns that could work in our market.

Senior leadership and I huddled weekly to review progress and strategy, while I shared more detailed Loom updates on the design with the broader team. Because the development team worked primarily in French, I documented components and interface text in both English and French to keep communication clear.

Approach

I started with the basics - a design system in Figma that defined type, color, spacing, and reusable components. Once that was in place, designing screens became quick and consistent.

Using our product requirements and user insights from over 30 interviews with potential customers, I mapped out the key workflows for account creation, single payments, batch payments, approvals, reporting, auditing, customer management, and vendor management. I studied similar products like Stripe and LemonSqueezy to identify established patterns that could work in our market.

Senior leadership and I huddled weekly to review progress and strategy, while I shared more detailed Loom updates on the design with the broader team. Because the development team worked primarily in French, I documented components and interface text in both English and French to keep communication clear.

The dashboard gives a clear view of company spend, pending approvals, and upcoming payments. It’s organized for quick scanning, without unnecessary detail.
Core components from the JoonaPay design system. Starting with structure made it easier to keep screens consistent as the product expanded.
The use of Google Translate enabled regular communication with the French development team through Figma comments and Loom videos.

Design Decisions

A lot of small design choices shaped how JoonaPay feels, but one of the most important was the payment modal.

In the first wireframe iteration, single and batch payments were treated as two separate flows. It seemed logical at first - each had slightly different steps and approval paths. But as we started sketching and reviewing the wireframes, the duplication became obvious. Maintaining two nearly identical flows would complicate both the interface and development.

I simplified the structure to a single, unified modal. A payment would start as a single transaction by default, and become a batch payment automatically when the user added more vendors. This kept the mental modal consistent while reducing friction. The user never had to design between 'single' or 'batch' upfront - the interface adapted naturally to their action.

The change also made approvals and scheduling more consistent. Both now share the same logic, with clear visual hierarchy for payer, payees, and timing. In testing with internal stakeholders, this design felt simpler and faster to use while still handling the same complexity under the hood.

Beyond the modal, other design decisions followed the same principle: reduce choice friction and make the interface feel predictable.

  • The command bar gives users global access to search, navigation, and frequent actions without leaving their workflow.

  • Table layouts use consistent column logic across modules, so sorting and filtering behave the same everywhere.

  • Dialogs, toasts, and confirmations all share one interaction pattern, minimizing cognitive load across the product.

Each of these decisions, and many more, were small in isolation but together made the interface feel stable and familiar.

Design Decisions

A lot of small design choices shaped how JoonaPay feels, but one of the most important was the payment modal.

In the first wireframe iteration, single and batch payments were treated as two separate flows. It seemed logical at first - each had slightly different steps and approval paths. But as we started sketching and reviewing the wireframes, the duplication became obvious. Maintaining two nearly identical flows would complicate both the interface and development.

I simplified the structure to a single, unified modal. A payment would start as a single transaction by default, and become a batch payment automatically when the user added more vendors. This kept the mental modal consistent while reducing friction. The user never had to design between 'single' or 'batch' upfront - the interface adapted naturally to their action.

The change also made approvals and scheduling more consistent. Both now share the same logic, with clear visual hierarchy for payer, payees, and timing. In testing with internal stakeholders, this design felt simpler and faster to use while still handling the same complexity under the hood.

Beyond the modal, other design decisions followed the same principle: reduce choice friction and make the interface feel predictable.

  • The command bar gives users global access to search, navigation, and frequent actions without leaving their workflow.

  • Table layouts use consistent column logic across modules, so sorting and filtering behave the same everywhere.

  • Dialogs, toasts, and confirmations all share one interaction pattern, minimizing cognitive load across the product.

Each of these decisions, and many more, were small in isolation but together made the interface feel stable and familiar.

Design Decisions

A lot of small design choices shaped how JoonaPay feels, but one of the most important was the payment modal.

In the first wireframe iteration, single and batch payments were treated as two separate flows. It seemed logical at first - each had slightly different steps and approval paths. But as we started sketching and reviewing the wireframes, the duplication became obvious. Maintaining two nearly identical flows would complicate both the interface and development.

I simplified the structure to a single, unified modal. A payment would start as a single transaction by default, and become a batch payment automatically when the user added more vendors. This kept the mental modal consistent while reducing friction. The user never had to design between 'single' or 'batch' upfront - the interface adapted naturally to their action.

The change also made approvals and scheduling more consistent. Both now share the same logic, with clear visual hierarchy for payer, payees, and timing. In testing with internal stakeholders, this design felt simpler and faster to use while still handling the same complexity under the hood.

Beyond the modal, other design decisions followed the same principle: reduce choice friction and make the interface feel predictable.

  • The command bar gives users global access to search, navigation, and frequent actions without leaving their workflow.

  • Table layouts use consistent column logic across modules, so sorting and filtering behave the same everywhere.

  • Dialogs, toasts, and confirmations all share one interaction pattern, minimizing cognitive load across the product.

Each of these decisions, and many more, were small in isolation but together made the interface feel stable and familiar.

Unified payment modal for both single and batch payments. The design adjusts automatically as users add additional vendors, keeping one consistent flow.
Consistent table structure shared across modules. Sorting, filtering, and actions all follow the same logic to minimize cognitive load.
Global command bar for search and shortcuts across the platform. Reduces navigation time and keeps common actions accessible from anywhere.
Upload flow for physical checks. The design keeps inputs minimal and adds clear confirmation states to build trust around payment verification.
General settings screen showing how the system handles lower-frequency tasks. The same component patterns keep even these pages consistent and predictable.

Design System Detail: Indicators

Most of the product decisions in JoonaPay were guided by a shared design system. It defined structure, spacing, and component behavior early, which helped to keep the interface consistent as new features were added.

Rather than show every component, the example below highlights how I documented one element - the process indicator. It’s used anywhere the user moves through a multi-step flow, such as onboarding or scheduling payments.

The documentation shows the component’s anatomy, dimensions, and text alignment, along with the states we defined:

Design System Detail: Indicators

Most of the product decisions in JoonaPay were guided by a shared design system. It defined structure, spacing, and component behavior early, which helped to keep the interface consistent as new features were added.

Rather than show every component, the example below highlights how I documented one element - the process indicator. It’s used anywhere the user moves through a multi-step flow, such as onboarding or scheduling payments.

The documentation shows the component’s anatomy, dimensions, and text alignment, along with the states we defined:

Design System Detail: Indicators

Most of the product decisions in JoonaPay were guided by a shared design system. It defined structure, spacing, and component behavior early, which helped to keep the interface consistent as new features were added.

Rather than show every component, the example below highlights how I documented one element - the process indicator. It’s used anywhere the user moves through a multi-step flow, such as onboarding or scheduling payments.

The documentation shows the component’s anatomy, dimensions, and text alignment, along with the states we defined:

Variant: Default
Used for steps that are inactive and not yet reached in the process flow. Displays a muted background with a grey step number to indicate pending status.

Background Color: Tokens/Surface/Primary
Border Color: Tokens/Border/Primary
Height: 20px
Width: 32px
Border Radius: 999px
Border Weight: 1px

Text Color: Tokens/Static/White
Text Height: 16px
Text Width: 16px
Text Align: Center
Text Style: Label/Small

Variant: Active
Represents the user’s current step in the process. The background is blue with a white step number, drawing focus and confirming which step is being completed.

Background Color: Tokens/Brand/Primary
Height: 20px
Width: 32px
Border Radius: 999px

Text Color: Tokens/Static/White
Text Height: 16px
Text Width: 16px
Text Align: Center
Text Style: Label/Small

Variant: Success
Marks a step that has been successfully completed. The indicator turns green with a white checkmark icon.

Background Color: Tokens/Success/Primary
Height: 20px
Width: 32px
Border Radius: 999px

Icon Color: Tokens/Static/White
Icon Align: Center

Variant: Warning
Used when a step requires user attention or correction before proceeding. The indicator turns orange with an exclamation icon to highlight the issue.

Background Color: Tokens/Warning/Primary
Height: 20px
Width: 32px
Border Radius: 999px

Icon Color: Tokens/Static/White
Icon Align: Center

Example of the process indicator in use during onboarding. Each state communicates progress and status clearly without adding visual noise.

Impact

The new design gave the product a clear structure and sense of trust that was missing before.

Early demos helped the founder position JoonaPay more confidently with investors, venture capitalists, and potential customers. The consistent visual language and interaction patterns also made it easier for the engineering team to implement new screens without design drift.

The design system also cut iteration time and made decisions simpler. Developers now use the same components across the various screens which has reduced confusion and improved consistency.

The product hasn't launched publicly yet, but is in the hands of potential customers for trialing purposes.

Impact

The new design gave the product a clear structure and sense of trust that was missing before.

Early demos helped the founder position JoonaPay more confidently with investors, venture capitalists, and potential customers. The consistent visual language and interaction patterns also made it easier for the engineering team to implement new screens without design drift.

The design system also cut iteration time and made decisions simpler. Developers now use the same components across the various screens which has reduced confusion and improved consistency.

The product hasn't launched publicly yet, but is in the hands of potential customers for trialing purposes.

Impact

The new design gave the product a clear structure and sense of trust that was missing before.

Early demos helped the founder position JoonaPay more confidently with investors, venture capitalists, and potential customers. The consistent visual language and interaction patterns also made it easier for the engineering team to implement new screens without design drift.

The design system also cut iteration time and made decisions simpler. Developers now use the same components across the various screens which has reduced confusion and improved consistency.

The product hasn't launched publicly yet, but is in the hands of potential customers for trialing purposes.

Reflection

JoonaPay reinforced how much structure matters when you’re moving quickly. Starting with a design system early gave the rest of the product a clear backbone and kept every decision consistent.

Working with a distributed, bilingual team also taught me the value of clear documentation and visual communication. Translating designs and annotations into French wasn’t just about language - it was about making sure intent was never lost.

Reflection

JoonaPay reinforced how much structure matters when you’re moving quickly. Starting with a design system early gave the rest of the product a clear backbone and kept every decision consistent.

Working with a distributed, bilingual team also taught me the value of clear documentation and visual communication. Translating designs and annotations into French wasn’t just about language - it was about making sure intent was never lost.

Reflection

JoonaPay reinforced how much structure matters when you’re moving quickly. Starting with a design system early gave the rest of the product a clear backbone and kept every decision consistent.

Working with a distributed, bilingual team also taught me the value of clear documentation and visual communication. Translating designs and annotations into French wasn’t just about language - it was about making sure intent was never lost.

© 2023–2026 John Konnakkottu. All rights reserved.