diff --git a/app/api/realestateapi/route.ts b/app/api/realestateapi/route.ts index cde76ec..971002f 100644 --- a/app/api/realestateapi/route.ts +++ b/app/api/realestateapi/route.ts @@ -157,6 +157,7 @@ export async function POST(req: NextRequest) { value_max, estimated_equity_min, estimated_equity_max, + equity_percent_min, stories_min, stories_max, latitude, @@ -227,6 +228,8 @@ export async function POST(req: NextRequest) { value_max, estimated_equity_min, estimated_equity_max, + equity_percent: equity_percent_min ? parseInt(equity_percent_min) : undefined, + equity_percent_operator: equity_percent_min ? 'gte' : undefined, stories_min, stories_max, ids_only: ids_only ?? false, diff --git a/app/discover/page.tsx b/app/discover/page.tsx index e61f009..e3bda74 100644 --- a/app/discover/page.tsx +++ b/app/discover/page.tsx @@ -275,7 +275,8 @@ function DiscoverPageContent() { estimated_equity_max: '', mortgage_min: '', mortgage_max: '', - + equity_percent_min: '', + // Distress & Special Conditions assumable: null as boolean | null, reo: null as boolean | null, @@ -562,9 +563,12 @@ function DiscoverPageContent() { - // Load daily properties and user favorites on page load + // Load daily properties on page load (skip if restoring search) useEffect(() => { - loadDailyProperties(); + const hasSearchFromUrl = searchParams.get('hasResults') === 'true'; + if (!hasSearchFromUrl) { + loadDailyProperties(); + } }, []); // Load user favorites for favoriting functionality @@ -1013,7 +1017,8 @@ function DiscoverPageContent() { estimated_equity_max: '', mortgage_min: '', mortgage_max: '', - + equity_percent_min: '', + // Distress & Special Conditions assumable: null, reo: null, @@ -1376,6 +1381,7 @@ function DiscoverPageContent() { estimated_equity_max: 'financial', mortgage_min: 'financial', mortgage_max: 'financial', + equity_percent_min: 'financial', assumable: 'financial', reo: 'distress', pre_foreclosure: 'distress', @@ -1429,6 +1435,7 @@ function DiscoverPageContent() { estimated_equity_max: '', mortgage_min: '', mortgage_max: '', + equity_percent_min: '', assumable: null, reo: null, pre_foreclosure: null, @@ -1504,6 +1511,7 @@ function DiscoverPageContent() { estimated_equity_max: '', mortgage_min: '', mortgage_max: '', + equity_percent_min: '', assumable: null, reo: null, pre_foreclosure: null, @@ -1561,6 +1569,7 @@ function DiscoverPageContent() { estimated_equity_max: 'financial', mortgage_min: 'financial', mortgage_max: 'financial', + equity_percent_min: 'financial', assumable: 'financial', reo: 'distress', pre_foreclosure: 'distress', @@ -1613,6 +1622,7 @@ function DiscoverPageContent() { estimated_equity_max: '', mortgage_min: '', mortgage_max: '', + equity_percent_min: '', assumable: null, reo: null, pre_foreclosure: null, @@ -1693,6 +1703,7 @@ function DiscoverPageContent() { estimated_equity_max: '', mortgage_min: '', mortgage_max: '', + equity_percent_min: '', assumable: null, reo: null, pre_foreclosure: null, @@ -2345,11 +2356,26 @@ function DiscoverPageContent() { /> - + +
+ +
+ updateFilter('equity_percent_min', e.target.value)} + className="w-24 px-2 py-2 border border-gray-300 rounded-md text-sm focus:ring-2 focus:ring-blue-500 focus:border-blue-500" + /> +
+
+ - updateFilter('assumable', null)} /> @@ -3388,11 +3414,26 @@ function DiscoverPageContent() { /> - + +
+ +
+ updateFilter('equity_percent_min', e.target.value)} + className="w-24 px-2 py-2 border border-gray-300 rounded-md text-sm focus:ring-2 focus:ring-blue-500 focus:border-blue-500" + /> +
+
+ - updateFilter('assumable', null)} /> diff --git a/app/page.tsx b/app/page.tsx index ccc1521..1f5334f 100644 --- a/app/page.tsx +++ b/app/page.tsx @@ -496,15 +496,29 @@ export default function Home() {

Transform Into a Full-Spectrum Investment Firm

-
-

- MultifamilyOS transforms individual investors into full-spectrum investment firms by providing an AI-powered team that never sleeps. -

-

- Instead of juggling fragmented tools, emails, and spreadsheets, you get one intelligent platform that scouts properties, analyzes deals, generates documents, engages owners, and helps you secure financing. +

+ MultifamilyOS is an AI-powered investment team that never sleeps. Instead of juggling fragmented tools, emails, and spreadsheets, you get one intelligent platform that scouts properties, analyzes deals, generates documents, engages owners, and helps you secure financing. It's like having a full staff—property agent, analyst, attorney, marketer, and financing advisor—working 24/7 to scale your pipeline and close deals faster. +

+
+ + + + {/* 52-Week Master Class Section */} +
+
+
+

+ Close Your First Multifamily Deal Faster +

+

+ With AI, Coaching, and a Community That Funds Each Other +

+
+

+ Professional members get exclusive access to the MultifamilyOS Cohort Program. Master every discipline of multifamily investing through weekly self-paced modules taught by Charles Dobens and hands-on practice using the MultifamilyOS.

-

- It's like having a full staff—property agent, analyst, attorney, marketer, and financing advisor—working 24/7 to scale your pipeline and close deals faster. +

+ Apply what you learn immediately to real deals in your pipeline. Join weekly group sessions to discuss challenges, share insights, and accelerate your progress alongside fellow investors. From deal analysis to asset management, build the expertise to analyze, acquire, and grow a multifamily portfolio.

@@ -523,7 +537,7 @@ export default function Home() {
-

+

Connect with an exclusive network of elite multifamily investors who are actively seeking investment opportunities and partnership deals. Our private member community creates a unique environment where experienced investors share deal flow, co-invest on larger acquisitions, and provide capital for promising projects.

@@ -548,7 +562,7 @@ export default function Home() {

Built-In AI Property Coach

-

+

Get instant, expert-level insights on any multifamily investment question

@@ -564,7 +578,7 @@ export default function Home() {

Platform Capabilities

-

+

Everything you need to find, analyze, and close multifamily deals

diff --git a/app/pricing/page.tsx b/app/pricing/page.tsx index 98d932e..b7f9973 100644 --- a/app/pricing/page.tsx +++ b/app/pricing/page.tsx @@ -602,11 +602,11 @@ function PricingPageContent() { )}

- Everything in Plus and more. Access to Charles Dobens Master Class Training and participation in weekly group coaching sessions. + Everything in Plus and more. Membership in the MultifamilyOS Cohort program, including direct access to Charles Dobens.

    +
  • Self-paced Master Class Training Program
  • Weekly Coaching Calls with Charles Dobens
  • -
  • Master Class Training Program
  • Community Access and Networking
{isAnnual ? ( @@ -1316,7 +1316,7 @@ function PricingPageContent() {

The Professional plan adds depth through:

  • Capital Club – Engage with a network of multifamily property investors who can help underwrite deals and participate in funding. Accelerate capital raising and enjoy the confidence of having a network of backers behind your offers.
  • -
  • Master Class Training – 90+ lessons led by Charles Dobens, the Multifamily Attorney, covering markets, deal structuring, capital raising, due diligence, and scaling. With $50M+ in personal investing experience and $3B+ in client transactions, Charles brings practical, field-tested strategies to every lesson.
  • +
  • Master Class Training – A comprehensive program of weekly sessions led by Charles Dobens, the Multifamily Attorney, covering markets, deal structuring, capital raising, due diligence, and scaling. With $50M+ in personal investing experience and $3B+ in client transactions, Charles brings practical, field-tested strategies to every lesson.
  • Weekly Coaching – Live calls with Charles Dobens that combine deal analysis, market updates, and expert Q&A. These sessions provide direct access to one of the most respected educators in multifamily investing.
  • Community Access – Direct connection to experienced peers and mentors for accountability, support, and networking opportunities.
diff --git a/components/property/actions.tsx b/components/property/actions.tsx index dbd172b..06ffbe4 100644 --- a/components/property/actions.tsx +++ b/components/property/actions.tsx @@ -30,8 +30,8 @@ export const PropertyActions = ({ listing }: PropertyActionsProps) => { }); }; - const formatCurrency = (amount: number | undefined) => { - if (!amount) return 'N/A'; + const formatCurrency = (amount: number | null | undefined) => { + if (amount === null || amount === undefined) return 'N/A'; return new Intl.NumberFormat('en-US', { style: 'currency', currency: 'USD', diff --git a/components/shared/property-details/PropertyInfoSections.tsx b/components/shared/property-details/PropertyInfoSections.tsx index 9154947..837b0b5 100644 --- a/components/shared/property-details/PropertyInfoSections.tsx +++ b/components/shared/property-details/PropertyInfoSections.tsx @@ -19,7 +19,7 @@ export const PropertyInfoSections: React.FC = ({ prop // Helper function to format currency const formatCurrency = (value: number | null | undefined) => { - if (!value) return 'N/A'; + if (value === null || value === undefined) return 'N/A'; return new Intl.NumberFormat('en-US', { style: 'currency', currency: 'USD',