Team Up &
Buy Properties!

For Agents
🦄 🕵️ Let's Train A Unicorn      
💵 💰 The Double-Pay Gambit!
⏰ 💰 Their Time / Your Money
🧑🌾 For Sellers
💸 ⌛ The Time Machine       
  Sub-To Growth Hack   
💰 ⌛ The 10x Seller-Fi Rule

Welcome to RapidJV 3.0!


We strive to help you:

Find, Secure, and Close Deals.


Choose a script, read through it,

Practice... and make the call!

You can't win if you don't start.


Need more help?

We have transcripts & recordings!

We can coach you:On Live Calls!

Connect with us below.

My name is ... I underwrite deals for investors.

They're too busy - or too rich, So I make calls.

If my numbers work, I present it.

If they buy,You get paid. I get paid.

Do you have time to review an example?

You say what the seller wants.And I adjust numbers until they work.

[ Grab Your Favorite Calculator ][ Make an offer live. Email the LOI. ]

We like Off-market deals btw.

And Of course you still get paid.

[ FYI: NoCreditTeam is a Buyer! ]

I have an investor that aimsTo pay you between 6 and 12%.

You'd get equity instead of cash.And profit from their lower entry cost.The final amount is not guaranteed!I can send details for you to review.

[ Sign up for Details:   NoCreditTeam.com ]

My Name is [....]

I'm looking for awesome agents to

Join my Fix & Flip team.

If you share a property, I underwrite it.

Our investors buy. Our contractors fix.

And together, we flip. It's a team effort.

You get paid when we buy it.

And if you re-list it for us,

You get paid again on the sale!

Our purchase priceHas to be under 50% of ARV.

And the rehab cost should be under $50k.

Do you have a property I can look at?

Off-market works best,But I can review anything.

[ Ask for & find your own Comps for ARV ]

[ (fixed homes nearby, sold in last 3 months) ]

[ Offer: Average ARV * 0.4 - 50k (or 10k more) ]

Do you have any questions?

I can have a teammate give more details.

When's a good time to call you?

Imagine working your tail off

Then as soon as retirement comes,

You die. Sorry to say, but it happens!

I can't tell you how it feelsWaiting for a sale.

You know that already.Waiting for someone to decide.

Can your seller ride the market Waiting for max price?

Or do they want to sellAnd go enjoy their life?

If they can wait, it's fine.

But, ask all future sellersthat contact you.

If they'd accept ½ price For an immediate sale.

If so, call me ASAP.To collect a 6% finders fee.

Do you know a sellerWho might accept that right now?

Confirm your email address,And I can send a contract.

No pressure. They can acceptOr let more time go by.

Hi. I'm calling about your property [at ...]

Is it still available?

Is that because you want full price?

All cash? All paid at closing?


You've been waiting anyway,Let's do a contingent sale.

I pay above the appraised value.Using a simple formula.

If someone else wants to payFull price, the contract will let them.

The title company handles everything.

We can choose yours or mine.


I can send you the offer.

Just confirm your email address.

Appraised Value / List Price:

Your seller only wants cash? Do you know why?

Are they willing to wait 3 years for a sale?

[ They really want full cash? Move on. ]

[ Is there a chance? Keep going. ]

Forget what they think it's worth.

That's for the appraisers to decide.

[ Set your own story below ]

Time. Time, is what the property is worth.

It's a building. I hate to say it, but

It's gonna sit there and watch them die.

It's not gonna cry. Not a single drop.

Here's the offer.It's the 3-by-30 Rule.

We pay 3% of the appraised valueAt closing in 30 days,

Plus 30% in 3 months.Plus 30% in 3 years.

And whatever is left3 years after that.

It's time gained.They start getting money now.

Then go on with their life.And get paid along the way.

If they accept, you get paid your full commission P.D.Q.

BTW: If you prefer, without paying any money,

You could invest with us instead.

No promises, but our target is 4x.

That's basically a 12% commission.

I can send those details too.

I can even pay a $300 EMD in 3 days.

No pressure.They can accept or keep waiting.

Confirm your emailAnd I will send the contract.

Send me whatever you have.

Appraisal, Brochure, T12,Rent Rolls, P & L. Everything.

[ If they NEED cash, try another tab ]

Is your property still for sale?

Is it fair to sayYou want every last dime?

What happens when you Sell a house with a loan?

After the mortgage pay-off,

Commission, and closing costs,

You end up with... diddly squat.

And sometimes you have to pay

Just to sell the property!


Here's a better way.

You sign, and get-paid. That's-It.

Leave everything the same.

No hassles. Just more in your wallet.

We buy equity in properties And rent them out.

With the income, We pay the mortgage.

Or, if there is no loan, Then we pay You!

You could even invest with us!

No guarantees, but we aim for more than 200%.

[Voicemail]

Call me when you can,

And we can go over the details.

[Live Call]

Would you like to learn more?

Before I send an offer and details,

Please confirm the conditions.

Any Roof damage? Is the H.V.A.C. New?

Are the Foundation & Walls OK? Any Cracks?

Any Water Damage? Mold? Termites? Pests?

Any Lead Paint, Asbestos, Or other problems?

Confirm your address.And I can send the email.

[Double Their Equity?]

JV & get help with offersat NoCreditTeam.com

The aim is 2x or more.NOT A GUARANTEE!

[Already Sold]

Ok. Do you haveother properties we can buy?

I'm going to get an appraisal.

And accept what value they tell me.

You want to sell for cash, right?

What if it takes 3 years to sell?

[ Set your own story below ]

What's your property worth to you?

Time is What It's worth.It's just a building.

If you leave now, it won't care.

If you die, it won't cry.Not a single drop.


Here's my offer. [ The Rule of 3 ]

Given the appraised value:We pay 3% 3 days before closing.

Plus 30% 30 days after closing.And 30% 30 months after that.

We pay whatever is left3 years after that.

I will send the details via email.It comes to 100% over 5½ years.


You can go enjoy your life.And get paid on the way.

Confirm your address andI will email the contract.

I can add $30 non-refundable3 days from today.

Should I set that in the contract?


This is just an offer. You don't have to accept.

But getting paid over timeIs better than watchingThe property sit there, right?

Can I be straight with you?

Have you ever watched someone die?

I have. Cancer sucks!This is personal for me.

People should have timeTo enjoy their life.

You know what peopleWant on their death bed?

It's not money. To buy what?

They can't get health or pain meds. It's too late. Nothing works.

They want More Time.Sad, I know, but it's Time.

Can you keep waiting? Hoping for max price?

Or should you sell nowAnd go enjoy your life?

If you can accept half-offI can send a contract right now.

There's no pressure.Take as long as you want.

Can you confirm the email address?

By the way.My team rents properties

And shares the income,So if you're going to

Invest after selling,You can partner with us.

I can send the details.If you want learn more.

I hope you don't mind.Just my opinion. You're not a baby.

I want people to enjoy lifeWhile they have time.

Send a ½ off contract.

const allTabs = document.querySelectorAll('.tab'); const contents = document.querySelectorAll('.tab-content'); const contentHolders = document.querySelectorAll('.content'); const welcome_content = document.querySelector(".content div.welcome"); const tabsParent = document.getElementById('tabs_nav'); const tab_select_menu = document.getElementById('tab_select_icon'); const purchase_price_input = document.getElementById('purchase_price'); const cash_offer_story_input = document.getElementById('cash_offer_story'); const offer_10_x_10_rule_output = document.getElementById('offer_10_x_10_rule'); function setUpHandlers() { if (!tab_select_menu) { return } /* not ready? */ tab_select_menu.addEventListener('click', () => makeTabsVisible()); /* look for a value in the url */ const params = new URLSearchParams(window.location.search); const urlVal = params.get('script'); /* do we have a currently supported tab for the sent in url param? */ if (urlVal && document.querySelectorAll(`.tab[data-url="${urlVal}"]`).length) { allTabs.forEach((t) => { t.classList.toggle('showme', t.dataset.url === urlVal); t.classList.toggle('active', t.dataset.url === urlVal); }); } else { /* init welcome */ /* * / console.log("D. setting width for: welcome..."); /* */ fitTextElementWidth(welcome_content, 1); } allTabs.forEach(tab => { /* set up tab click handlers */ tab.addEventListener('click', () => showTabByData(tab)); /* select the current one right now */ if (tab.classList.contains('active')) { showTabByData(tab, true); } }); /* on page size / orientation change - update sizes if 1 tab is selected */ window.addEventListener('resize', () => { const currentOrientation = window.innerWidth > window.innerHeight ? 'landscape' : 'portrait'; if (currentOrientation !== window.lastOrientation) { window.lastOrientation = currentOrientation; /* redoSizing(); */ const shownTabs = document.querySelectorAll('.tab.showme'); if (shownTabs.length == 1 && allTabs.length > 1 && shownTabs[0].classList.contains('active')) { showTabByData(shownTabs[0], true); } else { /* init welcome */ /* * / console.log("E. setting width for: welcome..."); /* */ fitTextElementWidth(welcome_content, 1); } } }); } function makeTabsVisible() { /* show all tabs and the welcome content */ currentSelectedTabContent = welcome_content; const parentToKeepOn = currentSelectedTabContent?.closest(".content"); allTabs.forEach(t => { t.classList.toggle('showme', true); t.classList.toggle('all-shown', true); t.classList.toggle('active', false); t.style.width = ''; /* clear */ }); /* contents.forEach(t => { t.style.transition = "opacity 0.5s ease"; t.style.opacity = "0"; }); setTimeout(() => {contents.forEach(t => { t.style.transition = "opacity 0.5s ease"; t.style.opacity = "1"; });}, 1000);*/ contents.forEach(t => { t.classList.toggle('active', false); }); tab_select_menu.classList.toggle('showme', false); /* off until one is selected */ tabsParent.classList.toggle('single-view', false); currentSelectedTabContent.classList.toggle('active', true); contentHolders.forEach(h => h.classList.toggle('hideme', true) ); if (parentToKeepOn) /* unhide the selected content-tab's parent */ { parentToKeepOn.classList.toggle('hideme', false); } updateDimensionsOfTabsContentAndInputs(); /* animate the content back on */ }
function updateDimensionsOfTabsContentAndInputs() { if (!currentSelectedTabContent) { currentSelectedTabContent = welcome_content; } /* give the UI time to set classes, before trying to resize based on it * / setTimeout(updateDimensionsOfTabsContentAndInputs, 800); */ /* tabs are fine as is on desktop/mobile allTabs.forEach((t) => { /* if (t === currentSelectedTab) * / { /* * / console.log("B. setting width for tab: ", t); /* * / fitTextElementWidth(t, 0, 40); /* has icons and spacers! * / } }); */ /* * / console.log("C. setting width for current tab"); /* */ fitTextElementWidth(currentSelectedTabContent, 1, 160 + 182); /* ?? setTimeout(() => { const parentToKeepOn = currentSelectedTabContent?.closest(".content"); if (parentToKeepOn) { fitTextElementWidth(parentToKeepOn, 0, 160 + 182); } }, 800); */ /* only the ones in the active tab */ if (currentSelectedTabContent) { currentSelectedTabContent.querySelectorAll(".active .cash-offer-story-input")?.forEach((elm) => { /* * / console.log("A. setting width for stories: ", elm); /* */ fitTextElementWidth(elm, 2, 40); }); } /* wait a bit, then set the heights */ setTimeout(() => { document.querySelectorAll(".active .cash-offer-story-input").forEach((elm) => { /* * / console.log("F. setting height for stories: ", elm); /* */ elm.style.height = elm.scrollHeight + 'px'; }); /* why setting height? */ /* * / currentSelectedTabContent.style.height = currentSelectedTabContent.scrollHeight + 'px'; /* */ }, 800); } function currency(val) { return new Intl.NumberFormat('en-US', { style: 'currency', currency: 'USD', minimumFractionDigits: 0, maximumFractionDigits: 0 }).format(Number(val)); } function doOfferMath10x10() { const appraisedValue = Math.ceil(Number(purchase_price_input.value) || 0); if (appraisedValue < 10) { return alert("Set the offer price above $10") } purchase_price_input.value = appraisedValue; const installments = (appraisedValue > 10) ? appraisedValue / 10 : 0; const down = (installments > 10) ? installments / 10 : 0; const emd = (down > 10) ? down / 10 : 0; const contract = (emd > 10) ? emd / 10 : 0; const totalPrice = installments * 10 + down + emd + contract; const nl = '\n'; let offerMsg = ""; const padLen = currency(totalPrice).length + 5; offerMsg += `[ You can tell them this if you want. ]${nl}`; offerMsg += `[ It's for your offer letter & contract: ]${nl}${nl}`; offerMsg += !appraisedValue ? "" : `Total Offer Price : ${nl + currency(totalPrice).padStart(padLen, ' ')} based on appraisal.${nl}`; offerMsg += !installments ? "" : `10 Equal Payments: ${nl + currency(installments).padStart(padLen, ' ')} due every 10 months.${nl}`; offerMsg += !down ? "" : `10% Down Payment : ${nl + currency(down).padStart(padLen, ' ')} due in 10 weeks.${nl}`; offerMsg += !emd ? "" : `10% Earnest Money : ${nl + currency(emd).padStart(padLen, ' ')} due in 10 days.${nl}`; offerMsg += !contract ? "" : `10% Contract Fee : ${nl + currency(contract).padStart(padLen, ' ')} due in 10 hours.${nl}`; /* offerMsg += "\n"; offerMsg += "All payments above are non-refundable, \n"; offerMsg += "and become due at the specified times \n"; offerMsg += "after contract signing.\n"; */ offerMsg += ""; offer_10_x_10_rule_output.value = offerMsg; offer_10_x_10_rule_output.style.display = "block"; /* show */ offer_10_x_10_rule_output.style.opacity = 1; /* show */ fitTextElementWidth(offer_10_x_10_rule_output, 2, 40); setTimeout(() => { offer_10_x_10_rule_output.style.height = (offer_10_x_10_rule_output.scrollHeight) + 'px'; }, 800); /* navigator.clipboard.writeText(offerMsg); console.log("['" + offerMsg + "']"); */ /* copyText(offerMsg); */ } /* function copyText(text) { if (!text) return alert('Set the Offer Price'); navigator.clipboard.writeText(text) .then(() => alert('Offer Copied To Clipboard')) .catch(err => alert('Copy failed: ' + err)); }*/ function saveCashOfferStory(event) { /* console.log("saveCashOfferStory: ", event); */ if (event?.target) { localStorage.setItem("my_story", event.target.value); } setCashOfferStory(); /* update all such entries */ } function setCashOfferStory() { let my_story = localStorage.getItem("my_story") || `You ever see rich, old people? On vacation, but can't do much. After a certain point, A pile of money is worthless.`; my_story = my_story.replace(/[ ]+/g, " ").replace(/\n /g, "\n"); if (my_story) { /* set all such fields */ document.querySelectorAll(".cash-offer-story-input").forEach((elm) => elm.value = my_story); } } function fitTextElementWidth(el, sizeParentLevels = 0, extraPadding = 10) { /* * / console.log("\n\n\n\ngot el:", el, sizeParentLevels, extraPadding); /* */ if (!el) return; /* Get text based on element type */ const isTextarea = el.tagName.toLowerCase() === 'textarea'; /* el.textContent; doesn't have the new lines on the deployed version! */ const textAreaShrink = 30; const text = isTextarea ? el.value : el.outerText; /* Find longest line */ const lines = text.split('\n'); const longestLine = lines.reduce((a, b) => a.length > b.length ? a : b); /* Measure text width using canvas */ const canvas = document.createElement('canvas'); const context = canvas.getContext('2d'); context.font = getComputedStyle(el).font; /* * / console.log("Canvas Font: ", context.font); /* */ let textWidth = (context.measureText(longestLine).width + extraPadding); /* * / console.log("would be ", el, textWidth, "with padding: ", extraPadding); /* */ /* Cap the width to the viewport width (with small padding) */ const maxWidth = window.innerWidth - 40; /* subtract a bit for margin */ if (textWidth > maxWidth) { textWidth = maxWidth; } /*else if (textWidth * 1.4 < maxWidth) { textWidth = textWidth * 1.4; }*/ textWidth = Math.ceil(Number(("" + textWidth).replaceAll("" + (55 + 10 + 1), (55 + 1)))); el.style.width = (textWidth - (isTextarea ? textAreaShrink : 0)) + 'px'; el.style.opacity = 1; /* bring it up - transition gives us time to size/etc */ /* * / console.log("tried to set ", el, el.style.width); /* */ let parent = (sizeParentLevels) ? el.parentElement : 0; for (let lev = Math.abs(sizeParentLevels); lev > 0 && parent; lev--) { parent.style.width = (textWidth) + 'px'; parent.style.opacity = 1; /* bring it up - transition gives us time to size/etc */ /* * / console.log("tried to set parent", parent, parent.style.width); /* */ parent = parent.parentElement; } /* * / document.querySelectorAll('textarea,.content,.tab-content').forEach(x => console.log("Just Fit: ", x.style.width, x)); /* */ } function showTabByData(tabEl, force) { if (!force && document.querySelectorAll('.tab.showme').length < 2 && allTabs.length > 1) { makeTabsVisible(); return; /* only wanted to toggle them on */ } currentSelectedTab = tabEl; offer_10_x_10_rule_output.style.opacity = 0; /* re-init */ offer_10_x_10_rule_output.style.display = "none"; /* show */ const tabVal = tabEl.dataset.tab; allTabs.forEach((t) => { t.classList.toggle('showme', t === tabEl); /* only keep the selected one on */ t.classList.toggle('active', t === tabEl); t.classList.toggle('all-shown', false); /* we'll set the tab width(s) after a short delay */ }); tabsParent.classList.toggle('single-view', true); contents.forEach(c => { c.classList.toggle('active', c.dataset.content === tabVal); /* console.log("tried: ", c.dataset.content, tabVal, c.dataset.content === tabVal); */ if (c.dataset.content === tabVal) { currentSelectedTabContent = c; } }); tab_select_menu.classList.toggle('showme', true); /* show the menu icon again */ /* had to split up content into diff divs. find the non-active ones and hide. just show the active parent */ contentHolders.forEach(h => h.classList.toggle('hideme', true) ); const parentToKeepOn = currentSelectedTabContent?.closest(".content"); if (parentToKeepOn) /* unhide the selected content-tab's parent */ { parentToKeepOn.classList.toggle('hideme', false); } purchase_price_input.value = ""; /* clear on tab switch */ offer_10_x_10_rule_output.textContent = ""; /* as a textarea */ offer_10_x_10_rule_output.style.height = offer_10_x_10_rule_output.scrollHeight + 'px'; /* */ /* set url for easy bookmarking :) */ const urlVal = tabEl.dataset.url; if (urlVal) { const params = new URLSearchParams(window.location.search); params.set('script', urlVal); const newUrl = `${window.location.pathname}?${params.toString()}`; window.history.replaceState({}, '', newUrl); } /* give the UI time to set classes, before trying to resize based on it */ setTimeout(updateDimensionsOfTabsContentAndInputs, 800); } setUpHandlers(); setCashOfferStory(); /* init */



OFFLINE FOR MAINTENANCE
BACK SOON!


Privacy Policy
RapidJV is perfect for Real Estate Investors who want to team up to buy properties!

RapidJV.com is owned by Crazy House LLC (The Company).
Your privacy is important. This privacy policy explains how The Company collects, uses, and protects your information.

Let's Be Clear
We DO NOT SELL your information. Anyone who does is an unimaginative, bottom-feeding, lowlife! That's not where the big money is, but they can't wrap their little heads and tiny brains around that. We don't hate them, but we certainly don't want to be associated with them.
Acceptance of Policy
By accessing or using any of The Company services, you agree to be bound by this policy.
Information Collected
The Company may collect personal information such as your name, email address, and any other information you provide. This can include data submitted through forms, communications, or provided by third-party services or software used to access The Company services. We may also collect non-personal information, such as usage data, cookies, and IP addresses, to improve our platform and enhance your experience.
How The Company Uses Information About You
The Company uses the information collected to provide, maintain, and improve our services, process transactions, and communicate with you about your account or transactions. We may also use the information to personalize your experience, offer relevant content, and to fulfill legal or regulatory requirements.
Data Security and Privacy Protection
The Company is committed to safeguarding your information and takes reasonable security measures to prevent unauthorized access, alteration, or misuse of your data. We use encryption, secure access controls, and monitoring to help protect personal information stored on our systems. However, be aware that no method of data transmission or storage is completely secure or impenetrable.
Third-Party Sharing
The Company does not sell or share your personal information with third parties for their own marketing purposes without your consent. We may share information with trusted third-party partners and service providers for business operations, such as payment processing, and compliance with legal obligations.
Changes to This Policy
The Company may update this privacy policy periodically. Any changes will be posted here and will take effect immediately. We encourage you to review this page regularly to stay informed about how we are using information collected, and protecting your privacy.
[email protected]

Terms of Use

RapidJV is perfect for Real Estate Investors who want to team up to buy properties!

RapidJV.com is owned by Crazy House LLC (The Company).
Acceptance of Terms
By accessing or using any of The Company services, you agree to be bound by these terms.
User Responsibilities
You are responsible for your account and all activities that occur as a result of your account being used to access The Company services.
Permissible Uses
You may access and use the website solely through the software developed and provided by The Company, without modification or unauthorized interference.
Prohibited Uses
All forms of illegal activities, including but not limited to fraud, unauthorized access, and any actions in violation of applicable laws or regulations, are strictly prohibited.
Limitation of Liability
The Company and its owners, employees, agents, contractors, and other affiliates are not liable for any damages arising from your use of The Company services.
Changes to Terms
The Company may update these terms from time to time and any changes will become effective immediately upon posting here.