### 1.
Introduction
#### 1.1 Purpose
SoulPort is a decentralized protocol on Base (Ethereum L2) that enables users to own, verify, and
monetize their professional reputation portably. It addresses centralized platform lock-in (LinkedIn,
Upwork) by creating immutable on-chain records of skills, reviews, credentials, and work history via
Soulbound Tokens (SBTs) and Ethereum Attestation Service (EAS).
The system targets freelancers, students, and creators, providing:
- Portable "living resume" via on-chain badges.
- Trustless freelance transactions (escrow + arbitration).
- Sybil-resistant reputation scoring.
This SRS defines requirements for an MVP suitable for Base Batches 003 Student Track submission (by
April 27, 2026).
#### 1.2 Scope
**In Scope (MVP)**:
- User onboarding with Coinbase Smart Wallet.
- On-chain attestations/reviews via EAS.
- SBT minting for credentials/reviews.
- Basic reputation scoring.
- Decentralized escrow for jobs (USDC).
- Dispute resolution stub (Kleros integration plan).
- Web2 credential import: Education/certificates (Reclaim/ZK-Email) + manual LinkedIn/Upwork upload
(parse JSON/screenshots for self-attestation).
- Visual resume UI showing badges + scores.
- Hybrid storage (on-chain proofs + IPFS/Ceramic off-chain details).
**Out of Scope (Post-MVP/Phased)**:
- Full automated LinkedIn profile import (limited by platform restrictions; selective proofs possible later).
- Full Upwork review/history automation (manual/self-attest only).
- Advanced AI curation or paid boosts.
- Mobile app (web-first).
#### 1.3 Definitions, Acronyms, Abbreviations
- SBT: Soulbound Token (non-transferable NFT for identity/credentials).
- EAS: Ethereum Attestation Service.
- ZKP: Zero-Knowledge Proof.
- Reclaim: Protocol for HTTP session-based ZK proofs from Web2 sites.
- Kleros: Decentralized arbitration.
- Base: Coinbase's OP Stack L2.
#### 1.4 References
- Base Docs: [Link]
- EAS Docs: [Link]
- Reclaim Docs: [Link] (supports employment/education; 2500+ providers,
strong on universities/payroll).
- Kleros Docs: [Link]
- Vitalik's DeSoc paper (2022).
#### 1.5 Overview
SRS organized as: Functional Requirements → Non-Functional → Project Structure →
Assumptions/Constraints → Risks.
### 2. Overall Description
#### 2.1 Product Perspective
SoulPort builds on Base's low-cost ecosystem to create a "Soulbound Economy" layer. It differentiates
from Talent Protocol (dev-focused quantitative) and Nomis (wallet scoring) by emphasizing **qualitative
peer feedback** + full freelance tooling.
#### 2.2 Product Functions
High-level user stories:
- As a freelancer/student, I can import education creds → mint on-chain badge.
- As a client, I can post job → escrow funds → attest review upon completion.
- As a user, I can view my portable on-chain resume.
- As either party, I can initiate dispute if needed.
#### 2.3 User Classes & Characteristics
- Freelancers/Students: Undergrads, creators; need easy onboarding, visual profiles.
- Clients: Businesses/DeFi projects; need trust signals (reputation scores).
- All: Web3 users with wallets; assume basic crypto familiarity.
#### 2.4 Operating Environment
- Blockchain: Base Mainnet/Sepolia.
- Frontend: Browser (desktop/mobile responsive).
- Wallets: Coinbase Smart Wallet primary.
- Backend: Minimal ([Link] for off-chain indexing if needed).
#### 2.5 Design & Implementation Constraints
- Solidity ^0.8.20 + Foundry for contracts.
- React + Wagmi/Viem for frontend.
- EAS schemas registered on Base.
- Gas optimization mandatory (uint8 fields, etc.).
### 3. Functional Requirements
#### 3.1 User Onboarding & Wallet
- FR1.1: User connects via Coinbase Smart Wallet (passkey support).
- FR1.2: Generate/view wallet-linked profile (ENS or address-based).
#### 3.2 Credential Import & Verification (Cold Start)
- FR2.1: Import education/course completion via Reclaim Protocol (e.g., university portal,
Coursera/Udemy if supported; prove enrollment/certificate).
- FR2.2: Import email-based creds (degree/cert) via ZK-Email (prove DKIM-signed email content).
- FR2.3: Manual LinkedIn/Upwork import: Upload archive/JSON/screenshots → self-attest basic info
(experience, skills) → issue self-signed EAS attestation (flagged as self-attested).
- FR2.4: On successful proof, mint SBT badge with metadata (issuer, timestamp, URI).
#### 3.3 Reputation & Attestations
- FR3.1: Define EAS schema: Professional Review (recipient: address, skillCategory: uint8, rating: uint8,
projectURI: string, timestamp: uint64).
- FR3.2: Client issues attestation after job (on-chain or off-chain + Merkle root).
- FR3.3: Mint SBT for significant creds (e.g., high-rating review, hackathon win).
- FR3.4: Compute reputation score on-chain/off-chain: Weighted sum S_u = Σ(R_i × W_client,i) + Σ(C_j ×
W_course,j) (W based on issuer reputation/humanity check).
#### 3.4 Freelance Workflow
- FR4.1: Post job (description, skill req, payment in USDC).
- FR4.2: Accept job → lock funds in escrow contract.
- FR4.3: On completion: Client confirms → release funds + issue attestation/SBT.
- FR4.4: Dispute flow: Initiate Kleros arbitration (stub for MVP: log dispute; full integration post-MVP).
#### 3.5 UI & Viewing
- FR5.1: Visual resume dashboard: Grid of badges (click → show EAS proof/Basescan link).
- FR5.2: Search/browse users by skill/reputation score.
### 4. Non-Functional Requirements
#### 4.1 Performance
- NFR1: Attestation issuance < 10 seconds (Base tx speed).
- NFR2: Page load < 3 seconds; resume render < 2 seconds.
- NFR3: Gas per attestation/review < 100k (optimize data types).
#### 4.2 Security
- NFR4: Non-transferable SBTs (override transfer functions).
- NFR5: Use audited libs (OpenZeppelin).
- NFR6: ZK proofs ensure no credential exposure.
- NFR7: Sybil resistance: Weight reviews by issuer reputation; optional Coinbase Verified check.
#### 4.3 Usability
- NFR8: Intuitive UI (professional LinkedIn-like design).
- NFR9: Mobile-responsive.
- NFR10: No seed phrase exposure (passkey onboarding).
#### 4.4 Reliability & Availability
- NFR11: On-chain data immutable (Base finality).
- NFR12: Off-chain storage (IPFS/Ceramic) with on-chain anchors.
#### 4.5 Maintainability
- NFR13: Open-source contracts + frontend (MIT license).
- NFR14: Modular code (separate contracts for escrow, SBT, scoring).
#### 4.6 Scalability
- NFR15: Support 1,000+ attestations/month (Base throughput).
### 5. Project Structure (Recommended Repo Layout)
```
soulport/
├── contracts/ # Foundry project
│ ├── src/
│ │ ├── [Link] # Non-transferable ERC721
│ │ ├── [Link] # Scoring logic
│ │ ├── [Link] # USDC escrow
│ │ └── schemas/ # EAS schema definitions/scripts
│ ├── test/ # Foundry tests
│ ├── script/ # Deployment scripts
│ └── [Link]
├── frontend/ # React + Vite
│ ├── src/
│ │ ├── components/ # Badge, ResumeGrid, JobCard, etc.
│ │ ├── pages/ # Profile, Jobs, Import, Dashboard
│ │ ├── hooks/ # useAttest, useReclaim, useWallet
│ │ ├── services/ # EAS SDK, Reclaim SDK calls
│ │ └── [Link]
│ ├── public/
│ └── [Link]
├── backend/ # Optional Node/Express (off-chain helpers)
│ ├── src/
│ │ └── [Link] # API for IPFS pinning, attestation indexing
│ └── [Link]
├── docs/ # SRS, pitch deck, diagrams
├── [Link]
├── .gitignore
└── [Link] # Optional for local dev
```
- Use monorepo (Turborepo/Pnpm workspaces) if team grows.
- Deploy contracts via Foundry script to Base Sepolia → verify on Basescan.
### 6. Assumptions & Dependencies
- User has Base-compatible wallet + USDC.
- Reclaim supports target education providers (universities strong; Coursera/Udemy partial).
- LinkedIn/Upwork: Manual import only for MVP.
- Kleros: Full integration requires PNK staking; MVP uses event emission for disputes.
### 7. Risks & Mitigations
- Risk: Reclaim limitations on LinkedIn/Upwork → Mitigation: Prioritize education + manual; demo as
phased feature.
- Risk: Gas costs spike → Mitigation: Optimize + test on Sepolia.
- Risk: Security bugs → Mitigation: Foundry fuzz + Slither; plan post-grant audit.