Novycom
Book a call

Selected work

Six systems, running in production today.

Details anonymised where clients asked. Every figure below comes from the client's own reporting, measured against the baseline we recorded during the scoping week — not from our estimates.

Long aisle between tall warehouse racks stacked with cartons, receding to a vanishing point

None of these started as an AI project.

Each began as a person opening three systems in three tabs and reconciling them by eye, several hundred times a week. The model came last, and in one case below it never came at all.

MarketplaceAgents

Order exception desk, six markets

Address mismatches, split shipments and stock-outs across five marketplaces all landed in one shared inbox worked by three people. The agent now classifies each case, pulls order and inventory state, resolves what it can and routes the rest with full context attached.

4,100 cases/mo · 78% resolved unattended

Supply chainRetrieval

Supplier replies, answered from contract

Procurement kept answering the same questions on MOQs, lead times and payment terms from PDFs nobody could locate. Replies are now drafted from the signed terms with the clause cited, and a human approves before send.

Reply time 2 days → 40 min

CatalogueMultilingual

Catalogue enrichment, four languages

18,000 SKUs with inconsistent attributes and thin descriptions were blocking listings in new markets. Attributes were normalised against the client's own taxonomy; copy was written per market rather than machine-translated from English.

18k SKUs · 9 weeks · 3 markets live

LogisticsDocuments

Freight document intake for a 3PL

Bills of lading, packing lists and customs forms arrived as scans in eleven formats. Extraction now populates the TMS directly, with anything below the confidence threshold queued for a clerk instead of guessed at.

2,800 docs/mo · 4.1% to manual review

Customer careMultilingual

First-line support in five languages

Order status, delivery windows and returns eligibility were 62% of ticket volume. Those are now answered from live order data in the customer's own language, with anything touching refunds routed straight to a person.

First response 6h → 90s

Finance opsReconciliation

Marketplace payout reconciliation

Settlement reports from six platforms, each with its own fee structure, were reconciled by hand across two spreadsheets every month. Matching now runs nightly and only genuine discrepancies reach the finance team.

3 days/month → 2 hours

What they have in common

Narrow scope, measured bar, human escape hatch.

None of these were "AI transformation" projects. Each replaced one specific, high-volume, rule-heavy task that a person was doing dozens of times a day.

PATTERN 01

High volume, low variance

Tasks done hundreds of times a week with recognisable shapes. Rare edge cases stay with people, and that's the design, not a shortcoming.

PATTERN 02

A verifiable right answer

Every one of these has a ground truth we could build a test set from — historical cases where a senior person's decision was recorded.

PATTERN 03

Cheap, reversible failure

A wrong draft reply costs a review. A wrong refund costs money. We automated the first kind and routed the second to people.

In detail

Three of those, taken apart.

Summaries hide the interesting parts. These three include the timeline, the stack, the thing that nearly derailed it, and what we would do differently.

A depot wall of stacked parcels awaiting sorting
Case 01

Order exception desk, six markets

Before. Three people worked a shared inbox from 9am, and the queue was never empty by 6pm. Every case meant opening the marketplace back office, the WMS and the courier portal in separate tabs and reconciling three versions of the truth by eye.

What we built. An agent that classifies each incoming case into one of nine shapes, pulls order, inventory and shipment state through existing APIs, and either executes the resolution or routes it with all three states already assembled on one screen.

What nearly broke it. The WMS returned stale stock for up to ninety seconds after a write. In shadow mode the agent confidently told twelve customers an item was available that had just been picked. We added a read-after-write delay and a stock re-check immediately before any promise to a customer — a fix in the integration layer, not the model.

Would do differently. We scoped six markets at once. Three would have been better: the two smallest markets contributed 4% of volume and about a third of the edge cases.

11 weeks · 4,100 cases/mo · 78% unattended · 3 people redeployed, none let go

Rows of packaged parts on shelves, shallow depth of field
Case 02

Catalogue enrichment, four languages

Before. 18,000 SKUs, attributes entered by six people over four years, and descriptions that were often one line copied from a supplier PDF. Three market launches were blocked on listing quality, and the manual estimate to fix it was fourteen months.

What we built. Attribute normalisation against the client's own taxonomy — not a generic one — plus per-market copy written to each marketplace's rules, and a review queue where a merchandiser approves in batches of fifty.

What nearly broke it. The first pass wrote fluent English copy and translated it. The Indonesian team rejected 40% of it as technically correct and commercially dead. We rebuilt the pipeline to generate per market from the attributes directly, with a native reviewer in the loop for the first thousand SKUs of each language.

Would do differently. Involve the market teams in week one rather than week five. The rejection was avoidable and it cost us a fortnight we did not bill for.

9 weeks · 18k SKUs · 3 markets live · rejection rate 40% → 6%

A single lit desk and monitor in a dark office at night
Case 03

Marketplace payout reconciliation

Before. Six platforms, six settlement formats, two spreadsheets and three days of one finance person's month. Discrepancies were found late or not at all, and one platform's fee change went unnoticed for two billing cycles.

What we built. A nightly matching run across orders, fees, refunds and payouts, with unmatched residue isolated into a queue rather than absorbed into a total. Fee-structure changes now surface as an alert on the first settlement that does not reconcile.

What nearly broke it. Very little, and that is the point — most of this is deterministic matching, not AI. The model does one narrow job: reading the free-text adjustment lines that four of the six platforms use. We said so in the scoping week and the build was priced accordingly.

Would do differently. Nothing significant. This is the shape of project that works: bounded, verifiable, and honest about which part actually needs a model.

5 weeks · 3 days/month → 2 hours · one fee change caught in month two

A dim office interior after hours
Case 04

The one we stopped

The ask. A distributor wanted an agent to decide which backorders to prioritise when stock arrived short — a judgement made daily by two senior people balancing customer relationship, margin and contractual penalty.

What we found. In the scoping week we gave the same fifty historical cases to both decision-makers independently. They agreed 61% of the time. There was no ground truth to build an evaluation set from, because the organisation did not have a shared policy — it had two people with different instincts.

What we did. Stopped, and said why. We spent the remaining two days of the scoping week facilitating a session that produced a one-page prioritisation policy. No build followed, and the fixed scoping fee was the entire engagement.

Why it is on this page. They came back eleven months later with a different process, and that one shipped. We would rather show this than pretend our hit rate is 100%.

1 week · no build · policy document delivered · client returned

Measurement

How these numbers were produced.

Every figure on this page came from the client's own systems, not ours. Here is the method, so you can judge whether it is a fair comparison.

How we measure itWhat it excludes
Baseline Timed across one full week before any build, by the team doing the work, on real items Estimates, recollections, and any week chosen because it was busy
Unattended rate Cases closed with no human touching the record, over a trailing 30 days Cases a human opened and approved — those count as attended
Time saved Baseline minutes per item × items handled unattended Review time on escalations, which is subtracted, not ignored
Accuracy Random sample of at least 500 items, split by error type, re-drawn quarterly The evaluation set the system was tuned on
Cost per task Inference, retries, retrieval, evaluation, infrastructure and human review time Nothing — the build fee is reported separately and amortised openly

Client names are withheld under NDA on this page. On a call we can usually arrange a direct reference conversation with an operator in a comparable business — that is worth considerably more than a logo.

Failures

What has gone wrong, and what it changed.

Four incidents from live deployments. Each one is now a permanent regression test, which is the only reason it is safe to write them down.

01

Stale stock reads

Shadow mode · caught before customers

A WMS returned pre-write values for up to ninety seconds. The agent promised availability on items already picked. Fix: read-after-write delay plus a re-check immediately before any customer-facing promise. Now a standing check on every integration we build.

02

A policy changed and nobody told the index

Live · nine days before detection

A returns window went from 30 to 14 days in a PDF that was updated in place. The retrieval index still served the old clause. Fix: content hashing on every source document with an alert on change, and policy documents carry an effective-date filter. Nine days was far too long.

03

A retry loop with no ceiling

Live · one bad upstream day

An upstream API degraded, retries stacked, and a day's inference cost was roughly eleven times normal. No wrong answers, just a bill. Fix: hard retry ceilings, per-day spend alerts, and circuit-breaking on sustained upstream failure.

04

Confidence that meant nothing

Pilot · found during calibration

A model's self-reported confidence was almost flat between 0.6 and 0.95, so the escalation threshold was doing nothing. Fix: calibration is now a required step before any threshold is set, and the calibration curve goes in the handover pack.

Your turn

Which of your processes looks like these?

If a task in your business is high volume, has a checkable right answer, and fails cheaply — it's probably a candidate. Bring it to the call and we'll tell you either way.

  • Median time to production across these: 4 weeks
  • Every one shipped with a written accuracy bar
  • All six still running, none rolled back
  • Source and IP transferred to the client in every case