AGENCY
ZGRZ Agency

Financial dashboard for consolidating PayPal and American Express payments

An internal system that imports transactions from PayPal and AMEX, brings them into one unified model, categorizes them automatically through rules, and produces clear analytics with PDF and Excel export. A smart assistance layer suggests categories and proposes rules for recurring operations — but the final call always stays with the user.

 

Internal System
Dashboard
MVP development
B2B
FinTech
API Integrations
Payment Integration
Directus CMS
Analytics & Reporting
Internal Operations

About the Project

A web application for financial control across multiple payment sources, designed to turn them into one source of truth. The user uploads an export file (CSV or JSON), the system normalizes the fields, removes duplicates, categorizes the transactions through rules, and surfaces analytics by period. From any chart, the user can drill down into the exact rows behind a number and generate a report for the team or for accounting — in PDF or Excel, with the selected filters baked in.

 

About Customer

Adis Pezerovic is Co-Founder at Femitale and CEO and Managing Director at ADHOUSE. He works with high-ticket brands, consults companies and agencies as a one-to-one marketing mentor, and runs finances through several payment systems. He needed a fast way to see the real picture of costs, income, and margins across periods — without manually stitching exports together, and without the usual situations where PayPal and AMEX totals don't agree because of different formats, fees, refunds, or transaction descriptions. What he wanted was an internal platform that wouldn't crack as new rules and sources were added on top.

 

Different PayPal and AMEX formats 

 

The sources expose transactions with different field names, status values, and ways of representing fees, refunds, and currency conversion. The project needed one canonical model and a mapping layer that would make the data genuinely comparable.

 

Deduplication and control 

 

In finance, duplicate rows destroy trust in the system. Re-importing the same file couldn't create duplicates or shift totals.

 

Categorization 

 

The client needed rules that could cover most recurring transactions, support exceptions and priorities, and stay stable across the small variations in description text and merchant naming that are normal at this volume.

 

Trust in analytics 

 

Dashboards had to be calculated from the same underlying model as the transaction table and the reports. Otherwise the numbers would diverge and the system would lose its point.

 

Periods and drill-down 

 

The analytics had to let the user move from any chart directly to the transactions behind the number and trace where the data actually came from.

 

AI assistance without fiction 

 

AI had to help with unclear transactions and suggest new rules — but it couldn't change categories on its own or invent logic.

 

Proposed Solution

We built consolidation and categorization as a managed financial layer: data from different sources is normalized into one model, rules cover most of the routine work, and AI only helps with the unknown transactions through explicit user confirmation.

 

Managed back office in Directus 

 

We modeled the collections for transactions, sources, imports, categories, rules, exceptions, and logs. Permissions were separated so changes to categories and rules stay controlled, and the audit trail shows who changed what and when.

 

Import as a pipeline 

 

We implemented the import process so every upload has its own log: rows read, rows rejected, transactions imported, duplicates skipped. Deduplication was built around composite keys and content hashes so repeated uploads would never distort the math.

 

Rule engine for categorization 

 

We designed a rules system on top of merchant, description, transaction type, source, currency, amount range, and status. Priorities let specific rules override general ones, and exceptions handle the edge cases — refunds, fees, the non-standard items.

 

AI assistant in advisor mode 

 

We used AI only for suggestions: propose a category when rules don't match, explain the likely pattern from the merchant or description, and let the user approve or reject the recommendation. When the user confirms a series of similar transactions, the system proposes a reusable rule so the next batch handles itself.

 

Dashboards with drill-down 

 

We built charts for income and expense, category structure, trends, and breakdowns by source and status — with drill-down from every metric into the exact transactions behind it.

 

PDF and Excel export 

 

We prepared report templates that are generated with the selected filters and periods baked in, so the user doesn't have to compile a report by hand. The system also preserves the context of generation so the same output can be reproduced later.

 

We started by breaking down real PayPal and AMEX files into fields and edge cases. Fees, refund patterns, partial refunds, different statuses, merchant formats, currencies — all of it on the table. With the client, we agreed which fields were critical for analytics and which had to remain as raw attributes, so the team could always trace any result back to the original source row.

 

PostgreSQL
Directus CMS
Papa Parse
stream-json

+2 Resource

Results

After launch, the client got one system where finances from multiple payment sources come together into a single, understandable picture — no more manual reconciliation in Excel.

 

Zero duplicate rows

on repeated imports

93% of transactions

categorized fully automatically

3 minutes

to process a large import

20 minutes

to prepare a monthly report

35 minutes

saved per 1,000 transactions, thanks to the AI assistance

One source of truth

for analytics and export

1–2 hours

to add a new import format through mapping

Get in Touch

Or send us a message and we'll get back to you within 15 minutes during business hours

Enter your name

Enter your email

Enter your message

Andrii Trubai

Andrii Trubai

CEO | Head of WebDev department

More Success Stories