How a Solo Real Estate Agent Automated Brokerage Tasks with ChatGPT — Saving 40 Hours per Month
How a Solo Real Estate Agent Automated Brokerage Tasks with ChatGPT — Saving 40 Hours per Month
Running a one-person real estate brokerage in South Korea means juggling property listings, client inquiries, contract reviews, and marketing — all at the same time. This case study examines how a licensed solo agent (공인중개사) integrated ChatGPT into their daily workflow to automate repetitive tasks, resulting in approximately 40 hours of time savings per month.
The Challenge: One Agent, Dozens of Daily Tasks
Before automation, the agent’s weekly routine included:
- Writing 15–20 property listing descriptions from scratch- Responding to 30+ client inquiries via KakaoTalk and phone- Reviewing 5–8 lease and sale contracts for red flags- Creating social media marketing posts for listingsEach listing description alone took 20–30 minutes. Client inquiry responses were repetitive yet required careful, professional language. Contract review demanded concentration but often involved checking the same clauses repeatedly.
The Solution: A Three-Pillar ChatGPT Workflow
Pillar 1 — Automated Property Listing Descriptions
The agent built a structured prompt template using the OpenAI API that takes raw property data and generates polished Korean-language listing descriptions.
Installation and Setup
pip install openai python-dotenv
Create a .env file for your API key:
OPENAI_API_KEY=YOUR_API_KEY
Listing Description Generator Script
import openai
import os
from dotenv import load_dotenv
load_dotenv()
client = openai.OpenAI(api_key=os.getenv("OPENAI_API_KEY"))
def generate_listing(property_data: dict) -> str:
system_prompt = """You are an experienced Korean real estate copywriter.
Write a compelling property listing description in Korean.
Include: location highlights, interior features, transportation access,
nearby amenities, and a persuasive closing line.
Keep it under 300 characters for mobile-friendly display."""
user_prompt = f"""Property Details:
- Type: {property_data['type']}
- Size: {property_data['size_pyeong']}평 ({property_data['size_m2']}m²)
- Floor: {property_data['floor']}
- Deposit/Rent: {property_data['price']}
- Location: {property_data['location']}
- Features: {property_data['features']}
- Nearby: {property_data['nearby']}"""
response = client.chat.completions.create(
model="gpt-4o",
messages=[
{"role": "system", "content": system_prompt},
{"role": "user", "content": user_prompt}
],
temperature=0.7,
max_tokens=500
)
return response.choices[0].message.content
# Example usage
property_info = {
"type": "Apartment (아파트)",
"size_pyeong": 24,
"size_m2": 79,
"floor": "12th floor",
"price": "Jeonse 320,000,000 KRW",
"location": "Gangnam-gu, Seoul, near Yeoksam Station",
"features": "Full south-facing, renovated kitchen, built-in closets",
"nearby": "Yeoksam Station (2-min walk), Gangnam CGV, Homeplus"
}
print(generate_listing(property_info))
This reduced listing creation time from 25 minutes to under 3 minutes per property — including the agent's review and edits.
Pillar 2 — Client Inquiry Auto-Response System
The agent created a FAQ-aware assistant that drafts responses to common client questions using a knowledge base of property details and standard brokerage policies.
def handle_client_inquiry(inquiry: str, listing_context: str) -> str:
system_prompt = """You are a polite, professional Korean real estate agent assistant.
Answer client inquiries based on the listing context provided.
Always include:
-
A direct answer to the question
-
One additional helpful detail
-
A polite invitation to schedule a viewing
Respond in Korean. Keep the tone warm but professional.
If you don’t have enough information, say so honestly
and offer to check with the agent."""
response = client.chat.completions.create(
model=“gpt-4o”,
messages=[
{“role”: “system”, “content”: system_prompt},
{“role”: “user”, “content”: f”Listing Info:\n{listing_context}\n\nClient Question:\n{inquiry}”}
],
temperature=0.5,
max_tokens=400
)
return response.choices[0].message.content
Example
response = handle_client_inquiry(
inquiry=“Is parking included? How many spots?”,
listing_context=“24-pyeong apartment in Gangnam, 1 underground parking spot included, guest parking available”
)
print(response)
The agent reviews each draft before sending, but the initial drafting step — previously 5 minutes per response — now takes about 30 seconds.
Pillar 3 — Contract Clause Review Assistant
This was the highest-value automation. The agent uses ChatGPT to flag potentially problematic clauses in lease and sale contracts.
def review_contract(contract_text: str) -> str:
system_prompt = """You are a Korean real estate contract review assistant.
Analyze the contract text and identify:
- Missing standard protective clauses (특약사항)
- Unusual or potentially risky terms
- Clauses that deviate from standard Korean lease/sale templates
- Missing legally required disclosures
Format your response as a structured checklist.
IMPORTANT: You are NOT a lawyer. Flag items for professional legal review.
Always recommend consulting a licensed attorney for critical issues."""
response = client.chat.completions.create(
model="gpt-4o",
messages=[
{"role": "system", "content": system_prompt},
{"role": "user", "content": f"Please review this contract:\n\n{contract_text}"}
],
temperature=0.3,
max_tokens=1000
)
return response.choices[0].message.content
Important Disclaimer: This tool assists with preliminary review only. All flagged items must be verified by a licensed attorney. The agent uses this as a first-pass screening tool, not as legal advice.
Results: Monthly Time Savings Breakdown
| Task | Before (hrs/month) | After (hrs/month) | Saved |
|---|---|---|---|
| Listing Descriptions | 18 | 4 | 14 hrs |
| Client Inquiry Drafts | 15 | 3 | 12 hrs |
| Contract Pre-Review | 12 | 4 | 8 hrs |
| Marketing Copy | 8 | 2 | 6 hrs |
| **Total** | **53** | **13** | **40 hrs** |
temperature=0.3 for contract review (precision matters) and temperature=0.7–0.8 for marketing copy (creativity helps).- **Prompt versioning:** Keep your system prompts in separate text files and version-control them with Git. Small prompt changes can significantly affect output quality.- **Cost control:** Use gpt-4o-mini for simple FAQ responses and reserve gpt-4o for contract review. This can cut API costs by 60–70%.- **Context window strategy:** For long contracts, split them into sections and review each separately rather than sending the entire document at once.
## Troubleshooting Common Issues
| Issue | Cause | Solution |
|---|---|---|
openai.RateLimitError | Too many requests per minute | Add time.sleep(1) between API calls or implement exponential backoff |
| Inconsistent output language | Model defaults to English | Add explicit language instruction: "반드시 한국어로 답변하세요" in system prompt |
| Listing too long for platforms | No character limit enforced | Add max_tokens=200 and specify character limit in prompt |
openai.AuthenticationError | Invalid or missing API key | Verify .env file exists and key starts with sk- |
| Hallucinated property details | Model fills gaps creatively | Add instruction: "Only use information explicitly provided. Do not invent details." |
Is it safe to use ChatGPT for reviewing real estate contracts?
ChatGPT can serve as a useful first-pass screening tool to flag unusual clauses or missing standard provisions. However, it should never replace professional legal review. In this case study, the agent used the AI output as a checklist to discuss with their attorney, reducing the attorney’s billable review time as well. Always disclose AI-assisted processes to clients when applicable.
How much does the OpenAI API cost for this type of real estate workflow?
The agent in this case study spent approximately $15–25 per month on API usage, processing around 80 listing descriptions, 150 client inquiry drafts, and 25 contract reviews monthly. Using gpt-4o-mini for simpler tasks and gpt-4o only for contract analysis keeps costs manageable. You can set spending limits in the OpenAI dashboard to avoid surprises.
Can this workflow be adapted for real estate markets outside South Korea?
Absolutely. The three-pillar structure — listing generation, inquiry response, and contract review — applies universally. You would need to adjust the system prompts to reflect local real estate terminology, legal requirements, and market conventions. For example, US agents would modify the contract review prompt to check for state-specific disclosure requirements, while UK agents might focus on leasehold versus freehold distinctions.