A client project. One component. A place to start.

One less component for your team to build.

Your client needs a monthly report they can trust. Your team is delivering the wider workflow. Here is a small piece Rockwood Lab could take off your hands—and a working example you can inspect before deciding.

01 · The project

The dashboard is planned. The numbers still need checking.

Suppose you are building a reporting workflow for a service business. Each month, its team exports orders and support charges. The client wants a summary of activity, with refunds included and different currencies kept separate.

Then July’s export arrives. A $55 order appears twice. Another order appears with two different amounts: $30 and $35. Simply adding the rows would produce a convincing-looking number that you could not stand behind.

The piece that needs doing

Turn the export into checked totals and a short list of questions.

Your client should be able to see what counted, what was left out, and what still needs an answer.

02 · The usual route

Someone on your team takes it on.

An engineer writes a script, or builds a reusable Excel workflow. They agree how to identify duplicates, check the unusual cases, and explain which numbers are safe to pass to the report. Then someone reviews the work and documents it for whoever will maintain the integration.

That is a sensible solution. It also takes implementation and review time from the same people delivering the rest of the project. The question is whether this is a piece you want your team to own from scratch.

03 · Where Rockwood Lab fits

Give us the component. Keep control of the delivery.

We propose taking on the reconciliation step: agree the inputs and rules with you, implement the checks, and hand over the code, tests, and explanation of the output. Your team sets the acceptance criteria and decides how it fits into the client’s workflow.

This sample shows the kind of result you could assess. The repeated $55 order is counted once. Both versions of the disputed order are held for review; the code does not choose which amount the client meant.

July · working sample result · USD

$145.00

Included total, pending review of the conflicting order.

Clear rows counted
2
Duplicate row omitted
1
Conflicting rows held
2

The $90 order plus one $55 order makes $145. Neither the $30 nor the $35 amount is included. The unresolved question remains visible before the result reaches a client report.

Show all records and results · June–August

All 12 synthetic source rows appear below, grouped by reporting month. July is the example highlighted above; June and August show the rest of the same run. Amounts are displayed in currency units; the CSV files store integer minor units.

June 2026

Included: $245.00 USD

3 source rows · 3 counted · 0 omitted as duplicates · 0 held for review. No rows held for review in this sample.

June 2026 · source fields and generated treatment
Source rowOrderDateCategoryStatusAmountCurrencyTreatment
jun-01J-1002026-06-03Servicepaid$120.00USDCounted
jun-02J-1012026-06-05Servicepaid$85.00USDCounted
jun-03J-1022026-06-08Supportpaid$40.00USDCounted

July 2026

Included: $145.00 USD

5 source rows · 2 counted · 1 omitted as duplicates · 2 held for review. Totals exclude held rows and remain provisional.

July 2026 · source fields and generated treatment
Source rowOrderDateCategoryStatusAmountCurrencyTreatment
jul-01J-2002026-07-02Servicepaid$90.00USDCounted
jul-02J-2012026-07-04Servicepaid$55.00USDCounted
jul-03J-2012026-07-04Servicepaid$55.00USDDuplicate omitted
jul-04J-2022026-07-06Supportpaid$30.00USDHeld: conflicting order
jul-05J-2022026-07-06Supportpaid$35.00USDHeld: conflicting order

August 2026

Included: €70.00 EUR · $100.00 USD

4 source rows · 3 counted · 0 omitted as duplicates · 1 held for review. Totals exclude held rows and remain provisional.

August 2026 · source fields and generated treatment
Source rowOrderDateCategoryStatusAmountCurrencyTreatment
aug-01J-3002026-08-02Servicepaid$110.00USDCounted
aug-02J-3012026-08-04Servicepaid€70.00EURCounted
aug-03J-302not-a-dateSupportpaid$25.00USDHeld: invalid date
aug-04J-3032026-08-08Supportrefunded-$10.00USDCounted

In July, J-201 matches on date, category, status, currency, and amount. J-202 differs in amount, so both rows are held. In August, J-302 has an invalid date and is held; the −$10 refund on J-303 is included. Every source row remains in the result with its treatment.

Inspect the rules, checks, and integration scope

Inputs and output. The example reads three CSV files with 12 synthetic rows. Fields include reporting period, row and order IDs, date, category, status, currency, and amount in integer minor units. The JSON result contains period totals by currency and a treatment for every row.

Rules. Invalid dates are held first. Remaining rows are grouped by order ID across all three periods. Matching date, category, status, currency, and amount means one row is counted and repeats are omitted. Nonmatching rows in a group are held as a conflict. Row IDs and reporting periods are not part of the matching signature. A real assignment would agree the appropriate key and scope for its source.

Checks you can reproduce. Three comparison tests check expected period results, row coverage and currency separation, and byte-for-byte regeneration of the result. June totals $245 USD. August totals $100 USD and €70 EUR separately, includes a −$10 refund, and holds a row with an invalid date.

Where this example stops. It demonstrates the stated rules on these files. It does not include a live connector, general input validation, or an operating client service. Integration, deployment, and support would be scoped with you. No customer time savings have been measured.

Download the complete example

All three inputs, the generated result, and the code package belong to the same run. The ZIP includes these inputs and result, the Python generator, expected results, tests, and instructions.

What we would take on

Implementation, checks, and handoff.

The agreed component, representative test cases, and documentation your team can review and work with.

What stays with you

The client relationship and acceptance.

You choose the assignment and approve the result. Questions about the client’s data stay visible for the appropriate person to resolve.

04 · Try the working relationship

Start with one small paid component.

Choose a reporting or data-integration task from a project you are delivering. We would agree a representative sample, expected results, scope, price, and handoff before work begins.

You would have a concrete deliverable to judge: does it pass the agreed checks, can your team understand it, and does it save them enough effort to be worth the fee? That gives you a practical basis for deciding whether to work with us again.

Have a component in mind?Reply with a brief description and the result your team needs. We can work through the scope before any client data is shared.