Scope: The user lands on /personal-loans, enters email, and completes the application.
Out of scope: welcome-back, verify-otp, returning customer, deeper prepop, cross-product entry.
Agent Use
Use this file as the legacy product-flow source of truth when adding or editing AppFlow steps, validating step order, checking branch logic, or comparing the gallery registry against the regular personal-loan path.
This file is not the implementation target. Gallery implementation lives in apps/design-library/src/gallery/page/appflow/personalLoanFlow.ts and apps/design-library/src/gallery/page/appflow/screens/.
When To Use
- The task adds a new AppFlow page or screen.
- The task edits an existing AppFlow step, label, progress state, branch, or outcome.
- The task validates whether
personalLoanFlow.tsmatches the regular legacy path. - The task asks about employment branches, verification branches, skipped upload recovery, or terminal outcomes.
When Not To Use
- The task is a direct Figma-to-code implementation that does not alter flow order, labels, branches, or outcomes.
- The task is a reusable component or gallery documentation page outside AppFlow.
- The task asks for a target-user UX variant; use
user-insights-report.mdandux-strategy-logic.mdfirst, then this file only if AppFlow structure is affected.
AppFlow Usage Note
Preserve the regular path unless the user explicitly asks for a branch or variant. If changing AppFlow structure, update the gallery registry and confirm the route under /library/page/appflow/personal-loan/<slug>.
Assumptions (typical production path):
purposeOfLoanVariant === 'true'isDeeperPrepop === false- Employment: Employed or Self Employed
- Twilio SMS works (
twilioFailed === false) VITE_FLINKS_ENABLEDand financial institution selector enabled- Not already
leadSubmittedat contact-phone
Phase overview
| Phase | Steps | What happens |
|---|---|---|
| A — Customer personal information | 1–12 | Applicant profile through date of birth |
| B — Verification | 13–17 | SMS code → bank (Flinks) → verify identity |
| C — Additional verification | 18–21 | Verify address → verify income → analyzing (recovery path if uploads skipped) |
| D — Outcomes | 22–24 | Success or decline (conditional after analyzing) |
Full step map (regular path)
| Step | URL | Page title | Progress label | Next (regular) |
|---|---|---|---|---|
| 1 | /personal-loans | Apply in 3 Minutes and Get Up to $35,000 Transferred Today | 3 minutes from finish | → name |
| 2 | /personal-loans/name | What's Your Name? | 3 minutes from finish | → loan-amount |
| 3 | /personal-loans/loan-amount | How Much Would You Like to Borrow? | 3 minutes from finish | → purpose-of-loan * |
| 4 | /personal-loans/purpose-of-loan | What is the Purpose of Your Loan? | 3 minutes from finish | → credit-rating |
| 5 | /personal-loans/credit-rating | What Is Your Estimated Credit Score? | 2 - 3 minutes from finish | → employment-status |
| 6 | /personal-loans/employment-status | What Is Your Employment Status? | 2 - 3 minutes from finish | → income-details-frequency † |
| 7 | /personal-loans/income-details-frequency | Income Details — Please Select One: | 2 minutes from finish | → income-details-amount |
| 8 | /personal-loans/income-details-amount | (pay frequency title) | 2 minutes from finish | → income-duration |
| 9 | /personal-loans/income-duration | How Long Have You Been Receiving This Income? | 1 - 2 minutes from finish | → home-address |
| 10 | /personal-loans/home-address | What Is Your Home Address? | 1 - 2 minutes from finish | → homeowner-status |
| 11 | /personal-loans/homeowner-status | Are You a Homeowner? | 1 - 2 minutes from finish | → date-of-birth |
| 12 | /personal-loans/date-of-birth | What Is Your Date Of Birth? | 1 minute from finish | → contact-phone |
| 13 | /personal-loans/contact-phone | How Can We Reach You? | Less than 1 minute from finish | → contact-code |
| 14 | /personal-loans/contact-code | Enter Your Verification Code | Less than 1 minute from finish | → financial-selector |
| 15 | /personal-loans/financial-selector | Select Your Bank | Less than 1 minute from finish | → verify-bank |
| 16 | /personal-loans/verify-bank | Verify Your Income And Get Approved Today! | Less than 1 minute from finish | → verify-identity |
| 17 | /personal-loans/verify-identity | Verify Your Identity | Less than 1 minute from finish | → verify-address ‡ |
| 18 | /personal-loans/verify-address | Verify Your Address | Less than 1 minute from finish | → verify-income (if POI required) or analyzing |
| 19 | /personal-loans/verify-income | Verify Your Income | Less than 1 minute from finish | → analyzing-application |
| 20 | /personal-loans/analyzing-application | Personalizing Your Offer | (no progress bar) | → Phase D outcome § |
| 21 | /personal-loans/complete-skipped-steps | You're so close, {firstName}! | Less than 1 minute from finish | (recovery — skipped POA + POI uploads) |
| 22 | /personal-loans/application-success | Application Success | Finished! | End (approved) |
| 23 | /personal-loans/declined-try-foundation | Declined — Try Foundation | Finished! | End (declined · Foundation cross-sell) |
| 24 | /personal-loans/declined-sorry | Declined — Sorry | Finished! | End (declined) |
* Step 4 only when purposeOfLoanVariant === 'true'. If 'false', step 3 → credit-rating.
† See employment branches below.
‡ After verify identity, Phase C is conditional — primary path is verify-address → verify-income → analyzing.
§ After analyzing, Phase D routes to one of three outcomes — see Phase D section below.
Employment branches (step 6 varies)
| User selects | Path after step 6 |
|---|---|
| Employed / Self Employed | 7 → 8 → 9 → 10… |
| Retired/Pension / Long Term Disability | Skip 7 → income-details-amount → 9 → 10… |
| Employment Insurance | employment-status-insurance (if needed) → income-details-amount → 9 → 10… |
| Other | employment-status-other (if needed) → income-details-amount → 9 → 10… |
| No Current Income | Skip income → home-address (step 10) |
Phase C — Additional verification
Primary path (when docs are required):
verify-address → verify-income → analyzing-application → application-success
| Scenario | Route |
|---|---|
| POA + POI required | verify-address → verify-income → analyzing → success |
| POA only | verify-address → analyzing → success |
| POI only | verify-income → analyzing → success |
| No extra docs | analyzing → success |
Recovery path (not in the linear flow map row):
| Scenario | Route |
|---|---|
| User skipped both verify-address and verify-income uploads | complete-skipped-steps → resume uploads → success |
Extra doc steps when collectAllPLDocs is true (empty or "Easy" eligibility).
Phase D — Outcomes
After analyzing-application, eligibility routes to one of three terminal pages (not a linear sequence):
| Outcome | Step | URL | When |
|---|---|---|---|
| Approved | 22-1 | /personal-loans/application-success | Application approved |
| Declined · Foundation | 22-2 | /personal-loans/declined-try-foundation | Declined — offer Foundation cross-sell |
| Declined · Sorry | 22-3 | /personal-loans/declined-sorry | Declined — empathetic close |
The flow map shows Success on the primary row; decline pages appear in the conditional outcome branch below Phase D.
Not in regular flow
| URL | Reason |
|---|---|
| /personal-loans/welcome-back | Returning customer |
| /personal-loans/verify-otp | OTP before welcome-back |
| /personal-loans/sorry | Decline / error |
| /personal-loans/talk-to-agent | Agent callback |
Source of truth in code
- Gallery registry:
apps/design-library/src/gallery/page/appflow/personalLoanFlow.ts - Gallery screens:
apps/design-library/src/gallery/page/appflow/screens/ - Gallery route:
apps/design-library/src/app/library/page/appflow/personal-loan/[slug]/ - Production reference paths:
/personal-loans/*