Each wallet profile page aggregates the wallet's role-specific stats (as borrower and as lender) plus pre-window activity (loans whose origination predates our scan window — we only see terminal events). Both roles render even if only one is populated, with a "Pre-window only" badge when the wallet's entire history sits in the pre-window cohort.
Primary role classification (lender / borrower / mixed) is determined by which role has more loan count. Mixed surfaces only when both sides have funded-window activity, since pre-window-only activity isn't a strong signal of intent.
Wallets are crawlable — each profile is a standalone page in the sitemap with schema.org Person and Dataset markup. Recent loan rows include counterparty links to their own profile pages, so a crawler walking the directory can discover the entire graph. There is no opt-out for indexability today, since on-chain addresses are public; we can implement one if requested via the dashboard's feedback channel.
Username resolution falls back through saved_wallets (display_name → username → truncated 0x...). As Trevor and other users save wallets with custom names, those propagate to the profile page's heading and to counterparty links across the dashboard.
The /analytics/wallets index is now a hub — above the per-wallet directory grid, the page renders a roll-up powered by analytics_wallets_overview. The KPI strip shows total wallets, active-7d, total volume, and average loans per active wallet. Volume-tier segments slice the directory four ways: Whales ($50K+ peak volume), Active ($5K+), Casual ($100+), and Dust (under $100). Role buckets and recency cohorts (24h / 7d / dormant 30d+) sit beside the segment bar. The borrowed-equals-lent invariant holds at the platform level: every dollar borrowed is a dollar lent, so total_borrowed_usd == total_lent_usd in the totals — the KPI strip surfaces the borrowed figure as "Total volume" with a sublabel calling out the invariant. Wallets that act as both borrower and lender count once in wallets_total but appear in both role buckets, so borrowers + lenders − both = wallets_total.