CLAUDE.md v1.1 · Afroz Shaik Real Estate · Built March 2026
AI Marketing Team
Workflow Reference
The autonomous content and campaign system — how five agents collaborate through Notion to produce, verify, and publish every piece of marketing content.
5 Agents
7 Skills
6 Tools
Notion Task Board
Canva + Buffer + Google Drive
Two North Stars — every action serves at least one
1
Make Afroz Shaik the go-to realtor for South Asian families in Calgary
2
Generate more closings — target 4 per month, growing consistently
Core Execution Loop
How Every Task Gets Done
Claude scans the Notion board autonomously at 7 AM daily. No confirmation needed — it executes, flags, and reports.
01
Scan the Task Board
Connect to Notion DB
5ca89c5d-.... Query all “To Do” tasks. Sort by priority: High → Medium → Low. Read Title, Priority, Agent, Details, Notes.02
Assess for Blockers
A task is blocked if required external data is missing — no CREB data, no property sheet, no property photos. If blocked → Status = “In Progress” + write BLOCKED note → move on. Never skip silently.
03
Execute the Task
Set Status → “In Progress”. Run the correct script: generate-content.js for copy tasks, generate-graphic.js for visuals, schedule-post.js for publishing, or orchestrator.js for full pipeline. Outputs saved to /outputs/ folder.
04
Quality Check — 4 Questions
Every output must pass all four before marking complete. If any fail → rewrite. Listing content has an additional 5-point checklist (location leads, floor-by-floor headings, buyer fit line, exit strategy line, NE Calgary insurance note).
05
Update Notion
Status → “Complete”. Fill Output File Path. Add human-attention flags to Notes. Run update_properties and replace_content as separate sequential calls — never combined.
06
Handle Errors
If a task fails → reset Status to “To Do” + write ERROR note → move to next task. Never stop a full run because one task failed. Log the error, continue.
07
Final Report
After all tasks: output summary table — tasks processed, complete, blocked, errors. Includes flags requiring Afroz or VA action.
The AI Team
Five Agents, One Mission
Each agent has a defined lane. They don’t overlap. Research before content. Content before design. Design before publishing.
AGENT 01
Market Researcher
Data engine. Pulls CREB numbers, CMA comps, area research. Every figure has a named source. Never estimates.
→ Content Creator
→ Campaign Strategist
→ Data Analyst
→ Campaign Strategist
→ Data Analyst
AGENT 02
Content Creator
Writing engine. Listing descriptions, captions, emails, guides — all in Afroz’s voice. Reads brand voice guide before every task.
→ Creative Designer
→ VA for scheduling
→ Afroz for approval
→ VA for scheduling
→ Afroz for approval
AGENT 03
Creative Designer
Visual production. Receives copy from Content Creator, produces Canva designs. Warm, people-first, community-feel aesthetic.
→ VA for publishing
→ Afroz for visual approval
→ Afroz for visual approval
AGENT 04
Data Analyst
Performance tracking. Weekly reports, campaign mid-points, post-mortems within 48 hrs of campaign close.
→ Campaign Strategist
→ Content Creator
→ Content Creator
AGENT 05
Campaign Strategist
Coordinates all four agents. Plans campaigns 4–6 weeks ahead. Issues specific Notion task cards. Max 3 active campaigns simultaneously.
→ All four agents
→ Afroz for brief approval
→ Afroz for brief approval
Sequencing Rule
Dependency Chain — Always This Order
Never start a later step without the earlier step complete. If a dependency is missing, block and flag clearly in Notion.
① Market Researcher
→
② Content Creator
→
③ Creative Designer
→
④ Buffer Scheduler
→
⑤ Data Analyst (post-campaign)
Tool Integration Status — April 2026
Connected Tools & Limitations
| Tool | Status | What It Can Do | Known Limitation |
|---|---|---|---|
| Notion | Connected | Read/write tasks, search, update properties, replace content | Run update_properties + replace_content as separate calls, never combined |
| Canva | Connected | Generate designs, open editing transactions, verify text, export PNG | AI frequently garbles text — mandatory verify-and-fix workflow after every generate |
| Buffer via Zapier | Connected | Schedule Instagram & Facebook posts, send now | Defaults to Carousel for single images — must explicitly set “Post” type |
| Google Drive via Zapier | Limited | Search files by name, search folders by name | Read-only — cannot create, upload, or move files. Use Chrome automation or manual upload instead |
| Claude in Chrome | Available | Browser automation, create Google Docs by typing content directly | Cannot upload local container files to Drive — content must be typed, not uploaded |
| Gmail / Google Calendar | Connected – Unused | Email access, calendar access | Not yet integrated into active workflow |
Quality Standards
Before Any Task Is Marked Complete
✅ Standard 4-Question Check — All Content
✓ Sounds like Afroz speaking to one real person — not a brand talking to a demographic?
✓ Contains zero urgency language and zero banned phrases?
✓ Ends with exactly one CTA appropriate to the content type?
✓ Afroz would be comfortable saying every word out loud to a client sitting across from him?
🏠 Additional Check — Listing Content Only
✓ Location leads the opening sentence
✓ Floor-by-floor sub-headings present (LOCATION / MAIN FLOOR / SECOND FLOOR / BASEMENT / BACKYARD / PARKING / RENOVATIONS / NEIGHBOURHOOD)
✓ Buyer fit line included
✓ Exit strategy line included
✓ NE Calgary insurance note present if property is in NE Calgary
Escalation Flags
When to Flag for Human Attention
These are written into the Notion Notes field. Claude does not stop execution — it logs the flag and continues.
EMAIL
Afroz personal opening line requiredEmail is ready but the personal first line must be written by Afroz before sending.
WHATSAPP
Afroz personal send requiredMessage is drafted. Afroz must send it personally — never automated.
VA ACTION
VA needs to fill in the bracketsContent contains [placeholders] that require the VA to supply specific information before publishing.
GRAPHIC
Property photos not specifiedVA must supply property photos before Canva design can be exported and published.
AFROZ REVIEW
Area or community requires approvalContent involves a neighbourhood or topic that requires Afroz’s explicit sign-off.
DATA MISSING
Task requires external data sourceDescribe exactly what data is needed and from which source to unblock this task.
Design → Publish Pipeline
Canva to Instagram — Correct Sequence
Never skip step 4. Text verification is mandatory — Canva AI cannot be trusted with text accuracy.
1
Generate Design in Canva
Call generate-design. Use short, simple text labels — under 20 characters, no special characters, no $ ranges.
2
Afroz Picks a Design
Present design candidates. Wait for Afroz to select preferred option before proceeding.
3
Save to Canva Account
Call create-design-from-candidate with job_id and candidate_id of selected design.
4
⚠️ Verify & Fix ALL Text
Open editing transaction. Inspect every text element. Compare against original spec. Fix garbled text with replace_text. Common failures: dollar amounts, brand names, location names, parenthetical content, labels.
5
Export as PNG
export-design at 1080×1080px for Instagram. Only after text verification passes.
6
Save to Google Drive
Save to weekly folder inside OUTPUT FILES. Naming: month-wk#-2026 (e.g. 05-wk3-2026). Use Chrome automation or manual VA upload — Zapier Drive is read-only.
7
Schedule via Buffer
Instagram: next day 9:00 AM MT. Facebook: next day 10:00 AM MT. Caption + image URL.
8
⚠️ Verify Post Format
After publishing, check that single-image posts appear as “Post” not “Carousel.” Buffer defaults to Carousel — must be explicitly set to Post type.
Lessons Learned
Operational Notes from Live Execution
Canva AI Text Is Unreliable
Dollar amounts, brand names, locations, and numbers are all vulnerable to garbling.
"Calgary" became "Cal". "$1,200-$2,400" became "$1,200-$34,0000". "Afroz Shaik" became "CALGROV|WITHPRABHATK". Always verify every text element after generation. When severely garbled, fix manually in the Canva web editor.Buffer Carousel Default
Buffer defaults to Carousel format even for single-image Instagram posts. Must explicitly set post type to
"Post". Verify format is correct after publishing. If Buffer forces Carousel on single images, flag to Afroz and recommend manual posting.Google Drive via Zapier Is Read-Only
Zapier supports only
google_drive_find_a_file and google_drive_find_a_folder. No creating, uploading, or moving files. Workarounds in order of preference: (1) Chrome automation to create Google Docs directly, (2) downloadable files for manual VA upload, (3) Notion as content repo.Notion Update Pattern
Run
update_properties and replace_content as separate sequential calls. Never combine them into one operation — combining causes incomplete updates and data loss.Autonomous Execution Standard
Claude does not ask for confirmation. Does not ask for clarification before attempting. Makes the best judgement call, executes, and flags anything requiring human attention in the Notion Notes field. Partial outputs are not acceptable — every deliverable in a task is completed before the task is marked done. A session that produces incomplete deliverables requiring manual follow-up fails the standard.