Invoice Sync was inspired by a familiar small-business headache:

Invoices live in Google Drive, payments live in PayPal, and figuring out which invoices have been paid means manually comparing records. I wanted to connect those pieces and make reconciliation easier for freelancers and small teams.

I built the project with TypeScript, Node.js, Express, and PostgreSQL, integrating Google Drive and PayPal’s sandbox APIs. A vision-language AI model extracts structured information from invoice PDFs and images, including invoice numbers, vendors, amounts, currencies, and dates. The matching engine compares those details with completed payments, confirms clear matches, and flags uncertain cases for review. Users can inspect the original invoice alongside payment candidates, confirm or correct assignments, and schedule recurring scans with email updates.

I learned that reading an invoice and proving it was paid are two distinct problems. AI helps turn varied document layouts into usable data, but reconciliation requires careful rules around payment status, currency, identifiers, and ambiguity. Showing the evidence behind each suggested match - and preserving manual decisions - became central to the experience.

The biggest challenges were handling inconsistent invoice formats, imperfect AI responses, and payments that looked similar without belonging to the same invoice. PayPal sandbox reporting delays also complicated testing because newly completed payments could take time to appear in transaction searches. I addressed these challenges with structured extraction, response validation and retries, cached payment records, and conservative matching rules. Partial payments, conflicting details, and competing matches go to review, giving users control where the available evidence is insufficient.

Built With

Share this project:

Updates

Submission history