Project type: Design project at AI-powered Accounts Payable Solutions Company
Project length: ~2 years (including development time)
My role: Lead Product Designer
Collaborators: Product managers, engineering team, customers, design manager
Project length: ~2 years (including development time)
My role: Lead Product Designer
Collaborators: Product managers, engineering team, customers, design manager

Background: Smarter AP from day 1
*Company name has been fictionalized to white-label proprietary solutions.
When I joined Vexa.ai, it was already a leader in AI-driven invoice processing. While most solutions relied on OCR, Vexa.ai used AI to predict values based on invoice documents and past records from the same vendor, proving its value to major accounting firms in the U.S. and Europe.
With this foundation, the next move was expanding into the U.S. enterprise market, where companies process high invoice volumes daily. To meet enterprise needs, the company focused on enhancing its features—starting with purchase order (PO) matching, a key part of the accounts payable (AP) process.
Opportunity: Streamlining PO matching
Before paying an invoice, businesses often check it against a purchase order (PO)—a document that lists what was ordered, the quantity, and the agreed price. PO matching is the process of making sure these details line up. But this task is often slow and tedious, requiring a manual "stare and compare" to catch discrepancies. AI automation offered a major opportunity—intelligently matching invoices to POs while flagging any issues for human review. While AI handled the complexity, our goal was a seamless, efficient, and user-friendly experience within existing workflows.
Impact: Why speed matters
Speeding up PO matching helps businesses process invoices faster, reduce errors, and avoid payment delays. It improves cash flow, unlocks early payment discounts, and prevents bottlenecks as companies scale. Automation saves time, cuts costs, and ensures smoother financial operations.
Existing System: Where we started
Here’s a quick overview of the invoice module. Invoices can be forwarded via email or manually uploaded into the system, where key data is automatically extracted. The document viewer on the right displays the invoice for easy reference. AI confidence scores are visually represented with color-coded lines: red for low confidence, orange for medium confidence, and green for high confidence. AP and invoice processing specialists focus on reviewing and correcting low-confidence data to ensure accuracy.

Who does what: personas in the matching workflow
To design an effective PO matching experience, we needed to understand each persona involved and their goals at each step.
Admins are responsible for setting tolerance thresholds—essentially defining what counts as an acceptable mismatch. This allows the system to approve minor discrepancies and flag the bigger ones for review.
Once POs and invoices come in, our AI checks for discrepancies. If something falls outside the acceptable range, it’s flagged.
Then, invoice processors initiate an approval flow, and approvers are notified.

PO Matching process
PO Matching: A key workflow for invoice processors
At the heart of PO matching is the ability for invoice processors to quickly compare invoice lines to their corresponding purchase order lines. When discrepancies exceed the set tolerance threshold, the processor needs to take a closer look and initiate the approval process for each flagged mismatch.
Integrating this workflow into the existing invoice grid was my first major design challenge. To address it, I introduced a “View PO” toggle that lets users validate AI-predicted invoice data before comparing it to matched PO lines. A light blue shaded column visually separated the PO data from invoice details, and I used intuitive symbols between cells to indicate match status—whether it was an exact match(=), a mismatch(≠), or within tolerance≈.

To provide clarity at a glance, hovering over these symbols reveals additional context about the discrepancy, such as the specific value differences. When a mismatch violates a defined rule, it’s marked in red with a clear “Rule Violated” label. From there, the invoice processor can click “Get Approval” to initiate the review flow. Once started, the button updates to “In Progress,” allowing the user to track or cancel the request.

Symbols between invoice & PO values

Starting the approval process for a PO mismatch
To handle discrepancies, we designed an approval workflow that built on our existing invoice approval engine. This included a new tolerance system, allowing admins to define acceptable mismatches before triggering approvals. You can read more about the approval engine design in my case study: AP Platform Purchase Order Matching Pt.2.

Admin page to define PO mismatch approval flows
Making issues visible at a glance
For this workflow to function smoothly, users needed to spot issues directly in the invoice grid—even before opening invoice details. To solve this, we introduced visual tags next to the status icons:● Green (Successfully matched):
No action required
No action required
● Blue (Approval in progress): Awaiting reviewer input
● Red (PO match issues): Requires the processor to initiate approval

We layered in additional clues elsewhere in the grid. For example, we used red boxes with exclamation marks—already familiar from other parts of the app—to flag invalid or problematic POs (e.g., referencing a closed PO).

To reflect AI-assisted matching, I added a new visual indicator: a double green underline beneath a PO number. This signaled that the AI inferred a likely PO match, even when the invoice itself lacked one.

Challenge: Complexity of PO Matching
As we dug deeper into PO matching workflows, the complexity quickly became clear. Matching can happen at different levels, and our system needed the flexibility to support all PO matching types to meet the needs of future customers.
• 2-way: Compares the invoice quantity to the quantity listed on a purchase order
• 3-way: Compares the invoice quantity to the received quantity
• 4-way: Compares the invoice quantity to the inspected & accepted quantity
While our beta customer initially used 2-way matching, they were planning to change their process to 3-way, which adds another level of scrutiny. A key detail about 3-way match is that the received quantity can change over time as multiple shipments are received.
During interviews with other prospective customers, we also learned about service-based or blanket POs. For example, a vendor might send several invoices against a $10,000 quarterly marketing budget. The AP team needs visibility into how much of that budget has been invoiced to avoid overspending.
Initially, I considered customizing the quantity column titles based on each customer’s setup:
• PO Qty (2-way)
• Received (3-way)
• Accepted (4-way)

But this didn't address the needs around more complex scenarios—particularly when multiple invoices were tied to a single PO. When a vendor sends several invoices for partial quantities of the same item, the PO line needs to be split among them. We don’t want to trigger a “Rule Violated” flag when this behavior is expected. In these cases, the business may still process and pay the invoice, even if it doesn’t cover the full received quantity.
This required a redesign to clearly communicate previously matched items and remaining quantities to the user. The following design changes addressed this:
• Renamed “PO Qty” to “Matched Qty” to support all levels of matching without needing to customize the column title for each customer.
• Invoice quantity must be equal to or less than the matched quantity. If it's greater, it signals the customer is being billed for more than what was accepted.
• Introduced a corner triangle icon to indicate when the matched quantity is not a simple one-to-one match. Hovering over the icon reveals more details about previously invoiced quantities and the remaining amount to be billed.

Documenting real-world scenarios
Through ongoing interviews, I gathered examples of real-world workflows involving delayed shipments, partial receipts, and recurring service invoices. I documented these scenarios and created mockups for each scenario to help the product manager, engineering, and QA team visualize them. These were especially valuable when explaining how our system needed to handle blanket or service POs, which don’t follow a traditional one-to-one match pattern.

Continuous Iterations
The complexity of PO matching didn’t end there. We later encountered cases where multiple invoice lines needed to match a single PO line—or vice versa. I designed flexible grouping patterns that would allow users to manually group lines in these scenarios, with the goal of eventually training our AI to automate this behavior.
We also addressed a simpler but important use case: document-level PO matching. Some prospective customers didn’t need line-level granularity—they just wanted to match one invoice to one PO. We quickly introduced a configuration toggle to support this streamlined workflow, enabling us to close a key sales conversation.
Impact & Outcome

These designs represent just a snapshot of a complex, multi-year project. From the outset, we encountered challenges such as a gradual development ramp-up and limited user research opportunities, as we were working with a single beta customer. To mitigate these risks, I leaned on online research, iterated quickly based on internal feedback, and applied systems thinking to design solutions that could flex across a range of real-world scenarios.
I created interactive Figma prototypes that sales engineers used to pitch the product, gather feedback, and close deals while development was still underway. As we onboarded more customers, we gained deeper insights into blanket PO use cases and varying levels of PO matching—refining the module into a more robust, flexible solution.
As of 2025, a year after the PO Matching module’s release, 9 customers were actively using it—providing valuable feedback that continues to shape ongoing improvements. As an example, we built a different configuration option that accommodates simpler matching requirements. The PO Matching solution played a key role in expanding Vexa.ai’s reach into the enterprise market and remains a core part of the Accounts Payables product.