Erlyc
Erlyc
Toggle sidebar
Log in
Log in
Report this showcase item

Tell us what is wrong — spam, offensive content, stolen work…

Shared artifacts

Supplier assurance and third-party risk application

S

Stormgulf

published 2 weeks ago · 25 views

5.0 (1)

Application where procurement teams onboard vendors, suppliers maintain their profiles and upload certificates, security and compliance reviewers assess cyber, privacy, financial, and operational risks, business owners approve engagements, and administrators manage access and assessment templates

Supplier assurance and third-party risk application — Entities diagram
Project anatomy

Built with google/gemini-3.5-flash

11
Entities
14
DB tables
23
Screens
7
Modules
11
Models
15
Relations
5
Roles
7
Requirements
4
Journeys
0 comments
Log in to like, rate, or join the conversation. Log in
Original prompt

Create a small supplier assurance and third-party risk application where procurement teams onboard vendors, suppliers maintain their profiles and upload certificates, security and compliance reviewers assess cyber, privacy, financial, and operational risks, business owners approve engagements, and administrators manage access and assessment templates. Include approval and remediation workflows, risk scoring, expiring-document and reassessment notifications, role-based dashboards, searchable and filterable registers, audit history, comments, evidence attachments, supplier performance reports, CSV import and export, and a mobile-friendly supplier portal.

Specification

Create a small supplier assurance and third-party risk appli — Specification

Product overview

A comprehensive third-party risk management (TPRM) and supplier assurance platform. The application enables procurement teams to onboard vendors, suppliers to self-manage profiles and compliance certificates via a mobile-friendly portal, and risk reviewers to evaluate cyber, privacy, financial, and operational risks. It supports structured approval workflows for business owners, remediation tracking, automated expiration alerts, and robust audit logging.

Problem statement

Procurement and security teams struggle to manage third-party risk due to fragmented email threads, untracked compliance certificates, and manual risk assessment processes. This leads to unmitigated vendor risks, missed certificate expirations, and lack of auditability in vendor engagement approvals.

Target users & roles

  • Procurement Team Member — Responsible for initiating vendor onboarding, monitoring compliance registers, and reviewing overall supplier performance reports.
  • Supplier Representative — External user responsible for maintaining their company profile, uploading compliance certificates, and responding to remediation plans.
  • Security & Compliance Reviewer — Internal risk specialist who evaluates cyber, privacy, financial, and operational risks, assigns scores, and defines remediation plans.
  • Business Owner — Internal sponsor of a supplier engagement who reviews risk assessments and formally approves or rejects vendor engagements.
  • Administrator — Manages system access, configures risk assessment templates, and monitors system-wide audit logs.

User journeys

Supplier Onboarding and Risk Assessment Lifecycle

  1. Procurement Team Member logs in and triggers an onboarding invitation by entering the Supplier's name and primary contact email.
  2. Supplier Representative receives an email invite, registers on the mobile-friendly portal, completes their profile, and uploads their SOC2 certificate.
  3. Security & Compliance Reviewer is notified, reviews the uploaded SOC2 certificate, fills out the risk assessment template, and assigns scores for cyber and privacy risks.
  4. Business Owner reviews the completed risk assessment score on their dashboard and approves the engagement.
  5. System logs the approval in the Audit Log and sends an automated confirmation to the Procurement Team Member.

Functional requirements

FR-01: Supplier Onboarding and Profile Management

Allows procurement teams to invite new suppliers and enables suppliers to maintain their profile information and upload compliance certificates to ensure a centralized repository of vendor data.

Acceptance criteria:

  • Given a Procurement Team Member is on the Onboarding screen, when they submit a supplier name and valid email address, then an invitation token is generated and an email is sent to the supplier.
  • Given a Supplier Representative accesses the portal via an invitation token, when they complete the profile form and upload a PDF certificate with an expiration date, then the certificate status is saved as 'Pending Review'.

FR-02: Multi-Dimensional Risk Scoring

Enables Security & Compliance Reviewers to evaluate and score suppliers across cyber, privacy, financial, and operational risk dimensions to calculate an overall risk rating.

Acceptance criteria:

  • Given a Security & Compliance Reviewer is assessing a supplier, when they input scores of 80, 70, 90, and 80 for cyber, privacy, financial, and operational risks respectively, then the system calculates and displays the overall risk score as 80.

FR-03: Engagement Approval Workflow

Provides Business Owners with a structured workflow to approve or reject supplier engagements based on completed risk assessments, ensuring accountability.

Acceptance criteria:

  • Given a Business Owner is viewing a pending engagement with a completed risk assessment, when they click 'Approve' and enter an optional approval comment, then the engagement status transitions to 'Approved' and the decision is locked.

FR-04: Remediation Workflow and Collaboration

Allows reviewers to assign remediation plans to suppliers for identified gaps, supporting comments and evidence attachments to track resolution progress.

Acceptance criteria:

  • Given a Security & Compliance Reviewer creates a remediation plan with a due date, when the Supplier Representative uploads a PDF evidence file and adds a comment, then the plan status updates to 'Under Review' and the reviewer is notified.

FR-05: Expiring-Document and Reassessment Notifications

Automatically monitors certificate expiration dates and scheduled reassessment dates, sending proactive notifications to prevent compliance gaps.

Acceptance criteria:

  • Given a certificate with an expiration date exactly 30 days in the future, when the daily notification job runs, then an email alert is dispatched to both the Supplier Representative and the assigned Procurement Team Member.

FR-06: Searchable and Filterable Registers

Provides a centralized, high-performance register of all suppliers, certificates, and assessments with advanced search and filtering capabilities.

Acceptance criteria:

  • Given a Procurement Team Member is on the Supplier Register, when they type a supplier name in the search bar and filter by status 'Active' and risk level 'High', then the list updates in real-time to display only matching records.

FR-07: CSV Import/Export and Performance Reporting

Enables bulk data operations and executive reporting by allowing users to import supplier lists via CSV and export registers and performance reports.

Acceptance criteria:

  • Given an Administrator uploads a valid CSV file containing supplier names and emails, when they click 'Import', then the system creates supplier records for all valid rows and displays a summary of imported and failed records.
  • Given a Procurement Team Member is on the Performance Report screen, when they click 'Export CSV', then a CSV file containing all supplier performance metrics is generated and downloaded.

Screen / page inventory

  • Procurement Dashboard & Register — Central workspace for procurement teams to monitor vendor compliance, search the supplier register, and initiate onboarding.
    • Elements: Onboard Supplier Button (opens modal for name and email), Search and Filter Bar (filters by status, risk score, and certificate status), Supplier Data Table (displays supplier name, overall risk score, active engagements, and certificate status), Export CSV Button (downloads current filtered view)
  • Mobile-Friendly Supplier Portal — Responsive interface for suppliers to manage their profile, upload certificates, and view remediation tasks.
    • Elements: Company Profile Form (fields for address, contact info, and business details), Certificate Upload Widget (drag-and-drop area for PDFs with title and expiry date inputs), Remediation Tasks List (displays open remediation plans, due dates, and status), Collaboration Panel (allows posting comments and uploading evidence files)
  • Risk Assessment Workspace — Dedicated screen for Security & Compliance Reviewers to evaluate risk dimensions and document findings.
    • Elements: Risk Scoring Panel (numeric inputs for Cyber, Privacy, Financial, and Operational risks), Evidence Viewer (side-by-side view of supplier-uploaded certificates), Remediation Plan Creator (form to define remediation tasks, owners, and due dates), Internal Comments Section (for reviewer-only collaboration)
  • Engagement Approval Hub — Interface for Business Owners to review risk assessments and execute engagement decisions.
    • Elements: Engagement Details Card (displays contract value, scope, and associated supplier), Risk Summary Widget (visual breakdown of cyber, privacy, financial, and operational scores), Approval Action Buttons (Approve / Reject with mandatory comment field on rejection), Audit Trail Timeline (shows history of assessments, edits, and comments)

Data model

User

Field Type Notes
id string Primary key, UUID format.
email string Unique, indexed, validated email format.
role string Enum: 'procurement', 'supplier', 'reviewer', 'business_owner', 'admin'.
name string Full name of the user.
is_active boolean Soft-delete flag. ASSUMED: Users are soft-deleted to preserve audit logs.

Supplier

Field Type Notes
id string Primary key, UUID format.
name string Unique legal name of the supplier.
status string Enum: 'invited', 'onboarding', 'active', 'suspended'.
created_at datetime Timestamp of creation.

SupplierUser

Field Type Notes
id string Primary key, UUID format.
user_id foreign_key->User References the User entity.
supplier_id foreign_key->Supplier References the Supplier entity.

Certificate

Field Type Notes
id string Primary key, UUID format.
supplier_id foreign_key->Supplier References the Supplier entity.
title string Name of the certificate (e.g., SOC2 Type II).
file_url string S3 or secure storage URL of the uploaded document.
expiry_date datetime Expiration date of the certificate.
status string Enum: 'pending', 'approved', 'expired', 'rejected'.

Engagement

Field Type Notes
id string Primary key, UUID format.
supplier_id foreign_key->Supplier References the Supplier entity.
business_owner_id foreign_key->User References the User entity (must have role 'business_owner').
title string Name of the engagement/project.
estimated_cost decimal ASSUMED: Cost tracking is required for engagement approvals. Nullable.
currency string ASSUMED: USD default. ISO currency code.
status string Enum: 'pending_assessment', 'pending_approval', 'approved', 'rejected'.

RiskAssessment

Field Type Notes
id string Primary key, UUID format.
supplier_id foreign_key->Supplier References the Supplier entity.
engagement_id foreign_key->Engagement References the Engagement entity. Nullable if general supplier assessment.
reviewer_id foreign_key->User References the User entity (must have role 'reviewer').
cyber_score integer Value from 0 to 100.
privacy_score integer Value from 0 to 100.
financial_score integer Value from 0 to 100.
operational_score integer Value from 0 to 100.
overall_score integer Calculated average of the four dimensions.
status string Enum: 'draft', 'completed'.
version integer ASSUMED: Optimistic locking version field to prevent concurrent overwrite issues.

RemediationPlan

Field Type Notes
id string Primary key, UUID format.
risk_assessment_id foreign_key->RiskAssessment References the RiskAssessment entity.
description string Details of the remediation requirements.
due_date datetime Deadline for the supplier to resolve the issue.
status string Enum: 'open', 'under_review', 'resolved', 'overdue'.

Comment

Field Type Notes
id string Primary key, UUID format.
author_id foreign_key->User References the User entity.
risk_assessment_id foreign_key->RiskAssessment References the RiskAssessment entity. Nullable.
remediation_plan_id foreign_key->RemediationPlan References the RemediationPlan entity. Nullable.
body string Text content of the comment.
created_at datetime Timestamp of creation.

AuditLog

Field Type Notes
id string Primary key, UUID format.
user_id foreign_key->User References the User entity who performed the action.
action string Description of the action (e.g., 'Approved Engagement', 'Uploaded Certificate').
entity_type string The name of the modified entity (e.g., 'Engagement', 'Certificate').
entity_id string The ID of the modified entity.
timestamp datetime Timestamp of the action.

Business rules

  • The overall_score of a RiskAssessment must be calculated as the mathematical average of cyber_score, privacy_score, financial_score, and operational_score, rounded to the nearest integer.
  • An Engagement cannot transition to 'Approved' status if its associated RiskAssessment overall_score is below 50, unless there is at least one active RemediationPlan with status 'resolved' or 'under_review'.
  • A Certificate's status must automatically transition to 'expired' when the system current_date is strictly greater than the certificate's expiry_date.

Permissions

Role Capabilities
Procurement Team Member create:Supplier; read:Supplier; read:RiskAssessment; read:Engagement; import:Supplier; export:Supplier
Supplier Representative read:Supplier; update:Supplier; create:Certificate; read:Certificate; update:RemediationPlan; create:Comment
Security & Compliance Reviewer read:Supplier; create:RiskAssessment; update:RiskAssessment; create:RemediationPlan; update:RemediationPlan; create:Comment
Business Owner read:Supplier; read:RiskAssessment; update:Engagement; create:Comment
Administrator create:User; read:User; update:User; delete:User; read:AuditLog

Integrations

(none)

Non-functional requirements

  • Performance: The Supplier Register search and filter queries must return results in less than 500ms under a concurrent load of 100 users.
  • Security: All uploaded certificates and evidence files must be encrypted at rest using AES-256 and scanned for malware upon upload.
  • Mobile Responsiveness: The Supplier Portal must achieve a minimum score of 90 on Google Lighthouse Mobile Usability audits.

Edge cases

  • A Certificate expires while a Risk Assessment is actively in 'draft' status: The system must flag the assessment with an 'Outdated Evidence' warning banner and block the reviewer from transitioning the assessment to 'completed' until a new certificate is uploaded or an override is authorized.
  • Two reviewers attempt to update the same Risk Assessment concurrently: The system must use the 'version' field to perform optimistic concurrency control, rejecting the second submission with a conflict error and prompting them to refresh.
  • A Supplier Representative user is deleted or deactivated: The system must soft-delete the user record (setting is_active to false) to preserve all historical audit logs, comments, and uploaded certificates associated with that user.

Out of scope

  • Direct integrations with external business registries or credit bureaus (e.g., Dun & Bradstreet) for automated financial scoring.
  • Automated vulnerability scanning or penetration testing of supplier domain names.

Assumptions & open items

Assumed:

  • Users are soft-deleted (using the is_active flag) to preserve historical audit logs and data integrity.
  • Risk scores are numeric values from 0 to 100, where 100 represents the lowest risk (highest assurance) and 0 represents the highest risk.
  • Engagement cost tracking is required to assist Business Owners in evaluating risk-to-value ratios during approval.
  • The system uses optimistic concurrency control via a version field on the RiskAssessment entity to prevent concurrent overwrite issues.
  • Notifications are delivered via email and in-app alerts, using standard SMTP protocols.

Coverage notes

  • Functional requirements: 7 (with acceptance criteria: 7)
  • Open assumptions: 5 (unresolved/conflicted: 0)
  • Entities in data model: 9
  • Screens: 4, Roles: 5, Journeys: 1
Screen map
Sandbox
Entities diagram
Sandbox
DB schema
Sandbox
Data models
Sandbox
Entities & DB (text)

Entity-relationship model for the Supplier Assurance and Third-Party Risk Management (TPRM) platform. This schema manages suppliers, compliance certificates, multi-dimensional risk assessments, remediation plans, and structured engagement approvals, complete with granular role-based access control and comprehensive audit logging.

Entities (11)
User

Represents an internal team member, administrator, or external supplier representative with system access.

  • email string
    unique

    Unique email address used for authentication and notifications.

  • role string

    Primary system role: procurement, supplier, reviewer, business_owner, or admin.

  • name string

    Full name of the user.

  • is_active boolean

    Flag indicating if the user account is active. Deactivated users are soft-deleted to preserve audit history.

UserProfile

Extended profile information for users, supporting personalized dashboards and communication preferences.

  • first_name string

    The user's first name.

  • last_name string

    The user's last name.

  • avatar_url string
    nullable

    URL to the user's profile picture.

  • bio text
    nullable

    Brief biography or department notes.

  • timezone string
    nullable

    Preferred timezone for scheduling and notification alerts.

Role

Defines security roles within the system to enforce granular permission checks.

  • name string
    unique

    Display name of the role.

  • slug string
    unique

    Unique machine-readable identifier for the role.

Permission

Granular capabilities that can be assigned to roles to restrict or grant access to specific actions.

  • name string
    unique

    Display name of the permission.

  • slug string
    unique

    Unique machine-readable identifier for the permission.

Supplier

An external vendor or supplier being onboarded, monitored, and assessed for risk.

  • name string
    unique

    Unique legal name of the supplier.

  • status string

    Current onboarding or operational status: invited, onboarding, active, or suspended.

Certificate

Compliance certificates (e.g., SOC2 Type II, ISO 27001) uploaded by suppliers to prove security posture.

  • title string

    Name or title of the certificate.

  • file_url string

    Secure storage URL of the uploaded PDF certificate.

  • expiry_date datetime

    The date when the certificate expires and requires renewal.

  • status string

    Review status of the certificate: pending, approved, expired, or rejected.

Engagement

A specific project, contract, or business engagement initiated with a supplier.

  • title string

    Name or title of the engagement.

  • estimated_cost decimal
    nullable

    Estimated financial value of the engagement to evaluate risk-to-value ratio.

  • currency string

    ISO currency code for the estimated cost.

  • status string

    Approval workflow status: pending_assessment, pending_approval, approved, or rejected.

RiskAssessment

Multi-dimensional risk evaluation conducted by compliance reviewers for a supplier engagement.

  • cyber_score integer

    Cybersecurity risk score from 0 to 100.

  • privacy_score integer

    Data privacy risk score from 0 to 100.

  • financial_score integer

    Financial stability risk score from 0 to 100.

  • operational_score integer

    Operational resilience risk score from 0 to 100.

  • overall_score integer

    Calculated average score of the four risk dimensions.

  • status string

    Workflow status of the assessment: draft or completed.

  • version integer

    Optimistic locking version to prevent concurrent overwrite conflicts.

RemediationPlan

Actionable tasks assigned to suppliers to resolve identified security or compliance gaps.

  • description text

    Detailed requirements and expectations for remediation.

  • due_date datetime

    Deadline for the supplier to complete the remediation steps.

  • status string

    Current status of the plan: open, under_review, resolved, or overdue.

Comment

Collaborative comments posted by reviewers and supplier representatives on assessments or remediation plans.

  • body text

    The text content of the comment.

AuditLog

Immutable system-wide ledger tracking all critical user actions and workflow transitions.

  • action string

    Description of the action performed (e.g., Approved Engagement).

  • entity_type string

    Polymorphic entity type name of the modified record.

  • entity_id string

    Polymorphic entity ID of the modified record.

  • timestamp datetime

    The exact date and time the action occurred.

Relationships (15)
From Type To Description
User
one-to-one
UserProfile Each user has exactly one extended profile containing personal details and preferences.
User
many-to-many
Role Users can be assigned multiple roles to determine their access privileges.
Role
many-to-many
Permission Roles are composed of multiple granular permissions to enforce access control.
Supplier
many-to-many
User A supplier can have multiple supplier representatives, and a user can represent multiple suppliers.
Supplier
one-to-many
Certificate A supplier uploads and maintains multiple compliance certificates over time.
Supplier
one-to-many
Engagement A supplier can be associated with multiple business engagements or contracts.
User
one-to-many
Engagement An engagement is sponsored and approved by an internal business owner.
Supplier
one-to-many
RiskAssessment A supplier can have multiple risk assessments conducted over their lifecycle.
Engagement
one-to-many
RiskAssessment An engagement has risk assessments performed to evaluate its specific scope and cost.
User
one-to-many
RiskAssessment A risk assessment is conducted and scored by an internal security reviewer.
RiskAssessment
one-to-many
RemediationPlan A risk assessment can trigger multiple remediation plans to address identified gaps.
User
one-to-many
Comment Comments are authored by a specific user (either internal reviewer or external supplier).
RiskAssessment
one-to-many
Comment Comments can be posted directly on a risk assessment for internal collaboration.
RemediationPlan
one-to-many
Comment Comments can be posted on a remediation plan to track progress and discuss evidence.
User
one-to-many
AuditLog Audit logs track the specific user who performed each system action.
Database tables (14)
users
  • id bigInteger
    unique
  • email string
    unique
  • role string
  • name string
  • is_active boolean
  • created_at timestamp
    nullable
  • updated_at timestamp
    nullable
user_profiles
  • id bigInteger
    unique
  • first_name string
  • last_name string
  • avatar_url string
    nullable
  • bio text
    nullable
  • timezone string
    nullable
  • supplier_id bigInteger
    unique
  • created_at timestamp
    nullable
  • updated_at timestamp
    nullable
roles
  • id bigInteger
    unique
  • name string
    unique
  • slug string
    unique
  • created_at timestamp
    nullable
  • updated_at timestamp
    nullable
permissions
  • id bigInteger
    unique
  • name string
    unique
  • slug string
    unique
  • created_at timestamp
    nullable
  • updated_at timestamp
    nullable
suppliers
  • id bigInteger
    unique
  • name string
    unique
  • status string
  • created_at timestamp
    nullable
  • updated_at timestamp
    nullable
certificates
  • id bigInteger
    unique
  • title string
  • file_url string
  • expiry_date datetime
  • status string
  • supplier_id bigInteger
    nullable
  • created_at timestamp
    nullable
  • updated_at timestamp
    nullable
engagements
  • id bigInteger
    unique
  • title string
  • estimated_cost decimal
    nullable
  • currency string
  • status string
  • supplier_id bigInteger
    nullable
  • business_owner_id bigInteger
    nullable
  • created_at timestamp
    nullable
  • updated_at timestamp
    nullable
risk_assessments
  • id bigInteger
    unique
  • cyber_score integer
  • privacy_score integer
  • financial_score integer
  • operational_score integer
  • overall_score integer
  • status string
  • version integer
  • supplier_id bigInteger
    nullable
  • engagement_id bigInteger
    nullable
  • reviewer_id bigInteger
    nullable
  • created_at timestamp
    nullable
  • updated_at timestamp
    nullable
reremediation_plans
  • id bigInteger
    unique
  • description text
  • due_date datetime
  • status string
  • risk_assessment_id bigInteger
    nullable
  • created_at timestamp
    nullable
  • updated_at timestamp
    nullable
comments
  • id bigInteger
    unique
  • body text
  • author_id bigInteger
    nullable
  • risk_assessment_id bigInteger
    nullable
  • remediation_plan_id bigInteger
    nullable
  • created_at timestamp
    nullable
  • updated_at timestamp
    nullable
audit_logs
  • id bigInteger
    unique
  • action string
  • entity_type string
  • entity_id string
  • timestamp datetime
  • user_id bigInteger
    nullable
  • created_at timestamp
    nullable
  • updated_at timestamp
    nullable
role_user
  • id bigInteger
    unique
  • user_id bigInteger
  • role_id bigInteger
  • created_at timestamp
    nullable
  • updated_at timestamp
    nullable
permission_role
  • id bigInteger
    unique
  • role_id bigInteger
  • permission_id bigInteger
  • created_at timestamp
    nullable
  • updated_at timestamp
    nullable
supplier_user
  • id bigInteger
    unique
  • supplier_id bigInteger
  • user_id bigInteger
  • created_at timestamp
    nullable
  • updated_at timestamp
    nullable