Chicago Real Estate Broker A.I. Prompt Generator

Looking for help crafting prompts for ChatGPT and other A.I. engines? We built a generator that will create the absolute BEST and MOST comprehensive prompts for Chicago real estate brokers looking to grow their business, increase skills, scale efficiency, and provide stronger customer service. It’s our gift to you! :)

  1. Select a category

  2. Select a prompt

  3. Choose short or long prompt

  4. Click Copy button and paste into ChatGPT (or any A.I.). Note - check to see if prompt requires personalization.

  5. Click clear to reset and get more prompts!

"use client"; import React, { useEffect, useState, useMemo } from "react"; /* ============================================================ TYPES ============================================================ */ type PromptItem = { title: string; quick?: string; role?: string; deliverable?: string; success?: string; inputs?: string; constraints?: string; tools?: string; iterate?: string; risk?: string; format?: string; audience?: string; quality?: string; module: string; index: number; }; type RemotePrompt = Partial; type RemotePayload = { version?: string; modules?: Record }; /* ============================================================ CONFIG ============================================================ */ const REMOTE_JSON_URL = "https://script.google.com/macros/s/AKfycbww3SrcmhMY8IMPiSmj7OdqM3cUSVtfU0LuyVtqF9mvdbQjhdoHXASfMhEg4cam577dRw/exec"; const KEY_REMOTE_CACHE = "rpv:remoteCache"; const KEY_REMOTE_VER = "rpv:remoteVersion"; const displayNameForModule = (m: string) => m.replace(/^Module\s+\d+\s+—\s+/i, ""); /* ============================================================ BASE DATA (ALL MODULES) ============================================================ */ // -- (For brevity here we assume all M1–M12 arrays exist exactly as in your current file) -- // ⚠️ Paste your full M1..M12 content here before buildBaseData() /* ============================================================ BUILD BASE PROMPTS ============================================================ */ function buildBaseData(): PromptItem[] { const base: PromptItem[] = []; const pushModule = (items: Omit[], name: string) => items.forEach((d, i) => base.push({ ...d, module: name, index: i })); pushModule(M1, "Module 1 — Lead Generation & Marketing"); pushModule(M2, "Module 2 — Operations & Time Management"); pushModule(M3, "Module 3 — Goal Setting & Accountability"); pushModule(M4, "Module 4 — Scripts, Presentations & Client Conversion"); pushModule(M5, "Module 5 — Customer Experience & Retention"); pushModule(M6, "Module 6 — Financial Management & Profitability"); pushModule(M7, "Module 7 — Negotiation & Conflict Resolution"); pushModule(M8, "Module 8 — Buyer Tools & Strategies"); pushModule(M9, "Module 9 — Database & Referral Marketing"); pushModule(M10, "Module 10 — Digital Ads & Funnels"); pushModule(M11, "Module 11 — AI Automation & Systems"); pushModule(M12, "Module 12 — Online Realtor Resources & Intelligence"); return base; } /* ============================================================ PROMPT BUILDER ============================================================ */ function buildFullPrompt(p: PromptItem): string { const moduleName = p.module || "Category"; const title = p.title || "Prompt"; const audience = p.audience || "[buyer/seller/investor/agent type in [market]]"; const inputs = p.inputs || "- KPIs = [list]\n- Tools = [list]\n- Timeline/Budget = [X]\n- Constraints = [plain, compliant language]"; const deliverable = p.deliverable || "Bulleted steps + 1 table (fields relevant to this prompt)."; const constraints = p.constraints || "≤400 words; use headings; avoid guarantees; fair-housing safe."; const quality = p.quality || "Add ‘Why this works’ + 3 clarifying Qs; propose 2 version-2 improvements."; const success = p.success || "Define measurable outcomes (e.g., response rate %, time saved, appointments set)."; const tools = p.tools || "Prefer Google Workspace, CRM, Make.com/Zapier, Notion, Canva as applicable."; const iterate = p.iterate || "End by asking 2–3 questions and offering a v2 refinement path."; const risk = p.risk || "Risk Check: keep claims verifiable; avoid protected-class targeting."; return `Role & Outcome Act as a ${p.role || "top 1% real-estate coach"} and produce: “${title}” for ${audience} in ${moduleName}. Audience & Channel Primary user = ${audience}. Output format = ${p.format || "bulleted brief + 1 table"}. Facts / Inputs ${inputs} Constraints ${constraints} Deliverable ${deliverable} Quality Controls ${quality} Success Metrics ${success} Tool Integration ${tools} Iteration Loop ${iterate} ${risk}`; } /* ============================================================ MERGE REMOTE PROMPTS ============================================================ */ function mergeRemotePrompts(base: PromptItem[], remote: RemotePayload): PromptItem[] { if (!remote || !remote.modules) return base; const modules = Object.keys(remote.modules); const byModule: Record = {}; base.forEach((d) => { if (!byModule[d.module]) byModule[d.module] = []; byModule[d.module].push(d); }); const matchModuleLabel = (name: string): string | null => { const fullModules = Array.from(new Set(base.map((d) => d.module))); if (fullModules.includes(name)) return name; const target = name.trim().toLowerCase(); return ( fullModules.find( (full) => displayNameForModule(full).trim().toLowerCase() === target ) || null ); }; modules.forEach((raw) => { const entries = remote.modules?.[raw] || []; const targetModule = matchModuleLabel(raw); if (!targetModule) return; const existing = byModule[targetModule] || []; const existingMap = new Map(); existing.forEach((p) => existingMap.set((p.title || "").trim().toLowerCase(), p)); entries.forEach((obj) => { const t = (obj.title || "").trim().toLowerCase(); if (!t || existingMap.has(t)) return; const newItem: PromptItem = { title: obj.title || "Untitled Prompt", quick: obj.quick, role: obj.role, deliverable: obj.deliverable, success: obj.success, inputs: obj.inputs, constraints: obj.constraints, tools: obj.tools, iterate: obj.iterate, risk: obj.risk, module: targetModule, index: existing.length, }; existing.push(newItem); existingMap.set(t, newItem); }); byModule[targetModule] = existing; }); const merged: PromptItem[] = []; Object.keys(byModule).forEach((m) => { byModule[m].forEach((d, i) => merged.push({ ...d, index: i })); }); return merged; } /* ============================================================ MAIN COMPONENT ============================================================ */ export default function AIPromptVault() { const [data, setData] = useState([]); const [modules, setModules] = useState([]); const [selectedModule, setSelectedModule] = useState(""); const [selectedIndex, setSelectedIndex] = useState(null); const [copied, setCopied] = useState(false); const [loading, setLoading] = useState(true); /* ---------------- Load base & remote data ---------------- */ useEffect(() => { const base = buildBaseData(); setData(base); setModules([...new Set(base.map((d) => d.module))]); const loadRemote = async () => { try { const cachedStr = localStorage.getItem(KEY_REMOTE_CACHE); if (cachedStr) { const cached = JSON.parse(cachedStr) as RemotePayload; const merged = mergeRemotePrompts(base, cached); setData(merged); setModules([...new Set(merged.map((d) => d.module))]); } const res = await fetch(REMOTE_JSON_URL, { cache: "no-store" }); if (!res.ok) return setLoading(false); const remote = (await res.json()) as RemotePayload; const version = remote.version || ""; const cachedVer = localStorage.getItem(KEY_REMOTE_VER); if (!cachedVer || cachedVer !== version) { const merged = mergeRemotePrompts(base, remote); setData(merged); setModules([...new Set(merged.map((d) => d.module))]); localStorage.setItem(KEY_REMOTE_CACHE, JSON.stringify(remote)); localStorage.setItem(KEY_REMOTE_VER, version); } } catch (e) { console.warn("Remote prompts not loaded:", e); } finally { setLoading(false); } }; loadRemote(); }, []); /* ---------------- Derived state ---------------- */ const currentPrompt = useMemo( () => data.find( (d) => d.module === selectedModule && d.index === selectedIndex ) || null, [data, selectedModule, selectedIndex] ); /* ---------------- Tracking helper ---------------- */ const trackEvent = (eventName: string) => { if (typeof window === "undefined") return; if (window.dataLayer) window.dataLayer.push({ event: eventName }); if ((window as any).fbq) (window as any).fbq("trackCustom", eventName); if ((window as any).lintrk) (window as any).lintrk("track", { conversion_id: eventName }); }; /* ---------------- Copy prompt ---------------- */ const handleCopy = async () => { if (!currentPrompt) return; const text = buildFullPrompt(currentPrompt); try { await navigator.clipboard.writeText(text); } catch { const ta = document.createElement("textarea"); ta.value = text; document.body.appendChild(ta); ta.select(); document.execCommand("copy"); ta.remove(); } setCopied(true); setTimeout(() => setCopied(false), 1200); trackEvent("PromptVault_Copy"); }; /* ============================================================ RENDER ============================================================ */ return (
{/* HEADER */}
AI Prompt Vault for Real Estate Agents
Browse advanced “superprompts” organized by module. Copy the long prompt, paste into ChatGPT, and customize bracketed fields for your market and business.
{/* MODULE SELECT */} {/* PROMPT SELECT */} {/* PROMPT CARD */} {currentPrompt && (
{displayNameForModule(currentPrompt.module)} • Long Prompt
{currentPrompt.title}
{buildFullPrompt(currentPrompt)}
Tip: Personalize fields like [market] or{" "} [buyer persona] before using.
)} {loading && !currentPrompt && (

Loading prompts…

)}
); }