Profile & Settings PRD for Marketplace Features
Date: March 2026 Author: Product Team Status: Draft Version: 1.0 Related: Marketplace Strategy Analysis v2Executive Summary
This PRD defines the Profile and Settings features required to support Avala’s data marketplace. Based on comprehensive analysis of the existing codebase, ~60% of the foundation exists but critical marketplace-specific features are missing.Key Gaps Identified
| Category | Current State | Gap |
|---|---|---|
| Creator Profiles | Basic user profile | No earnings, analytics, portfolio, verification |
| Payment Integration | Coworker payouts only | No Stripe Connect, no marketplace transactions |
| Reputation System | None | No ratings, reviews, or quality scores |
| Analytics Dashboard | None | No creator metrics, downloads, revenue tracking |
| Notification Preferences | Placeholder | No granular controls or delivery preferences |
| API Key Management | Basic CRUD | No scopes, rate limits, usage tracking |
Implementation Scope
- Backend: 12 new models, 8 new API endpoint groups
- Frontend: 6 new pages, 15+ new components
- Estimated Effort: 8-12 weeks (2 senior engineers)
Part 1: Current State Analysis
1.1 Existing Profile Infrastructure
Backend Models (Django)
| Model | Location | Purpose | Marketplace Ready? |
|---|---|---|---|
User | account/models.py | Core user with type, bio, picture | Partial |
CoworkerProfile | account/models.py | Annotator details, payout method, hourly rate | Partial |
CustomerProfile | account/models.py | Buyer company info, industry, urgency | Partial |
CoworkerPayout | account/models.py | Historical payout records | Yes |
Score | account/models.py | Per-task performance scores | No (task-scoped) |
UserCredit | account/models.py | Credit balance system | Partial |
ApiKey | apikey/models.py | API authentication | Partial |
Frontend Pages (Flutter)
| Page | Route | Status |
|---|---|---|
| Profile Overview | /@{username} | Implemented |
| Profile Settings | /@{username}/settings | Placeholder only |
| Coworker Payouts | /@{username}/payouts | Implemented (staff-only) |
| Coworker Wallet | /@{username}/wallet | Implemented (staff-only) |
| Personal Settings | /settings | Partial (account, security, storage) |
1.2 Existing Organization Infrastructure
Backend Models
| Model | Location | Purpose |
|---|---|---|
Organization | organization/models.py | Org with plan, visibility, verification |
OrganizationMembership | organization/models.py | User-org relationship with roles |
OrganizationInvitation | organization/models.py | Invite flow with token |
Team | organization/models.py | Sub-teams within org |
TeamMembership | organization/models.py | Team member roles |
OrganizationBilling | organization/models.py | Stripe customer/subscription IDs |
OrganizationAllowedDomain | organization/models.py | Email domain auto-enrollment |
Frontend Pages
| Page | Route | Status |
|---|---|---|
| Org Overview | /{slug} | Implemented |
| Org Settings | /{slug}/settings | Implemented (account, members, invites) |
| Org Teams | /{slug}/teams | Implemented |
| Org Members | /{slug}/members | Implemented |
URL Design: Uses GitHub-style root-level slugs. Both organizations and users share the/{slug}/...namespace. Reserved system routes (/settings,/admin,/api,/search, etc.) are protected.
Part 2: Gap Analysis by Feature Area
2.1 Creator Profile Features
Required for: Marketplace sellers to showcase their work and build trustWhat’s Missing
| Feature | Backend Gap | Frontend Gap | Priority |
|---|---|---|---|
| Creator verification status | No is_verified_creator field | No badge UI | P0 |
| Creator display name | Uses username only | No separate display field | P1 |
| Portfolio/showcase | No relation to featured datasets | No showcase section | P1 |
| Social links | No fields | No UI | P2 |
| Response time metrics | No tracking | No display | P2 |
| Creator tier/level | No tier system | No visual indicator | P1 |
Required Models
2.2 Payment Integration (Stripe Connect)
Required for: Creators to receive earnings from dataset salesWhat’s Missing
| Feature | Backend Gap | Frontend Gap | Priority |
|---|---|---|---|
| Stripe Connect account | No stripe_connect_account_id | No onboarding flow | P0 |
| Payout settings | No payout schedule config | No settings UI | P0 |
| Bank account management | No model | No UI | P0 |
| Tax information | No fields | No W-9/tax form UI | P0 |
| Earnings balance | No available_balance field | No balance display | P0 |
| Transaction history | No marketplace transaction model | No transaction list | P0 |
Required Models
2.3 Reputation & Rating System
Required for: Building trust and quality signals in the marketplaceWhat’s Missing
| Feature | Backend Gap | Frontend Gap | Priority |
|---|---|---|---|
| Dataset ratings | No model | No star rating UI | P0 |
| Dataset reviews | No model | No review display/form | P0 |
| Creator reputation score | No aggregation | No score display | P1 |
| Quality badges | No badge system | No badge components | P1 |
| Review moderation | No model | No moderation UI | P2 |
Required Models
2.4 Creator Analytics Dashboard
Required for: Creators to understand their performance and optimizeWhat’s Missing
| Feature | Backend Gap | Frontend Gap | Priority |
|---|---|---|---|
| Revenue analytics | No aggregation queries | No charts | P0 |
| Download tracking | No download event model | No download stats | P0 |
| View/engagement metrics | No view tracking | No engagement display | P1 |
| Top performers | No ranking queries | No top datasets list | P1 |
| Time-series data | No time-bucketed storage | No trend charts | P1 |
| Export analytics | No export endpoint | No export button | P2 |
Required Models
Required API Endpoints
2.5 Notification Preferences
Required for: Users to control how they receive updatesWhat’s Missing
| Feature | Backend Gap | Frontend Gap | Priority |
|---|---|---|---|
| Email preferences | No model | No toggles | P1 |
| In-app preferences | No model | No toggles | P1 |
| Notification categories | No categorization | No category UI | P1 |
| Digest settings | No digest config | No digest options | P2 |
| Quiet hours | No quiet hours model | No time picker | P3 |
Required Models
2.6 Enhanced API Key Management
Required for: SDK users to manage access with granular permissionsWhat’s Missing
| Feature | Backend Gap | Frontend Gap | Priority |
|---|---|---|---|
| Key scopes | Field exists but unused | No scope selector | P1 |
| Rate limit display | No tracking | No rate limit UI | P2 |
| Usage statistics | No tracking | No usage charts | P2 |
| Key expiration | Field exists | No expiration picker | P2 |
| IP whitelisting | No field | No IP input | P3 |
Required Model Updates
2.7 Privacy & Visibility Settings
Required for: Users to control their public presenceWhat’s Missing
| Feature | Backend Gap | Frontend Gap | Priority |
|---|---|---|---|
| Profile visibility toggle | Field exists | No toggle | P1 |
| Default dataset visibility | No field | No selector | P1 |
| Hide statistics | No field | No toggle | P2 |
| Hide reviews | No field | No toggle | P2 |
| Block users | No model | No block UI | P3 |
Required Model Updates
Part 3: Frontend Requirements
3.1 New Pages Required
| Page | Route | Components | Priority |
|---|---|---|---|
| Creator Analytics | /{username}/analytics | Charts, stats cards, date picker | P0 |
| Payment Settings | /settings/payment | Stripe Connect button, bank form, tax form | P0 |
| Privacy Settings | /settings/privacy | Toggle groups, visibility selectors | P1 |
| Notification Settings | /settings/notifications | Category toggles, digest options | P1 |
| Purchase History | /{username}/purchases | Transaction list, filters | P1 |
| Reviews Written | /{username}/reviews | Review cards, edit/delete | P2 |
3.2 New Components Required
| Component | Location | Purpose |
|---|---|---|
CreatorBadge | lib/common/widgets/ | Display verification/achievement badges |
ReputationScore | lib/common/widgets/ | Star rating display with count |
StatsCard | lib/common/widgets/ | Analytics metric card (value, trend, label) |
AnalyticsChart | lib/common/widgets/ | Time-series line/bar chart |
StripeConnectButton | lib/settings/ | Stripe Connect onboarding button |
PayoutScheduleSelector | lib/settings/ | Payout frequency dropdown |
NotificationToggleGroup | lib/settings/ | Category toggle group |
DatasetRatingInput | lib/datasets/ | 5-star rating selector |
ReviewCard | lib/datasets/ | Review display with rating, text, author |
ReviewForm | lib/datasets/ | Review submission form |
TransactionCard | lib/profile/ | Purchase/sale transaction display |
EarningsChart | lib/profile/ | Revenue over time chart |
DownloadsChart | lib/profile/ | Downloads over time chart |
VisibilityToggle | lib/settings/ | Public/Private/Org toggle |
DateRangePicker | lib/common/widgets/ | Analytics date range selection |
3.3 State Management (Cubits/BLoCs)
| Cubit/BLoC | Purpose |
|---|---|
CreatorAnalyticsCubit | Load and cache analytics data |
PaymentSettingsCubit | Manage Stripe Connect state |
NotificationPreferencesCubit | Load/save notification settings |
PrivacySettingsCubit | Load/save privacy settings |
DatasetReviewsCubit | Load reviews for a dataset |
WriteReviewCubit | Submit/edit review |
PurchaseHistoryCubit | Load purchase transactions |
TransactionsCubit | Load all transactions (sales + purchases) |
Part 4: API Endpoints Required
4.1 Creator Profile & Analytics
4.2 Payment Integration
4.3 Reviews & Ratings
4.4 Notifications
4.5 Privacy & Blocking
Part 5: Implementation Roadmap
Phase 1: Creator Foundation (Weeks 1-3)
Goal: Enable creators to set up profiles and connect payments| Task | Backend | Frontend | Owner |
|---|---|---|---|
| Creator profile fields | Add fields to User model | Profile settings form | BE/FE |
| Stripe Connect integration | CreatorPaymentProfile model + API | Onboarding flow | BE/FE |
| Payment settings page | Payout settings API | Settings UI | BE/FE |
| Basic analytics overview | Overview endpoint | Stats cards | BE/FE |
- Creator can add display name, bio, social links
- Creator can connect Stripe account
- Creator can see basic earnings overview
Phase 2: Reputation & Reviews (Weeks 4-6)
Goal: Build trust signals through ratings and reviews| Task | Backend | Frontend | Owner |
|---|---|---|---|
| Review model + API | DatasetReview model | Review form/display | BE/FE |
| Reputation aggregation | CreatorReputation + Celery task | Reputation display | BE |
| Badge system | Badge model + assignment logic | Badge components | BE/FE |
| Review moderation | Moderation status + admin UI | Admin panel | BE |
- Users can rate/review purchased datasets
- Creators have aggregated reputation scores
- Verification and achievement badges display
Phase 3: Analytics Dashboard (Weeks 7-9)
Goal: Give creators insights into their performance| Task | Backend | Frontend | Owner |
|---|---|---|---|
| Engagement tracking | DatasetEngagement model | - | BE |
| Earnings aggregation | CreatorEarnings + Celery | - | BE |
| Analytics page | Time-series APIs | Charts, filters | FE |
| Export functionality | CSV export endpoint | Export button | BE/FE |
- Creators see revenue, downloads, views over time
- Top performing datasets highlighted
- Analytics exportable as CSV
Phase 4: Settings & Privacy (Weeks 10-12)
Goal: Complete user control over their experience| Task | Backend | Frontend | Owner |
|---|---|---|---|
| Notification preferences | NotificationPreference model | Settings toggles | BE/FE |
| Privacy settings | Privacy fields + API | Privacy toggles | BE/FE |
| Enhanced API keys | Usage tracking + rate limits | Key management UI | BE/FE |
| User blocking | UserBlock model + enforcement | Block UI | BE/FE |
- Users control notification delivery
- Users control profile/data visibility
- API keys show usage and have granular scopes
Part 6: Success Metrics
| Metric | Target (Month 3) | Target (Month 6) |
|---|---|---|
| Creators with Stripe Connected | 50 | 200 |
| Datasets with ratings | 100 | 500 |
| Average creator rating | 4.0+ | 4.2+ |
| Analytics page DAU | 20% of creators | 40% of creators |
| Notification opt-in rate | 70% | 75% |
| API keys with scopes configured | 30% | 50% |
Part 7: Open Questions
- Commission structure: Is 12% platform commission final? Need to confirm for transaction model.
- Tax handling: Do we collect W-9 ourselves or use Stripe’s tax form collection?
- Review moderation: Auto-approve all reviews or require moderation queue?
- Badge criteria: What are the specific thresholds for each badge type?
- Analytics retention: How long do we keep daily analytics data? (Suggest: 2 years)
- Notification channels: Do we support SMS notifications or just email + in-app?
Appendix A: Database Migration Plan
New Tables
account_creator_payment_profilemarketplace_transactionmarketplace_dataset_reviewmarketplace_creator_reputationmarketplace_badgeanalytics_dataset_engagementanalytics_creator_earningsnotifications_preferenceapikey_usage_logaccount_user_block
Modified Tables
account_user- Add creator fields, privacy settingsapikey_apikey- Add rate limits, usage tracking
Migration Order
- Core user fields (no dependencies)
- Payment profile (depends on user)
- Transaction/review models (depends on user + dataset)
- Analytics tables (depends on user + dataset)
- Notification preferences (depends on user)
Appendix B: Third-Party Integrations
| Service | Purpose | API Docs |
|---|---|---|
| Stripe Connect | Creator payouts | https://stripe.com/docs/connect |
| Stripe Tax | Tax form collection | https://stripe.com/docs/tax |
| SendGrid | Email notifications | https://docs.sendgrid.com/ |
| Firebase | Push notifications | https://firebase.google.com/docs/cloud-messaging |
Last Updated: March 2026