Raheem Offer Pro — Page 2 · Send
Upload the signed offer package, proof of funds, and the listing-agent spreadsheet. This matches every offer to its listing agent and preps a ready-to-go email — nothing leaves this browser tab, nothing is uploaded anywhere.
If you generated this batch on the Generate offers page, it was already pushed here automatically — you don't need this step, just scroll to Step 01 below. Use this only as a fallback: to (re)upload a ZIP by hand, or to resend/rotate a buyer's link.
After a buyer link already exists for this email, this is only used if you check "generate a new link" below — an existing valid link keeps its original expiry.
Only check this if the old link leaked or you want to force a fresh one — it immediately breaks any link already sent.
Every buyer you've sent offers to, from here or from Generate. Click a name to jump straight to their status — the link works even after you close this tab, so bookmark or save it if you want to check back later without hunting for the email.
This list only lives in this browser. If you sent offers from a different browser, device, or a private window, they won't show up here automatically — use the box below to pull a buyer back in by email (no data is lost, this just re-adds them to this list).
Someone beat you to it, the buyer walked, whatever the reason — offers removed here are skipped entirely the next time you build the queue below, and won't appear in any download or spreadsheet. Click "restore" to put one back.
A blocked agent's rows are skipped automatically the next time you build the queue — matched by email first (more reliable), name as a fallback if no email is on the row. Skipped rows are called out clearly in the status message, never silently dropped.
No agents blocked.
Every offer you send with "Send Now (Gmail)" lands here automatically. Once 3 day(s) pass with no update from you, it shows up as ready to follow up. Mark whether they've replied, edit the message if you want, send when ready — nothing goes out on its own.
Nothing ready for follow-up yet.
Agents tied to 2+ properties — combining everything currently in your send queue with everything you've sent before, matched by email first, name as a fallback. Worth knowing either way: a friendly repeat contact, or a reason to look closer.
None found yet — build a send queue below, or this fills in as you send more offers over time.
Bring your own data source to check whether a property is still active, went pending, or sold to someone else. Two kinds work here: your own MLS access (RESO Web API, if you're a licensed broker/agent with credentials), or a non-MLS listing-status API you've separately signed up for. Neither is included with this tool — you'll need your own account and API key from whichever you use.
If you're a licensed agent/broker with real MLS access:
UnparsedAddress for the address param and StandardStatus for the status field — use those unless your MLS's docs say otherwise.If you're a wholesaler without MLS access:
Worth knowing upfront: Zillow shut down its old public API in 2021 and doesn't offer a self-serve one today — its official replacement, Bridge Interactive, is gated to MLS-affiliated brokerages, so it's not an option here either. In practice, wholesalers use a third-party property-data API instead — a separate company that sells REST API access to listing/property data. A few names worth searching (not an endorsement — vet pricing, terms, and coverage yourself before signing up): RentCast, ATTOM Data, or listings on RapidAPI's real-estate category.
Authorization or X-API-Key), the query param name for the address, and the JSON path to the status field in their response.Bring your own API key from a lead-generation platform (PropStream, BatchLeads, PropertyRadar, REsimpli, DealMachine, or any other REST API that returns property/owner data) and pull leads straight into a ready-to-use Master Offer List — no manual retyping. Deal-specific columns (price, sale type, deposits, dates, terms, listing/escrow agent) aren't something a lead platform has, so those stay blank for you to fill in after import; this only covers property address, owner name, county, property ID, and legal description.
Every platform's process is a little different, but the shape is the same everywhere:
Not affiliated with or endorsed by any specific platform — vet pricing, data quality, and terms with whichever one you choose.
Builds a Master Offer List in the exact column order the batch generator expects, with Property Address / Owner Name / County / Property ID # / Legal Description filled in from your lead platform and every deal-specific column (price, sale type, dates, terms, agents) left blank for you to fill in — then downloads it, ready to upload on the Generate offers page.
Fills the Offer Submission Form template straight from the offer data Page 1 already generated for this batch — no re-uploading the Offer List, no pushing to the buyer. Once generated, these fill in automatically as the "Submission" attachment for every matching offer below — no re-upload needed.
you@gmail.com) the primary account in your default mail app. Want it bulletproof regardless of default settings, sent automatically with no dragging files at all? See Step 07 — Connect Gmail below — optional, one-time setup, skip it and everything above still works.
Either the ZIP that Offer Pro 1.0 generated, or the individual contract/submission PDFs pulled out of it after your buyer signed. File names must still start Offer_01_, Offer_02_, etc. — that's how this matches each PDF to the right row in the spreadsheet.
Heads up: if an offer was pushed to the buyer from the Generate page (with an Offer Submission Form template uploaded there), its submission form is pulled in automatically here — no re-upload needed. This manual upload below is only a fallback: for older batches from before this existed, or offers that were never pushed through the buyer portal. If a batch still shows "Submission missing" after building the queue, add the original submission forms here (from the ZIP Generate produced, before signing).
One file, attached to every email in the batch.
The sheet with where each offer needs to go — same layout as your existing file.
Defaults to Brian (courtsideinvestments@gmail.com) — added as CC on top of whatever's already listed for that agent in the spreadsheet's CC column. Change or clear it if needed; it's saved in this browser so it sticks next time.
Signs off the hello message below.
Goes in the body of the email itself. Tokens get swapped per offer: {agent_name} {address} {offer_num} {brokerage} {sender_name}
Skip this and everything above still works via mailto + drag-in. Connect it and every ready card below gets a Send Now button that emails straight from you@gmail.com (whichever Gmail account you connect below — not tied to any one specific address) with all 3 attachments already on it — no drag-in, no default-app guessing.
This connects your own Gmail account — every person using this tool does this once, for themselves, with their own Google account. Nobody shares a connection.
you@gmail.com). If you've never used Cloud Console before, it'll offer a free trial — you don't need to accept any billing, everything here stays on the free tier.rawofferpro.netlify.app — then click Save. (App logo, home page, privacy policy, and terms links can all stay blank — none of those are required for this.)https://rawofferpro.netlify.app exactly — no trailing slash, no path after it. Save..apps.googleusercontent.com) and paste it into the field above.If you hit "Error 401: invalid_client" — the Client ID pasted in doesn't match a real, currently-existing OAuth client. Double check it was copied in full and freshly, straight from the Clients page.
If you hit "Error 403: access_denied" / "has not completed the Google verification process" — you skipped (or haven't saved) the Test users step above. Go back to Audience → Test users and add your address.
Nothing here is stored anywhere by this tool except the Client ID, saved locally in this browser so you don't re-paste it. The access token Google issues lives only in this tab and refreshes itself automatically while you're using the tool.