Overview
Ledn's email-based loan repayment process with 10-minute countdown timers drove 68% abandonment and 60% of support tickets. I built in-platform repayment with visual loan health indicators and eliminated time pressure, scaling operations 10x (50 to 500+ loans) with the same team while reducing liquidations by 40% through proactive risk warnings.
Problem
Ledn's email-based loan repayment couldn't scale. Users had 10 minutes to reply "I ACCEPT" via email or start over. At 500+ active loans, this manual process drove 60% of support tickets and prevented the operations team from focusing on actual customer problems.
The old flow: email quote with 10-minute countdown timer
The pattern broke down: request quote, wait for email, panic about countdown, reply "I ACCEPT," hope it processes before expiration. Miss the window? Start from scratch.
graph LR
Start([Initiate repayment]):::startNode
Email[Send email quote]:::systemAction
Check{Responds within
10 mins?}:::decision
Process([Payment processed]):::success
Expire[Quote expires]:::systemAction
Abandon([Give up]):::error
Restart[Start over]:::retry
Start --> Email
Email --> Check
Check -->|Yes| Process
Check -->|No| Expire
Expire -.->|68%| Abandon
Expire -.->|32%| Restart
Restart -.-> Email
classDef startNode fill:#FEF3C7,stroke:#F59E0B,stroke-width:2px,color:#92400E
classDef systemAction fill:#DBEAFE,stroke:#3B82F6,stroke-width:2px,color:#1E3A8A
classDef decision fill:#E9D5FF,stroke:#A855F7,stroke-width:2px,color:#6B21A8
classDef success fill:#D1FAE5,stroke:#10B981,stroke-width:2px,color:#065F46
classDef error fill:#FEE2E2,stroke:#EF4444,stroke-width:2px,color:#991B1B
classDef retry fill:#FED7AA,stroke:#F97316,stroke-width:2px,color:#9A3412 Old flow: email-based quotes created anxiety loops and 68% abandonment
User interviews with 12 active borrowers confirmed timer anxiety as the primary pain point, not repayment complexity. The LTV ratio was visible in their account but meaningless: users couldn't tell if they were safe or at risk of liquidation. Email quote breakdowns had no visual hierarchy, forcing users to pull out calculators to understand what they'd pay.
I focused the solution on three goals: eliminate time pressure entirely, make loan health status actionable (not just informational), and turn financial math into visual math.
Solution
I built an in-platform repayment system that removed time pressure and made loan health actionable.
graph LR
Start([Initiate repayment]):::startNode
CheckLTV[Check loan status]:::systemAction
Choose[Select payment method]:::systemAction
Confirm[Review & confirm]:::systemAction
Complete([Payment processed]):::success
Start --> CheckLTV
CheckLTV --> Choose
Choose --> Confirm
Confirm --> Complete
classDef startNode fill:#FEF3C7,stroke:#F59E0B,stroke-width:2px,color:#92400E
classDef systemAction fill:#DBEAFE,stroke:#3B82F6,stroke-width:2px,color:#1E3A8A
classDef success fill:#D1FAE5,stroke:#10B981,stroke-width:2px,color:#065F46 New flow: linear path from start to finish, no loops, no time pressure
Made loan health visible, not just informational
The LTV ratio existed but told users nothing. I redesigned it as a color-coded status system (green = safe buffer, yellow = monitor, red = act now before liquidation), mirroring how users already think about risk: traffic lights. This made the abstract number actionable.
Before: LTV was a number. After: color-coded states show exactly when to act
Turned email math into visual math
Repayment confirmations were walls of text in email. I redesigned them as simple subtraction: Bitcoin collateral amount - loan amount = what you keep.
Visual breakdown replaced confusing email calculations
Shipped pragmatic, not perfect
Banking limitations meant some payment methods couldn't be fully automated. I had a choice: wait for full automation across all payment types, or ship a mix of automated and manual flows now. I chose pragmatic. Crypto liquidations (highest volume, instant settlement, biggest support burden) got full automation. Bank transfers got a guided manual flow with clear next steps. This let us ship in 2020 and solve the actual problem (time pressure and confusion) without waiting for banking APIs to catch up. Delaying would have left the broken email flow in production for another year.
Outcome
Repayment-related support tickets dropped 60%. The operations team scaled from 50 to 500+ active loans with the same headcount, saving 15+ hours per week previously spent coordinating individual repayments. Proactive LTV warnings reduced liquidations by 40%, protecting customer assets that would have been lost to confusion.
What worked, what I'd change
The traffic light LTV system worked because it matched how users already think about risk. Adoption was immediate, no education needed. Comparing old and new flows as diagrams during stakeholder reviews made the improvement obvious in a way that written specs couldn't.
I'd push harder on bank transfer automation earlier. We shipped pragmatic manual flows to avoid delaying the launch, but they became a technical debt burden. If I'd pushed on banking API integrations in parallel with design, we could have shipped full automation within 6 months of launch instead of living with partial manual flows longer than necessary.