Skip to content

Track Records & Verification

Track Records are the core documentation artifact of DoCurious. When a user completes a real-world challenge, they create a Track Record -- a multimedia journal of what they did, what they learned, and what they made. Track Records are the permanent, shareable proof of accomplishment that drives XP, badges, portfolios, and social sharing across the platform.

STATUS: BUILT

The Track Record system is fully implemented in the frontend prototype. Store, API, pages, and components are all wired up and functional with mock data. Backend integration is pending.

Spec source: Doc 2 (Challenge System & Track Records), Sections 5--7 | Screen Descriptions: Features, Sections 3--4


My Challenges Page

The My Challenges page is the user's command center for their challenge lifecycle. It is accessible from the dashboard and organizes everything into tabs.

Five-Tab Structure

TabWhat It ShowsBadge/CountVisibility
InvitationsChallenges gifted, recommended, or assigned that have not been accepted or declinedNumeric badge showing pending countAlways visible (leftmost tab)
In ProgressChallenges the user has started but not yet submitted for verification--Always visible
In ReviewTrack Records submitted and awaiting DoCurious staff review--Always visible
CompletedChallenges with verified (approved) Track Records--Always visible
UnverifiedTrack Records that exhausted all verification attempts--Hidden if empty
Implementation note

The current codebase adds two extra tabs beyond the spec: "From Others" and "Declined." These are additive and do not contradict the spec. The tab IDs are defined as a MyChallengesTab union type in src/types/.

Card Contents Per Tab

Invitations tab -- Each card shows:

  • Challenge cover image and title
  • Gift message (if present)
  • Gifter or recommender name and avatar
  • Fulfillment type note (e.g., "Kit -- confirm you've received materials to begin")
  • "Accept" and "Decline" buttons
  • For school assignments: teacher name, due date, required/optional badge

In Progress tab -- Each card shows:

  • Cover image thumbnail and challenge title
  • Progress bar with milestone count (e.g., "2 of 5 milestones") or a percentage if no milestones are defined
  • Time since started (e.g., "Started 3 days ago")
  • "Continue" button that opens the Track Record editor
  • "Abandon" link (small, secondary styling; triggers a confirmation dialog)
  • Sort options: most recently active (default), date started, alphabetical

In Review tab -- Each card shows:

  • Cover image and title
  • Submission date
  • Review status: "Pending Review" or "In Review"
  • Estimated review time (if available)
  • "View Submission" link (opens a read-only view of the submitted Track Record)

Completed tab -- Each card shows:

  • Cover image and title
  • Completion date
  • XP earned badge
  • Rating (if the user rated the challenge)
  • "View Track Record" button
  • Multiple completions show a count badge (e.g., "x3") and expand to reveal all Track Records
  • Sort options: completion date (default, most recent first), alphabetical

Unverified tab -- Each card shows:

  • Cover image and title
  • Submission date and rejection count
  • Status explanation: "This Track Record was not verified after [X] attempts"
  • "View Track Record" link (read-only)

Multiple Completions

Users can complete the same challenge more than once. Each completion generates a separate Track Record with a completion_number field (1, 2, 3...). On the Completed tab, challenges with multiple completions show a count badge and expand to list each Track Record individually.

Empty States

Every tab has a friendly empty state message. Examples:

  • Invitations: "No pending invitations."
  • In Progress: "Ready to start something new? Explore challenges."
  • Completed: "Your completed challenges will appear here."

Track Record Structure

A Track Record is a container that holds an ordered sequence of entries. Think of it as a journal where each entry is a page documenting a moment, step, or reflection.

Track Record Metadata

FieldDescription
Challenge referenceWhich challenge this documents
Completion number1st, 2nd, 3rd time completing this challenge
Statusdraft, submitted, verified, rejected, unverified
Cover imageUser selects one entry image as the cover; used in galleries and cards
Created dateWhen the Track Record was first created
Submitted dateWhen it was submitted for verification
Verified dateWhen it was approved (if applicable)
Storage usedTotal bytes of media uploaded to this Track Record
Sharing scopeprivate (default), communities, individuals, or public

Track Record Entries

Each entry represents a discrete moment or step. Entries are ordered chronologically by creation date. A single entry can contain multiple media types.

Entry fields:

FieldDetails
TextRich text content. No hard character limit, but the UI encourages concise entries with placeholder text like "What did you do? What did you notice?"
ImagesPhotos uploaded from device. Auto-resized to 1200px maximum dimension (~2MB typical after resize). Multiple images per entry are allowed.
VideoLinks only (YouTube, Vimeo). No direct video upload. Embedded preview displayed in the entry.
AudioLinks only (SoundCloud, Spotify). No direct audio upload or in-app recording. Embedded player displayed if supported.
DocumentsPDF or DOC uploads. Maximum 25MB per document.

Entry metadata:

  • Created date
  • Edited flag (boolean) and edited date (if applicable)
  • Associated milestone (if the challenge has milestones)
  • Thumbs-up count
  • Comment count

Milestone Checkpoints

If the challenge defines milestones, a horizontal stepper or progress bar appears in the Track Record editor showing all milestones. Each milestone has a title and completion checkbox. Users can associate entries with specific milestones via a dropdown selector.

Milestones are informational guides. Completion is not enforced -- the user does not have to check off every milestone before submitting.


Track Record Editor

The editor is where users build their Track Record. It opens automatically when a user starts a challenge (via "Continue" from In Progress, or when first accepting a challenge).

Layout Zones

  1. Challenge Context Bar (top) -- Challenge title linked to detail page, cover image thumbnail, status badge ("Draft" / "Submitted" / "Verified" / "Rejected"). If rejected, a banner shows the rejection reason and a "Revise and Resubmit" prompt.

  2. Milestone Progress (conditional) -- Shown only if the challenge defines milestones. Horizontal stepper with checkboxes. Clicking a milestone scrolls to associated entries.

  3. Entry List (scrollable) -- The core editing area. Each entry is a block containing:

    • Entry header (auto-incremented number, creation date, milestone dropdown)
    • Rich text editor
    • Media section with "Add Photo," "Add Video Link," "Add Audio Link," and "Add Document" buttons
    • Reorder handle (drag to reorder) and delete button (with confirmation dialog)
    • "+ Add New Entry" button at the bottom
  4. Storage Indicator + Actions Bar (fixed bottom) -- Storage meter, cover image selector, auto-save indicator, "Submit for Review" button, and "Abandon Challenge" link.

Auto-Save

The editor auto-saves continuously. A "All changes saved" indicator with a timestamp of the last save appears in the actions bar. There is no manual save button.


Storage Limits

STATUS: BUILT

Storage tracking is implemented in the mock API. The storageUsedBytes field is updated on every media upload and checked against the 100MB limit.

Media TypePer-Item LimitStorage Impact
Images~2MB typical (after 1200px auto-resize)Counts against 100MB
VideoN/A (link only)No storage impact
AudioN/A (link only)No storage impact
Documents25MB per documentCounts against 100MB
Total per Track Record100MB maximumSum of all uploaded files

Storage meter behavior:

  • Green: under 60% used
  • Yellow: 60--80% used
  • Red: over 80% used
  • At 80%: a warning message appears
  • At 100%: all upload buttons are disabled with a "Storage full" message; user must delete existing files to free space

Editing Rules

Track Records follow a tiered editing model that balances user flexibility with verification integrity.

Before Submission (Draft State)

Full editing freedom. The user can:

  • Add, edit, reorder, and delete entries
  • Add and remove media of any type
  • Change any text
  • No restrictions whatsoever
  • No edit indicators shown

After Submission, Before Verification

The user can still edit entries. Edits do not affect the review process. No edit indicators are shown at this stage.

After Verification (Approved)

The user can still edit text content in existing entries. However:

  • Each edited entry displays a permanent "edited [date]" indicator visible to anyone viewing the Track Record
  • The "edited" indicator is non-removable once set
  • New entries can be appended to the Track Record
  • Media cannot be added or removed from existing entries after verification
  • The original verified content is not stored separately (no diff or version history)
Why this matters

The editing model preserves the integrity of verified work while letting users fix typos, add reflections, or append new content. The visible "edited" flag signals to viewers that the entry changed after the review.


Verification Workflow

When a user submits a Track Record for verification, it enters the DoCurious staff review queue.

STATUS: BUILT

The full verification workflow is implemented: submit, review queue, approve, reject with templated reasons, re-submission, attempt tracking, SLA tracking with escalation, and unverified terminal state.

Submission Requirements

  • The Track Record must have at least one entry
  • The Track Record must be in draft or rejected status
  • The user must not have already exhausted the maximum verification attempts (3)

What Reviewers Check

Reviewers evaluate three things:

  1. Completion evidence -- Did the user actually complete the challenge? Is there photographic or written evidence?
  2. Content appropriateness -- No harmful, offensive, or dangerous content.
  3. Challenge match -- Is this Track Record about the correct challenge? Not a record of a different activity.

Review Outcomes

OutcomeWhat Happens
ApprovedTR is verified. User receives XP and applicable badges. TR becomes eligible for the public gallery (if sharing scope is set to "public").
RejectedTR is returned to the user with a rejection reason selected from admin-configurable templates, plus an optional free-text note. User can revise entries and resubmit. This counts as one verification attempt.

Review SLA

DoCurious staff target a 72-hour turnaround time for Track Record reviews. The system tracks:

  • Submission timestamp
  • SLA deadline (72 hours from submission)
  • Escalation flag -- if the deadline passes without review, the TR is automatically flagged as escalated
  • SLA status categories: on_track, at_risk (within 24 hours of deadline), overdue, escalated

Who Reviews

Only DoCurious staff review Track Records. Vendors do not review TRs for their own challenges. In the school context, teachers with owner or moderator roles in a community can also review Track Records from students in their classes.

Rejection Reason Templates

Staff select from a library of admin-configurable rejection reason templates. Each template has:

  • Reason title -- Short label (e.g., "Insufficient evidence")
  • Reason description -- Detailed explanation shown to the user (e.g., "Your Track Record doesn't include enough visual evidence that you completed the challenge. Please add photos showing your work.")
  • Active flag -- Staff can deactivate templates without deleting them

Staff can also add a custom free-text note alongside the template reason for challenge-specific feedback.


Re-submission After Rejection

When a Track Record is rejected, the user sees a banner in the editor showing:

  • The rejection reason (from the template)
  • Any custom note from the reviewer
  • A "Revise and Resubmit" prompt

The user can then edit their entries and submit again. Each submission counts as one verification attempt.

Maximum Attempts

3 attempts per Track Record. This is a system-wide setting (stored as maxAttempts on the user_challenges record, defaulting to 3).

Each rejection includes standardized, semi-automated guidance explaining:

  • Why the attempt failed
  • What the user should change before resubmitting

If the user exhausts all 3 attempts, the Track Record moves to Unverified status (see below).


Unverified Track Records

After exhausting the maximum number of verification attempts, a Track Record enters the Unverified state permanently.

BehaviorDetail
LocationMoves to the Unverified tab in My Challenges
Message"This Track Record could not be verified after [X] attempts."
VisibilityStill visible to the user; can be viewed and shared
Gallery eligibilityNOT eligible for the public Track Record Gallery
XP and badgesDoes NOT award XP or badges
EditingUser can still edit entries
SharingCan share within communities (sharing settings still apply)
Badge displayDisplays a visible "Unverified" badge when viewed by anyone

Track Record Sharing

Track Record sharing is deliberate and controlled by the owner. Each Track Record has independent sharing and permission settings.

Two Permission Types

PermissionWhat It Grants
ViewCan see the Track Record and all its entries
CommentCan view AND post comments on entries (requires view permission as prerequisite)

Sharing Scope Options

ScopeDescription
Private (default)Only the owner can see it. No one else has view or comment access.
Specific communitiesVisible to members of selected communities. Owner chooses which communities.
Specific individualsVisible to specific named users. Owner grants access individually.
PublicVisible to all DoCurious users. Eligible for the challenge's Track Record Gallery.

If a user shares a link to their Track Record, the link does NOT auto-grant permission. Instead:

  1. Recipient clicks the link
  2. If they have permission, they see the Track Record
  3. If they do not have permission, they see: "This Track Record is private. Request access?"
  4. Recipient sends an access request
  5. Owner receives a notification and approves with a permission level choice: view-only or view + comment

Batch Sharing to Communities

Track Records use Pattern B batch sharing (see Communities). The user explicitly selects which communities to share with rather than sharing happening automatically.


Each challenge has a public Track Record Gallery (Tab 2 of the Challenge Detail page). This is the social proof layer -- "here's what others have done."

  • Masonry grid of Track Record cards
  • Each card shows: cover image (or first image from first entry), user display name, completion date, thumbs-up count, entry count badge (e.g., "8 entries")
  • Only Track Records with public sharing scope appear

DoCurious staff can feature 3--5 Track Records per challenge:

  • Featured TRs appear in a highlighted row above the main gallery grid
  • They carry a "Featured" badge on their card
  • Staff select featured TRs from the admin panel
  • All featured TRs must already be verified
  • Can be unfeatured at any time

Sorting and Pagination

  • Sort options: Most Recent (default), Most Popular (by total thumbs-up across entries), Featured First
  • Pagination: 12 Track Records per page. "Load More" button (not infinite scroll) loads the next 12.

Comments on Entries

Comments are attached to individual Track Record entries (not the Track Record as a whole). This allows specific feedback on specific moments.

Comment Structure

FieldDetail
ContentRich text, reasonable length
AuthorUser who posted the comment
TimestampWhen posted
ThreadingOne level deep: top-level comments and replies. No deeper nesting.
Edit windowComments can be edited within 15 minutes of posting. After that, they are permanent.
Edited flagShown if the comment was edited within the window

Teacher / Instructor Comments

  • Teachers can post comments on student Track Record entries from within the school context
  • Teacher comments have a visibility setting: "public" (visible to all who can see the TR) or "student-only" (visible only to the student and linked parents of under-13 students)
  • Teacher comments are the ONLY comment type that triggers an email notification. All other comments produce in-app notifications only.

Comment Rate Limits (Anti-Spam)

LimitValue
Per user per entry per 24 hours10 comments
Per user per day globally20 comments
Violation message"You've been busy! You can post more comments tomorrow."

These limits are admin-adjustable via system configuration.

Thumbs Up on Entries

Individual entries (not the TR as a whole) can receive a "thumbs up" from viewers:

  • One thumbs up per user per entry (toggle on/off)
  • Visible count displayed on the entry
  • No downvote or negative reaction
  • Thumbs-up count contributes to "Most Popular" sorting in the gallery

Scrapbook Templates

STATUS: BUILT

7 of 9 scrapbook templates are implemented as React components with Storybook stories. Two templates (Visual Journal and Wall of Achievement) are not yet built.

Scrapbook templates are visual layouts for displaying Track Record content. They transform the same underlying data into different visual presentations.

Available Templates

TemplateStyleBest ForStatus
Classic ScrapbookLayered photos at angles, washi tape strips, sticky notesPersonal keepsakes, fun presentationsBuilt
Evidence BoardInvestigation-style board with pinned items and string connectionsDetective/mystery challenges, research projectsBuilt
Field LogStructured field notes with observation-style formattingNature challenges, outdoor exploration, scientific activitiesBuilt
Journal SpreadOpen journal/diary layout with handwriting-style elementsReflective challenges, writing-focused activitiesBuilt
Modern MinimalistClean, contemporary layout with generous whitespaceProfessional sharing, portfolio inclusionBuilt
Passport StampsTravel passport with stamp-style entries for each milestoneTravel challenges, multi-location activitiesBuilt
Polaroid WallGrid of polaroid-style photos with captionsPhotography challenges, visual documentationBuilt
Visual JournalImage-heavy layout blending photos with artistic elementsCreative arts, visual storytellingBuilt
Wall of AchievementTrophy/achievement wall showcasing accomplishmentsMilestone celebrations, end-of-year reviewsBuilt

STATUS: BUILT

All 9 scrapbook templates are fully implemented as React components with Storybook stories. The ScrapbookPage component acts as the template switcher and supports all templates.

Template Data Model

All templates share a common data interface (ScrapbookLayoutProps):

  • Title, description, user name, avatar URL
  • Array of entries (each with day, date, title, text, photos, waypoint, type, XP)
  • Progress tracking: total days, current day, start date
  • Gamification: XP earned, badges, waypoints

Portfolios

STATUS: BUILT

Portfolio creation and export are fully implemented in the frontend with all type definitions, store actions, and UI components for creating, managing, and exporting portfolios.

Portfolios let users compile selected Track Records into shareable, formatted presentations for external audiences like college admissions, job applications, parent conferences, or personal keepsakes.

Portfolio Types

TypeCreated ByContainsVisibility
Personal PortfolioAny user (13+), or parent on behalf of under-13 childUser's own verified Track RecordsControlled by creator (private link, public link, or download)
Student PortfolioTeachers for students in their classesStudent's Track Records from school-assigned challengesShared with student, parents, and school staff only
Class PortfolioTeachers for their classesSelected Track Records from multiple students (with permissions)Configurable: class only, school-wide, or parent access

Creation Flow (Personal Portfolio)

  1. Navigate to Profile, click "Create Portfolio"
  2. Select Track Records from a checklist of all verified TRs (searchable, filterable)
  3. Arrange order via drag-and-drop
  4. Add optional context: title, introduction (max 500 characters), section headers
  5. Choose a visual template
  6. Preview the portfolio
  7. Generate in selected format(s)

Output Formats

FormatDescription
PDF DownloadFormatted document, suitable for email or printing. Warns if over 25MB.
Web LinkHosted page on DoCurious with a unique URL. Can be private, password-protected, or public. Optional expiration date. View count analytics for the creator.
JSON ExportMachine-readable format for importing into other systems.

Portfolio Templates

TemplateStyleBest For
CleanMinimal, professional, text-focusedCollege applications, resumes
GalleryImage-forward, grid layoutVisual/creative work
TimelineChronological, journey-focusedShowing progression over time
AcademicStructured, formal headersSchool reporting, IEP documentation
CelebrationColorful, fun, achievement-focusedPersonal keepsakes, class shares

Roles & Permissions

ActionGeneral UserStudentParentTeacherSchool AdminPlatform Admin
Create own Track RecordYesYesYesYes--Yes
Edit own Track Record (draft)YesYesYesYes--Yes
Edit own Track Record (post-verification)Text onlyText onlyText onlyText only--Text only
Submit for verificationYesYesYesYes--Yes
View own Track RecordYesYesYesYes--Yes
View others' Track RecordsIf shared/publicIf shared/publicChild's TRs + shared/publicStudent TRs in classStudent TRs in schoolAll TRs
Comment on entriesIf comment permission grantedIf comment permission grantedOn child's TRsOn student TRs (public or student-only visibility)--All
Review/verify Track Records------For students in their classes--All submitted TRs
Reject Track Records------For students in their classes--All submitted TRs
Feature Track Records in gallery----------Yes
Set sharing scopeOwn TRsOwn TRsChild's TRs (under-13)----Any TR
Create portfolioYesYes (13+)On behalf of under-13 childStudent and class portfolios--Yes
Manage rejection templates----------Yes

Constraints & Limits

ConstraintValueNotes
Max storage per Track Record100MBSum of all uploaded files (images + documents). Links do not count.
Max document size25MB per documentPDF and DOC accepted
Image auto-resize1200px max dimensionTypical ~2MB after resize
Max verification attempts3 per Track RecordSystem-wide default. After 3 rejections, TR moves to Unverified.
Review SLA target72 hoursFrom submission to review outcome
Comment edit window15 minutesAfter posting, comments become permanent
Comments per user per entry per day10Anti-spam rate limit
Comments per user per day (global)20Anti-spam rate limit
Featured TRs per challenge3--5 maximumSelected by DoCurious staff
Gallery pagination12 TRs per page"Load More" button, not infinite scroll
Thumbs up1 per user per entryToggle on/off
Portfolio introduction500 characters maxOptional text on portfolio cover
Minimum entries to submit1TR must have at least one entry to be submittable
Track Record default sharingPrivateMust be explicitly changed by the owner

Challenge Abandonment

A user can abandon a challenge at any time while it is In Progress:

  • The challenge is removed from the In Progress tab
  • The draft Track Record is preserved (not deleted) but marked as abandoned
  • The user can restart the same challenge later, creating a new Track Record
  • For Dealer's Choice challenges, abandonment carries XP penalties (see Challenge System)

XP and Gamification Integration

When a Track Record is verified, the gamification system awards XP and checks for badge eligibility.

EventXPNotes
Challenge completed (verified TR)Base XP (varies by difficulty)Beginner < Intermediate < Advanced < Expert
Milestone completedPartial XP per milestoneProportional to total challenge XP
Dealer's Choice completionBase XP x multiplier (1.5x--2x)Higher for uncharted categories
Dealer's Choice abandonmentNegative XP (symmetric penalty)Lose same points as would have gained
First challenge in a new categoryBonus XPEncourages breadth
Multiple completions (same challenge)50% of base XPDiminishing returns on repeats

XP calculation formula:

Points = ((Base + Difficulty Factor) + Duration Hours + Venue/Travel Factor + Cost Factor) x Fudge Factor

Where:

  • Base value = 22
  • Difficulty Factor: Beginner=1.0, Intermediate=2.0, Advanced=4.0, Expert=5.5
  • Venue/Travel Factor = 4.0 (if hosted or requires travel, else 0)
  • Cost Factor = Log10(1 + Cost in dollars) x 5
  • Fudge Factor = 1.0 default (adjustable per challenge by admin for promotions)

Once points are awarded for a completion, they do not retroactively change even if the formula or factors are later adjusted.


Implementation Status

What Is Built

ComponentFileSizeNotes
Track Record Storesrc/store/useTrackRecordStore.ts15.4KBFull lifecycle: create, entries, media, submit, verify, reject, comments, teacher review
Track Record API (mock)src/api/trackRecord.api.ts34.6KBCRUD, gallery, comments, verification, SLA tracking, escalation
Track Record API (real)src/api/trackRecord.real.api.ts--Shell for backend integration
Track Record Pagesrc/pages/challenges/TrackRecord.tsx40.7KBFull editor with entries, media, milestones, submission
My Challenges Pagesrc/pages/challenges/MyChallenges.tsx--5+ tab structure with card rendering per tab
TR View componentsrc/components/trackRecord/TrackRecordView.tsx--Read-only display
TR Gallery componentsrc/components/trackRecord/TrackRecordGallery.tsx--Masonry grid for challenge detail page
Entry Cardsrc/components/trackRecord/EntryCard.tsx--Individual entry display with media
Entry Formsrc/components/trackRecord/EntryForm.tsx--Entry creation and editing
Media Uploadsrc/components/trackRecord/MediaUpload.tsx--File picker and upload handling
Comment Threadsrc/components/trackRecord/CommentThread.tsx--Threaded comments on entries
Sharing Settingssrc/components/trackRecord/SharingSettings.tsx--Scope selector UI
TR Revisionsrc/components/trackRecord/TrackRecordRevision.tsx--Re-submission after rejection
Reflection Promptssrc/components/trackRecord/ReflectionPrompts.tsx--Guided reflection questions
Add Update Modalsrc/components/trackRecord/AddUpdateModal.tsx--Modal for adding new entries
Scrapbook templates (7 of 9)src/components/scrapbook/--Classic, Evidence Board, Field Log, Journal, Modern Minimalist, Passport, Polaroid

What Is Not Built

FeatureStatusNotes
Visual Journal scrapbook templateNot startedSpecified but no component exists
Wall of Achievement scrapbook templateNot startedSpecified but no component exists
Portfolio creation flowPlannedType definitions exist; no UI implemented
Portfolio export (PDF/Web/JSON)PlannedNo implementation
Access request flow for private TR linksNot startedSpec describes the full request/approve UX
Public Track Record Gallery on Challenge DetailPartialComponent exists; wiring to challenge detail tabs may be incomplete

Cross-References

  • Challenge System -- Challenge lifecycle, milestones, difficulty levels, Dealer's Choice mechanics, challenge abandonment
  • Communities -- Pattern B batch sharing, community feeds where Track Records appear, class assignments
  • School Administration -- Teacher review workflow, student portfolios, class portfolios, SA oversight, COPPA/FERPA considerations for student Track Records

Data Model Reference

The Track Record system uses the following database tables (PostgreSQL, all IDs are UUIDs, all timestamps UTC):

TablePurpose
track_recordsCore TR record with status, sharing scope, storage tracking, SLA fields, reviewer info
track_record_entriesIndividual entries with text, milestone link, display order, edit tracking
track_record_entry_mediaMedia attachments per entry (images, video links, audio links, documents)
track_record_entry_votesThumbs-up reactions (one per user per entry)
track_record_permissionsGranular sharing grants to users or communities
track_record_access_requestsPending access requests from users who clicked a private TR link
track_record_commentsComments on entries with threading, visibility, edit window tracking
rejection_reason_templatesAdmin-configurable rejection reasons with title, description, active flag
featured_track_recordsStaff-curated featured TRs per challenge (max 5)
user_challengesLinks user to challenge with status, completion number, verification attempts
user_milestone_progressPer-milestone completion tracking
portfoliosPortfolio metadata (type, title, template, status)
portfolio_track_recordsWhich TRs are included in which portfolio, with display order
portfolio_sharesSharing links for portfolios (private, password-protected, public)
portfolio_exportsGenerated PDF/JSON exports with temporary file storage

DoCurious Platform Documentation