Home / Focused PRD

PRD 01 — Booking Flow

Status: Business review closed on 2026-09-02. Implementation intentionally deferred while the remaining PRDs are reviewed.

Goal

A client logs in, completes the required profile, chooses an individual counseling service, chooses a slot, completes the booking form, and receives the next payment instruction.

Decisions locked

Client flow

  1. Client opens the website.
  2. Client chooses Login with Google.
  3. On first login, client completes their profile.
  4. Required profile data is validated before the client can continue.
  5. Client chooses Konseling Individual.
  6. Client chooses the individual counseling mode: - Online → Chat — Rp99.000. - Online → Call — Rp125.000. - Offline → individual counseling — Rp200.000, at Havana Park Blok H-3, Kepuharjo, Karangploso, Kab. Malang, 65152, during 09.00–12.00 or 16.00–20.00 WIB.
  7. Client chooses a future slot.
  8. Client completes the counseling intake form.
  9. Client reviews the booking summary: psychologist, service, mode, date/time, duration, price, and contact data.
  10. Client confirms consent and submits.
  11. System creates Booking + immutable OfferSnapshot + SlotHold + CapacityReservation atomically.
  12. Booking enters pending_manual_payment and shows the manual payment handoff.

Offline individual counseling is in launch scope with the price, schedule, and venue specified above. Publication still needs the final client-facing arrival instructions.

Reference UX: profile and address

Source files:

Profile section — reference-informed fields

The profile reference shows these fields:

For Seraya:

Address section — reference-informed fields

The profile reference shows a separate Alamat Saya section:

For Seraya:

Reference UX: counseling intake

The counseling-form reference shows this sequence:

  1. Pilih Metode Konseling.
  2. Active Gmail instruction.
  3. Topic selection with multiple choices.
  4. Problem description.
  5. Returning-client checkbox.
  6. Expected outcome.
  7. Informed-consent checkbox.
  8. Continue to payment.

Seraya mapping

Reference element Seraya decision
Chat Keep as Chat, Rp99.000
Voice call Map to Call, Rp125.000
Video call Exclude from current launch scope
Active Gmail Login uses Google SSO; use the verified account email rather than asking for a second email by default
Multiple topics Required; multiple selections are supported; final taxonomy must be versioned
Problem description Required; non-clinical intake only; minimum 50 characters and defined maximum length
Minimum 50 characters Required for the problem description
Returning client Required yes/no field
Expected outcome Required operational intake field; not a clinical record
Informed consent Keep as required, versioned consent acknowledgement
Continue to payment Map to the manual invoice/WhatsApp payment handoff, not an online gateway

Account/profile data contract

Required for every client profile

The profile screen uses two grouped sections: Profil Saya and Alamat Saya, following the approved reference structure. All listed fields are required before the client can book.

Address is collected because offline individual counseling is in launch scope. The product must still document the approved operational purpose and retention treatment for the address fields.

Booking-form data contract

Required

Required counseling intake for every booking

The problem description and expected outcome are operational intake inputs only. They must not become clinical records, diagnosis, assessment results, transcripts, or session notes. The UI must display a clear non-clinical boundary and enforce a defined maximum length.

Catalog

Mode Service Price Status
Online Chat Rp99.000 Confirmed for launch scope
Online Call Rp125.000 Confirmed for launch scope
Offline Individual counseling Rp200.000 Confirmed for launch scope; Havana Park, 09.00–12.00 and 16.00–20.00 WIB

There is no couple offering in the current checkout. There is no assessment offering in this PRD. There is no online video-call service in the current launch scope.

Authentication and state model

Authentication/profile gate:

anonymous → google_authenticated → profile_incomplete → profile_complete

Booking/payment handoff:

profile_complete → choose individual service → choose slot → complete intake → pending_manual_payment → awaiting_confirmation → confirmed

A client must not reach the booking-submit command without an authenticated identity and a complete required profile. Google login alone does not create a booking. An authenticated client may only access their own profile and bookings.

Validation and rules

Acceptance criteria

Authentication

Profile

Catalog and booking

Reference-informed intake

Privacy boundary

Still open for this PRD

References

Change log

Decision checkpoint

Before implementation changes, review only these questions:

  1. How should online Chat/Call access be delivered, and when?
  2. What are the client arrival/check-in instructions for Havana Park?
  3. What should the client do if they are late or cannot access the session?
  4. Is the final UI label exactly Chat and Call across all surfaces?

Until these are answered, the locked implementation scope is Google login + all required profile/intake fields + individual online Chat/Call + individual offline counseling at Rp200.000 in the specified schedule/venue + 2-hour cutoff. The remaining instruction details may use an explicitly marked placeholder during implementation, but must be resolved before production publication.

Status of this PRD

Business review closed. Implementation intentionally deferred.

The required fields, service prices, offline schedule/venue, and launch branches are product-approved. The remaining session-instruction and privacy/copy details are tracked for later implementation/production hardening and are not being decided in this review.

Notes

The reference screenshots are archived as visual inspiration and field inventory only. Seraya's final UI, copy, requiredness, privacy treatment, and data retention must be approved independently.