Ask anyone outside the finance team how they buy something at work and you get the same story. They needed a laptop, a subscription, a contractor. Their manager pointed them at a form, a Slack channel, or a spreadsheet. They filled something in, waited, chased, and eventually either got what they needed or put it on a personal card and expensed it. Procurement is the least loved surface in the company.
We have spent the last months in discovery calls with finance teams, and it is the same picture every time. At one global consumer marketplace, procurement runs on spreadsheets, incoming bills carry no PO number, and AP fixes the accounting on every invoice by hand. Another company has a sophisticated policy of 8 spend categories, each with its own rules about who may buy what, and it lives in a PDF and an Excel sheet the buying process cannot see. A third takes requests over Slack or face to face, with no visibility until the invoice lands. These are well-run finance teams that were failed by their tooling.
We build procurement at Light from a fact the category has spent 20 years resisting: the request form is an artefact of the past. Procurement's product was never the form. The product is a decision: should the company spend this money. Every company already owns the document that answers it, the purchasing policy. That policy has lived in a PDF nobody reads while the decisions were made in approval queues by people re-deriving it from memory. The procurement agent closes the gap. It reads the policy, and it acts on it. Once a system does that, the form is revealed for what it always was: a workaround for software that could not read.
A purchase request is intent, not paperwork
Strip procurement to its skeleton and there are only 2 objects. There is intent: someone wants the company to spend money on something. And there is execution: the mechanism that spends it, a purchase order sent to a vendor or a card issued for the subscription.
Procurement tools conflate the two, which is why they feel bureaucratic. If your "request" is already a draft purchase order, the requester is doing procurement's job: picking the vendor of record, knowing the entity, guessing the GL account. If your request is a message to a Slack channel, finance is doing the requester's job: reconstructing what was wanted from a thread.
Keeping intent as its own object buys you 3 things. All requested spend lives in one view regardless of how it gets executed, so a company finally sees committed-but-not-yet-invoiced money. Budgets get checked at the only moment they are enforceable: before commitment. And routing stays open: the same request executes as a PO or a card, decided by policy rather than by which form the requester happened to find.
