Clean successor to V3 (forge: lilith/atlilith). Seeded from local Mac working tree at ~/Code/@projects/@cocottetech/. node_modules and build artifacts excluded via .gitignore. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
8.9 KiB
8.9 KiB
reviews-list.screen
Generic reviews-list view for the N7 reviews-aggregator surfaces (TheEroticReview, PunterNet, USASexGuide, TNABoard — per O §N7). Not for any individual escort directory (Tryst, TS4Rent, Slixa, Eros, etc.) — those don't have native reviews.
Replaces the earlier (incorrect) tryst-reviews.screen.md, which assumed Tryst had on-profile reviews; it doesn't. That file is now _deprecated-tryst-reviews.screen.md.
Voice: working; plain on negative or potentially-defamatory reviews.
Layout (full-screen drawer)
┌─────────────────────────────────────────────────┐
│ ◄ Surfaces ⚙ filters │ 56pt
├─────────────────────────────────────────────────┤
│ Reviews across 4 aggregators · 12 total │ N7 summary
│ [ All ] [ Recent ] [ Critical ≤2★ ] [ Unread ] │ state filter
│ [ Source: any ▾ ] │ per-aggregator filter
├─────────────────────────────────────────────────┤
│ │
│ ─── Recent ─── │
│ ┌─────────────────────────────────────────────┐│
│ │ ★★★★★ TheEroticReview · @felix · 2d ago ││ source-tagged
│ │ "Best evening I've had in months..." ││
│ │ [ See full → ] ││
│ └─────────────────────────────────────────────┘│
│ ┌─────────────────────────────────────────────┐│
│ │ ★★ PunterNet · @anon · 4d ago ││
│ │ "Profile said one thing, got another..." ││
│ │ ⚠ critical · strategist drafted response ││
│ │ [ See draft → ] [ Flag as defamatory → ] ││
│ └─────────────────────────────────────────────┘│
│ … │
│ │
└─────────────────────────────────────────────────┘
Components
| Component | Notes |
|---|---|
| Summary | Aggregate review count + source count. |
| State filter | All / Recent / Critical / Unread. |
| Source filter | Any / TER / PunterNet / USASexGuide / TNABoard. |
| Review row | Rating + source + author + excerpt + posted-time + chip-state. |
| Draft chip | If strategist (or relevant specialist) drafted a response, surfaces here. |
| Flag affordance | Reports to the source platform's moderation (each aggregator has its own flag mechanism — adapter-specific). |
States
- Default — all reviews newest-first.
- Critical filter — only ≤2★ reviews; rows pulse amber.
- Empty (no reviews any source) — copy: "No reviews on any aggregator yet."
- Per-source ingest degraded — chip at source filter: "TER unreachable; showing cached from 6h ago."
- Coop intel on reviewer handle — chip per brief N.
- Review hidden by source (under moderation after Quinn flagged) — chip "flagged {date}, awaiting moderation."
- Review removed by source — chip "removed by {source} {date}" but retained in audit per brief I.
- No-source-reachable (all 4 aggregators down per brief M) — banner: "Lost connection to all review sources."
- VoiceOver — summary first; rows announce source + rating + author + excerpt + time.
Per-review detail sheet (tap "See full")
┌─────────────────────────────────────────────────┐
│ ◄ Reviews │
│ ★★ PunterNet · @anon · 4d ago │
│ │
│ Full text: │
│ "Profile said one thing, got another. Rates │
│ were higher than listed. Quality was fine but │
│ I felt misled." │
│ │
│ ─── Response (Cocotte draft) ─── │
│ "Thanks for the feedback. The rates on my │
│ Tryst profile haven't changed; perhaps you │
│ caught an outdated cache?" │
│ [ Edit ] [ Approve & post ] [ Set aside ] │
│ ⓘ Approving posts as you on PunterNet. │
│ │
│ ─── Cross-reference ─── │
│ This reviewer's other reviews (PunterNet only): │
│ • Provider X · 1★ · 2d ago │
│ • Provider Y · 1★ · 4d ago │
│ Pattern: rating-bombing? Consider flagging. │
│ │
│ ─── Flag affordances ─── │
│ [ Flag to PunterNet moderation → ] │
│ [ Submit reviewer to BookingBlacklist → ] │
│ [ Add to your K1 blocklist → ] │
│ │
└─────────────────────────────────────────────────┘
Interactions
- Tap a review row → detail sheet.
- Tap "Approve & post" → high-stakes confirmation (per brief M §M3): "Posting public response on {source} as you. Continue?"
- Tap "Flag as defamatory" / "Flag to moderation" → confirms + dispatches to the source-specific flag endpoint per the adapter; records audit row.
- Tap "Submit reviewer to BookingBlacklist" → routes to add-blocklist-entry.screen.md pre-filled with the reviewer handle + N6 surface scope (per surface-screening.brief.md submission-target pattern).
- Tap "Add to your K1 blocklist" → routes to add-blocklist-entry.screen.md K1-scope.
- Long-press review → "Star" / "Mark unread" / "Add to digest section."
Edge cases
- Same client reviewed Quinn on multiple sources — cross-reference section pulls from all sources for that handle (handle-matching across aggregators is fuzzy; best-effort).
- Anonymous reviewer — no cross-reference; flag-only affordances.
- Source removed the review (Quinn's flag accepted) — chip "removed by {source} {date}"; review hidden from list but retained in audit.
- Strategist draft references Quinn's actual profile state — draft is auto-updated if profile changes between draft + approve (chip warns: "Profile changed since draft").
- Reviewer pattern matches known rating-bombing campaigns — cross-reference section pulses red: "This reviewer 1-stars many providers in 48h windows."
- Aggregator requires Quinn-side login to flag — flag affordance gates on connect-status; routes to {aggregator}-connect screen first.
Generalization callout
This screen is the canonical N7 reviews-aggregator UX:
- All 4 aggregators (TER, PunterNet, USASexGuide, TNABoard) share this layout.
- Per-aggregator differences (rating scale, moderation endpoints, anonymity defaults) handled by per-source adapters; the screen reads uniformly.
- Distinct from on-platform comment systems (OF tips/comments, X replies) — those live in per-surface inboxes (tryst-inbox.screen.md, unified-inbox.screen.md) since they're conversation-shaped.
Related
- O §N7 — parent surfaces.
- surface-tryst.brief.md §8 — explicitly N/A on Tryst (corrected 2026-05-18).
- surface-screening.brief.md — submission-target sibling category (N6).
- add-blocklist-entry.screen.md — block-reviewer route.
- Brief N — coop intel on reviewers.
- Brief I — every ingestion + response + flag = audit row.
- analytics-dashboard.screen.md — review trend in T panel.
Out of scope
- Per-aggregator individual connect screens (deferred; reuse the credentials-entry pattern per
tryst-connect.screen.md). - AI rating-bombing-classifier — defer.
- Quinn-initiated review-request prompts to clients (cross-platform; deferred).