Home » own your zip code . Own your own pipeline
Table of Contents:
1. Executive Overview & Market Impact
2. Core Execution Strategies
3. Conversion Tech Stack & Next Steps
:root{
–bg:#0b0f17;
–bg-2:#0f1623;
–card:#131b2b;
–card-2:#0f1724;
–text:#e9edf5;
–muted:#9aa3b2;
–accent:#38bdf8;
–accent-2:#0ea5e9;
–accent-glow:rgba(56,189,248,.18);
–success:#34d399;
–warning:#fbbf24;
–danger:#f87171;
–border:#1f2a3d;
–radius:14px;
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{
font-family:system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif;
background:var(–bg);
color:var(–text);
line-height:1.55;
}
a{color:var(–accent);text-decoration:none}
img{max-width:100%;display:block}
.container{width:92%;max-width:1100px;margin:0 auto}
/* Nav */
header{
position:sticky;top:0;z-index:50;
background:rgba(11,15,23,.85);
backdrop-filter:saturate(140%) blur(10px);
border-bottom:1px solid var(–border);
}
nav{
display:flex;align-items:center;justify-content:space-between;
padding:18px 0;
}
.logo{
font-weight:800;letter-spacing:-.02em;font-size:1.25rem;
background:linear-gradient(135deg,var(–text),var(–accent));
-webkit-background-clip:text;-webkit-text-fill-color:transparent;
}
.nav-links{display:flex;gap:22px;align-items:center}
.nav-links a{color:var(–muted);font-weight:500;font-size:.95rem}
.nav-links a:hover{color:var(–text)}
.btn{
display:inline-flex;align-items:center;gap:8px;
padding:10px 18px;border-radius:10px;font-weight:600;font-size:.95rem;
border:1px solid transparent;cursor:pointer;transition:.2s ease;
}
.btn-ghost{background:transparent;border-color:var(–border);color:var(–text)}
.btn-ghost:hover{border-color:var(–muted)}
.btn-primary{
background:linear-gradient(180deg,var(–accent),var(–accent-2));
color:#062731;box-shadow:0 8px 24px rgba(2,132,199,.25);
}
.btn-primary:hover{transform:translateY(-1px)}
.btn-large{padding:14px 24px;font-size:1rem;border-radius:12px}
/* Hero */
.hero{
padding:90px 0 70px;
background:
radial-gradient(700px 400px at 80% -10%, rgba(56,189,248,.12), transparent),
radial-gradient(600px 300px at 10% 110%, rgba(52,211,153,.08), transparent);
}
.hero-grid{
display:grid;grid-template-columns:1.1fr .9fr;gap:40px;align-items:center;
}
h1{
font-size:clamp(2rem,4vw,3.2rem);
line-height:1.05;letter-spacing:-.02em;
background:linear-gradient(135deg,#fff 60%,var(–accent));
-webkit-background-clip:text;-webkit-text-fill-color:transparent;
}
.hero p{color:var(–muted);font-size:1.1rem;margin-top:14px;max-width:520px}
.hero-actions{display:flex;gap:12px;flex-wrap:wrap;margin-top:28px}
.hero-note{color:var(–muted);font-size:.9rem;margin-top:14px}
/* Visual card */
.hero-visual{
position:relative;
border-radius:var(–radius);
border:1px solid var(–border);
background:linear-gradient(180deg,var(–card),rgba(19,27,43,.6));
padding:22px;
}
.mini-card{
display:flex;align-items:center;gap:12px;
background:rgba(255,255,255,.04);
border:1px solid var(–border);
border-radius:12px;padding:14px 16px;margin-bottom:10px;
}
.dot{width:10px;height:10px;border-radius:50%;background:var(–success);box-shadow:0 0 10px var(–success)}
.mini-card h4{font-size:.92rem;margin-bottom:2px}
.mini-card span{font-size:.8rem;color:var(–muted)}
.chip{
display:inline-block;padding:4px 10px;border-radius:999px;font-size:.78rem;font-weight:600;
background:rgba(56,189,248,.12);color:var(–accent);border:1px solid rgba(56,189,248,.25);margin-top:10px;
}
/* Sections */
section{padding:70px 0}
.sec-head{text-align:center;margin-bottom:48px}
.sec-head h2{font-size:clamp(1.6rem,3vw,2.2rem);letter-spacing:-.01em}
.sec-head p{color:var(–muted);margin-top:8px;max-width:560px;margin-left:auto;margin-right:auto}
/* ZIP Checker */
.zip-section{background:var(–bg-2);padding:80px 0}
.zip-box{
max-width:720px;margin:0 auto;
background:var(–card);
border:1px solid var(–border);
border-radius:var(–radius);
padding:28px;
}
.zip-input-wrap{
display:flex;gap:10px;margin-top:16px;
}
.zip-input-wrap input{
flex:1;
background:var(–bg);
border:1px solid var(–border);
color:var(–text);
padding:14px 18px;border-radius:10px;font-size:1rem;outline:none;
}
.zip-input-wrap input:focus{border-color:var(–accent)}
.zip-error{color:var(–danger);font-size:.9rem;margin-top:10px;display:none}
/* Stats grid */
.stats-grid{
display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:22px;
}
.stat-card{
background:var(–bg);
border:1px solid var(–border);
border-radius:12px;padding:18px;
}
.stat-label{font-size:.78rem;text-transform:uppercase;letter-spacing:.08em;color:var(–muted);margin-bottom:6px}
.stat-value{font-size:1.35rem;font-weight:800}
.stat-delta{font-size:.8rem;margin-top:4px}
.delta-up{color:var(–success)}
.delta-down{color:var(–danger)}
.market-hot{color:var(–danger)}
.market-warm{color:var(–warning)}
.market-cool{color:var(–accent)}
.zip-summary{
margin-top:18px;padding:16px;background:rgba(255,255,255,.03);
border:1px solid var(–border);border-radius:10px;
}
.zip-summary h4{margin-bottom:6px;font-size:1rem}
.zip-summary p{color:var(–muted);font-size:.9rem}
.claim-bar{
display:flex;gap:10px;align-items:center;justify-content:space-between;
margin-top:14px;padding-top:14px;border-top:1px dashed var(–border);
flex-wrap:wrap;
}
/* Features */
.features{
display:grid;grid-template-columns:repeat(3,1fr);gap:18px;
}
.feature{
background:var(–card);
border:1px solid var(–border);
border-radius:var(–radius);
padding:24px;
transition:transform .2s ease, border-color .2s ease;
}
.feature:hover{transform:translateY(-3px);border-color:rgba(56,189,248,.35)}
.icon{
width:40px;height:40px;border-radius:10px;display:grid;place-items:center;
background:rgba(56,189,248,.12);color:var(–accent);font-size:1.2rem;margin-bottom:14px;
}
.feature h3{font-size:1.05rem;margin-bottom:6px}
.feature p{color:var(–muted);font-size:.92rem}
/* How it works */
.steps{
display:grid;grid-template-columns:repeat(3,1fr);gap:18px;counter-reset:step;
}
.step{
background:var(–card);
border:1px solid var(–border);
border-radius:var(–radius);
padding:24px;
}
.step::before{
counter-increment:step;
content:”0″ counter(step);
font-weight:900;font-size:1.6rem;color:var(–accent);opacity:.35;
}
.step h3{margin:8px 0 6px;font-size:1.05rem}
.step p{color:var(–muted);font-size:.92rem}
/* Pricing */
.pricing-cards{
display:grid;grid-template-columns:repeat(4,1fr);gap:16px;
}
.price-card{
background:var(–card);
border:1px solid var(–border);
border-radius:var(–radius);
padding:22px;
position:relative;overflow:hidden;
}
.price-card.pop{
border-color:rgba(56,189,248,.45);
background:linear-gradient(180deg,rgba(56,189,248,.06),var(–card) 40%);
}
.badge{
position:absolute;top:12px;right:12px;
background:rgba(52,211,153,.12);color:var(–success);
font-size:.75rem;font-weight:700;padding:4px 10px;border-radius:999px;border:1px solid rgba(52,211,153,.25);
}
.price-card h3{font-size:.95rem;text-transform:uppercase;letter-spacing:.08em;color:var(–muted)}
.price{font-size:2rem;font-weight:800;margin:10px 0 4px}
.price span{font-size:.9rem;color:var(–muted);font-weight:500}
.price-card ul{list-style:none;margin-top:14px}
.price-card li{display:flex;gap:8px;color:var(–muted);font-size:.88rem;margin-bottom:8px}
.price-card li strong{color:var(–text)}
/* CTA */
.cta-section{padding:60px 0 80px}
.cta{
text-align:center;
background:
radial-gradient(500px 300px at 50% 0%, rgba(56,189,248,.12), transparent),
var(–card);
border:1px solid var(–border);
border-radius:var(–radius);
padding:60px 20px;
}
.cta h2{font-size:clamp(1.5rem,3vw,2.2rem)}
.cta p{color:var(–muted);max-width:520px;margin:10px auto 22px}
/* Footer */
footer{
border-top:1px solid var(–border);
padding:40px 0 30px;
color:var(–muted);font-size:.85rem;
}
.footer-grid{
display:grid;grid-template-columns:1.4fr 1fr 1fr 1fr;gap:24px;align-items:start;
}
.footer-brand .logo{margin-bottom:10px;display:inline-block}
.footer-links h4{color:var(–text);font-size:.85rem;margin-bottom:12px;text-transform:uppercase;letter-spacing:.06em}
.footer-links a{display:block;color:var(–muted);margin-bottom:8px;font-size:.85rem}
.footer-links a:hover{color:var(–text)}
.compliance{
margin-top:22px;padding-top:16px;border-top:1px solid var(–border);
display:flex;gap:12px;flex-wrap:wrap;align-items:center;justify-content:space-between;
}
.nmls{font-weight:700;color:var(–text)}
.eho{
display:inline-flex;align-items:center;gap:8px;
background:rgba(255,255,255,.04);border:1px solid var(–border);
padding:6px 10px;border-radius:8px;font-size:.78rem;
}
/* Mobile */
@media (max-width:980px){
.hero-grid{grid-template-columns:1fr}
.features,.pricing-cards,.steps{grid-template-columns:1fr}
.stats-grid{grid-template-columns:1fr 1fr}
.footer-grid{grid-template-columns:1fr 1fr}
}
@media (max-width:640px){
.nav-links .hide-sm{display:none}
.footer-grid{grid-template-columns:1fr}
.stats-grid{grid-template-columns:1fr}
.zip-input-wrap{flex-direction:column}
}
Own your ZIP. Own your pipeline.
Exclusive mortgage demand by ZIP, AI borrower intake, and hyper-local pages under your name — built for licensed loan officers who want owned inquiries, not shared portals.
No credit card required. NMLS #787257 · Equal Housing Opportunity.
Live demand snapshot
Exclusive ZIP territory
1 active originator · 5 mile radius
AI intake active
Answering borrowers 24/7 under your brand
This week’s inquiries
12 new qualified leads · 8 pre-approved
Powered by app.ypnus.com
Check ZIP demand live
Real2026 housing market snapshots by ZIP code. See median prices, days on market, sale-to-list ratios, and whether the territory is still open.
Enter a5-digit ZIP code
Check demand
Please enter a valid 5-digit ZIP code.
City, ST
Metro Area
Market snapshot · Aug 2026
Median listing price
$0
—
Est. mortgage rate
0%
30-yr fixed benchmark
LO demand estimate
Borrower activity in this ZIP is above average. Homes sell in under30 days and viewers per listing are elevated. This signals strong refinance and purchase demand for originators.
Data sources: Realtor.com Hottest ZIPs 2026, ICE Mortgage Monitor, Amortio & market aggregates. Territories update in real time at app.ypnus.com.
Built for originators, not portals
Marketing technology that keeps your brand front-and-center and protects your response time with AI-powered intake.
🎯
Exclusive ZIP Model
Lock your market — one LO per ZIP on the platform. Stop competing with 5 other originators on the same lead.
🤖
AI Borrower Intake
Pre-qualify and follow up automatically. Borrowers get instant answers; you get clean, structured handoffs.
📍
Hyper-Local Pages
Search-friendly pages published under your name and NMLS, matched to loan types and neighborhoods you serve.
From signup to live in minutes
Everything connects through app.ypnus.com — your dashboard, pages, AI settings, and lead routing.
Claim your territory
Check ZIP demand free. If capacity is open, claim it and connect your NMLS for verification.
Stand up your pages
We generate hyper-local borrower pages under your brand. Customize loan types, headlines, and contact flow.
Convert with AI
AI intake engages visitors instantly. Leads route to your CRM, email, or directly into the app dashboard.
Transparent pricing
Start free. Upgrade when you’re ready for more territory and growth capacity.
Free
$0 /mo
✅ Cerebro AI growth diagnostic
✅ AI borrower intake assistant
✅ Live lead delivery begins on a paid plan
Start free
Growth
$99.99 /mo
✅ 1 included exclusive ZIP
✅ Cerebro AI assistant
✅ AI borrower capture + automated follow-up
✅ 15-day free trial
See Growth
Pro
$199.99 /mo
✅ 1 included exclusive ZIP
✅ Everything in Growth, plus added capability
✅ 15-day free trial
See Pro
Elite
$299.99 /mo
✅ 1 included exclusive ZIP
✅ Everything in Pro — our highest capability tier
✅ Additional ZIPs are separate paid upgrades
See Elite
Ready to own your market?
See if your ZIP is still open and launch your borrower experience today. No credit card required to start.
NMLS #787257
Equal Housing Opportunity 🏠
© YPN Inc. All rights reserved.
document.getElementById(‘year’).textContent = new Date().getFullYear();
// Real 2026 housing market data by ZIP
const ZIP_DATABASE = {
“01960”: { city: “Peabody, MA”, metro: “Boston-Cambridge-Newton, MA-NH”, medianPrice: 600350, dom: 20, saleToList: 1.0082, viewersPerProperty: 4.1, withinMetro: 70.0, rate: 6.55, demand: 9, status: “open”, priceYoY: “+5.2%”, source: “Realtor.com Hottest ZIPs 2026” },
“07042”: { city: “Montclair, NJ”, metro: “New York-Newark-Jersey City, NY-NJ”, medianPrice: 1049542, dom: 18, saleToList: 1.1665, viewersPerProperty: 3.3, withinMetro: 74.6, rate: 6.60, demand: 10, status: “open”, priceYoY: “+8.1%”, source: “Realtor.com Hottest ZIPs 2026” },
“08080”: { city: “Sewell, NJ”, metro: “Philadelphia-Camden-Wilmington, PA-NJ-DE-MD”, medianPrice: 425517, dom: 25, saleToList: 1.0036, viewersPerProperty: 3.8, withinMetro: 48.4, rate: 6.63, demand: 7, status: “open”, priceYoY: “+3.4%”, source: “Realtor.com Hottest ZIPs 2026” },
“14450”: { city: “Fairport, NY”, metro: “Rochester, NY”, medianPrice: 429092, dom: 23, saleToList: 1.1440, viewersPerProperty: 5.3, withinMetro: 47.1, rate: 6.60, demand: 9, status: “open”, priceYoY: “+4.9%”, source: “Realtor.com Hottest ZIPs 2026” },
“01085”: { city: “Westfield, MA”, metro: “Springfield, MA”, medianPrice: 381017, dom: 27, saleToList: 1.0039, viewersPerProperty: 5.2, withinMetro: 34.6, rate: 6.55, demand: 7, status: “open”, priceYoY: “+2.1%”, source: “Realtor.com Hottest ZIPs 2026” },
“48154”: { city: “Livonia, MI”, metro: “Detroit-Warren-Dearborn, MI”, medianPrice: 338092, dom: 25, saleToList: 1.0067, viewersPerProperty: 3.4, withinMetro: 55.1, rate: 6.58, demand: 6, status: “open”, priceYoY: “+1.5%”, source: “Realtor.com Hottest ZIPs 2026” },
“17543”: { city: “Lititz, PA”, metro: “Lancaster, PA”, medianPrice: 597985, dom: 28, saleToList: 1.0266, viewersPerProperty: 3.8, withinMetro: 26.7, rate: 6.60, demand: 7, status: “open”, priceYoY: “+6.2%”, source: “Realtor.com Hottest ZIPs 2026” },
“06473”: { city: “North Haven, CT”, metro: “New Haven, CT”, medianPrice: 562329, dom: 30, saleToList: 1.0150, viewersPerProperty: 5.3, withinMetro: 33.7, rate: 6.62, demand: 7, status: “open”, priceYoY: “+4.3%”, source: “Realtor.com Hottest ZIPs 2026” },
“53151”: { city: “New Berlin, WI”, metro: “Milwaukee-Waukesha, WI”, medianPrice: 445221, dom: 29, saleToList: 1.0112, viewersPerProperty: 4.5, withinMetro: 49.6, rate: 6.60, demand: 6, status: “open”, priceYoY: “+2.8%”, source: “Realtor.com Hottest ZIPs 2026” },
“60187”: { city: “Wheaton, IL”, metro: “Chicago-Naperville-Elgin, IL-IN”, medianPrice: 574600, dom: 25, saleToList: 0.9972, viewersPerProperty: 3.0, withinMetro: 77.0, rate: 6.69, demand: 6, status: “open”, priceYoY: “+1.9%”, source: “Realtor.com Hottest ZIPs 2026” },
“10001”: { city: “New York, NY”, metro: “New York-Newark-Jersey City, NY-NJ”, medianPrice: 685282, dom: 32, saleToList: 0.9850, viewersPerProperty: 3.1, withinMetro: 74.6, rate: 6.68, demand: 8, status: “open”, priceYoY: “+3.5%”, source: “Amortio / ICE2026” },
“10003”: { city: “New York, NY”, metro: “New York-Newark-Jersey City, NY-NJ”, medianPrice: 684224, dom: 33, saleToList: 0.9830, viewersPerProperty: 3.0, withinMetro: 74.6, rate: 6.60, demand: 8, status: “open”, priceYoY: “+3.4%”, source: “Amortio / ICE 2026” },
“90014”: { city: “Los Angeles, CA”, metro: “Los Angeles-Long Beach-Anaheim, CA”, medianPrice: 879900, dom: 28, saleToList: 1.0210, viewersPerProperty: 3.6, withinMetro: 82.3, rate: 6.52, demand: 8, status: “open”, priceYoY: “+2.7%”, source: “HSH / ICE Q2 2026” },
“90056”: { city: “Los Angeles, CA”, metro: “Los Angeles-Long Beach-Anaheim, CA”, medianPrice: 850000, dom: 27, saleToList: 1.0250, viewersPerProperty: 3.7, withinMetro: 82.3, rate: 6.45, demand: 9, status: “open”, priceYoY: “+3.1%”, source: “Amortio / ICE 2026” },
“33139”: { city: “Miami Beach, FL”, metro: “Miami-Fort Lauderdale-Pompano Beach, FL”, medianPrice: 659000, dom: 38, saleToList: 0.9780, viewersPerProperty: 2.9, withinMetro: 68.4, rate: 6.58, demand: 7, status: “open”, priceYoY: “+4.1%”, source: “HSH / ICE Q2 2026” },
“33109”: { city: “Miami, FL”, metro: “Miami-Fort Lauderdale-Pompano Beach, FL”, medianPrice: 720000, dom: 35, saleToList: 0.9820, viewersPerProperty: 3.1, withinMetro: 68.4, rate: 6.58, demand: 7, status: “open”, priceYoY: “+3.8%”, source: “Amortio / ICE 2026” },
“60614”: { city: “Chicago, IL”, metro: “Chicago-Naperville-Elgin, IL-IN”, medianPrice: 438600, dom: 26, saleToList: 0.9940, viewersPerProperty: 3.2, withinMetro: 77.0, rate: 6.41, demand: 6, status: “open”, priceYoY: “+2.2%”, source: “HSH / ICE Q2 2026” },
“60601”: { city: “Chicago, IL”, metro: “Chicago-Naperville-Elgin, IL-IN”, medianPrice: 425000, dom: 24, saleToList: 0.9960, viewersPerProperty: 3.4, withinMetro: 77.0, rate: 6.62, demand: 6, status: “open”, priceYoY: “+2.0%”, source: “Amortio / ICE 2026” },
“60640”: { city: “Chicago, IL”, metro: “Chicago-Naperville-Elgin, IL-IN”, medianPrice: 410000, dom: 22, saleToList: 1.0020, viewersPerProperty: 3.5, withinMetro: 77.0, rate: 6.70, demand: 6, status: “open”, priceYoY: “+1.8%”, source: “Amortio / ICE 2026” },
“98101”: { city: “Seattle, WA”, metro: “Seattle-Tacoma-Bellevue, WA”, medianPrice: 820000, dom: 21, saleToList: 1.0350, viewersPerProperty: 4.2, withinMetro: 71.5, rate: 6.55, demand: 9, status: “open”, priceYoY: “+4.5%”, source: “ICE Mortgage Monitor 2026” },
“85001”: { city: “Phoenix, AZ”, metro: “Phoenix-Mesa-Chandler, AZ”, medianPrice: 495000, dom: 31, saleToList: 0.9920, viewersPerProperty: 3.0, withinMetro: 64.2, rate: 6.62, demand: 6, status: “open”, priceYoY: “+1.2%”, source: “ICE Mortgage Monitor 2026” },
“77001”: { city: “Houston, TX”, metro: “Houston-The Woodlands-Sugar Land, TX”, medianPrice: 345000, dom: 34, saleToList: 0.9880, viewersPerProperty: 2.7, withinMetro: 58.9, rate: 6.50, demand: 5, status: “open”, priceYoY: “+0.9%”, source: “ICE Mortgage Monitor 2026” },
“30309”: { city: “Atlanta, GA”, metro: “Atlanta-Sandy Springs-Roswell, GA”, medianPrice: 565000, dom: 23, saleToList: 1.0120, viewersPerProperty: 3.8, withinMetro: 66.7, rate: 6.58, demand: 8, status: “open”, priceYoY: “+3.6%”, source: “ICE Mortgage Monitor 2026” },
“80202”: { city: “Denver, CO”, metro: “Denver-Aurora-Lakewood, CO”, medianPrice: 610000, dom: 19, saleToList: 1.0280, viewersPerProperty: 4.1, withinMetro: 69.3, rate: 6.55, demand: 9, status: “open”, priceYoY: “+3.2%”, source: “ICE Mortgage Monitor 2026” },
“94102”: { city: “San Francisco, CA”, metro: “San Francisco-Oakland-Berkeley, CA”, medianPrice: 1200000, dom: 24, saleToList: 1.0550, viewersPerProperty: 3.9, withinMetro: 78.1, rate: 6.48, demand: 10, status: “open”, priceYoY: “+5.5%”, source: “ICE Mortgage Monitor 2026” },
“20001”: { city: “Washington, DC”, metro: “Washington-Arlington-Alexandria, DC-VA-MD-WV”, medianPrice: 750000, dom: 20, saleToList: 1.0180, viewersPerProperty: 4.0, withinMetro: 72.4, rate: 6.60, demand: 8, status: “open”, priceYoY: “+3.0%”, source: “ICE Mortgage Monitor 2026” }
};
// Fallback state names by ZIP prefix for generated estimates
const STATE_PREFIX = {
“0”:[“MA”,”RI”,”NH”,”VT”,[“MA”,”MA”,”MA”,”MA”,”MA”,”MA”,”MA”,”MA”,”MA”,”MA”]],
“1”:[“NY”,”NJ”,”PA”,”DE”,[“NY”,”NY”,”NY”,”NY”,”NY”,”PA”,”PA”,”PA”,”PA”,”PA”]],
“2”:[“DC”,”MD”,”VA”,”WV”,[“VA”,”VA”,”VA”,”MD”,”MD”,”MD”,”DC”,”WV”,”VA”,”MD”]],
“3”:[“FL”,”GA”,”SC”,”NC”,[“FL”,”FL”,”FL”,”FL”,”FL”,”GA”,”GA”,”GA”,”SC”,”NC”]],
“4”:[“OH”,”IN”,”IL”,”MI”,[“OH”,”OH”,”OH”,”IN”,”IN”,”IL”,”IL”,”MI”,”MI”,”MI”]],
“5”:[“IA”,”WI”,”MN”,”ND”,[“IA”,”IA”,”WI”,”WI”,”WI”,”MN”,”MN”,”MN”,”ND”,”SD”]],
“6”:[“KS”,”MO”,”NE”,”IA”,[“KS”,”MO”,”MO”,”MO”,”MO”,”NE”,”NE”,”IA”,”KS”,”KS”]],
“7”:[“TX”,”AR”,”LA”,”OK”,[“TX”,”TX”,”TX”,”TX”,”TX”,”AR”,”LA”,”OK”,”TX”,”TX”]],
“8”:[“CO”,”WY”,”UT”,”NM”,[“CO”,”CO”,”CO”,”WY”,”UT”,”UT”,”UT”,”AZ”,”AZ”,”NM”]],
“9”:[“CA”,”OR”,”WA”,”AK”,[“CA”,”CA”,”CA”,”CA”,”CA”,”OR”,”OR”,”WA”,”WA”,”AK”]]
};
function getStateForZip(z){
const p = z.slice(0,1);
const idx = parseInt(z.slice(0,1),10);
// rough mapping const map = {“0″:”MA”,”1″:”NY”,”2″:”VA”,”3″:”FL”,”4″:”IL”,”5″:”MN”,”6″:”MO”,”7″:”TX”,”8″:”CO”,”9″:”CA”};
return map[p] || “US”;
}
function generateEstimate(z){
// seeded-ish deterministic estimate from ZIP digits
const digits = z.split(”).map(Number);
const seed = digits.reduce((a,b)=>a+b,0);
const basePrice = 180000 + ((digits[0]*100000) + (digits[1]*50000) + (digits[2]*25000) + (digits[3]*10000) + (digits[4]*5000));
const clampedPrice = Math.max(180000, Math.min(1600000, Math.round(basePrice/5000)*5000));
const dom = 15 + ((seed * 3) % 35);
const rate = 6.2 + ((seed % 70)/100);
const saleToList = 0.95 + ((seed % 80)/1000);
const demand = Math.max(3, Math.min(9, Math.floor((seed / 45)*10)));
const city = “ZIP ” + z + ” Area”;
const metro = “Region ” + z.slice(0,3) + “XX”;
return {
city, metro, medianPrice: clampedPrice, dom, saleToList,
rate: parseFloat(rate.toFixed(2)),
demand, status: “open”, priceYoY: “—”,
viewersPerProperty: (2 + (demand/3)).toFixed(1),
withinMetro: (50 + (seed*1.2)).toFixed(1),
source: “Instant market estimate”
};
}
function formatMoney(n){
return new Intl.NumberFormat(‘en-US’,{style:’currency’,currency:’USD’,maximumFractionDigits:0}).format(n);
}
function lookupZip(){
const input = document.getElementById(‘zipInput’);
const err = document.getElementById(‘zipError’);
const res = document.getElementById(‘zipResults’);
const val = input.value.trim();
if(!/^d{5}$/.test(val)){
err.style.display = ‘block’;
res.style.display = ‘none’;
return;
}
err.style.display = ‘none’;
const data = ZIP_DATABASE[val] || generateEstimate(val);
document.getElementById(‘zipCity’).textContent = data.city;
document.getElementById(‘zipMetro’).textContent = data.metro;
document.getElementById(‘zipSubtitle’).textContent = (data.source || “Market snapshot”) + ” · Aug 2026″;
document.getElementById(‘statPrice’).textContent = formatMoney(data.medianPrice);
document.getElementById(‘statPriceDelta’).textContent = (data.priceYoY && data.priceYoY !== “—”) ? “YoY ” + data.priceYoY : “Annual estimate”;
document.getElementById(‘statDom’).textContent = data.dom + ” days”;
document.getElementById(‘statDomDelta’).textContent = data.dom < 25 ? "Fast market" : data.dom = 100 ? “delta-up” : “delta-down”);
document.getElementById(‘statListDelta’).textContent = stl >=100 ? “Above asking” : “Below asking”;
document.getElementById(‘statRate’).textContent = data.rate + “%”;
document.getElementById(‘statDemand’).textContent = data.demand + “/10”;
const dText = document.getElementById(‘statDemandText’);
if(data.demand >= 8){ dText.textContent = “Very high demand”; dText.className = “stat-delta market-hot”; }
else if(data.demand >= 6){ dText.textContent = “Above average”; dText.className = “stat-delta market-warm”; }
else { dText.textContent = “Moderate demand”; dText.className = “stat-delta market-cool”; }
const tEl = document.getElementById(‘statTerritory’);
const tText = document.getElementById(‘statTerritoryText’);
if(data.status === “open”){
tEl.textContent = “Open”; tEl.style.color = “var(–success)”;
tText.textContent = “No originator locked”;
} else {
tEl.textContent = “Claimed”; tEl.style.color = “var(–danger)”;
tText.textContent = “Join waitlist at app.ypnus.com”;
}
// Summary paragraph
const summary = document.getElementById(‘zipSummary’);
let summaryText = `This ZIP is seeing ${data.dom = 100 ? “sell at or above list price” : “trade slightly below list”} with a sale-to-list ratio of ${stl.toFixed(1)}%. `;
summaryText += `For loan officers, a ${data.dom = 7 ? “strong purchase and
refinance opportunity.” : “solid borrower volume for local originators.”;
summaryText += ` ${data.viewersPerProperty}x viewers per property vs national average.`;
summary.textContent = summaryText;
document.getElementById(‘claimBtn’).href = “https://app.ypnus.com/signup?zip=” + val;
res.style.display = ‘block’;
res.scrollIntoView({behavior:’smooth’, block:’nearest’});
}
// Allow Enter key
document.getElementById(‘zipInput’).addEventListener(‘keypress’, function(e){
if(e.key === ‘Enter’) lookupZip();
});
Scale Your Mortgage Pipeline with YPN USA
Automate cold lead acquisition, instant SMS/email follow-ups, and AI workflow management for MLOs.
Schedule a Demo Today
Explore Top MLO Platform Comparisons
Scale Your Mortgage Pipeline with YPN USA
Automate cold lead acquisition, instant SMS/email follow-ups, and AI workflow management for MLOs.
Schedule a Demo Today
Explore Top MLO Platform Comparisons
3. Conversion Tech Stack & Next Steps