NeoCompás
← All cases

Automation & AI

Document reconciliation for purchasing and subcontracted production

A system to reconcile purchases, material deliveries and supplier and contractor invoices, connecting scattered information and making costs and discrepancies easier to control.

Project type
Client project
Client
Industrial manufacturer of fibreglass components

Context

An industrial company makes fibreglass components by RTM (resin transfer moulding) and subcontracts part of its production.

The company buys raw materials directly from its suppliers and then hands them to the contractors who turn them into finished products. Most materials are bought as production requests come in, but some have to be bought in advance and held in stock because of long import lead times.

This model means managing purchase orders, goods receipts, inventory, deliveries to contractors and the invoices of two different parties: raw-material suppliers and production contractors. Because the company pays suppliers for the materials directly, it has to check that contractors apply the matching deductions on their invoices.

The problem

The information needed to control these operations was spread across separate documents and spreadsheets. The warehouse lead used Excel to manage purchase orders, delivery notes and material deliveries, while accounting kept other records to work out the deductions that contractor invoices should show.

With that information disconnected, management had no clear, up-to-date view of the materials requested, bought and delivered against what was later invoiced.

When the project started, three people spent part of their working day every week checking that purchase orders, delivery notes and invoices matched, that deliveries of finished products were correctly recorded, and that the materials supplied were properly deducted from contractor invoices. Reconciling by hand took time, multiplied the records that had to be kept up to date, and made it hard to spot differences and trace where they came from.

Our role

Analysis of the purchasing, inventory, material-delivery and contractor-invoicing processes; identification of the reconciliation points; definition of the checking rules; modelling of the operational data; and development of an application that links documents, centralises records and makes discrepancies easier to review.

The solution

We built a document reconciliation and intelligence application that connects the records of purchasing, receiving, material deliveries and invoicing.

Supplier invoices and delivery notes are uploaded to the application, which extracts their information for a person to review and confirm. When two documents for the same purchase arrive, the application compares their lines and flags the differences that need review. Confirmed purchases set the cost of each material.

On the subcontracting side, material requests and signed delivery notes are recorded. From those deliveries and the purchase cost, the application works out the expected deduction for each material and checks it against the deductions on the contractor’s invoice, with the reason and the evidence for each difference.

Every check is recorded, together with the document behind it and any later correction, so operations stay traceable.

Flow

01Supplier order
02Receipt & invoice
03Material records
04Delivery to contractor
05Invoice & deductions
06Reconciliation & review

Architecture

  • →Web application in Django on PostgreSQL
  • →Structured records of suppliers, materials, purchases, requests and deliveries to contractors
  • →Text extraction and local OCR: documents are never sent to external services
  • →Contractor e-invoices read from their XML
  • →Original documents kept as evidence of every operation
  • →Material cost taken from goods received, first in, first out (FIFO)
  • →Expected deductions worked out and compared with what each contractor invoices
  • →Human review, recorded differences and traceable adjustments
  • →Asynchronous document processing with Celery

Working on something similar?

Tell us what you want to improve.

Let's talk →