EagleAISupplier OS

For the person who chases purchase orders

The purchase order after it was placed.

Placing the order is the easy part and every system does it. What nobody holds is the rest: the date the supplier promised, the second date they promised instead, the half that arrived, the piece that went back for rework, and the eleven lines that need chasing this morning. That normally lives in a mailbox and a spreadsheet. This is a workspace for it.

Seven days free · no card · nothing is switched off at the end of it

Before you trust us with anything

Read your own export, on your own machine.

Asking a stranger to upload their purchase orders is asking for a great deal on the first meeting. So there is a version that never asks: one HTML file that opens your PO export and separates it into the lines already past the date in the file, the lines with no date or no remaining quantity recorded at all, and the ones whose evidence contradicts itself and need a person to look. Ten rows of the blank template come back as six past date, one to review.

It will not tell you what the date in your file means. That is the one thing it makes you say — required-by, requested, promised, expected, promised-ship — because a buyer's need date and a supplier's promise are different claims about the world, and a tool that quietly treats them as one number is how a report ends up blaming a supplier for a date they never gave.

It runs entirely inside the browser tab. Nothing is uploaded, there is no account, and it makes no network request at all — you can save the page, disconnect the machine from the network, and open it again from the file. That is not a promise about our servers; it is a property you can check with the developer tools open.

If the list it gives you is short, you do not need us, and you will have found that out in two minutes without talking to anybody. If it is long, that list is the thing this workspace is for.

One file · no account · no upload · works offline

What it does

One thread per line, from the order to the receipt.

A purchase-order line is not an event, it is a story that runs for weeks. Everything below is attached to the line it belongs to, so the answer to "where is this?" is one place and not four people.

Commitments and the dates that moved

The date originally asked for, the date the supplier committed to, and every revision after it — kept as history rather than overwritten. A slipped date is visible because the earlier one is still there.

An exception queue

Lines that are late, short, contradicted or unacknowledged, gathered into one list with the evidence that put them there. The queue is the work; the rest of the product exists to keep it short and honest.

Split schedules, reviewed

When a supplier offers 200 now and 300 in March, that becomes a proposal somebody accepts or rejects, versioned, with the receipts measured against the baseline it was agreed on.

Receipts, holds and returns

Exact-line receipts with held, accepted and returned quantities; corrections that preserve the original rather than erase it; and rework sent back to the exact source it came from.

Supplier email, read into evidence

Paste or import what the supplier sent. Structured extraction pulls out the dates and quantities and files them against the line — and sends anything ambiguous, duplicated or contradictory to the exception queue instead of guessing.

Sourcing before the order

RFQ scope, recorded quotes and withdrawals, an exact-quantity comparison in cents, and one linked draft order from the quote that won — with the commercial evidence kept immutable.

Bring your own data on the first day. A CSV of purchase-order lines imports atomically — strict dates and identities, formula-safe exports back out. If your export is not to hand, the product ships a script that pulls several thousand real purchase-order lines from a public city procurement portal, so you can see it loaded rather than empty.

What it does not do

The list every vendor owes you and almost none publish.

You are going to find these out in week two. It is cheaper for both of us if you find them out now, before you have moved any work into it.

  • It does not send email. The outbox prepares a message and an owner approves it; the adapter that would actually hand it to a mail server is not connected. What you approve, you still send yourself.
  • It does not write back to your ERP. Applying a date here changes this workspace. It is not an ERP update, not a delivery, and not a quality release. One ERPNext action exists and has only ever been exercised against a controlled test stub, not a live installation.
  • It is not a full ERP or MES. No multilevel BOM explosion, no finite-capacity planning, no lots or serials, no cycle counts, no general ledger. Costing gives a known labour and issued-material subtotal with its exclusions named — not job cost, not profit, not inventory valuation.
  • It is built for a small desk, not a floor. A workspace is a single row with an optimistic revision, so simultaneous writers are refused rather than merged. Measured at twelve concurrent writers, thirty-one of thirty-seven writes were honestly refused. One to about three people working a queue is the shape this fits.
  • Nobody has paid for it yet. No customer pilot, no case study, no savings figure. Anyone who quotes you a percentage improvement is quoting a hypothesis.

That last one is the honest reason the trial is free and the reason there is no card field. You are not being sold a proven return. You are being asked whether a thing that exists is worth your Tuesday morning.

Measured, not estimated

Numbers you can hold us to.

Taken on a workspace of twenty-five thousand imported purchase-order lines, on 18 September 2026. Where an earlier figure was worse, the earlier figure is still published in the repository rather than deleted.

Read a 25,000-line workspace
1,106–1,560 ms — down from 6.6 seconds, because lines, cases and history moved out of the stored document into their own tables.
One small write
1,622–1,835 ms. A write no longer rewrites the records; the stored document is 0.09 MB.
Health endpoint under load
20 ms, from 15,178 ms. The embedded database no longer shares a thread with the server.
Import throughput
Two thousand lines in under four seconds, from an ordinary CSV, atomically — it lands whole or not at all.
Concurrent writers
refused, not merged — 31 of 37 writes at twelve simultaneous writers. This is the ceiling, and it is a design shape rather than a number waiting to be tuned.
Automated tests
788 run on every change, including the ones that assert the refusals above happen.

A measurement establishes what it measured. None of these say the product is useful to you — they say it does not fall over at a size you might actually reach, and they say what happens when it does reach its edge.

The trial

Seven days, and then nothing happens.

You create a workspace with an email address and a password. It is yours; nobody else's records are in it and yours are not in theirs. The seven days are recorded and shown to you.

At the end of them, nothing is switched off. Your workspace keeps opening, your purchase-order history keeps loading, and your export keeps working. Locking somebody out of their own records to force a decision is a threat rather than a product, so the code that would do it was never written. If it is not worth paying for, we would rather you simply stopped using it than had it taken hostage.

Export whatever you put in, whenever you like, in the format you imported it. Leaving should cost you one click, and it does.

manishkumar@eagleai.online · a person reads this, not a queue

Where your records sit

Hosted here, or installed on your own machine.

The hosted trial

Runs on Microsoft Azure. Your workspace is separate from every other one, a copy of the database is written daily to storage that is not the disk it runs on, and the connection is TLS. It is a trial on a small instance, so treat it as a trial: it is not yet sized for a department.

The local installation

The same application runs on one PC on your own network, with a persistent local PostgreSQL directory, its own backup and restore commands, and a lease that stops two copies opening the same data. Selected context still reaches Azure for the model calls — local storage is not the same claim as nothing ever leaving the machine, and we will not make the stronger one.