Skip to main content

Ops Portal

Operations Command Center. 98% built, 51 of 52 documented modules live in production. The internal staff workspace for moderation, dispute resolution, support, and growth.

Module tree

The 6 module groups

1. Mission Control (4 modules)

Real-time platform overview, the homepage of ops.

ModulePurpose
OverviewLive KPIs, total users, active listings, verification queue, total orders
GMV TrendGross Merchandise Value over 7d, 1m, 6m, 1y
CategoriesCategory mix breakdown
HeatmapShipping hub heatmap by Indonesian city

2. Operations (10 modules)

Day-to-day platform health and customer service.

ModuleWhat ops staff does here
Support InboxManage user-submitted support tickets
Listing ModerationApprove, reject, or flag new listings
Brand AuthenticationVerify luxury brand listings
Dispute ResolutionDecide buyer vs seller disputes
ID VerificationReview KTP submissions, approve or reject
Content ReportsProcess user-reported content, backed by content_reports table. Was non-functional from 2026-04-16 until PS-122 fix (2026-05-02): table never created despite migration being marked applied, and GET /admin/reports was reading old KV store.
Duplicate DetectionReview auto-flagged duplicate listings
Returns and RefundsProcess return requests, release refunds 🟡 partial
Review ModerationManage flagged or suspicious reviews
Live MonitorReal-time activity stream

3. Commerce (7 modules)

Transaction-side tooling.

ModulePurposeStatus
Escrow ManagerView escrow KPIs, 7-day trend chart, BPF revenue, manual timer check✅ Fully wired (PS-359→PS-361, 2026-05-12)
Logistics HubShipment list with enriched order context, late-order tracking✅ Fully wired (PS-362, 2026-05-12)
Logistics HeatmapRegion delivery speed map, courier health, waybill management✅ Fully wired (PS-363→PS-365, 2026-05-12)
Voucher EngineCreate and manage promo codes (flat, %, free shipping, BPF waiver)✅ Fully wired (PS-366→PS-367, 2026-05-12)

4. Growth & Analytics (11 modules)

Marketing operations and analytics.

ModulePurposeStatus
Conversion FunnelView → like → checkout → purchase analytics; daily/weekly/monthly period selector✅ Fully wired (PS-396, 2026-05-13)
Seller AnalyticsPer-seller performance dashboards✅ Fully wired (PS-400, 2026-05-13)
Seller QualitySeller score tracking and tier override✅ Fully wired
Paid PromotionsBoost product management✅ Fully wired
Growth ToolsBoost grant/revoke and fee waiver grant/revoke✅ Fully wired
Campaign ManagerMarketing campaign creation and tracking✅ Fully wired (PS-398, 2026-05-13, administrator role added)
A/B TestsActive experiment monitoring and creation✅ Fully wired (PS-394, 2026-05-13, New Test form + backend route)
Broadcast CenterCreate and send push/email broadcasts✅ Auth wired (PS-399, 2026-05-13, administrator role added); actual dispatch is a separate backlog item
Email TemplatesEdit and persist Resend email templates✅ Fully wired (PS-393, 2026-05-13, save/delete persist to backend)
Push NotificationsTargeted push management with delete✅ Fully wired (PS-397, 2026-05-13, send awaits API; DELETE endpoint added)
SekenPulse EngineRecommendation engine, not yet active🟡 Disabled (PULSE_ENABLED=false); tab shows coming-soon placeholder (PS-395, 2026-05-13)

5. People (4 modules)

User and team management.

ModulePurposeStatus
User DirectorySearch, filter, verify, suspend, and ban users✅ Fully wired (PS-376→PS-378, 2026-05-13)
Account ManagerEdit profiles with full side-effect chain✅ Fully wired (PS-379, 2026-05-13)
Hiring PanelReview job applications submitted via careers✅ Fully wired (PS-380, 2026-05-13)
Pre-Launch WaitlistManage waitlist signups; admin-gated delete✅ Fully wired (PS-402, 2026-05-13)

6. System (9 modules)

Platform configuration and observability.

ModulePurposeStatus
User Guide and SOPsInternal documentation for ops staff
Platform SettingsGlobal feature flags and config✅ Fully wired (PS-406, 2026-05-14, security tab routes to PUT /admin/settings/security; SECURITY_KEYS no longer silently dropped; PS-404 BRAND-01 fix: Dark Purple theme swatch → Dark Teal #006D77)
Marketing & AnalyticsGTM, Meta Pixel, TikTok Pixel IDs + tracking toggle✅ Fully wired (PS-401, 2026-05-13, administrator role added)
Prototype Flow MapUX flow visualization
Audit LogComplete record of all ops actions✅ Fully wired (PS-403, 2026-05-14, CSV export fixed: POST /admin/audit-log/export with { from, to, reason } body; date-range + reason modal; PS-404 BRAND-01 fix: dispute_resolved badge → #3B82F6)
Webhook MonitorXendit and Biteship webhook delivery status✅ Fully wired (PS-405, 2026-05-14, retry awaits API; error toast on failure; per-webhook loading state; list refreshes from backend on success)
Inventory HealthStale listing detection✅ (PS-404, 2026-05-14, BRAND-01 fix: no_photos → #6B7280, Pricing Issues KPI → #3B82F6)
Infra ToolsCron jobs, data purges, system maintenance✅ (PS-404, 2026-05-14, BRAND-01 fix: Order Index icon, Run Backfill button, Passport ID info icon → #3B82F6)
Fraud MonitorReal-time fraud cases, 5-state machine (open → investigating → confirmed / rejected → resolved), inline transition UI, role-gated to administrator / fraud_ops, see page 18✅ Fully wired (PS-373→PS-375, 2026-05-12)

Ops AI bot

Built into the platform sidebar. Available to all logged-in ops staff.

Capabilities:

  • Answer SOP questions
  • Help navigate to specific modules
  • Explain platform policies
  • Draft response templates for support tickets

Safety:

  • PII redaction layer scrubs user data before sending to OpenAI
  • Rate limiting per staff member
  • All conversations logged to audit_log

Cost monitoring: OpenAI token usage tracked per staff member.

Common ops workflows

Workflow 1, KTP review

  1. Pending KTP appears in ID Verification queue
  2. Staff reviews OCR-extracted data vs uploaded photo
  3. Click approve, reject (with reason), or request resubmit
  4. User notified via Resend
  5. Audit logged to moderation_override_log

Workflow 2, Dispute resolution

  1. DISPUTE_OPEN order surfaces in Dispute Resolution queue
  2. Staff reviews:
    • Listing photos vs delivered item photos
    • Chat history
    • Buyer purchase + dispute history
    • Seller reputation + dispute history
  3. Decide: buyer wins, seller wins, or split
  4. Refund or release as appropriate
  5. Both parties notified
  6. Audit logged

Workflow 3, Listing moderation

  1. New listing enters moderation queue
  2. Auto-flags for review (luxury brand, suspicious pricing, banned keywords)
  3. Staff approves, rejects, or requests edits
  4. Seller notified
  5. Listing goes live or stays hidden

Workflow 4, Content report moderation

  1. User submits a report via the app (POST /reports), targets a listing, seller, or user
  2. Report row created in content_reports (status: open)
  3. Report surfaces in Content Reports queue (GET /admin/reports)
  4. Staff reviews: reporter identity, target listing/seller, reason + details
  5. Staff action via PUT /admin/reports/:id with action: investigate, resolve, or dismiss
  6. Status updated to investigating / resolved / dismissed; admin note and resolved_by recorded

Workflow 5, Duplicate Detection review

  1. Ops staff opens Duplicate Detection panel in ops.pasarseken.id → Operations
  2. Click Scan: POST /admin/duplicates/scan fires:
    • Clears all status = "pending" groups (idempotent rescan, PS-301)
    • Groups active listings into per-brand buckets (O(M²) within bucket, not O(N²): PS-305)
    • Scoring: titleSim × 0.5 + brandMatch (+30pts) + priceSim × 0.2, threshold ≥ 70
    • Image similarity is not implemented: title, brand, and price only (PS-300)
    • Saves groups to duplicate_groups table with reference_title, reference_brand, reference_price, reference_image as dedicated columns (PS-306)
  3. Staff reviews each group, filter tabs: Pending (red badge), Reviewed (cyan badge, PS-303), Resolved
  4. Per-group actions, all persisted to backend immediately (PS-298):
    • Merge: sets all duplicates to draft, marks group status = "resolved", action_taken = "merged"
    • Undo Merge: appears only on merged groups; reverts to status = "pending" (PS-304)
    • Remove Duplicates: sets duplicates to draft, marks group status = "resolved", action_taken = "removed_duplicates"
    • Flag for Review: marks group status = "reviewed", action_taken = "flagged" (no listing status change)
    • Keep All: marks group status = "resolved", action_taken = "kept_all" (no listing status change)
  5. reviewed_at timestamp written to dedicated DB column on every action (PS-299)
  6. Avg Similarity KPI card shows 0 (not NaN) when no duplicates have been scored (PS-308)

Workflow 6, Support ticket response

  1. User submits ticket via help.pasarseken.id
  2. Ticket appears in Support Inbox with category
  3. Staff drafts response (AI bot can suggest template)
  4. Send via Resend
  5. Mark ticket resolved or escalate

Permission requirements

Access to ops.pasarseken.id requires role in (ops_admin, finance_admin, superadmin).

ActionOps adminFinance adminSuperadmin
View all modules🟡 read-only
Approve KTP
Resolve disputes
Suspend users
Approve disbursements
Modify roles

Status summary

AspectStatus
Mission Control✅ Live
Operations modules✅ 9 of 10 live, Returns 🟡 partial
Commerce modules✅ All live (7 modules)
Growth modules✅ All live
People modules✅ All live
System modules✅ All live
AI bot✅ Live (gpt-4o-mini + PII redaction)
Total51 of 52 modules live (98%)

Where to look in the codebase

What you wantWhere it lives
Ops routingsrc/app/routes.ts (createOpsRouter)
Ops pagessrc/app/pages/ops/
Ops componentssrc/app/components/ops/
AI botsrc/app/components/ops/StaffAIAssistant.tsx
AI bot adapterinfrastructure/adapters/OpsBotAdapter.ts

Next: Cuan Portal →