There was no way to see what was inside a contract from the contract list — not the line items, not the PR / PO / Invoice records tied to it. You opened contracts one by one, or downloaded the PO offline. So I brought both up to the list, coding it myself on infrastructure the team already had: a line-item preview built on the bulk-acceptance pipeline — shipped in a weekend — and a context-aware financials popup that repurposes the contract's own finance page.
The contract list page showed contracts, not their contents. Two kinds of detail lived one click deep, or offline:
I didn't need new backends. Both times, the data and the view already existed somewhere else in the platform:
So the work wasn't building financial infrastructure or a line-item service. It was putting the right, stateful, permission-aware views on top of things the team had already shipped.
The hard parts — assembling line items across contracts, and computing a contract's financial records — were already solved. What remained was the front-facing, stateful layer. Small enough to build in a weekend, real enough to matter.
I built the preview in Angular, using ag-Grid for the line-item table, on top of the existing acceptance endpoint. Two things made it more than a table:
The moment line items include pricing, "show the line items" becomes "show the right line items to the right person." Gating financial fields by access wasn't a UI nicety — it was the difference between a safe feature and a data leak.
For the financial records, I repurposed the contract's own finance page — its PO, PR, and Invoice listings — to open as a popup right on the contract list, so the IDs we'd been showing as dead text finally led somewhere.
The part I'm proudest of is how it behaves once open. It doesn't block the page. While the popup is open, you can keep scrolling the contracts behind it and page through the POs, PRs, and Invoices across all of them — without closing and reopening it for each contract. It turns a per-contract detail view into a way to scan financial records across the whole list.
The PR / PO / Invoice IDs were already on the list — they just didn't do anything. The win wasn't inventing a view; it was making what we already displayed clickable, and then better than the page it came from.
The line-item preview was the first pull request I opened at ScopeWorker — a PM shipping into the production codebase, not writing a ticket for someone else to build. Reusing the acceptance pipeline and repurposing the finance page meant there was no new backend to design, review, or maintain; the work was the front-facing views and the access logic around them, which is why real features fit inside a weekend.