Phase 6: Self-Service Tools
Timeline: Weeks 18-21 Status: Planned
Core Goal
Enable client autonomy for editing requests and regenerating QR codes without admin intervention.
Client Self-Service Features
Audio Edit Requests
- Request modifications to completed audio
- Simple edit workflow
- Status tracking for edits
- Revision history
- Approval process
QR Code Regeneration
- Download QR codes anytime
- Regenerate with new branding
- Multiple format selection
- Custom sizing options
- Batch downloads
Request Management
- Edit request details
- Update slug URLs
- Modify metadata
- Archive/unarchive requests
- Duplicate requests
Edit Request Workflow
Edit Flow
Edit Types
| Edit Type | Description | Processing Time |
|---|---|---|
| Text correction | Minor text changes | 1-2 hours |
| Voice change | Different voice actor | 4-24 hours |
| Tone adjustment | Same voice, different tone | 2-4 hours |
| Full re-record | Complete redo | 4-24 hours |
QR Code Regeneration
Regeneration Options
Format Selection:
- PNG (multiple resolutions)
- SVG (vector)
- PDF (print-ready)
- EPS (design software)
Customization:
- Brand logo overlay
- Color scheme
- Size variants
- High contrast toggle
Batch Operations:
- Download all QR codes
- Regenerate all with new branding
- Export to ZIP file
Regeneration API
Endpoint: POST /api/v1/client/requests/{requestId}/qr/regenerate
Request Body:
{
"formats": ["png", "svg", "pdf"],
"size": "large",
"highContrast": true,
"branding": {
"logo": "https://example.com/logo.png",
"colorScheme": "brand"
}
}
Response: 200 OK
{
"success": true,
"data": {
"qrCodeId": "new-uuid",
"files": {
"png": "https://cdn.micdots.com/qr/new-uuid.png",
"svg": "https://cdn.micdots.com/qr/new-uuid.svg",
"pdf": "https://cdn.micdots.com/qr/new-uuid.pdf"
},
"generatedAt": "2024-11-08T10:00:00Z"
}
}
Enhanced Client Dashboard
Dashboard Sections
My Requests:
- List view with filtering
- Status indicators
- Quick actions menu
- Bulk operations
Request Details:
- Full request information
- Audio playback
- QR code preview
- Download options
- Edit controls
Analytics (Basic):
- QR code scans
- Audio plays
- Geographic data
- Time-based charts
Quick Actions
Request Card Actions:
- Play audio button with accessible label
- Download QR code button
- Edit request button
- Share button
- View analytics button
All buttons include proper aria-labels for accessibility.
Request Editing Features
Editable Fields
| Field | Editable After Completion | Requires Admin Approval |
|---|---|---|
| Message Text | ❌ No (requires edit request) | ✅ Yes |
| Voice Actor | ❌ No (requires edit request) | ✅ Yes |
| Slug URL | ✅ Yes | ❌ No |
| Website URL | ✅ Yes | ❌ No |
| Social Media | ✅ Yes | ❌ No |
| Description | ✅ Yes | ❌ No |
Edit Request Form
Form Fields:
- Edit Type (required dropdown): Text Correction, Voice Change, Tone Adjustment, Full Re-record
- Reason for Edit (required textarea): Explanation of needed changes
- Revised Text (optional textarea): New text content if applicable (max 1000 chars)
- Submit button
Form includes proper labels, help text, and accessibility attributes.
Download Manager
Download Interface
Format Selection (checkboxes):
- PNG (1000x1000px) - default checked
- SVG (Vector)
- PDF (Print-ready)
Size Options (radio buttons):
- Small (500x500px)
- Medium (1000x1000px) - default
- Large (2000x2000px)
Additional Options:
- High Contrast Version checkbox
- Generate & Download button
Acceptance Criteria
F5.1 - Audio Edit Request
User Story: As client, I want to request modifications to completed audio.
Acceptance Criteria:
- AC5.1.1: Given completed request, when I view details, then "Request Edit" button alongside downloads
- AC5.1.2: Given I click "Request Edit", when form opens, then original text, audio player, edit description area shown
- AC5.1.3: Given I want changes, when I fill form, then can specify: text changes, style adjustments, pronunciation, re-recording
- AC5.1.4: Given I submit edit, when clicked, then sub-request created with "edit-pending" and admin notified
- AC5.1.5: Given edit processed, when admin completes, then new audio file and request shows edit history
- AC5.1.6: Given multiple edits, when I request second, then system tracks count and may apply additional charges
- AC5.1.7: Given complex edit, when admin reviews, then can contact for clarification before proceeding
- AC5.1.8: Given edit completed, when I receive notification, then can compare original and edited side-by-side
F5.2 - QR Code Regeneration
User Story: As client, I want to regenerate QR codes with different formatting.
Acceptance Criteria:
- AC5.2.1: Given completed request, when I access downloads, then "Regenerate QR Code" with customization settings
- AC5.2.2: Given I want branding, when I access tool, then can upload logo (max 2MB) to embed in center
- AC5.2.3: Given I need colors, when I customize, then can choose foreground/background while maintaining scannability
- AC5.2.4: Given different sizes, when I regenerate, then can specify exact dimensions for use case
- AC5.2.5: Given I need error correction, when I generate for print, then can choose error correction level
- AC5.2.6: Given I test changes, when I customize, then live preview updates as I make changes
- AC5.2.7: Given I regenerate, when complete, then new version available while preserving originals
- AC5.2.8: Given customization affects scannability, when I make risky changes, then system warns and suggests alternatives
F5.3 - Enhanced Client Dashboard
User Story: As client, I want expanded dashboard functionality.
Acceptance Criteria:
- AC5.3.1: Given I access dashboard, when page loads, then organized sections: Active, Completed, Edit Queue, Quick Actions
- AC5.3.2: Given I organize projects, when I view completed, then can add tags, notes, custom names
- AC5.3.3: Given many projects, when I browse, then can filter by date, status, voice actor, custom tags
- AC5.3.4: Given I want insights, when I click project, then see usage stats: scans, geographic data, engagement
- AC5.3.5: Given I duplicate project, when I find successful request, then "Create Similar" pre-fills new form
- AC5.3.6: Given I manage downloads, when I access project, then see download history and can re-download versions
- AC5.3.7: Given I share projects, when I view details, then can generate shareable portfolio links
- AC5.3.8: Given multiple brands, when I organize, then can create folders/categories for related projects
F5.4 - Basic Analytics
User Story: As client, I want to see QR code performance.
Acceptance Criteria:
- AC5.4.1: Given someone scans QR, when they visit playback, then scan tracked with timestamp and city/country
- AC5.4.2: Given I want performance, when I access analytics, then see: total scans, unique visitors, peak times, geographic distribution
- AC5.4.3: Given I track over time, when I view analytics, then can select date ranges and see trend graphs
- AC5.4.4: Given I want engagement, when I check analytics, then see: average listen time, completion rate, repeat visits
- AC5.4.5: Given I compare projects, when I view dashboard, then comparative performance across all projects
- AC5.4.6: Given I need reports, when I access analytics, then can export data as CSV
- AC5.4.7: Given I want real-time, when I check analytics, then data updated within 15 minutes of scans
- AC5.4.8: Given privacy concerns, when analytics collected, then no PII stored or displayed
API Endpoints
Request Edit
Endpoint: POST /api/v1/client/requests/{requestId}/edit
Request Body:
{
"editType": "text-correction",
"reason": "Typo in message text",
"revisedText": "Corrected message text"
}
Update Request Metadata
Endpoint: PATCH /api/v1/client/requests/{requestId}
Request Body:
{
"slug": "new-slug-url",
"websiteUrl": "https://example.com",
"socialMedia": "https://twitter.com/example",
"description": "Updated description"
}
Testing Examples
Regenerate QR Code
curl -X POST http://localhost:5000/api/v1/client/requests/uuid/qr/regenerate \
-H "Content-Type: application/json" \
-H "Authorization: Bearer CLIENT_TOKEN" \
-d '{
"formats": ["png", "svg"],
"size": "large",
"highContrast": true
}'
Submit Edit Request
curl -X POST http://localhost:5000/api/v1/client/requests/uuid/edit \
-H "Content-Type: application/json" \
-H "Authorization: Bearer CLIENT_TOKEN" \
-d '{
"editType": "text-correction",
"reason": "Spelling error",
"revisedText": "Corrected text here"
}'
Success Criteria
Functionality
- ✅ Clients can request edits
- ✅ QR regeneration works
- ✅ Download manager functional
- ✅ Metadata updates successful
- ✅ Analytics display correctly
Performance
- QR regeneration < 5 seconds
- Dashboard load < 2 seconds
- Download generation < 3 seconds
User Experience
- Intuitive self-service interface
- Clear edit workflow
- Helpful error messages
Deliverables
-
Edit Request System
- Edit workflow
- Admin processing
- Status tracking
-
QR Regeneration
- Format options
- Customization tools
- Batch operations
-
Enhanced Dashboard
- Request management
- Download manager
- Basic analytics
-
Documentation
- User guide
- API documentation
- Best practices