Page 1 of 23
System Requirements Document for cv-graduate-roles
1. Introduction
cv-graduate-roles is a lightweight web application that helps a Graduate Job Seeker identify graduate roles that match their CV and stated job criteria.
The application is intended for a graduate seeking roles that:
- Are based in London.
- Are still open for applications.
- Start in 2027, preferably before May.
- Definitely offer visa sponsorship.
- Match the candidate’s CV profile.
- Include direct links to the external application pages.
The product is intentionally limited to a simple, quick-to-build matching experience rather than a larger recruitment platform or production-scale job-search ecosystem.
Page 2 of 23
2. System Overview
The system provides a short, public journey from CV submission through role filtering to a list of relevant graduate-role matches.
The Graduate Job Seeker:
- Opens the application.
- Supplies a CV.
- Confirms or adjusts the required job criteria.
- Receives a list of relevant roles.
- Opens direct external application links for roles they wish to pursue.
Current delivery is a first-party custom web interface with four public application pages:
- Landing
- CV Upload
- Role Filters
- Matches
The system does not require an account, sign-in, saved profile, recruiter workspace, employer portal, application tracking workflow, messaging system, or automated application submission.
Page 3 of 23
2a. Product Interpretation and Delivery Boundary
cv-graduate-roles is a public, no-account role-matching tool. It accepts a CV as matching input and presents graduate-role opportunities that satisfy the user’s required London, 2027-start, visa-sponsorship, and open-application criteria.
The application owns the CV-input, filter-selection, and result-list experiences. External employers, recruitment systems, and job boards own the application process reached through each role’s direct application link.
The current product scope is limited to identifying and listing suitable open roles with direct links. It does not submit applications, guarantee employer decisions, maintain a job-seeker account, or create a broader recruitment-management platform.
2b. Page Content and Component Coverage
Page 8 of 23
3. Functional Requirements
FR-1 — Start the role-matching journey
As a Graduate Job Seeker, I should be able to open a public landing page that explains the CV-to-graduate-role matcher so that I can understand what it does before supplying my CV.
- Provenance:
required_inference
- Access state: Public; no account or sign-in is required.
- Trigger/input: The Graduate Job Seeker opens the application.
- Observable result: The Landing page explains that the tool matches a CV against graduate roles and returns direct application links for suitable roles.
- Acceptance criteria:
- The page states that matching is based on a CV.
- The page communicates the London, open-application, 2027-start, and visa-sponsorship criteria.
- The page provides a clear action to begin the journey.
- Beginning the journey takes the user to CV Upload.
- Failure and recovery: If prior journey data is unavailable, the user can start a new matching journey from Landing.
- Continuation: The Graduate Job Seeker proceeds to CV Upload.
Page 9 of 23
FR-2 — Provide a CV for matching
As a Graduate Job Seeker, I should be able to provide my CV as input so that the system can match me with relevant graduate roles.
- Provenance:
explicit
- Access state: Public; no account or sign-in is required.
- Trigger/input: The Graduate Job Seeker uploads or otherwise provides their CV.
- Observable result: The system accepts valid CV input and makes it available for the role-matching journey.
- Acceptance criteria:
- The application provides a CV input mechanism on CV Upload.
- The application confirms when valid CV input has been accepted.
- The user can replace or remove the supplied CV before matching.
- The user can continue to Role Filters only after valid CV input is available.
- Failure and recovery: If the CV cannot be accepted or processed, the system explains that the input could not be used and allows the user to provide another CV.
- Continuation: The Graduate Job Seeker proceeds to Role Filters after valid CV input is accepted.
Page 10 of 23
FR-3 — Apply mandatory graduate-role criteria
As a Graduate Job Seeker, I should be able to use London, open-application, 2027-start, and confirmed visa-sponsorship criteria when matching roles so that the results satisfy my stated job requirements.
- Provenance:
explicit
- Access state: Public; no account or sign-in is required.
- Trigger/input: The Graduate Job Seeker reviews or confirms filters on Role Filters.
- Observable result: The system prepares matching roles using the supplied CV and required role criteria.
- Acceptance criteria:
- Matching is constrained to roles based in London.
- Matching is constrained to roles that are still open to apply.
- Matching is constrained to roles starting in 2027.
- Roles starting before May 2027 are treated as preferred.
- Matching is constrained to roles with confirmed visa sponsorship.
- The active criteria are visible before results are generated.
- Failure and recovery: If matching cannot be completed, the system allows the user to retry or return to CV Upload.
- Continuation: The Graduate Job Seeker proceeds to Matches when role matching completes.
Page 11 of 23
FR-4 — Match the CV against graduate roles
As a Graduate Job Seeker, I should receive graduate-role matches relevant to my supplied CV so that I can identify opportunities suited to my profile.
- Provenance:
explicit
- Access state: Public; no account or sign-in is required.
- Trigger/input: The Graduate Job Seeker confirms filters after providing a CV.
- Observable result: The system produces a role list based on CV relevance and the required criteria.
- Acceptance criteria:
- Each returned result is a graduate role or graduate scheme.
- Each returned role is evaluated against the user’s supplied CV.
- Results meet the London, open-application, 2027-start, and visa-sponsorship requirements.
- Roles with starts before May 2027 are prioritised where qualifying roles are available.
- The application presents a meaningful empty state when no qualifying roles are available.
- Failure and recovery: If role data or match generation is unavailable, the system presents an error state and allows retry or filter/CV revision.
- Continuation: The Graduate Job Seeker reviews returned roles on Matches.
Page 12 of 23
FR-5 — Show only roles that are still open to apply
As a Graduate Job Seeker, I should only be shown roles that are still open for applications so that I do not spend time pursuing closed opportunities.
- Provenance:
explicit
- Access state: Public; no account or sign-in is required.
- Trigger/input: The system prepares the match list.
- Observable result: Listed roles are represented as open for application at the time their role information is verified.
- Acceptance criteria:
- A role must not be included unless its application status has been verified as open.
- The Matches page identifies listed roles as open to apply.
- If open status cannot be confirmed for a role, that role is excluded from the results.
- Failure and recovery: If current open status cannot be confirmed for available role data, the application must not present an unverified role as open; the user may retry later or revise filters.
- Continuation: The Graduate Job Seeker can open the direct application link for a qualifying role.
Page 13 of 23
FR-6 — Show only roles with confirmed visa sponsorship
As a Graduate Job Seeker, I should only be shown roles that definitely offer visa sponsorship so that I can focus on opportunities that meet my visa requirement.
- Provenance:
explicit
- Access state: Public; no account or sign-in is required.
- Trigger/input: The system prepares the match list.
- Observable result: Listed roles have confirmed visa-sponsorship availability.
- Acceptance criteria:
- A role must not be included unless visa sponsorship has been confirmed.
- The Matches page identifies sponsorship as confirmed for each listed role.
- A role with unknown, ambiguous, or unconfirmed sponsorship status is excluded from results.
- Failure and recovery: If sponsorship cannot be confirmed, the role is not shown as an eligible match. The user can retry matching or review other available results.
- Continuation: The Graduate Job Seeker may review the role and follow its application link.
Page 14 of 23
FR-7 — Provide direct application links
As a Graduate Job Seeker, I should receive direct links for matching roles so that I can apply through the appropriate external application destination.
- Provenance:
explicit
- Access state: Public; no account or sign-in is required.
- Trigger/input: The Graduate Job Seeker selects a role’s application link on Matches.
- Observable result: The application directs the user to the role’s external employer, recruiter, or job-board application page.
- Acceptance criteria:
- Every displayed matching role includes a direct application link.
- The application link is visibly associated with its corresponding role.
- Selecting the link opens the relevant external application destination.
- The application does not claim to submit the user’s application itself.
- Failure and recovery: If an application link cannot be opened, the user remains able to review other results, retry the link, return to filters, or start again.
- Continuation: The external provider owns the subsequent application process.
Page 15 of 23
FR-8 — Maintain a simple and quick product scope
As a Graduate Job Seeker, I should be able to complete the core matching journey without unnecessary product complexity so that I can quickly reach relevant application links.
- Provenance:
explicit
- Access state: Public; no account or sign-in is required.
- Trigger/input: The Graduate Job Seeker uses the application.
- Observable result: The application provides a focused CV-to-role matching flow without unrelated recruitment-platform features.
- Acceptance criteria:
- The application is limited to CV input, role criteria, matching results, and direct application links.
- The current experience does not require account creation or sign-in.
- The current experience does not include application submission, candidate messaging, employer administration, saved job lists, or job-application tracking.
- The user can move directly from Landing to CV Upload, Role Filters, and Matches.
- Failure and recovery: The user can restart the public journey without account recovery or profile restoration.
- Continuation: The user can repeat the matching process with a revised CV or criteria.
4. User Personas
Page 16 of 23
Graduate Job Seeker
- Provenance:
required_inference
- Product context: The Graduate Job Seeker is the CV owner seeking relevant graduate roles in London.
- Primary goal: Find graduate roles that are still open, begin in 2027 with a preference for starts before May, definitely sponsor a visa, and are relevant to their CV.
- Distinct responsibilities:
- Provide a CV as matching input.
- Confirm the required London, open-application, start-date, and visa-sponsorship criteria.
- Review the resulting shortlist of relevant graduate roles.
- Choose whether to follow a direct external application link.
- Relevant inputs and decisions:
- CV content.
- Whether the supplied CV is the correct version for matching.
- Whether to continue with the required criteria.
- Which matching role to investigate or apply to.
- Interaction with other participants:
- The application processes the supplied CV and role criteria to prepare matches.
- External employer, recruiter, or job-board destinations receive the user only after the user chooses a direct application link.
- Observable success: The Graduate Job Seeker receives a list of suitable, open London graduate roles with confirmed visa sponsorship and direct links to apply.
- Role distinction: This persona is not managing vacancies or applications for others. Their role is to supply personal CV input, assess role relevance, and independently continue to an external application destination.
5. Core User Flows
Page 17 of 23
Flow 1 — Begin a CV-to-role matching journey
- The Graduate Job Seeker opens Landing.
- The application explains that it matches a CV against graduate roles and returns direct application links.
- The Graduate Job Seeker reviews the stated criteria: London, open applications, 2027 starts with a preference before May, and confirmed visa sponsorship.
- The Graduate Job Seeker selects the start action.
- The application opens CV Upload.
- If previous public-session data is unavailable, the application presents a clean new journey rather than requiring account recovery.
Flow 2 — Provide a CV and prepare matching criteria
- The Graduate Job Seeker arrives at CV Upload from Landing.
- The Graduate Job Seeker uploads or provides their CV.
- The application validates and processes the supplied CV input.
- The application confirms successful CV acceptance.
- The Graduate Job Seeker continues to Role Filters.
- The application displays the matching requirements:
- London location.
- Still open to apply.
- 2027 start date.
- Preference for start dates before May 2027.
- Confirmed visa sponsorship.
- The Graduate Job Seeker reviews the criteria and confirms generation of matches.
- The application prepares CV-relevant graduate-role results.
- If the CV cannot be processed, the application explains the issue and the Graduate Job Seeker can replace the CV and try again.
- If matching cannot be generated, the Graduate Job Seeker can retry or return to CV Upload.
Page 18 of 23
Flow 3 — Review matching graduate roles
- The Graduate Job Seeker arrives at Matches after confirming role filters.
- The application displays graduate roles matched to the CV and required criteria.
- For each displayed role, the application presents the available role information needed to assess relevance, including London location, application status, start-date context, visa-sponsorship confirmation, and a direct application link.
- The Graduate Job Seeker reviews the list.
- The Graduate Job Seeker may return to Role Filters to regenerate matches or return to CV Upload to provide a different CV.
- If no role meets every required criterion, the application presents a no-match state rather than listing unsuitable or unverified roles.
- If role data cannot be retrieved or processed, the application presents an error state and allows the Graduate Job Seeker to retry or revise the prior inputs.
Flow 4 — Continue to an external application destination
- The Graduate Job Seeker reviews a qualifying role on Matches.
- The Graduate Job Seeker selects that role’s direct application link.
- The application opens the corresponding external employer, recruiter, or job-board application destination.
- The external destination owns the application process, including any application forms, employer questions, sign-in requirements, or submission outcome.
- The Graduate Job Seeker may return to Matches to review another role or restart the matching journey.
6. Visuals Colors and Theme
No user-specified visual direction, brand system, palette, fonts, or imagery source was provided.
Visual Direction
[Default — not specified by user] The application should feel focused, calm, practical, and lightweight. It should avoid the appearance of a large enterprise recruitment suite and should support quick scanning of role information.
Page 19 of 23
Colour Tokens
[Default — not specified by user]
- Canvas:
#F7F5F0 — warm off-white page background.
- Surface:
#FFFFFF — cards, panels, and form surfaces.
- Primary ink:
#1E2A24 — deep forest-charcoal for headings and body text.
- Secondary ink:
#59645D — muted text and supporting information.
- Primary action:
#2F6B4F — calm green for primary actions and active states.
- Primary action hover:
#24533D.
- Accent:
#D18B42 — warm amber for role highlights and start-date emphasis.
- Success:
#2F7A52 — confirmed and eligible status.
- Warning:
#9B6A18 — preference or qualification caveats.
- Error:
#B5473E — validation and retrieval errors.
- Border:
#D9DED8.
- Focus ring:
#2F6B4F.
Typography
[Default — not specified by user]
- Headings:
"DM Sans", Arial, sans-serif.
- Body:
"Inter", Arial, sans-serif.
- Display heading scale: 40px desktop / 32px compact.
- Page heading scale: 30px desktop / 26px compact.
- Section heading scale: 22px.
- Body copy: 16px with 1.5 line height.
- Supporting metadata: 14px with 1.4 line height.
Page 20 of 23
Layout and Shape Language
[Default — not specified by user]
- Single-column journey layout with a readable central content width.
- Results use stacked role cards or rows optimised for scanning rather than dense data tables.
- Border radius: 12px for cards and panels; 8px for compact inputs and buttons.
- Spacing rhythm: 8px base unit, using 16px, 24px, 32px, and 48px increments.
- Clear visual separation between required criteria, CV state, result status, and external application actions.
- Generous whitespace to preserve the lightweight, quick-use character.
Imagery Style
[Default — not specified by user]
- Use abstract, editorial career-search imagery only where it supports comprehension.
- Prefer subtle document, path, shortlist, and opportunity motifs over stock-office photography.
- Do not use imagery that implies an employer relationship, guaranteed hiring outcome, visa approval, or application submission.
Page 21 of 23
7. Signature Design Concept
The Opportunity Path
The Landing page uses a simple visual path that connects three accepted journey elements:
- A CV document marker.
- A compact filter marker for London, 2027, and visa sponsorship.
- A shortlist marker leading to direct application links.
The concept visually communicates the existing product journey—CV input to filtered graduate-role matches—without adding a new feature or destination. The path should remain static, lightweight, and readable, with the primary “Start matching” action positioned beside or beneath it.
8. Interaction Model & Motion Direction
Interaction Model: Static
Motion Tempo: still
Hero Dimensionality: flat
Page 22 of 23
Landing Hero Motion Brief
No creative direction was supplied. A still interaction model is appropriate because the requested product should be simple, easy, and quick to use rather than visually elaborate.
- Focal subject: The CV-to-role journey represented by a CV document, criteria markers, and role cards.
- Input → transformation → outcome thesis: A supplied CV is evaluated against London, open-application, 2027-start, and visa-sponsorship requirements, producing a shortlist of direct application opportunities.
- Motion vocabulary: No continuous motion. Interface state changes may use brief, accessible transitions only when necessary to communicate loading, success, error, or page progression.
- Composed first frame: A clear headline, concise criteria summary, static opportunity-path graphic, and one primary start action.
- Reduced-motion state: Identical to the default static presentation. Loading and state changes remain understandable through text, colour, and status indicators rather than animation.
9. Non-Functional Requirements
NFR-1 — Lightweight delivery
- Provenance:
explicit
- The solution must remain simple, easy, and quick to build.
- The system must avoid unnecessary production-scale modules and infrastructure.
- The implementation must focus on the accepted CV input, filters, role matching, results, and direct links.
NFR-2 — Public access
- Provenance:
required_inference
- Landing, CV Upload, Role Filters, and Matches must be available without account creation or sign-in.
- The system must not require user-profile persistence to complete the current matching journey.
Page 23 of 23
NFR-3 — Role-status integrity
- Provenance:
explicit for open-role and confirmed-sponsorship constraints; required_inference for verification handling.
- The application must not present a role as open to apply unless its open status is confirmed.
- The application must not present a role as visa-sponsoring unless sponsorship is confirmed.
- Roles with unavailable, ambiguous, or unverified status for either requirement must be excluded from qualifying matches.
NFR-4 — Clear recovery states
- Provenance:
required_inference
No comments yet. Be the first!