/* global React, Icon, Logo */ const PageLanding = ({ onNav }) => { return (
{/* Hero */}
{/* Three audience paths */}
Three doors in

Pick the path that fits you.

Whether you're placing clients, looking for yourself, or have a room to share — the next step is one click.

onNav("login-seeker")} /> onNav("search")} /> onNav("login-lister")} />
{/* Live impact band */}
Live · updated hourly

The network at a glance.

Real numbers from the Roomly platform — pulled from production at {new Date().toLocaleTimeString([], { hour: "2-digit", minute: "2-digit" })} today.

{[ { k: "12,840", l: "Verified rooms", s: "+186 this week", trend: "up" }, { k: "8,317", l: "Guests housed in 2024", s: "94% retention at 90 days", trend: "up" }, { k: "$3.2M", l: "Paid to hosts last month", s: "Avg. $720/room", trend: "flat" }, { k: "14 days", l: "Median search to move-in", s: "Down from 41 in 2023", trend: "up" }, ].map(s => (
{s.l} {s.k} {s.trend === "up" && } {s.s}
))}
{/* How it works */}
How it works

From search to keys, in four steps.

Watch a 90-second walkthrough
{[ { n: "01", t: "Search verified rooms", d: "Filter by city, rent, accessibility, vouchers, and program eligibility." }, { n: "02", t: "Match with a host", d: "Send an introduction. Hosts respond within 24 hours on average." }, { n: "03", t: "Run background & docs", d: "Voucher verification and identity checks happen in-platform — no faxes." }, { n: "04", t: "Move in", d: "Sign the standard Roomly room-rental agreement. Payouts begin day one." }, ].map((s, i) => (
{s.n}

{s.t}

{s.d}

))}
{/* Voices — three audience testimonials */}
Voices from the network

Different paths in, same outcome.

{[ { role: "Case worker · Phoenix", quote: "I used to spend three weeks of phone calls placing one client. With Roomly I shortlist five rooms in an afternoon and a guest is moved in by Friday.", name: "Renée Alvarez", org: "Maricopa County Housing Stability", placed: "47 clients placed", }, { role: "Guest · Oakland", quote: "I had my voucher for eight months and nowhere to use it. Marian responded the same day. I've been in the room four months and I'm working again.", name: "Devon T.", org: "HUD-VASH voucher", placed: "Moved in Jan 2025", }, { role: "Host · Houston", quote: "The screening removed every awkward conversation. Payouts hit my account on the first. I've hosted three guests in a row with no gaps.", name: "Yolanda P.", org: "Hosts 2 rooms", placed: "$1,560/mo income", }, ].map(t => (
{t.role}
“{t.quote}”
{t.name.split(" ").map(w => w[0]).join("")}
{t.name} {t.org} · {t.placed}
))}
{/* Trust band */}
Trust by design

Every host is verified. Every guest is supported.

Hosts complete identity, property, and safety checks before listing. Guests are supported by case workers, recovery programs, or our in-house housing navigators.

{[ { i: "shield", t: "ID & background", d: "All hosts verified through Persona." }, { i: "key", t: "Property check", d: "Photos & inspection within 14 days." }, { i: "users", t: "Case worker support", d: "Live housing navigators, 7am–9pm." }, { i: "cash", t: "Voucher network", d: "HUD-VASH, Section 8, EHV accepted." }, ].map(c => (

{c.t}

{c.d}

))}
{/* Partner agencies + voucher programs */}
Partner network

428 housing agencies route clients through Roomly.

From county housing authorities to recovery programs to VA case management — agencies use the same shared inventory and submit applications without leaving their workflow.

{[ "Maricopa County HSD", "VA Greater LA", "Houston Coalition", "Atlanta Mission", "Project Home (PHL)", "Bay Area Community Svc.", "Cleveland Housing Net.", "Chrysalis", "Catholic Charities USA", ].map(n => (
{n.split(" ").map(w => w[0]).filter(c => /[A-Z]/.test(c)).slice(0, 2).join("")} {n}
))}
Vouchers & programs accepted {["HUD-VASH", "Section 8 (HCV)", "Emergency Housing Voucher", "FUP", "Mainstream", "RRH", "PSH", "TBRA", "State subsidies"].map(v => ( {v} ))}
{/* FAQ */}
FAQ

Common questions, plain answers.

Don't see yours? Talk to a housing navigator →

{[ { q: "Do I need good credit to rent through Roomly?", a: "No. Roomly does not run credit checks. We verify identity, voucher status if applicable, and eviction history within the last three years. Hosts agree to these standards when they list." }, { q: "How are vouchers paid?", a: "If you have a HUD voucher, the housing authority pays the host directly each month and you cover any tenant portion via Roomly. We handle the W-9, HAP contract, and inspection scheduling." }, { q: "Can I bring a pet, child, or partner?", a: "Each listing specifies what's allowed. Filter for pet-friendly, family-friendly, or two-occupant rooms. Hosts can require a pet deposit but most don't." }, { q: "What if a placement doesn't work out?", a: "Either party can end the agreement with 14 days' notice. Roomly will help relocate the guest within 7 days at no cost. We track this — our re-housing rate is 96%." }, { q: "How are hosts vetted?", a: "Identity verification through Persona, property photos, a 14-day inspection window, and references. We re-verify every 12 months and remove hosts who fall below 4.0 stars." }, { q: "Is Roomly free?", a: "Free for guests and case workers, always. Hosts pay a 6% service fee on collected rent — that covers screening, inspections, the payout system, and 24/7 dispute support." }, ].map((f, i) => ( ))}
{/* Final CTA */}
Ready when you are

Someone is looking for a room tonight. Maybe it's yours.

List in 8 minutes. We'll handle the rest — verification, payments, paperwork, and a 24/7 housing navigator on call.

{[ { k: "8 min", v: "to publish a listing" }, { k: "$0", v: "to list — fees only on rent collected" }, { k: "48 hrs", v: "from rent received to your bank" }, { k: "24/7", v: "support for hosts & guests" }, ].map(s => (
{s.k}
))}
); }; const SearchSegment = ({ label, placeholder, icon, wide }) => (
{label}
{placeholder}
); const PathCard = ({ tone, eyebrow, title, body, cta, meta, icon, onClick, featured }) => (
{featured && Most common}
{eyebrow}

{title}

{body}

{meta.map(m => (
{m}
))}
); const FAQItem = ({ q, a, startOpen }) => { const [open, setOpen] = React.useState(!!startOpen); return (

{a}

); }; window.PageLanding = PageLanding;