procurement-team is an internal web application built for Tahir P's procurement team. The product intent is stated directly by the requester: build an app for the procurement team to use as its shared working tool for day-to-day purchasing work, with a team lead able to see and keep the team's purchasing activity on track. The app is delivered as a first-party, application-owned product with its own identity and its own custom interface, and it persists durable state so that team members can return to their work.
The audience is the procurement team itself: procurement practitioners who carry out purchasing work, and the procurement team lead who is accountable for the team's activity. The specific purchasing workflows (quotes, purchase orders, supplier terms, and similar) are not yet defined by the requester; this document therefore specifies the accepted product shell — public entry, identity establishment and returning verification, the protected procurement workspace, and the lead's oversight destination — and leaves the detailed purchasing workflows as an open, explicitly acknowledged gap rather than inventing them.
This document is the System Requirements Document for the project named procurement-team.
procurement-team is a single first-party web application with a shared backend and durable storage. It currently delivers:
Actors are the two accepted human personas — Procurement team member and Procurement team lead — plus the application itself as the system actor that owns identity, session continuity, and durable state. Access is application-owned: the Landing and Login pages are anonymously reachable, while the Workspace and Team Overview require an established, verified identity, with Team Overview additionally restricted to the team lead role.
The current delivery horizon covers only the accepted shell and the identity/access lifecycle. Detailed purchasing workflows are not yet specified and are not invented here. No external provider, third-party marketplace, or headless delivery surface is part of the accepted scope.
Removed from scope
The requester asked for an app for their procurement team. That request is a current commitment to a first-party application the team uses as its working tool. Because the team must return to the same work across visits and because the lead's oversight must remain bound to the correct team, the application owns identity and durable state: a visitor can read the Landing page anonymously, establishes an identity through self-service enrollment on the Login page at first use, and verifies that identity on returning visits. Only after verification does the protected Workspace become available; the Team Overview is further restricted to the team lead.
The boundary between current and future is deliberate. Current scope is the public entry, the identity lifecycle, the protected workspace shell, and the lead's oversight destination. The concrete purchasing workflows that the team will perform inside the Workspace — and the specific activity the lead will review in Team Overview — are not yet defined by the requester and are treated as future detail to be specified, not as capabilities to be assumed. Nothing in this document adds supplier management, quote comparison, purchase-order issuance, approval chains, or reporting beyond what the requester stated.
access_requirement: none).access_requirement: none) — a protected destination cannot own the interaction that establishes access to itself, so this anonymous entry is a distinct access boundary.Each requirement is a distinct story point with provenance, lifecycle facts, and observable acceptance.
FR-1 — Build the procurement app for the team (explicit) As Tahir P, I should have an application built for my procurement team to use, so that the team has a shared working tool for its purchasing work.
FR-2 — Anonymous visitor reaches the Landing page (required_inference) As an anonymous visitor, I should reach the Landing page before any identity establishment, so that I can understand what the procurement app is, who it is for, and what it does.
none).FR-3 — Self-service enrollment on first use (required_inference) As a procurement team member, I should complete self-service enrollment on the Login page on first use, so that I have an application-owned identity bound to my role.
FR-4 — Returning identity verification (required_inference) As a procurement team member, I should verify my identity on returning visits, so that I can resume my protected work.
FR-5 — Protected Workspace for members (required_inference) As a procurement team member, I should reach the protected Workspace after verification, so that I can carry out my purchasing work in one shared place.
FR-6 — Lead verifies identity before Team Overview (required_inference) As a procurement team lead, I should verify my identity before reaching the role-restricted Team Overview, so that oversight is bound to the correct accountable person.
FR-7 — Lead keeps team activity on track (required_inference) As a procurement team lead, I should see the team's purchasing activity in Team Overview, so that I can keep it on track.
The creative direction is authoritative for this section.
#F4F1EA#FFFFFF#121212#E03616#8A857Cclamp(56px, 11vw, 128px); h2 32→56; h3 22→28; body 16→17; data numerals 15/18 tabular; micro-label 12.clamp(...); imagery and decoration may bleed, crop, or overlap but never cover readable text or controls.The public entry (Landing) is a split asymmetric composition. The left seven columns sit on warm paper #F4F1EA and carry a Fraunces headline set at clamp(56px, 11vw, 128px), stacked over four lines — "Buy / better. / Prove / it." — with a single vermilion 4px bar under the second line only, a 12px letterspaced label above the headline, and a single solid ink rectangle CTA "Enter workspace" pinned beneath. The right five columns are a full-bleed monochrome macro photograph of stacked cardboard flute running off the top-right and bottom-right edges, cut by a vertical 2px ink rule at the column boundary. There is no centred stack, no blue button, and no gradient — the type and the photograph are the whole hero. The CTA routes the anonymous visitor to Login, which is the only accepted behavior the hero exposes.
Interaction Model: Animated Motion Tempo: restrained Hero Dimensionality: flat
Landing Hero Motion Brief
cubic-bezier(0.16, 1, 0.3, 1) crossfades for route changes; a single staggered word reveal on the landing headline (60ms per word, once); hover on supplier rows swaps a monochrome thumbnail for its colour version. No bounce, no lift, no gradient drift.prefers-reduced-motion yields a fully usable static arrangement.
procurement-team · internal desk
What it is
procurement-team is an internal app for Tahir P’s procurement team — the people who carry out the purchasing work, and the lead who is accountable for it.
It is a shared working tool for the team’s day-to-day purchasing work, with oversight built in so the lead can see the team’s activity and keep it on track.
One place the team returns to for its day-to-day purchasing work, instead of work spread across inboxes and spreadsheets.
The team lead sees the team’s purchasing activity in one view and can keep it on track.
Work is kept in the app between visits, so the team can pick up where it left off.

procurement-team · internal desk
What it is
procurement-team is an internal app for Tahir P’s procurement team — the people who carry out the purchasing work, and the lead who is accountable for it.
It is a shared working tool for the team’s day-to-day purchasing work, with oversight built in so the lead can see the team’s activity and keep it on track.
One place the team returns to for its day-to-day purchasing work, instead of work spread across inboxes and spreadsheets.
The team lead sees the team’s purchasing activity in one view and can keep it on track.
Work is kept in the app between visits, so the team can pick up where it left off.
No comments yet. Be the first!