# BF agency flow v2 Home tuition only: the tutor travels to the student's tuition address. No online tuition branch. ```mermaid flowchart TD A[Role selection] --> B[Student OTP login] A --> T[Tutor OTP login] B --> C[Class, board, required subjects] C --> D[Tuition address and preferred timing] D --> E[Nearby tutors: 5 km] E --> F{Suitable tutor?} F -->|No| G[Expand to 10 then 15 km] G --> H{Suitable tutor?} H -->|No| I[Agency area-matching request] H -->|Yes| J[Tutor preference] F -->|Yes| J J --> K[Lower / Middle / Upper / Premium] K --> L[6 months / 1 year / 2 years / 4 years] L --> M[Agency verifies availability and quote] M --> N[Student agrees terms and payment] N --> O[Confirmed home tuition] T --> U[Qualifications, classes and subjects] U --> V[Own location, service radius and availability] V --> W[Admin-configured registration fee] W --> X[Agency verification and activation] X --> Y[Local assignment availability request] Y --> Z{Tutor response} Z -->|Accept| M Z -->|Decline or alternate time| M ``` Agency quote and tutor availability may require a review loop. Do not collect an undefined amount. Payment gateway processing/success/failure and cancellations require additional production states. Agency matching is also available directly from the home screen without choosing a tutor. Package-first entry may browse tiers, but agency confirms subject coverage and availability before finalising. Recommended assumption: student selects a preferred tutor; admin confirms the actual assignment. This prevents a paid package from implying guaranteed availability. Demo/trial is not a mandatory step in v2 because BF has not confirmed a trial policy. ## Attendance after assignment ```mermaid flowchart TD A[Assigned home class] --> B[Tutor requests attendance with current location] B --> C[Resolve zone and check session locations] C --> D{Parent can verify student presence?} D -->|Yes and checks pass| E[Parent confirms and receives OTP] D -->|No or location unresolved| F[Tutor requests assigned-zone review] F --> G{Admin verifies presence and evidence?} G -->|No| H[Pending or rejected with reason] G -->|Yes| I[Admin issues attendance OTP] E --> J[Tutor submits session OTP] I --> J J --> K{Code and required checks valid?} K -->|No| L[Retry or fresh verification] K -->|Yes| M[Atomic student and tutor presence records] M --> N[Notify both accounts and record audit] ```