🏠 RE Agent CRM β€” Research Report

Deep research across 7 tracks Β· June 11, 2026

βœ… Research Complete 7 Tracks Australian Market Solo RE Agents
1
Competitor Analysis
β–Ό
# Real Estate Agent CRM Market Analysis
## Australian Solo Practitioner Focus

---

## COMPETITOR DEEP-DIVES

---

### 1. FOLLOW UP BOSS

**Target:** US-focused, solo agents to mid-size teams (2–50 agents)

**Monthly Price:** USD $69/month solo, $499/month for teams of 10

**Core Features:**
- Lead aggregation from 200+ sources (Zillow, Realtor.com, etc.)
- Smart lists and automated lead routing
- Email/SMS/calling built-in
- Activity timeline per contact
- Mobile app (genuinely decent)
- Integrations with Zapier, Google, major US portals

**UI Strengths:**
- Clean dashboard, relatively modern design
- "Today" view shows tasks clearly
- Fast contact search
- Mobile app is functional and frequently updated

**UI Weaknesses:**
- Setup is overwhelming for a solo agent β€” designed for teams with an admin
- Lead automation features are overkill and clutter the interface
- Calling features irrelevant to Australian VOIP landscape

**What Users Complain About (G2/Capterra):**
- *"Takes weeks to set up properly"*
- *"Too expensive for a solo agent who just wants simple follow-ups"*
- *"Built for US portals β€” Australian agents get almost no automatic lead capture value"*
- *"Support is US timezone β€” useless for Australians"*
- Onboarding assumes you have a team admin to configure it
- Price-to-value poor for solo operators

**Australian Relevance:** Low. No REA/Domain integrations. Pricing in USD hurts. No local support.

---

### 2. LIONDESK

**Target:** Solo agents and small teams, US market

**Monthly Price:** USD $39/month solo, $139/month for teams

**Core Features:**
- Contact management with tags and custom fields
- Built-in calling, texting, video email
- Drip campaigns and mass texting
- Task reminders and pipeline stages
- AI lead follow-up ("AI Texting")
- Zapier integration

**UI Strengths:**
- Cheapest full-featured option in the US market
- AI texting is genuinely innovative for lead response
- Pipeline view is simple and visual
- Mobile app exists (iOS/Android)

**UI Weaknesses:**
- Interface looks dated β€” early 2010s aesthetic
- Mobile app is slow and frequently crashes (major App Store complaint)
- Notification system is unreliable
- Drip campaign builder is clunky

**What Users Complain About (G2/Capterra/App Store):**
- *"Mobile app is basically unusable β€” crashes constantly"*
- *"UI looks like it was built in 2012 and never updated"*
- *"Customer support is terrible β€” takes days to respond"*
- *"Too many features I never use cluttering the screen"*
- *"Sync issues between mobile and desktop"*
- 2.8/5 average App Store rating β€” consistently poor mobile experience

**Australian Relevance:** Very low. Built entirely around US calling/texting infrastructure. AI texting doesn't work in Australia. No local portal integrations.

---

### 3. TOP PRODUCER

**Target:** Established US agents and small brokerages (5–20 agents), been around since 1992

**Monthly Price:** USD $109/month solo, $179/month for teams

**Core Features:**
- Contact and lead management
- MLS integration (US-specific)
- Market Snapshot automated reports sent to clients
- Smart drip campaigns
- Social Connect (social media lead gen add-on)
- Pipeline and transaction management

**UI Strengths:**
- Deep feature set β€” genuinely powerful for US agents
- Market Snapshot is a strong client retention tool
- Long track record means stable, bug-tested core

**UI Weaknesses:**
- Interface is visually outdated β€” feels like legacy software
- Navigation is confusing, too many menus
- Onboarding is a multi-hour commitment
- Mobile experience is an afterthought

**What Users Complain About (G2/Capterra):**
- *"Feels like a 1999 piece of software with a fresh coat of paint"*
- *"Mobile app is embarrassingly bad for 2024"*
- *"Took me 3 months to actually use it properly"*
- *"Price keeps going up, features don't improve"*
- *"Market Snapshot is great but everything else is clunky"*
- Frequent complaints about slow load times
- Cancellation process described as deliberately difficult

**Australian Relevance:** Zero. MLS doesn't exist in Australia. Built entirely around US real estate infrastructure.

---

### 4. REX CRM ⭐ (Most Important Competitor)

**Target:** Australian and UK real estate agencies, solo to mid-size (primary Australian market player)

**Monthly Price:** AUD ~$139–$199/month per agent (enterprise pricing on request for teams). Minimum commitment typically required.

**Core Features:**
- Contact and vendor/buyer management
- Property listing management
- OFI (Open For Inspection) check-in tool (mobile)
- Automated appraisal follow-up sequences
- REA/Domain/Portal integrations
- Email marketing built-in
- Activity feed per contact
- Transaction and settlement tracking
- DocuSign integration
- Reporting dashboards
- Chrome extension for LinkedIn/web capture

**UI Strengths:**
- Actually built for Australian real estate workflows (OFI, vendor/buyer split, appraisal pipeline)
- REA Group integration is genuinely useful
- OFI check-in on mobile is well-executed
- Regular product updates
- Local Australian support team

**UI Weaknesses:**
- Feature bloat β€” trying to be everything (listing management, CRM, marketing, transactions)
- Onboarding requires agency commitment, not designed for true solo operators
- Pricing is not friendly for a sole practitioner just starting to build habits
- Mobile app is functional but secondary to desktop experience
- Dashboard customisation is limited

**What Users Complain About (G2/Capterra/Product Review AU):**
- *"Way too expensive for a solo agent who doesn't need all the listing management features"*
- *"Onboarding is long β€” needed their team to help set it up"*
- *"The mobile app works but it's clearly not the priority"*
- *"I use 20% of the features and pay for 100%"*
- *"Feels built for the principal/office manager, not the agent in the field"*
- *"Reporting is powerful but I just want to see what calls I need to make today"*

**Australian Relevance:** High β€” but overkill and overpriced for solo operators. This is your most direct competitor and your clearest proof that the market gap exists.

---

### 5. AUSTRALIAN-SPECIFIC ALTERNATIVES

#### VaultRE
**Price:** ~AUD $150–250/month per agent (agency-level contracts)
**Target:** Mid to large Australian agencies
**What it does:** Full agency management β€” listings, buyers, vendors, CRM, portals, trust accounting connections
**Strengths:** Deep REA/Domain integration, widely used in QLD/NSW/VIC agencies, window card and marketing tools
**Weaknesses:** Enterprise software masquerading as an agent tool. Solo agents are not the target market. UI is dense and functional, not beautiful. Requires agency-level onboarding.
**Verdict:** Not competing for solo agents. Too heavy.

#### PropertySuite / AgentPoint
**Price:** Varies, typically agency bundle pricing
**Target:** Agencies needing full website + CRM stack
**What they do:** More about website/portal presence than daily agent workflow
**Verdict:** Not direct competition for the use case described. Website-first, CRM-secondary.

#### AgentBox
**Price:** ~AUD $100–180/month per agent
**Target:** Australian agencies
**What it does:** Similar to VaultRE β€” listings, portals, CRM all-in-one
**Strengths:** Good portal sync, widely adopted
**Weaknesses:** Same problem β€” built for agencies, solo agent is a second-class user. Mobile experience rated poorly. UI dated.

**Pattern across all Australian tools:** They are built for the *office* and the *principal*, with the agent as a user inside a larger system. Nobody is building for the *agent* as the primary customer.

---

### 6. SIMPLE SOLUTIONS: HOW AGENTS ACTUALLY COPE TODAY

#### Google Sheets
**Cost:** Free
**What agents actually build:**
- Column headers: Name, Phone, Address, Lead Date, Last Contact, Next Action, Stage, Notes
- Colour-coded rows by pipeline stage
- Simple dropdown for stage tracking
- Conditional formatting for overdue follow-ups

**Why it works:** Zero friction, familiar, flexible, syncs everywhere
**Why it fails:** No reminders/notifications, no mobile-first experience, no conversation history, breaks at scale, no accountability, easy to neglect

#### Notion Templates
**Cost:** Free–$16/month
**What agents actually build:**
- Database with filtered views ("This Week's Follow-ups", "Active Listings", "New Leads")
- Kanban board view for pipeline stages
- Linked databases for properties + contacts
- Templated note pages per client

**Why it works:** Beautiful, flexible, Kanban view is genuinely useful, mobile app is decent
**Why it fails:** Requires significant setup time, no native reminders (must use Notion AI or third-party), overkill to maintain, not purpose-built so agents don't stick with it

**The key insight here:** A meaningful percentage of solo agents are on Sheets or Notion *because nothing purpose-built is appropriately priced and simple enough*. This is not a feature gap β€” it's a product philosophy gap.

---

## SUMMARY SCORECARD

| Tool | Price AUD/mo | Mobile Quality | Solo-Agent Fit | AU Market Fit | Simplicity |
|------|-------------|---------------|----------------|---------------|------------|
| Follow Up Boss | ~$105 | Good | Medium | Very Low | Medium |
| LionDesk | ~$60 | Poor | Medium | Very Low | Medium |
| Top Producer | ~$165 | Very Poor | Low | Zero | Low |
| Rex CRM | ~$139–199 | Okay | Low | High | Low |
| VaultRE | ~$150–250 | Poor | Very Low | High | Very Low |
| Google Sheets | Free | Poor | High | High | High |
| Notion | Free–$25 | Medium | Medium | High | Medium |

---

## THE #1 GAP IN THE MARKET

### **"The mobile-first, daily-habit CRM built for the Australian agent in the field β€” not the office."**

Here is the precise gap, broken into three layers:

---

**Layer 1: The Price-Complexity Trap**
Every purpose-built Australian tool (Rex, VaultRE, AgentBox) is priced and designed for *agencies*, not individual agents. They cost $150–250/month, require onboarding, and assume you have an admin. The solo agent either overpays for features they don't use or falls back to Google Sheets. There is **no well-designed tool priced at $29–49/month for the solo Australian agent** that does exactly and only what they need.

**Layer 2: The Mobile-First Gap**
Australian real estate agents spend the majority of their working day in the field β€” at appraisals, OFIs, driving between properties. Every existing tool is *desktop-first with a mobile app bolted on*. The agent needs to log a note in the carpark immediately after an appraisal. They need to see their three calls for today on their phone before they leave the house. The tool that wins will be **designed phone-first**, with the desktop as secondary.

**Layer 3: The Daily Habit Problem**
The single biggest failure mode of every CRM in this market β€” confirmed repeatedly in reviews β€” is that agents stop using it within 60 days because it's too much friction for daily use. Google Sheets wins not because it's good, but because it's *low friction*. The winning product will have a **30-second daily check-in UX** β€” open app, see today's tasks, log a note, set a reminder, close app. That's it. No configuration. No dashboards they don't need. No features that require training.

---

**The MVP owns this positioning:**
> *"The CRM that fits in your pocket and takes 30 seconds a day β€” built for Australian real estate agents who are always in the field."*

**Specific feature bets for MVP:**
1. One-tap lead logging with voice-to-text notes (field use case)
2. Daily digest: "You have 4 follow-ups today" β€” shown on open
3. Pipeline view that fits on a phone screen without scrolling sideways
4. Automatic follow-up nudges: set it and forget it reminders
5. WhatsApp/SMS thread logging (how Australian agents actually communicate)
6. AUD pricing, Australian timezone, Australian number format β€” baseline table stakes that Rex charges $180/month for

**Who you're stealing from:**
- Rex/VaultRE users who feel overcharged and underserved on mobile
- Google Sheets users who know they need something better but haven't found it
- Agents who trialled a US CRM, got frustrated, and gave up

**Pricing to win:** AUD $39–49/month solo. No setup fee. No contracts. Free trial. This price point doesn't exist in the Australian purpose-built market. It's the gap.
2
Feature Analysis β€” What RE Agents Actually Need
β–Ό
# Real Estate Agent CRM: Feature Analysis for Solo Australian Practitioners

---

## 1. MUST-HAVE Features (MVP Cannot Ship Without These)

### Contact/Lead Record β€” Exact Fields Required
- **Full name** + **preferred name** (Australians use first names; "Call me Dave" matters)
- **Mobile** (primary) + **home phone** (secondary β€” older vendors still use these)
- **Property address** β€” the asset being sold, not just their home address
- **Suburb + postcode** β€” for quick regional filtering
- **How they found you** (referral name, letterbox drop, open home, online inquiry, etc.)
- **Lead status** β€” single dropdown: `New Lead β†’ Property Visited β†’ Following Up β†’ Appraisal Given β†’ Listed β†’ Under Contract β†’ Sold β†’ Dead`
- **Lead source** tag (REA, Domain, referral, cold outreach)
- **Estimated property value** β€” agents need this for prioritization
- **Vendor motivation notes** β€” "divorcing, must sell by June" is more valuable than any field label
- **Next action date + next action note** β€” one combined field: "Call Thursday β€” they're comparing agents"

### Interaction Log β€” Exactly This
- Timestamped notes per contact (not per "deal" β€” just chronological against the person)
- Quick-add note from mobile in under 3 taps
- Note types: `Call | Visit | Email | Text | Other` β€” simple tag, not complex
- The note body: **free text only** β€” agents write how they think, not in structured fields
- Show full thread view per contact β€” every interaction in one scroll, newest at top
- Flag a note as "important" β€” for things like "they mentioned their daughter is pushing them to sell"

### Follow-Up / Reminder System β€” No Fluff
- Set a reminder from any note: "Remind me in 3 days / 1 week / custom date"
- **Today's task list** as the HOME SCREEN β€” not a dashboard with graphs, literally "here are your 7 calls today"
- Overdue reminders shown prominently in red β€” not buried
- One-tap to reschedule from the task: "Not done β€” push 2 days" without leaving the screen
- Reminder should include: contact name, property suburb, last note summary (1 line), and what action to take
- **No calendar complexity** β€” not a full calendar, just a date-based task list

### Pipeline View
- Kanban or list view of all active contacts by stage
- **Count + estimated value** per stage β€” "Following Up: 8 contacts, ~$4.2M in properties"
- Tap any contact from pipeline to open their record
- Visual indicator of "gone cold" β€” no contact in 14+ days, show a warning flag
- Filter by suburb or estimated value

### Mobile App β€” Non-Negotiable MVP Requirements
- Native iOS app (iPhone-first β€” most Australian field agents use iPhones)
- Works **offline** β€” agents are in rural NSW properties with no signal; notes must save locally and sync later
- Voice-to-text in the notes field β€” agents dictate after a walk-through while sitting in their car
- One-tap to call a contact directly from their record
- The entire MVP must be operable with one thumb while standing in someone's driveway

---

## 2. HIGH-VALUE Features (Post-MVP β€” Drive Retention)

### Property Inspection Workflow
- **Pre-visit checklist** per contact: "Confirmed appointment, printed CMA, checked recent sales"
- **Post-visit note template** (optional, not forced): prompts for `Property condition | Vendor motivation | Price expectation | Competition (other agents) | Next step`
- Photo attachment to a note β€” agents photograph whiteboards, documents, property defects
- **Comparable sales quick-lookup** (link out to CoreLogic or Domain β€” don't build this, just integrate)

### Smart Reminders & Follow-Up Intelligence
- "You haven't contacted [Name] in 18 days β€” they were in 'Following Up'" β€” proactive nudge
- Recurrent reminders: "Check in with past clients every 90 days" (referral pipeline is huge in RE)
- **Reminder templates**: pre-built sequences like "Post-appraisal: Day 3 β†’ Day 7 β†’ Day 14 β†’ Day 30"
- Birthday/anniversary reminders (settlement anniversary is gold for referrals in Australia)

### Communication History Integration
- **SMS log**: send SMS from the app and it auto-logs against the contact
- Email BCC address: agent BCCs a unique address and the email appears in the contact's thread
- WhatsApp note-logging: can't auto-integrate (API restrictions), but one-tap to add "WhatsApp conversation" note
- Call logging: tap "Logged a call" after hanging up β†’ quick note entry β†’ done

### Referral & Source Tracking
- Track which referral sources produce the most listings (not just leads)
- "This referral came from [Past client name]" β€” link records together
- Simple report: source β†’ leads β†’ listed β†’ sold conversion by source

### Document Basics
- Attach a file to a contact record (agency agreement PDF, council rates notice, etc.)
- **Not** a document management system β€” just attachment capability

### Pipeline Reporting (Lightweight)
- Weekly summary email to the agent: "You have X contacts going cold, Y follow-ups overdue, Z listings this month"
- Conversion rate by lead source (simple table, not dashboard)
- Monthly "deals closed" summary for their own performance tracking

---

## 3. BLOAT Features β€” Deliberately Do NOT Build

### Enterprise CRM Garbage
- **Custom field builder** β€” agents don't configure software, they abandon it
- **Multi-user permissions / roles** β€” this is a solo tool; teams can come later
- **Workflow automation builder** (Zapier-style if/then logic) β€” too complex for daily field use
- **Email marketing campaigns / mass email** β€” not a marketing tool; agents use REA/Domain for that
- **AI lead scoring** β€” sounds good, adds confusion; agents know their leads
- **Reporting dashboards with 15 charts** β€” one page of useful numbers, not a BI tool
- **Territory management / geographic routing** β€” enterprise sales tool, not relevant
- **Commission/split calculators built in** β€” use a spreadsheet; not a CRM job
- **Integration marketplace** (50+ integrations) β€” build 3 perfect ones, not 50 mediocre ones
- **Activity feed / team news feed** β€” Salesforce nonsense; solo agent doesn't need this
- **Contact scoring / lead temperature gauges** β€” agent knows who's hot; don't gamify their relationships

### Feature Creep That Kills Simplicity
- **Multiple pipelines** β€” one pipeline with clear stages is enough for MVP and V2
- **Task dependencies** ("Task B cannot start until Task A is complete") β€” overkill
- **Time tracking** β€” not relevant
- **Invoice/billing within CRM** β€” they use Xero or their agency handles this
- **Social media monitoring** β€” noise
- **Property listing management** β€” REA and Domain already do this; don't compete
- **Video calling built-in** β€” they use FaceTime; don't replicate it

### The Golden Rule
> If an agent needs to attend a training session to use a feature, cut it.

---

## 4. Mobile-First Considerations

### What Agents MUST Do On Phone (Field-Critical)
| Action | Design Requirement |
|---|---|
| Add a new lead on the spot | ≀3 taps from app open to saved record |
| Log a call note after hanging up | Voice-to-text + one confirm tap |
| Check today's tasks | First screen on open, no navigation |
| Mark a task done + set next follow-up | Single screen, no modal hell |
| Find a contact's number quickly | Search by name or address, instant |
| View full conversation history | Infinite scroll, newest first |
| Set a reminder while in the car | Natural language: "in 3 days" |
| One-tap call/text from record | Tap number β†’ phone dialer opens |

### What Can Wait for Desktop
- Setting up account, importing contacts (CSV upload)
- Reviewing pipeline performance / monthly reports
- Bulk-updating contact stages after a big week
- Writing longer property appraisal notes (keyboard preferred)
- Managing notification preferences / app settings
- Any admin task that isn't time-sensitive

### Mobile UX Non-Negotiables
- **Bottom navigation bar** β€” thumb-reachable: Today | Contacts | Pipeline | Add
- **No hamburger menus hiding critical features**
- Large tap targets β€” agents use phones in gloves or with dirty hands at properties
- Auto-save on every keystroke β€” never lose a note due to a call interrupting
- **Dark mode** β€” viewing phone in a bright car at noon is painful
- Push notifications for overdue tasks (not promotional β€” operational)
- Face ID / fingerprint login β€” fast access, no password typing in the field

---

## 5. Daily Workflow of a Solo RE Agent

### Morning Routine (7:00–8:30am) β€” Mostly at Home or Office
**With the tool:**
1. Open app β†’ **Today screen loads immediately** showing 6 follow-up tasks
2. Review each task with one-line context: "Dave Chen β€” 14 Elm St Parramatta β€” Last call: They want $1.4M, market says $1.25M. Call to discuss pricing reality."
3. Reprioritize: push 2 non-urgent tasks to tomorrow with one tap
4. Quick scan of **"Going Cold"** alerts β€” any hot lead not contacted in 10+ days
5. Check if any new leads came in overnight (REA/Domain inquiry that was manually added or auto-logged)

**Total time with tool: 8–12 minutes**

---

### In-Field Usage (9:00am–5:00pm) β€” Almost Entirely Mobile

**Scenario 1: Just finished a property appraisal visit**
- Sits in car outside property
- Opens contact β†’ taps "Add Note" β†’ hits microphone
- Dictates: "Great property, 4 bed, good condition, motivated seller β€” wife wants to move to QLD by July. They've spoken to McGrath already. I think we can list at $1.38M. Follow up Friday to get their decision."
- Taps save β†’ immediately sets reminder: "Friday 10am β€” get listing decision"
- Back on road in 90 seconds

**Scenario 2: Unexpected call from a prospect while driving**
- Pulls over (hands-free, but needs to log after)
- After call: opens app β†’ contact β†’ quick note: "Called re: price concern, reassured with 12 Maple St comparable. Sending info tonight. Call back Monday."
- Sets Monday reminder
- Done in 60 seconds

**Scenario 3: New lead from a sign call (someone calls from a For Sale sign)**
- Pulls over or logs immediately after
- New contact: name, mobile, property address
- One note: "Sign call, interested in selling similar property nearby, says they're 6 months out. Low priority but keep warm."
- Stage: New Lead. Reminder in 6 weeks.

**Scenario 4: Walking into an open home**
- Checks pipeline view for suburb β€” sees they have 3 other prospects in that area
- Reviews one contact's history in 30 seconds before a meeting β€” fully briefed

---

### Evening Wrap-Up (6:00–7:30pm) β€” Home, Possibly Desktop

**With the tool:**
1. Review today's completed/incomplete tasks β€” close out done items
2. Any incomplete tasks from today: reschedule deliberately (don't just auto-push)
3. Add any notes from the day that weren't logged in the field (rare if mobile UX is good)
4. **Scan tomorrow's task list** β€” mentally prepare, maybe reorder priorities
5. Check pipeline: anyone move stages today? Update 2–3 records.
6. Look at "Going Cold" list β€” is there anyone worth a quick text tonight?

**Total time with tool: 10–20 minutes**

---

## Summary: The Product Philosophy

> Build the CRM that a busy agent uses in the **car between appointments**, not at a desk between meetings.

Every feature decision should be tested against: *"Can an agent do this in 60 seconds while sitting in a hot car in Western Sydney with their mind already on the next appointment?"*

If not β€” cut it, simplify it, or move it to desktop-only.

The agents who love their CRM are the ones who never feel like they're doing data entry β€” they feel like they're **just remembering things better**.
3
UI/UX β€” Successful Patterns from Top Apps
β–Ό
# CRM Design Analysis & Direction for Australian RE Agent Tool

---

## 1. The 3-4 UI Patterns That Make These Apps "Feel Good" Daily

### Pattern 1: Progressive Disclosure (Notion + Linear)
- Show only what's needed *right now* β€” hide complexity behind expand/click
- Linear does this brilliantly: a task looks simple until you need depth, then it unfolds
- For RE: lead card shows name, suburb, stage, next action β€” nothing more until tapped
- **Rule:** Every screen should have one primary action that's obvious without reading

### Pattern 2: The "Inbox Zero" Satisfaction Loop (Follow Up Boss)
- Follow Up Boss built its entire product around the daily call list β€” agents wake up, see exactly who to call, work through it, feel done
- The emotional reward of clearing a list is addictive and drives daily habit
- **Apply this:** Your home screen IS the task list. Completing a follow-up should feel like ticking off a satisfying checkbox, not filing paperwork
- Linear's "Done" animation, Todoist's confetti β€” micro-animations matter here

### Pattern 3: Inline Editing & Zero-Friction Data Entry (Streak + Notion)
- Streak wins because it lives inside Gmail β€” zero context switching
- Notion wins because you click any text and just type β€” no "edit mode"
- **For field use:** Voice-to-text note entry, one-tap stage changes, swipe gestures
- Every additional tap to log information = data that never gets logged

### Pattern 4: Spatial Memory Through Kanban (Pipedrive)
- Pipedrive's pipeline view works because humans remember *positions* β€” agents develop spatial memory for where each deal sits
- The act of dragging a card to the next stage is a ritual that creates mental closure
- **Critical insight:** Pipedrive found that users who interact with the pipeline view daily close 28% more deals β€” the visual accountability drives behaviour

---

## 2. Pipeline View Design: Kanban vs List vs Timeline

### Recommendation: **Kanban Primary, List Secondary, Timeline Hidden**

#### The Kanban Pipeline (Primary View β€” Desktop/Tablet)
```
[ NEW LEAD ]    [ VISITED ]    [ FOLLOWING UP ]    [ CONTRACT ]    [ CLOSED ]
   Sarah M.        Tom H.          Jenny K.           Mark T.
   Bondi           Manly           Mosman             Neutral Bay
   $1.8M est.      $2.2M est.      $3.1M est.         $4.5M est.
   Call today      Notes due       Check Fri          Sign Thurs
```
- **5 stages maximum** β€” RE sales cycle doesn't need more
- Each card: Name + Suburb + Estimated property value + Next action due
- Colour-coded urgency indicator (left border stripe): green = on track, amber = due today, red = overdue
- Card count + total estimated value per column (agents love seeing their pipeline value)
- Drag-and-drop stage progression with a satisfying snap animation

#### The List View (Mobile Primary View)
- Sorted by urgency: overdue β†’ due today β†’ due this week β†’ no date
- Swipe right = Mark contacted / Snooze 3 days
- Swipe left = Log note quickly
- This is the **field view** β€” designed for one thumb, standing at a property

#### Why NOT Timeline as Primary
- RE deals are relationship-driven, not deadline-driven
- Timeline creates anxiety without actionable insight
- Reserve it for a "deal history" view inside the contact page

### Pipeline Stage Design Principles
- Stage names should be **verb-based actions**, not status labels
  - ❌ "Qualification" β†’ βœ… "First Visit Done"
  - ❌ "Negotiation" β†’ βœ… "In Contract"
- Allow custom stages later β€” but ship with the 5 defaults
- **Stale deal indicator:** Cards that haven't been touched in 7+ days get a subtle amber pulse β€” silent accountability without nagging

---

## 3. Contact/Lead Detail Page β€” Above the Fold

### The Golden Zone (What Appears Without Scrolling on Mobile)

```
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  ← Back          Sarah Mitchell    [Edit]    β”‚
β”‚                                              β”‚
β”‚  πŸ“ 14 Oceanview Tce, Bondi NSW 2026        β”‚
β”‚  πŸ’° Est. Value: $1.8M – $2.1M               β”‚
β”‚  🏷️  [FOLLOWING UP] ←── tap to change stage β”‚
β”‚                                              β”‚
β”‚  πŸ“ž 0412 345 678    βœ‰οΈ sarah@email.com        β”‚
β”‚  [Call Now]  [Send SMS]  [Email]  [WhatsApp] β”‚
β”‚                                              β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
β”‚  β”‚ πŸ”” NEXT ACTION                          β”‚ β”‚
β”‚  β”‚ Call re: pricing strategy               β”‚ β”‚
β”‚  β”‚ Tomorrow, 10:00am          [Done] [Edit] β”‚ β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
```

### Below the Fold (Scrollable Sections)
1. **Conversation Thread** β€” chronological log of all notes, calls, SMSes
   - Each entry: timestamp, type icon, note content
   - Most recent at top
   - "Add Note" button sticky at bottom (always accessible)

2. **Property Details** β€” bedrooms, condition, motivation to sell, timeline
3. **Upcoming Reminders** β€” list of all scheduled follow-ups
4. **Documents/Photos** β€” property inspection images (camera roll integration)
5. **Source/Referral** β€” how this lead came in (word of mouth, door knock, open house, etc.)

### Above-the-Fold Design Rules
- **One CTA must be dominant** β€” for most leads it's "Call Now" or "Log Note"
- Property address is more important than email β€” RE agents think spatially by suburb/street
- Stage change must be one tap β€” it's the most frequent action
- Never show "created date" above the fold β€” irrelevant noise

---

## 4. Mobile-First Design Principles for Field Use

### Thumb Zone Architecture
- Primary actions (Call, Log Note, Change Stage) live in bottom 40% of screen
- Top area = information only β€” no buttons requiring precision at top
- Use iOS/Android native bottom sheet patterns for quick actions
- Minimum tap target: 48x48px β€” agents use phones with gloves, in cars, standing

### Speed-First Data Entry
- **Quick Log Button** β€” floating action button always visible, opens a simple note entry:
  - Who did you just talk to? (smart search)
  - What happened? (free text + voice-to-text)
  - Follow up? (3 days / 1 week / custom / none)
  - Done. 4 taps. Under 30 seconds.
- Pre-set follow-up intervals: "3 days", "1 week", "2 weeks", "1 month" β€” no date picker for common cases
- Template notes: "Left voicemail", "Not ready yet β€” check back in 30 days", "Very interested β€” send appraisal"

### Offline Capability
- All data must be readable offline β€” agents lose signal at properties constantly
- Queue actions locally, sync when connected
- Never show a loading spinner for data the app has already fetched

### Contextual Intelligence
- If it's 9am Monday: show "Today's Calls" first
- If agent is near a lead's property (geolocation opt-in): subtle "You're near Sarah Mitchell's property" nudge
- Calendar integration: surface reminders 1 hour before scheduled calls

### Gestures That Save Time
- Long press on lead card = quick action menu (Call / Log Note / Snooze / Change Stage)
- Pull to refresh feels responsive β€” <200ms on cached data
- Swipe back gesture always returns to previous screen (never gets stuck)

---

## 5. Colour & Typography Direction

### The Problem With Existing CRMs
- Salesforce: Cold enterprise grey/blue β€” feels like an IT tool
- HubSpot: Busy orange β€” high energy but overwhelming
- Most RE platforms: Either dated brown/cream or generic SaaS blue
- **None of them feel like something you'd choose to use**

### Recommended Palette: "Coastal Professional"

```
PRIMARY:
  Warm Slate       #2C3E50  β€” Primary text, headers (not black β€” warmer)
  Sandstone        #E8DDD0  β€” Background (cream-white, not stark white)
  
ACCENT:
  Pacific Blue     #2980B9  β€” Primary CTAs (blue but warm, not corporate)
  Terracotta       #C0392B  β€” Urgent/overdue indicators (warmer than red)
  Sage Green       #27AE60  β€” Completed/done states (fresh, not neon)
  
STAGE COLOURS (Pipeline):
  New Lead:        #8E9BAD  β€” Cool neutral (unknown potential)
  Visited:         #F39C12  β€” Warm amber (engaged, in progress)
  Following Up:    #2980B9  β€” Pacific blue (active relationship)
  Contract:        #8E44AD  β€” Rich purple (premium, serious)
  Closed:          #27AE60  β€” Green (victory)
  
BACKGROUND SYSTEM:
  Page BG:         #F7F4F0  β€” Warm off-white (not blinding white)
  Card BG:         #FFFFFF  β€” Pure white cards on warm background
  Sidebar/Nav:     #2C3E50  β€” Dark warm slate
```

### Typography Direction
- **Primary Font:** Inter β€” clean, modern, exceptional at small sizes on mobile
- **Alternative:** Plus Jakarta Sans β€” slightly warmer, excellent for Australian market
- **Avoid:** Roboto (too Android-generic), Helvetica Neue (too corporate)
- **Size Scale:**
  - Lead name: 18px semibold
  - Property address: 15px medium (grey)
  - Meta info: 13px regular
  - Notes/body: 15px regular with 1.6 line height (readable while walking)
- **Weight contrast over size contrast** β€” use regular vs semibold vs bold rather than huge size jumps

### Visual Character
- **Cards with subtle shadow** (not flat, not skeuomorphic) β€” 0 2px 8px rgba(0,0,0,0.08)
- **8px border radius** on cards β€” friendly but not playful
- **Generous whitespace** β€” RE agents deal with stressful situations; the app should feel calm
- Status indicators as **left border stripes** on cards, not full background colours
- **Icons:** Phosphor Icons or Lucide β€” clean, consistent weight, not cartoon-like

---

## 6. The Dashboard/Home Screen: First Thing Every Morning

### The "Morning Brief" β€” What Agents Need at 8am

```
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  Good morning, James πŸ‘‹                      β”‚
β”‚  Tuesday, 14 January                        β”‚
β”‚                                              β”‚
β”‚  β”Œβ”€β”€β”€ TODAY ────────────────────────────┐   β”‚
β”‚  β”‚  3 calls due today                   β”‚   β”‚
β”‚  β”‚  1 overdue from yesterday ⚠️          β”‚   β”‚
β”‚  β”‚  2 property visits scheduled         β”‚   β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚
β”‚                                              β”‚
β”‚  OVERDUE                                     β”‚
β”‚  ● Tom Harrison β€” Manly         Call back    β”‚
β”‚    Was due yesterday                         β”‚
β”‚                                              β”‚
β”‚  DUE TODAY                                   β”‚
β”‚  ● Sarah Mitchell β€” Bondi       Call re appr β”‚
β”‚    9:00 AM                                   β”‚
β”‚  ● Jenny Kim β€” Mosman           Send CMA     β”‚
β”‚    11:00 AM                                  β”‚
β”‚  ● Mark Thompson β€” Neutral Bay  Visit        β”‚
β”‚    2:30 PM                                   β”‚
β”‚                                              β”‚
β”‚  PIPELINE SNAPSHOT            [View Full]    β”‚
β”‚  New: 3  β”‚  Visited: 5  β”‚  Following: 8     β”‚
β”‚  Contract: 2  β”‚  $14.2M total pipeline       β”‚
β”‚                                              β”‚
β”‚  [+ Add New Lead]                           β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
```

### Home Screen Rules
- **No charts on the home screen** β€” agents don't need analytics at 8am, they need their action list
- Overdue items appear first, always β€” shame-based accountability is effective
- Pipeline snapshot shows *count* and *total estimated value* β€” one number that feels meaningful to an agent
- "Add New Lead" button always visible β€” if they met someone last night, they should be able to add them in 20 seconds
- **No news feed, no activity stream, no "what your pipeline looked like last week"** β€” that's noise at 8am
- The screen should answer: *"What do I do first today?"* β€” nothing else

### Notification Strategy
- Daily summary push at 8am: "3 calls due today, 1 overdue"
- Reminder 15 mins before scheduled calls
- **No notification for pipeline movement or "congratulations" messages** β€” RE agents hate noise
- Weekly digest email Friday 4pm: Deals progressed, deals stalled, new leads added

---

## 7. UI Mistakes That Make CRMs Feel Bloated

### The 7 Deadly Sins of CRM UI

**1. The Empty Fields Problem**
- Showing 15 empty fields on a new lead form destroys motivation to fill anything in
- ❌ Show all fields β†’ βœ… Show 3 required fields, hide the rest behind "Add more details"
- Progressive profiling: capture more data over time, not all at once

**2. Mandatory Fields That Aren't Actually Mandatory**
- Making email required when you only have a phone number = lead never gets logged
- For RE: **only name + phone number should be required to create a lead**
- Everything else is optional and can be added later

**3. Navigation Depth Beyond 3 Levels**
- If an agent needs to tap more than 3 times to log a note, they won't log it
- ❌ Home β†’ Leads β†’ Lead Detail β†’ Activity β†’ Add Activity β†’ Note β†’ Save
- βœ… Any screen β†’ Tap "+" β†’ Type note β†’ Select contact β†’ Done

**4. Confirmation Dialogs for Everything**
- "Are you sure you want to mark this task as done?" β€” No. Just do it. Offer undo.
- Every unnecessary confirmation dialog erodes trust and creates friction
- Use undo patterns instead of confirm dialogs

**5. Dashboard as Vanity Metrics Theatre**
- Pipeline velocity charts, conversion funnel analytics, lead source pie charts
- A solo agent doesn't need this β€” it makes the product look complex without delivering value
- **Ship analytics later** β€” day one value is task management and contact history

**6. Notification Overload**
- HubSpot and Salesforce will notify you when someone opens an email, clicks a link, views a page
- RE agents find this creepy and distracting
- **Default all non-critical notifications to off**

**7. The "Customise Everything" Trap (Notion's dark side)**
- Notion is loved AND abandoned because it requires you to build your own system
- Don't give agents a blank canvas β€” give them a pre-built workflow they can tweak
- ❌ "Set up your pipeline stages" β†’ βœ… Ship with the 5 RE-specific stages, allow editing later
- **Opinionated defaults > infinite flexibility for first-time setup**

---

## Specific Recommendation: Design Direction for This Product

### Product Name Direction
Consider names in the space of: **Locale**, **Tempo**, **Parcel**, **Stride** β€” short, memorable, real-estate adjacent without being literal. Avoid "Pro", "Hub", "Suite".

### The Core Design Philosophy: "The Field Agent's Co-Pilot"
This product should feel like a well-organised notebook that got a software upgrade β€” not like enterprise software that got simplified. It exists in the agent's pocket, opens in under 2 seconds, and gets out of the way.

### Recommended Tech/Design Stack
- **React Native** (Expo) for mobile β€” single codebase, ships iOS + Android fast
- **Web app** for desktop/tablet with responsive Kanban (agents do admin at home evenings)
- **Supabase**
4
MVP Scope & Build Plan
β–Ό
# Real Estate Agent CRM β€” MVP Specification

---

## 1. EXACT MVP FEATURE LIST

### Core Principle
One job: **Never lose track of a seller lead.** Everything else is noise.

---

### Screens/Pages (8 total β€” no more)

**1. Dashboard / Today View**
- List of today's tasks/reminders (sorted by time)
- Count of leads by pipeline stage (visual, not a chart β€” just numbers)
- Quick-add lead button (always visible)

**2. Lead List**
- All leads, filterable by pipeline stage
- Each row shows: Name, address, pipeline stage, next action date
- Tap/click to open lead
- Search by name or address

**3. Lead Detail Page** *(the most important screen)*
- Contact info block
- Pipeline stage selector (tap to change)
- Activity feed (chronological β€” notes, calls logged, stage changes)
- Next reminder/task (prominent)
- Add note button
- Add reminder button
- Call/SMS buttons (tap-to-call on mobile)

**4. Add/Edit Lead Form**
- Simple form, one page, no wizard

**5. Add Note Modal** *(quick entry, not a full page)*
- Text area
- Timestamp auto-set
- Optional: mark as "inspection visit" vs "call" vs "general note"

**6. Add Reminder Modal**
- What (free text, e.g. "Call back re: pricing")
- When (date + optional time)
- Linked to lead automatically

**7. Reminders List (optional standalone view)**
- All upcoming reminders across all leads
- Mark complete
- Tap to go to lead

**8. Login / Auth Screen**
- Email + password
- No OAuth in V1 β€” keep it simple

---

### Data Fields That Must Exist

**Lead/Contact**
- First name, last name
- Phone (mobile β€” primary)
- Email (optional in V1)
- Property address (text field β€” not a map API)
- Source (how they found agent β€” dropdown: referral, signboard, social, open home, other)
- Pipeline stage (enum β€” see below)
- Estimated property value (optional, free text)
- Created date
- Assigned agent (single user V1 β€” still store it for V2 multi-user)

**Pipeline Stages (5 β€” no more)**
- `new_lead` β†’ New Lead
- `visited` β†’ Property Visited
- `following_up` β†’ Following Up
- `contract` β†’ Under Contract
- `closed` β†’ Closed/Won

*Add one more: `lost` β€” you need to be able to kill leads without deleting them.*

**Activity/Note**
- Lead ID (FK)
- Type (note / inspection / call / stage_change β€” auto-logged)
- Body text
- Created at (auto)
- Created by (user ID)

**Reminder/Task**
- Lead ID (FK)
- Description
- Due date
- Due time (optional)
- Completed (boolean)
- Completed at (timestamp)
- Created at

**User** *(single user V1)*
- ID, email, password hash, name, created at

---

### Every Action a User Can Take

- Add a new lead
- Edit lead details
- Change pipeline stage (from lead detail)
- Add a note (from lead detail)
- Add a reminder (from lead detail)
- Mark reminder complete (from today view or reminder list)
- View all leads
- Filter leads by pipeline stage
- Search leads by name or address
- Tap phone number to call (mobile)
- Delete a lead (with confirmation)
- Login / logout

**That's it. 14 actions. Ship it.**

---

## 2. DATABASE SCHEMA

```sql
-- Users
CREATE TABLE users (
  id          UUID PRIMARY KEY DEFAULT gen_random_uuid(),
  email       TEXT UNIQUE NOT NULL,
  name        TEXT NOT NULL,
  password_hash TEXT NOT NULL,
  created_at  TIMESTAMPTZ DEFAULT now()
);

-- Leads
CREATE TABLE leads (
  id              UUID PRIMARY KEY DEFAULT gen_random_uuid(),
  user_id         UUID REFERENCES users(id) ON DELETE CASCADE,
  first_name      TEXT NOT NULL,
  last_name       TEXT NOT NULL,
  phone           TEXT NOT NULL,
  email           TEXT,
  property_address TEXT NOT NULL,
  source          TEXT CHECK (source IN (
                    'referral','signboard','social',
                    'open_home','other'
                  )),
  stage           TEXT NOT NULL DEFAULT 'new_lead'
                  CHECK (stage IN (
                    'new_lead','visited','following_up',
                    'contract','closed','lost'
                  )),
  estimated_value TEXT,  -- free text, "~$1.2M" β€” no need for numeric V1
  notes_summary   TEXT,  -- optional: last note preview for list view
  created_at      TIMESTAMPTZ DEFAULT now(),
  updated_at      TIMESTAMPTZ DEFAULT now()
);

-- Activities (immutable log β€” never edit, only append)
CREATE TABLE activities (
  id          UUID PRIMARY KEY DEFAULT gen_random_uuid(),
  lead_id     UUID REFERENCES leads(id) ON DELETE CASCADE,
  user_id     UUID REFERENCES users(id),
  type        TEXT NOT NULL CHECK (type IN (
                'note','inspection','call','stage_change'
              )),
  body        TEXT NOT NULL,
  created_at  TIMESTAMPTZ DEFAULT now()
);

-- Reminders
CREATE TABLE reminders (
  id            UUID PRIMARY KEY DEFAULT gen_random_uuid(),
  lead_id       UUID REFERENCES leads(id) ON DELETE CASCADE,
  user_id       UUID REFERENCES users(id),
  description   TEXT NOT NULL,
  due_date      DATE NOT NULL,
  due_time      TIME,              -- nullable
  completed     BOOLEAN DEFAULT false,
  completed_at  TIMESTAMPTZ,
  created_at    TIMESTAMPTZ DEFAULT now()
);

-- Indexes (the ones that matter)
CREATE INDEX idx_leads_user_stage    ON leads(user_id, stage);
CREATE INDEX idx_leads_updated       ON leads(updated_at DESC);
CREATE INDEX idx_reminders_due       ON reminders(user_id, due_date) 
                                     WHERE completed = false;
CREATE INDEX idx_activities_lead     ON activities(lead_id, created_at DESC);
```

**Why this schema works:**
- Activities are append-only β€” perfect audit trail of every conversation
- Stage changes auto-logged as activity entries (write trigger or app-level)
- No over-engineering: no tags, no custom fields, no relationships tables
- UUID PKs mean future multi-tenancy is trivial to add

---

## 3. TECH STACK RECOMMENDATION

### The Stack: **Next.js + PostgreSQL + Railway (or Hetzner VPS)**

**Frontend: Next.js 14 (App Router)**
- Single codebase for web + mobile (PWA)
- Server components = less client JS = faster on mobile
- API routes built in β€” no separate backend service to manage
- Tailwind CSS for styling (fast, consistent, mobile-first)
- Shadcn/ui for components (pre-built, looks good, copy-paste)

**Backend: Next.js API Routes + Prisma**
- Prisma ORM maps directly to the schema above
- No separate Express/FastAPI service β€” one thing to deploy, one thing to break
- Zod for input validation on API routes

**Database: PostgreSQL**
- Hosted on Railway ($5/month) or self-hosted on Hetzner VPS
- Neon.tech is another option (free tier, serverless Postgres)

**Auth: NextAuth.js (credentials provider)**
- Email/password in V1 β€” 2 hours to implement
- Extend to Google OAuth in V2 with zero schema changes

**Mobile Approach: PWA (Progressive Web App)**
- Do NOT build React Native for MVP. You have 4 weeks.
- PWA on iOS/Android = installable from Safari/Chrome, works offline (cache shell)
- Add `manifest.json` + service worker = installs to home screen
- 95% of what the agent needs works perfectly in mobile Safari
- Tap-to-call works natively via `` links
- **If he hates the mobile experience after 2 weeks β†’ THEN evaluate RN**

**Deployment: Hetzner VPS (€4/month, CX11)**
- Docker Compose: Next.js app + Postgres container
- Caddy as reverse proxy (auto HTTPS, 10-line config)
- Railway is easier but Hetzner is cheaper and you own it
- Daily `pg_dump` to Backblaze B2 ($0.006/GB)

**The full stack in one line:**
> Next.js 14 Β· Prisma Β· PostgreSQL Β· NextAuth Β· Tailwind Β· Shadcn Β· PWA Β· Hetzner

**Why not:**
- ❌ Supabase β€” great product but adds complexity; Prisma + plain Postgres is more predictable
- ❌ React Native β€” 4-week kill. PWA is sufficient.
- ❌ Laravel/Rails β€” fine stacks but unnecessary context switch if you know JS
- ❌ Firebase β€” vendor lock-in, painful querying, wrong fit for relational data

---

## 4. FOUR-WEEK BUILD PLAN

### Week 1: Foundation + Data Layer
**Goal: The app boots, auth works, you can create and view leads.**

- [ ] Repo setup, Next.js scaffold, Tailwind + Shadcn configured
- [ ] Hetzner VPS provisioned, Docker Compose running, domain pointed
- [ ] Prisma schema created and migrated (all 4 tables)
- [ ] NextAuth credentials auth (login/logout working)
- [ ] `POST /api/leads` β€” create lead
- [ ] `GET /api/leads` β€” list leads with stage filter
- [ ] `GET /api/leads/[id]` β€” single lead with activities + reminders
- [ ] Lead List page (basic, unstyled is fine)
- [ ] Add Lead form (functional)
- [ ] Lead Detail page (data renders, no actions yet)

**End of Week 1 checkpoint:** You can log in, add a lead, and see it.

---

### Week 2: Core Workflow (Notes + Reminders + Pipeline)
**Goal: The agent can run his entire daily workflow.**

- [ ] Add Note modal (type selector: note/inspection/call)
- [ ] Stage change from Lead Detail (dropdown or button group)
- [ ] Auto-log stage changes as activity entries
- [ ] Add Reminder modal (date picker, description)
- [ ] `GET /api/reminders/today` β€” reminders due today + overdue
- [ ] Dashboard / Today View (today's reminders, pipeline stage counts)
- [ ] Mark reminder complete (tap, instant, no confirmation needed)
- [ ] Reminders list page (all upcoming)
- [ ] Mobile layout pass β€” test everything on iPhone Safari
- [ ] Tap-to-call links on phone numbers

**End of Week 2 checkpoint:** The core loop works. Lead β†’ note β†’ reminder β†’ complete.

---

### Week 3: Polish, Mobile UX, and Real-World Hardening
**Goal: It's good enough that a real person won't be frustrated using it.**

- [ ] PWA setup: `manifest.json`, service worker (Next-PWA or manual), install prompt
- [ ] Offline shell caching (app loads without internet β€” data requires connection)
- [ ] Search leads by name/address (client-side filter on list, fast enough for <500 leads)
- [ ] Lead source tracking (dropdown on add form)
- [ ] Delete lead with confirmation
- [ ] Overdue reminders highlighted in red on dashboard
- [ ] Empty states for all screens ("No leads yet β€” add your first one")
- [ ] Error handling (form validation messages, failed save feedback)
- [ ] Loading states (skeleton screens on mobile β€” perceived performance)
- [ ] Test on actual Android + iOS devices
- [ ] Password reset flow (email β€” use Resend.com, free tier, 10 minutes to set up)

**End of Week 3 checkpoint:** Install the PWA on your own phone. Use it for 2 days. Fix everything that annoys you.

---

### Week 4: Beta Handoff + Real Usage
**Goal: The agent is using it daily. You're watching and fixing.**

- Day 1-2: Set up the agent's account, import his existing leads manually (you do this β€” takes 1 hour, builds trust)
- Day 2: 30-minute onboarding call. Watch him use it on his phone. Say nothing. Note every hesitation.
- Day 3-4: Fix the top 3 friction points you observed. Ship them.
- Day 5: Check in β€” "What's broken? What's missing?"
- Day 6-7: Fix. Deploy. Iterate.

**What you're measuring in Week 4:**
- Did he open it every day? (Check server logs β€” don't rely on him telling you)
- Did he add notes after inspections? (Look at activity table row counts)
- Did he complete reminders? (Check `completed = true` rate)
- Did he text/call you with complaints? (Good β€” it means he's using it)

---

## 5. WHAT TO CUT FROM V1

These will kill your timeline. Cut them without mercy.

| Feature | Why It's Tempting | Why It's Cut |
|---|---|---|
| **Email integration** (Gmail/Outlook sync) | "Agents live in email" | OAuth scopes, threading logic, 2+ weeks alone. V2. |
| **Document/file uploads** | Contracts, photos | S3 setup, UI complexity. Not the core pain. V2. |
| **Calendar sync** (Google/iCal) | "Reminders should be in my calendar" | OAuth, sync conflicts. Your reminders ARE the calendar. V2. |
| **Team/multi-user** | "What if he has an assistant?" | Schema is ready. Auth isn't. One user ships in 4 weeks. V2. |
| **Reporting/analytics** | "Conversion rate by source" | Meaningless with 20 leads. V2. |
| **Custom pipeline stages** | "Agents work differently" | They don't, not enough to matter in V1. Your 6 stages cover 95%. |
| **SMS/push notifications** | "Remind me on my phone" | Twilio integration, complex. PWA push notifications are flaky on iOS. Badge on app icon is enough. |
| **Map view of listings** | Looks cool in a demo | Google Maps API $$, 0 daily workflow value |
| **Lead scoring/AI** | "Prioritise hot leads" | No data to train on yet. Vanity feature. |
| **Import CSV** | "He has existing data" | You're doing the first import manually. V2 feature. |
| **Dark mode** | Developers love this | Agents don't care. Ship light mode. |
| **Activity editing** | "I made a typo" | Append-only log is a feature, not a bug. Train him on it. |

**Rule:** If it's not in the 14 actions listed in Section 1, it doesn't exist.

---

## 6. GETTING THE FIRST USER ACTUALLY USING IT FROM DAY 1

### The Handoff Protocol

**Before you give him access:**
1. Log into his account yourself
2. Add his top 10-15 current leads manually (ask him for a WhatsApp list, a spreadsheet, whatever he has)
3. Set the correct pipeline stage for each lead
4. Add a reminder for any "call this week" leads
5. When he logs in, he sees a full dashboard, not an empty screen

**Empty screens kill new tools. Never show an empty screen to a first user.**

---

**The 30-minute onboarding session (do this in person or on Zoom with screen share):**

Agenda:
1. Show him the Dashboard β€” "This is your morning. Every day, you open this."
2. Add a fake lead together β€” he types, not you
3. Add a note after a "pretend inspection"
4. Set a reminder, then mark it complete
5. Change a pipeline stage
6. Install the PWA on his phone together (Safari β†’ Share β†’ Add to Home Screen)
7. That's it. Stop there.

**Do not show him every feature. Show him the daily loop only.**

---

**The daily habit you're trying to install:**

Morning β†’ open app β†’ check today's reminders β†’ done.

After inspection β†’ open app β†’ find lead β†’ add note β†’ set next reminder β†’ done.

That's
5
Pricing & Business Model
β–Ό
# Real Estate Agent CRM: Pricing & Business Model Analysis

---

## 1. PRICING BENCHMARKS

### What Australian Solo RE Agents Currently Pay

**Mainstream CRM options they're using (and mostly hating):**

| Tool | Price (AUD/month) | Why They Use It | Why They Hate It |
|------|-------------------|-----------------|------------------|
| HubSpot Free | $0 | Free | Too generic, not RE-specific |
| HubSpot Starter | $27/user | Brand recognition | Bloated, US-centric |
| Salesforce | $75–$150/user | Boss mandated it | Never actually use it |
| Rex CRM | $149–$299/user | RE-specific | Enterprise-y, expensive |
| AgentBox | ~$200+/user | Agency mandate | Complex, slow |
| Pipedrive | $27–$70/user | Simple pipeline | Not RE-specific |
| Notion/Airtable DIY | $0–$20 | Cheap | Not a real CRM |
| Follow Up Boss | ~$80 USD/user | Popular in US | US-focused, overkill |

**Key insight:** There's a massive gap between:
- Free/generic tools that don't fit RE workflows
- Enterprise RE tools ($150–$300/user) built for agencies, not solo agents

**The pain threshold for solo Australian RE agents: AUD $40–$79/month**

This is the "stop comparing and just buy" zone because:
- Below $40: feels too cheap to trust
- $40–$79: impulse buy territory, less than one lead's commission justifies it
- Above $100: procurement mindset kicks in, they want demos and justification
- One residential sale in NSW = $15,000–$30,000+ commission. They will pay $60/month without blinking if the tool demonstrably helps them close one extra deal per year.

### Per-User vs Flat Fee vs Usage-Based

**For solo operators: flat fee wins.** Here's why:
- Per-user feels like it penalises growth (bad for when they hire an assistant)
- Usage-based creates anxiety ("am I being charged for that call I logged?")
- Flat monthly fee = predictable, simple, trustworthy
- **Recommendation: flat fee per seat with a small-team bundle, not per-user scaling**

---

## 2. RECOMMENDED PRICING TIERS FOR MVP LAUNCH

### Tier Structure

**Free Tier β€” "Starter"**
- Price: $0
- Limits:
  - Up to 25 active leads
  - Up to 3 pipeline stages (customisable)
  - Basic reminders (no recurring)
  - Mobile access: yes
  - No email/SMS integration
  - No reporting
  - Rex/AgentBox import: no
- **Hook:** Enough to replace their sticky notes and spreadsheet. Not enough to run a real book of business.
- **Goal:** Get 50–100 free users fast. This is your sales pipeline, not a revenue stream.

**Paid Tier β€” "Pro" β€” AUD $59/month or $49/month billed annually ($588/year)**
- Unlimited active leads
- Full pipeline customisation
- Recurring reminders and reminder sequences ("call in 3 days, then weekly for a month")
- Full conversation thread/notes history
- Daily task digest (email + push notification)
- CSV import/export
- Mobile-optimised PWA or native app
- Email support with <24hr response
- **Why $59:** Under the psychological $60 ceiling, well inside the impulse-buy zone, covers your costs at low volume, leaves room to discount to $49 for annual

**Team/Agency Tier β€” "Agency" β€” AUD $149/month (up to 5 seats)**

**Should you launch this at MVP? No β€” with one exception.**

Launch it only if:
- Your friend's principal/broker asks to add an assistant
- You want to signal you're not just a solo-agent toy

If you do include it, keep it simple: 5 seats, everything in Pro, basic lead assignment between team members. Don't build shared pipeline management yet. That's v2.

**Pricing page should show three columns but "Pro" should be visually dominant.** The free tier exists to drive signups; the agency tier exists to anchor the price.

### Launch Pricing Strategy

**First 12 months: Founding Member pricing**
- Pro at $39/month locked for life for first 100 paying customers
- Be explicit: "Price goes to $59 after we hit 100 members"
- This creates urgency without fake countdown timers
- Builds a loyal cohort who become advocates

---

## 3. GO-TO-MARKET STRATEGY

### Phase 1: 1 β†’ 10 Users (Months 1–3)

**Your friend is not a user. He's a co-founder without equity.**

- Shadow him for one full working week. Literally. Watch every interaction, every sticky note, every time he opens his phone.
- Build the product around his specific workflow, his language ("prospect" vs "vendor" vs "listing"), his pipeline stages
- Don't ship until he uses it daily for 2 weeks without prompting
- Ask him for 3 referrals to other agents he trusts. Not a general post β€” a specific WhatsApp message: *"I'm using this new tool, here are 3 people I want you to meet."*
- His willingness to make that introduction is your product-market fit signal

**Getting to 10:**
- Offer the 3 referred agents free Pro for 3 months in exchange for weekly feedback calls (30 minutes)
- These 10 people are your design partners, not your customers yet
- Their feedback shapes whether this is a $59 product or a $99 product

### Phase 2: 10 β†’ 100 Users (Months 3–12)

**Australian RE Agent Communities β€” Ranked by ROI:**

1. **Facebook Groups (highest immediate ROI)**
   - "Australian Real Estate Agents Network" (25k+ members)
   - "Real Estate Agents Australia β€” Tips & Strategies"
   - "NSW Real Estate Agents"
   - Strategy: Don't post ads. Answer questions. When someone complains about losing track of leads or using spreadsheets β€” respond helpfully, mention the tool only if directly relevant. Do this for 60 days before any promotional post.

2. **REIV (Real Estate Institute of Victoria) & REIA**
   - Not NSW-specific but REIV runs events, webinars, training
   - REINSW (Real Estate Institute of NSW) is your primary target
   - Attend their CPD training events as a sponsor or speaker
   - A 20-minute "how to manage your pipeline" talk is a product demo in disguise
   - Cost: usually $500–$2,000 for event sponsorship. Worth it at 100-user stage.

3. **LinkedIn**
   - RE agents are more active on LinkedIn than you'd expect in Australia
   - Document the build: "Building a CRM for RE agents β€” here's what I learned this week"
   - Tag your friend (with permission), show real screenshots, real problems solved
   - This attracts other founder-adjacent agents who love being early adopters

4. **YouTube / TikTok (Month 6+)**
   - Short videos: "How I track 40 listings without losing a single follow-up"
   - Your friend on camera is worth 10x more than you on camera
   - Agents trust agents

**What makes RE agents recommend tools to each other:**

- "It saved me a deal" β€” one specific story, one dollar figure, told over coffee
- Simplicity they can demonstrate in 60 seconds on their phone
- It doesn't look like corporate software (aesthetics matter enormously in this cohort)
- The founder is reachable β€” agents want to know there's a human behind it
- Bragging rights: "I found this before everyone else" β€” founding member positioning works here

**Referral Program (launch at 50 users):**
- Give 1 free month for every paying referral
- Keep it simple β€” a unique link in the app, tracked automatically
- Don't overcomplicate with tiers or cash payments at this stage

### Channels to Ignore at MVP Stage
- Google Ads (too expensive, low intent searches)
- Cold email blasts
- App Store optimisation (before you have reviews)
- PR / media (too early)

---

## 4. REVENUE PROJECTIONS

### MRR Milestones

| MRR Target | Paying Users Needed @ $59 | Paying Users @ $39 (Founding) | Realistic Timeline |
|------------|--------------------------|-------------------------------|-------------------|
| $1,000/month | 17 users | 26 users | Month 4–6 |
| $5,000/month | 85 users | 128 users | Month 10–14 |
| $10,000/month | 170 users | 256 users | Month 16–22 |
| $50,000/month | 847 users | β€” (founding pricing retired) | Month 30–42 |

**Assumptions:**
- Free-to-paid conversion: 15–20% (achievable with RE-specific onboarding and follow-up)
- Monthly churn: 3–5% (RE agents have high job volatility but low software-switching energy)
- Net revenue retention: ~95% (some upgrades to Agency, some churn, relatively flat)

### Realistic Timeline Narrative

- **Month 1–2:** 1 user (friend), building in public, no revenue
- **Month 3:** Launch, 10 design partners (free), founding member pricing announced
- **Month 4–5:** First 20–30 paying users through referrals and Facebook groups ($780–$1,170 MRR at founding price)
- **Month 6:** $1,000 MRR milestone. This is your proof of concept moment.
- **Month 9–12:** REINSW event attendance, first LinkedIn traction, 60–80 paying users ($2,340–$3,120 MRR)
- **Month 14–18:** $5,000 MRR. At this point you have enough signal to decide: stay bootstrapped and profitable, or raise a small round to accelerate.
- **Month 24–30:** $10,000 MRR. Hire first part-time customer success/support person.

**Important reality check:** Going from 1 to 100 paying users as a solo founder with a niche product, no existing audience, and no marketing budget typically takes 18–24 months in Australia. The market is smaller than the US. Plan for this financially.

---

## 5. RISKS β€” WHAT KILLS THIS BUSINESS

### Risk 1: Rex CRM or AgentBox Builds Your Feature Set (HIGH probability, HIGH impact)
- These companies have the distribution and the brand
- **Mitigation:** Stay 6 months ahead on UX simplicity and mobile experience. They cannot move fast. Build a "refugee program" β€” free migration from Rex with white-glove onboarding. Win on experience, not features.

### Risk 2: Solo RE Agent Market Is Too Small to Scale (MEDIUM probability, HIGH impact)
- Australia has ~50,000 licensed agents. Maybe 15,000 solo/small operators. At 5% penetration = 750 users = ~$44K MRR. That's a lifestyle business, not a venture.
- **Mitigation:** Design the product so it works for NZ, UK, and Canadian solo agents with minimal localisation. The expansion path is geographic before it's vertical. Build this in from year 1 in your data model.

### Risk 3: Agents Don't Pay β€” They Churn Back to Spreadsheets (HIGH probability at launch, manageable)
- RE agents are habitual. The barrier is forming a new daily habit, not price.
- **Mitigation:** Onboarding is everything. The app must deliver a "wow" moment in the first 10 minutes β€” probably the daily task digest landing in their inbox the morning after signup. If they see their day organised for them, they're hooked.

### Risk 4: Regulatory / Licensing Complexity You Didn't Plan For (LOW probability, MEDIUM impact)
- If you ever touch transaction data, contract storage, or trust accounting, you enter compliance territory in NSW
- **Mitigation:** Don't. Stay firmly in the "communication and task management" lane. Never store financial data or become a system of record for contracts.

### Risk 5: Founder Burns Out Before Reaching Profitability (HIGH probability, honest assessment)
- $10K MRR takes 2+ years. That's a long time on founder savings or a side income.
- **Mitigation:** Keep burn near zero. No office, no hires until $5K MRR. Use Stripe, Crisp, and Paddle to run the business on $200/month infrastructure. The friend who uses the product isn't a salary β€” keep it that way unless equity is discussed.

### Risk 6: The Market Doesn't Self-Refer Fast Enough (MEDIUM probability)
- Real estate agents can be territorial and secretive about their tools (competitive advantage mindset)
- **Mitigation:** Frame it as a productivity tool, not a competitive advantage tool. "Organise your day" not "close more deals than the agent next door." The former gets shared; the latter gets hoarded.

---

## 6. EXIT / SCALE PATH

### What $50K MRR Looks Like

- ~850 paying users at $59/month (blended with some Agency plans, probably ~$58 ARPU)
- Annual revenue run rate: ~$600K
- Churn under control at 3%, meaning you're adding 25+ net new users/month
- Probably 1 full-time founder, 1 part-time support/success person
- Solid NPS (60+) from a loyal user base
- Expanding into NZ or UK agents

**At this point you have three paths:**

### Path A: Bootstrapped Lifestyle Business
- $50K MRR = $600K ARR = ~$400–450K profit (low overhead SaaS)
- Raise prices to $79/month for new users
- Work 30 hours/week
- This is a completely legitimate outcome and underrated by startup culture

### Path B: Raise and Accelerate
- $600K ARR with 85%+ gross margins and sub-5% monthly churn is fundable in Australia
- Raise $1–2M from a local fund (Blackbird, Square Peg are too big β€” target Folklore, Antler, or angels)
- Use capital for: AU/NZ/UK sales hire, brand/content marketing, agency tier buildout
- Target: $5M ARR in 3 years post-raise

### Path C: Strategic Acquisition (most likely exit)
- **Likely acquirers at $1–3M ARR:**
  - **Domain or REA Group** β€” Australia's two dominant property portals. They want agent engagement tools. This is a strategic fit.
  - **MRI Software** β€” Global RE software acquirer, has bought multiple Australian RE tech companies
  - **Console Group** β€” Australian property management software, expanding into sales agent tools
  - **Propertybase** (now part of Lone Wolf) β€” Already acquires RE CRMs globally
  - **Agentpoint** β€” Australian RE digital marketing, logical adjacency

- **Acquisition multiples for niche SaaS at this stage:** 4–6x ARR
  - $1M ARR = $4–6M exit
  - $3M ARR = $12–18M exit
  - Not life-changing venture money but very solid for a 2–3 person team

- **What makes you acquirable:**
  - Clean data model (acquirers want the data, not just the code)
  - High retention (proves product value)
  - Australian RE agent relationships (the distribution is the asset)
  - Simple, documented codebase

---

## SUMMARY: THE PLAYBOOK IN ONE PAGE

| Phase | Action | Success Metric |
|-------|---------|----------------|
| Now | Shadow your friend, build exactly his workflow | He uses it daily without prompting |
| Month 1–3 | 10 design partners, founding member pricing | Product doesn't feel like software |
| Month 3–6 | Facebook groups, referral program, $1K MRR | 25 paying users |
| Month 6–12 | REINSW events, LinkedIn build-in-public, $5K MRR | 100 paying users |
| Month 12–24 | Geographic expansion signal (NZ?), $10K MRR | Sub-5% monthly churn |
| Month 24–36 | $50K MRR or strategic conversations begin | Optionality |

**One-sentence positioning to write on your
6
Tech Stack & Architecture
β–Ό
# Optimal Tech Stack for a Real Estate Agent CRM β€” Solo Developer

## My Recommendation in One Line
**SvelteKit + FastAPI + PostgreSQL, deployed on your existing Vultr VPS with Caddy.**

This stack plays to your strengths, moves fast, produces a beautiful mobile experience, and doesn't trap you in framework complexity when you're trying to ship.

---

## 1. Frontend: SvelteKit

**Pick SvelteKit. Not React. Not HTMX.**

### Why SvelteKit wins here:

- **Less boilerplate than React/Next.js** β€” you write ~40% less code for the same UI. As a solo dev, this is a compounding advantage every single day
- **Built-in routing, SSR, form actions** β€” no need to stitch together React Router + React Query + a form library
- **PWA support is first-class** β€” `@veltejs/kit` + `vite-plugin-pwa` gets you a installable mobile app in under an hour
- **Performance out of the box** β€” Svelte compiles to vanilla JS, no virtual DOM overhead. Your agent will notice the snappiness on mobile
- **Genuinely enjoyable to write** β€” this matters when you're building solo at 11pm

### Why not the others:

| Option | Problem |
|--------|---------|
| React/Next.js | Massive ecosystem complexity. You'll spend days on state management decisions, not features |
| Vue | Fine, but SvelteKit is strictly better DX for a solo dev in 2024 |
| HTMX + Python | Great for internal tools, but you'll hit walls building a rich mobile UX β€” drag-and-drop pipeline, offline support, push notifications |

### Mobile/PWA specifics:
```
vite-plugin-pwa β†’ service worker + offline caching
Web App Manifest β†’ "Add to Home Screen" on iOS/Android
Svelte stores β†’ local state that survives page refreshes
```
The agent installs it like an app. No App Store. No React Native. Ship in weeks, not months.

---

## 2. Backend: FastAPI

**Pick FastAPI. This is the easiest call.**

### Why FastAPI:

- You already know Python β€” zero context switching
- **Auto-generated API docs** (Swagger UI at `/docs`) β€” invaluable when you're the only dev debugging at 2am
- **Async by default** β€” handles concurrent requests cleanly when you add a second agent user
- **Pydantic models** do double duty: API validation + documentation + IDE autocomplete
- Faster than Flask for API workloads, less opinionated than Django (you don't need Django's ORM, admin panel, or templating engine)

### Why not Django:
Django is excellent but it assumes you want its entire worldview β€” ORM, templates, admin, auth. You're building an API backend for SvelteKit. You'd spend the first week fighting Django conventions. FastAPI lets you build exactly what you need.

### Why not Node.js:
You know Python. This is not the time to learn a new backend language. Your Telegram bots and data pipeline experience translates directly.

### Core FastAPI structure:
```python
# Clean separation from day one
app/
  routers/
    leads.py       # CRUD for leads/prospects
    contacts.py    # Contact management
    tasks.py       # Reminders and follow-ups
    pipeline.py    # Stage transitions
  models/          # SQLAlchemy ORM models
  schemas/         # Pydantic request/response models
  services/        # Business logic (not in routers)
  dependencies.py  # Auth, DB session injection
```

---

## 3. Database: PostgreSQL

**PostgreSQL. Non-negotiable.**

### Why not SQLite:
SQLite is fine for a prototype you'll throw away. The moment you have two concurrent users writing data β€” or you want to run any meaningful query across 500 leads β€” you'll hit limitations. Migrating from SQLite to PostgreSQL mid-product is painful and embarrassing.

### Why PostgreSQL over MySQL:
- **JSONB columns** β€” store unstructured visit notes, custom fields per agent without schema migrations every time
- **Full-text search built in** β€” search across all notes and contacts without Elasticsearch
- **Better support in the Python ecosystem** (asyncpg, psycopg3, SQLAlchemy async)
- It's what every serious SaaS runs on. Start there.

### ORM: SQLAlchemy 2.0 (async)
```python
# Use Alembic for migrations from day one
# Never manually ALTER TABLE in production
alembic init migrations
alembic revision --autogenerate -m "add leads table"
alembic upgrade head
```

---

## 4. Auth: Supabase Auth or Clerk

**Don't build auth. Ever. Use Clerk.**

### Why Clerk:
- **Free tier covers your first user and early testing** β€” up to 10,000 monthly active users
- Drop-in Svelte components β€” login page, user profile, session management in under 2 hours
- Handles JWT tokens, refresh logic, password reset, magic links
- When you expand to multiple agents, you get multi-tenancy patterns baked in
- Australian data residency available (important for later compliance conversations)

### Alternative β€” Supabase Auth:
If you decide to use Supabase for your database hosting, their auth is excellent and tightly integrated. But I'd keep DB and auth concerns separate at this stage.

### What you DO build:
```python
# FastAPI dependency β€” verify Clerk JWT on every request
from fastapi import Depends, HTTPException
from clerk_backend_api import verify_token

async def get_current_user(token: str = Depends(oauth2_scheme)):
    payload = verify_token(token, CLERK_SECRET_KEY)
    if not payload:
        raise HTTPException(status_code=401)
    return payload
```

---

## 5. Mobile Strategy: PWA First, Native Never (for now)

**PWA. Ship in 3 weeks, not 3 months.**

### The real-world agent experience with a SvelteKit PWA:

1. Agent visits `crm.yourdomain.com.au` on iPhone Safari
2. Banner appears: "Add to Home Screen"
3. App icon sits on home screen, opens fullscreen with no browser chrome
4. Works offline for viewing existing leads (service worker caches last state)
5. Push notifications via Web Push API for reminder alerts

### What this gives you immediately:
- βœ… Works on iOS Safari and Android Chrome
- βœ… Offline lead viewing (service worker)
- βœ… Camera access for property photos
- βœ… GPS/location for property addresses
- βœ… Push notifications (Android day 1, iOS 16.4+ with manifest)
- βœ… Fast load times with Vite's code splitting

### React Native: not yet
Building React Native means maintaining two codebases, dealing with App Store review cycles (2-3 days per release), and learning a new paradigm. You lose weeks before your first user sees anything. **Revisit this at 50 paying users.**

### PWA limitations to know:
- iOS push notifications require iOS 16.4+ (most Australian iPhones are updated β€” acceptable risk)
- No background sync on iOS (workaround: SMS reminders via server)

---

## 6. Hosting: Stay on Vultr, Structure it Properly

**Keep Vultr. It's the right call. But add Caddy and Docker.**

### Why not Railway/Render/Fly.io:
- They're excellent but you're paying for convenience you don't need β€” you already have VPS experience
- You lose control of your cost model as you scale (Render charges per service, Railway has usage-based pricing that surprises people)
- On Vultr you know exactly what you're paying: ~$24/month for a solid 2-core 4GB instance

### Your Vultr setup:

```
Vultr VPS (2 vCPU / 4GB RAM β€” $24/month)
β”œβ”€β”€ Caddy (reverse proxy + automatic HTTPS via Let's Encrypt)
β”œβ”€β”€ Docker Compose
β”‚   β”œβ”€β”€ FastAPI app container
β”‚   β”œβ”€β”€ SvelteKit SSR container (or serve as static)
β”‚   β”œβ”€β”€ PostgreSQL container
β”‚   └── Redis container (task queue for reminders)
└── Backups: Vultr automated snapshots ($5/month) + pg_dump to Vultr Object Storage
```

### Caddy config (dead simple):
```
crm.yourdomain.com.au {
    reverse_proxy /api/* fastapi:8000
    reverse_proxy /* sveltekit:3000
}
```

**Automatic HTTPS, HTTP/2, zero config.** Caddy is the most underused tool in solo dev stacks.

### Scaling path:
- 1-10 users: Single Vultr instance, everything in Docker Compose
- 10-50 users: Separate Vultr instance for PostgreSQL, same app server
- 50+ users: Migrate to managed PostgreSQL (Supabase or Neon), keep app on Vultr or move to Fly.io

---

## 7. Key Third-Party Integrations β€” Day 1 vs Later

### Day 1 (build these in):

**SMS Reminders β€” Twilio or MessageBird**
```python
# This is the single highest-value feature for a field agent
# "Call John Smith back in 3 days" β†’ SMS fires automatically
# Twilio costs ~$0.07/SMS in Australia
# MessageBird has local Australian numbers if that matters
```

**Email β€” Resend (not SendGrid)**
- Resend has a clean API, generous free tier (3,000 emails/month)
- Use it for: new lead confirmation emails, daily task digest, reminder emails
- Setup time: 30 minutes

**Calendar β€” Google Calendar API**
- Real estate agents live in Google Calendar
- Write follow-up tasks to their Google Calendar as events
- This single integration will be mentioned in every demo and testimonial

### Build Later (not day 1):

| Integration | When | Why Wait |
|------------|------|----------|
| REA Group / Domain.com.au lead import | After 5 users | API access requires commercial agreement |
| DocuSign / contracts | After MVP validation | Complex, expensive |
| Xero accounting | Much later | Not core workflow |
| Zapier/Make webhooks | After 10 users | Let users ask for it |

### One integration to think about now but not build:
**Australian property data (CoreLogic, PropTrack)** β€” knowing the estimated value of a listed property enriches every lead record. CoreLogic has an API. Access costs money but creates differentiation. Note this in your roadmap.

---

## 8. Repo Structure

```
re-crm/
β”‚
β”œβ”€β”€ backend/
β”‚   β”œβ”€β”€ app/
β”‚   β”‚   β”œβ”€β”€ __init__.py
β”‚   β”‚   β”œβ”€β”€ main.py                 # FastAPI app factory
β”‚   β”‚   β”œβ”€β”€ config.py               # Settings via pydantic-settings
β”‚   β”‚   β”œβ”€β”€ database.py             # Async SQLAlchemy engine + session
β”‚   β”‚   β”‚
β”‚   β”‚   β”œβ”€β”€ routers/
β”‚   β”‚   β”‚   β”œβ”€β”€ __init__.py
β”‚   β”‚   β”‚   β”œβ”€β”€ leads.py            # POST/GET/PATCH /leads
β”‚   β”‚   β”‚   β”œβ”€β”€ contacts.py         # Contact profiles
β”‚   β”‚   β”‚   β”œβ”€β”€ tasks.py            # Reminders + follow-ups
β”‚   β”‚   β”‚   β”œβ”€β”€ pipeline.py         # Stage transitions
β”‚   β”‚   β”‚   β”œβ”€β”€ notes.py            # Visit notes, call logs
β”‚   β”‚   β”‚   └── auth.py             # Clerk webhook handler
β”‚   β”‚   β”‚
β”‚   β”‚   β”œβ”€β”€ models/                 # SQLAlchemy ORM models
β”‚   β”‚   β”‚   β”œβ”€β”€ __init__.py
β”‚   β”‚   β”‚   β”œβ”€β”€ lead.py
β”‚   β”‚   β”‚   β”œβ”€β”€ contact.py
β”‚   β”‚   β”‚   β”œβ”€β”€ task.py
β”‚   β”‚   β”‚   β”œβ”€β”€ note.py
β”‚   β”‚   β”‚   └── user.py
β”‚   β”‚   β”‚
β”‚   β”‚   β”œβ”€β”€ schemas/                # Pydantic request/response
β”‚   β”‚   β”‚   β”œβ”€β”€ lead.py
β”‚   β”‚   β”‚   β”œβ”€β”€ task.py
β”‚   β”‚   β”‚   └── note.py
β”‚   β”‚   β”‚
β”‚   β”‚   β”œβ”€β”€ services/               # Business logic
β”‚   β”‚   β”‚   β”œβ”€β”€ reminder_service.py # Schedule SMS/email reminders
β”‚   β”‚   β”‚   β”œβ”€β”€ pipeline_service.py # Stage transition rules
β”‚   β”‚   β”‚   └── notification.py     # Twilio + Resend wrappers
β”‚   β”‚   β”‚
β”‚   β”‚   └── dependencies.py         # Auth + DB injection
β”‚   β”‚
β”‚   β”œβ”€β”€ migrations/                 # Alembic
β”‚   β”‚   β”œβ”€β”€ env.py
β”‚   β”‚   └── versions/
β”‚   β”‚
β”‚   β”œβ”€β”€ tests/
β”‚   β”‚   β”œβ”€β”€ test_leads.py
β”‚   β”‚   └── test_tasks.py
β”‚   β”‚
β”‚   β”œβ”€β”€ requirements.txt
β”‚   β”œβ”€β”€ Dockerfile
β”‚   └── .env.example
β”‚
β”œβ”€β”€ frontend/
β”‚   β”œβ”€β”€ src/
β”‚   β”‚   β”œβ”€β”€ lib/
β”‚   β”‚   β”‚   β”œβ”€β”€ components/
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ LeadCard.svelte
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ PipelineBoard.svelte    # Kanban-style pipeline
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ TaskList.svelte         # Today's reminders
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ NoteEditor.svelte       # Rich visit notes
β”‚   β”‚   β”‚   β”‚   └── MobileNav.svelte        # Bottom tab nav for mobile
β”‚   β”‚   β”‚   β”‚
β”‚   β”‚   β”‚   β”œβ”€β”€ stores/
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ leads.js                # Svelte store for lead state
β”‚   β”‚   β”‚   β”‚   └── tasks.js
β”‚   β”‚   β”‚   β”‚
β”‚   β”‚   β”‚   └── api/
β”‚   β”‚   β”‚       β”œβ”€β”€ client.js               # Fetch wrapper with auth headers
β”‚   β”‚   β”‚       β”œβ”€β”€ leads.js
β”‚   β”‚   β”‚       └── tasks.js
β”‚   β”‚   β”‚
β”‚   β”‚   β”œβ”€β”€ routes/
β”‚   β”‚   β”‚   β”œβ”€β”€ +layout.svelte              # App shell, nav
β”‚   β”‚   β”‚   β”œβ”€β”€ +page.svelte                # Dashboard β€” today's tasks
β”‚   β”‚   β”‚   β”œβ”€β”€ leads/
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ +page.svelte            # Lead list
β”‚   β”‚   β”‚   β”‚   └── [id]/
β”‚   β”‚   β”‚   β”‚       └── +page.svelte        # Lead detail + notes timeline
β”‚   β”‚   β”‚   β”œβ”€β”€ pipeline/
β”‚   β”‚   β”‚   β”‚   └── +page.svelte            # Kanban board
β”‚   β”‚   β”‚   └── tasks/
β”‚   β”‚   β”‚       └── +page.svelte            # All reminders
β”‚   β”‚   β”‚
β”‚   β”‚   └── app.html
β”‚   β”‚
β”‚   β”œβ”€β”€ static/
β”‚   β”‚   β”œβ”€β”€ manifest.json                   # PWA manifest
β”‚   β”‚   └── icons/                          # App icons for home screen
β”‚   β”‚
β”‚   β”œβ”€β”€ vite.config.js                      # Include vite-plugin-pwa
β”‚   β”œβ”€β”€ package.json
β”‚   └── Dockerfile
β”‚
β”œβ”€β”€ docker-compose.yml                      # Full stack local dev
β”œβ”€β”€ docker-compose.prod.yml                 # Production overrides
β”œβ”€β”€ Caddyfile                               # Reverse proxy config
β”œβ”€β”€ .env.example
└── README.md
```

---

## Final Stack Summary

```
Frontend:    SvelteKit + vite-plugin-pwa
Backend:     FastAPI (Python 3.11+)
Database:    PostgreSQL 15 + SQLAlchemy 2.0 async + Alembic
Auth:        Clerk
Hosting:     Vultr VPS + Docker Compose + Caddy
SMS:         Twilio
Email:       Resend
Calendar:    Google Calendar API (phase 2)
Task queue:  Redis + ARQ (async background jobs for reminders)
```

---

## The One Thing That Will Make or Break This Product

The tech stack is table stakes. **The feature that makes this CRM
7
Go-To-Market & Validation Plan
β–Ό
# Real Estate Agent CRM: Validation & Go-To-Market Plan

---

## 1. VALIDATION BEFORE BUILDING

### The 3 Questions to Ask the RE Agent Friend (Before Writing a Line of Code)

**Question 1: "Walk me through the last lead you lost. What happened?"**
- You're not asking about features. You're excavating pain.
- Listen for: "I forgot to follow up," "I couldn't find my notes," "I was using my phone and..."
- If they can't recall a lost lead, the pain isn't sharp enough to drive behavior change
- Follow-up probe: *"How much commission was that worth?"* β€” anchors the cost of the problem in dollars

**Question 2: "What are you using right now, and what does your actual workflow look like on a Tuesday?"**
- Most agents are using: phone notes, WhatsApp threads, paper notebooks, spreadsheets, or nothing
- You want to find the *workaround* β€” because the workaround IS the product insight
- If they say "I use [Rex/Salesforce/etc.]" ask: "What do you do that it doesn't handle well?"
- Red flag answer: "It's fine actually" β€” means pain isn't acute

**Question 3: "If I built something that solved exactly this, what would you pay per month β€” and who else in your office or network has the same problem?"**
- Gets pricing signal AND distribution signal in one question
- Don't suggest a number first. Wait.
- Follow-up: *"Would you pay that now, before it's built, if I gave you early access?"*
- The referral question matters: if they can name 3 people immediately, you have a channel

---

### How to Validate Willingness to Pay (Before Free Trial, Before Beta)

**Step 1: The "Founding Member" Pre-Sale**
- Offer 12 months access for a one-time payment of AUD $199 (vs. future price of ~$49/month)
- Frame it: *"I'm building this for agents like you. I need 10 founding members to shape it. You pay once, you get it forever."*
- Target: 5 paid pre-sales before writing a line of production code
- Use a simple Stripe payment link. No product needed yet.

**Step 2: The Commitment Ladder (if they won't pay upfront)**
- Ask them to sign a Letter of Intent: *"I will pay $X/month when this is live"*
- LOI with name/signature > verbal agreement > "yeah sounds good mate"
- A signed LOI from 10 agents is a weak validation signal but better than nothing

**Step 3: The "Pay for Concierge" Test**
- Offer to manually manage their pipeline for 2 weeks for AUD $100
- You become their CRM β€” they text you updates, you maintain a shared Notion/Airtable
- If they won't pay $100 for the service, they won't pay $49/month for the software
- If they pay and find it valuable, you've validated both the job and the price point

---

### What "Validated" Looks Like β€” Specific Signals

**Strong validation (build with confidence):**
- 5+ agents pay AUD $99–199 before seeing a product
- Your friend uses your manual system daily for 2+ weeks without being prompted
- 3+ agents refer you to someone else unprompted within the first month
- Agents describe the problem in the same language independently (this becomes your copy)

**Weak validation (proceed cautiously):**
- "I'd definitely use that" with no money or commitment attached
- Friend uses it but only after you remind them
- People are enthusiastic in conversation but don't convert when you send the payment link

**Kill signals:**
- Fewer than 3 agents willing to pay anything in first 30 days of outreach
- The friend stops using your manual system after week 1
- Agents say "I'd use it if it integrated with [Rex/Console Cloud/etc.]" β€” means the bar is too high for MVP

---

## 2. THE CONCIERGE MVP APPROACH

### How to Manually Do the Job Before Automating It

**The setup (Week 1, zero code):**
- Build a shared Airtable base (or Notion database) for your agent friend
- Columns: Lead Name | Phone | Property Address | Pipeline Stage | Last Contact | Next Action | Notes | Source
- Create a simple daily view: "What's due today"
- Share it with them β€” they have full access, you both maintain it

**The communication loop (this is the product):**
- Agent texts/WhatsApp's you after each visit: *"Just saw John Smith, 4br in Parramatta, wants to list in 3 months, call back June 15"*
- You update the Airtable within the hour
- You send them a WhatsApp reminder the morning of June 15: *"Call John Smith today β€” 3-month check-in"*
- This IS the CRM. You're the automation engine.

**What you're learning:**
- What information agents actually capture vs. what you assumed they'd capture
- How they prefer to input data (voice note? text? structured form?)
- Which pipeline stages they actually use vs. which ones are theoretical
- Whether daily reminders change their behavior

---

### What Can Be Faked/Manual in Week 1 to Test the Core Loop

| Feature | Fake Version | What You're Testing |
|---|---|---|
| Lead logging | WhatsApp the agent, you add it to Airtable | Do they actually log leads consistently? |
| Visit notes | Agent texts you notes, you format and store them | How much detail do they actually capture? |
| Follow-up reminders | You send them a WhatsApp each morning with today's tasks | Do reminders change their call behavior? |
| Pipeline view | Shared Airtable Kanban board | Do they look at it daily? |
| Mobile access | Airtable mobile app | Is mobile actually the blocker or not? |

**The core loop you're testing:**
*Agent has interaction β†’ logs it in < 60 seconds β†’ gets reminded at the right time β†’ takes action β†’ closes more listings*

**Success metric for Week 1 concierge:**
- Agent logs 80%+ of interactions (vs. their current rate, which is probably 30-40%)
- Agent takes action on 60%+ of reminders you send
- Agent says "I would have forgotten about that one" at least once

---

## 3. FIRST 10 USERS PLAYBOOK

### How to Find 9 More RE Agents After the First Friend

**The direct referral ask (days 1–14):**
- Ask your friend: *"Who are the 3 best agents you know who aren't at your agency? Not the lazy ones β€” the ones who are always hustling for listings."*
- You want hungry agents β€” typically 2–5 years in, building their book, not yet established enough to be complacent
- Avoid: top-10 agents at big agencies (too busy/set in their ways), brand new agents (no pipeline to manage yet)

**The agency office cold approach:**
- Independent agencies (not Ray White/LJ Hooker franchises) are better early targets β€” less corporate gatekeeping
- Walk in or cold email the principal: *"I'm building a tool for agents and I'm looking for 5 agents to test it free for 60 days and give me feedback. I built it for [friend's name] at [agency] and she's been using it daily."*
- Social proof from a peer agent > any marketing copy you can write

**Warm network mining:**
- Post in your personal LinkedIn/Facebook: *"I'm building a CRM for real estate agents. Know any agents in NSW who are always chasing leads? I'm looking for people to test it."*
- You likely have 2–3 agents in your extended network you haven't thought of

---

### Australian RE Agent Communities and Channels

**Online communities:**
- **Real Estate Talk** (realestatetalk.com.au) β€” active forum, agents discuss tools and workflows
- **REINSW (Real Estate Institute of NSW)** β€” member community, events, newsletters; getting a mention here is gold
- **Facebook Groups:** "Real Estate Agents Australia," "Australian Real Estate Professionals Network," "NSW Real Estate Agents" β€” search all three, join, observe before pitching
- **LinkedIn:** Search "real estate agent NSW" β€” many agents are active, especially those building personal brands

**Offline channels (underrated):**
- REINSW events and CPD (continuing professional development) training days β€” agents are required to attend
- Local RE networking breakfasts (most major suburbs have them)
- LJ Hooker, Ray White, McGrath franchise conferences β€” harder to access but worth targeting a single franchise network

**Trade publications:**
- **Real Estate Business (REB)** β€” Australian RE industry publication, has a newsletter and a podcast agents actually listen to
- **Elite Agent Magazine** β€” premium readership, aspirational agents; getting featured here is a credibility multiplier

---

### What the Pitch Looks Like

**For warm outreach (via referral):**
> *"Hey [name], I'm [founder]. [Mutual friend] said you might be worth talking to. I built a simple CRM for agents β€” she was losing track of leads in her notes and WhatsApp. It's not like the big enterprise stuff, it's genuinely built around how agents actually work in the field. I'm looking for 5 agents to use it and tear it apart. No cost, no commitment. Would 20 minutes this week work?"*

**For cold outreach:**
> *"Hey [name], I'm building a mobile-first CRM just for RE agents in Australia β€” no bloat, no enterprise nonsense. I built it first for a friend in NSW who was losing listing leads because she couldn't keep up with follow-ups. Now I'm looking for 9 more agents to test it. You'd get free access and direct input on what gets built. Are you the kind of agent this would actually be useful for?"*

**Key principles in the pitch:**
- Lead with the problem, not the product
- Name the existing user (social proof)
- Create mild scarcity ("looking for 5 agents")
- Ask a qualifying question at the end β€” makes them self-select

---

## 4. FIRST 100 USERS STRATEGY

### The Channel Stack (Ranked by ROI at This Stage)

**Tier 1: Direct outreach + referrals (Users 1–40)**
- Every new user should be asked: *"Who's the best agent you know who would benefit from this?"*
- Build a referral incentive early: *"Refer an agent, get 3 months free"*
- This is your primary channel until 40 users. Do not skip ahead to content or ads.

**Tier 2: Community presence (Users 20–70)**
- Don't pitch in communities. Contribute first.
- In Real Estate Talk forums and Facebook groups: answer questions about productivity, pipeline management, follow-up systems β€” for 4 weeks before mentioning your product
- Then: post a case study. *"I helped a NSW agent go from losing 30% of her leads in her phone to having a clean pipeline. Here's what the system looks like."* β€” no hard sell, link in comments
- The agents who DM you are your warmest prospects

**Tier 3: Content (Users 40–100)**
- **YouTube:** Short (3–5 min) videos on "How to follow up a listing lead," "Building a simple pipeline as a solo agent" β€” SEO juice is slow but compounding
- **LinkedIn articles:** Target property managers and agents building personal brands β€” they're online more than older agents
- One piece of content that works: *"The 5 leads I almost lost (and how I tracked them down)"* β€” written from your user's perspective, distributed with their permission

**What RE Agents Talk About Online in Australia:**
- Market conditions and auction clearance rates (reactive, not useful for you)
- Commission structures and agency splits (hot topic)
- How to win listings in a competitive market (YOUR territory)
- Work-life balance and burnout (pain point adjacent to your product)
- Tech tools β€” but skeptically. They've been burned by overpromised software.
- Building a personal brand on Instagram/TikTok (younger agents especially)

**The angle that works:** Position the product around *winning more listings*, not *being organized*. "Be more organised" is a feature. "Never lose a listing to poor follow-up" is a business outcome.

---

## 5. KEY METRICS TO TRACK FROM DAY 1

### Metrics That Tell You It's Working

**Activation (does the product do its job?):**
- % of new users who log their first lead within 24 hours of signup β€” target: >70%
- % of users who log 3+ leads in first week β€” target: >50%
- % of users who complete the core loop (log lead β†’ add note β†’ set reminder β†’ mark action taken) at least once β€” target: >60%

**Retention (do they keep coming back?):**
- Day 7 retention: Are they still logging leads after first week? β€” target: >50%
- Day 30 retention: Are they using it at least 3 days/week? β€” target: >40%
- Weekly Active Usage: % of users who open the app on 3+ days in a week β€” this is your north star

**Engagement quality:**
- Average leads per user per week (tells you if they're actually working it into their workflow)
- % of reminders that result in a logged follow-up action (tells you if reminders are working)
- Time to log a visit note (should be <2 minutes; if it's longer, the UX is broken)

**Business metrics:**
- Monthly Recurring Revenue (MRR) β€” even at $49/month, 20 users = $980/month. This is your proof of concept.
- Net Revenue Retention β€” are users upgrading or downgrading?
- Churn rate β€” anything above 5% monthly churn means the product isn't sticky enough

---

### Metrics That Tell You to Pivot or Kill It

**Pivot signals:**
- Day 7 retention below 25% after 3 cohorts β€” the product isn't sticky
- Users log leads but never set reminders β€” maybe reminders aren't the job, and you need to rethink the core loop
- Consistent feedback pointing to one missing feature from 50%+ of users β€” that feature might be the real product
- Agents use it for 2 weeks then stop β€” adoption without retention means the pain wasn't chronic enough

**Kill signals:**
- Fewer than 10 users after 90 days of active outreach with a live product
- MRR flat or declining after month 3
- No agent has ever referred another agent to you
- Your own first user (the friend) stops using it without prompting

**The honest gut-check metric:**
Ask your agent friend: *"If this disappeared tomorrow, would you notice?"* β€” If the answer is anything less than "yes, absolutely," you don't have product-market fit yet.

---

## 6. THE BIGGEST RISK: RE AGENTS NOT ADOPTING NEW SOFTWARE

### The Real Reason Agents Don't Adopt Tools

This isn't primarily a tech-literacy problem. It's a **trust and time problem.** Agents have been sold "game-changing" software before. They've spent hours setting up a system that didn't deliver. The switching cost is emotional, not just functional.

The actual barriers:
1. **Setup friction** β€” "I'll do it when I have time" = never
2. **Habit disruption** β€” their current system (even if bad) is automatic
3. **No immediate payoff** β€” CRMs pay off in 3 months, not day 1
4. **Mobile UX is usually terrible** β€” if it's hard to use in a car park between inspections, it's dead
5. **Data migration anxiety** β€” "What do I do with all my existing contacts?"

---

### How to Overcome Tech Resistance in This Demographic

**1. Do the onboarding FOR them (white-glove setup)**
- When an agent signs up, you personally import their existing contacts/spreadsheet for them
- This removes the biggest barrier β€” the blank slate
- Do this manually for every user until you have 50 users. It doesn't scale and that's fine.
- Time investment: 30 minutes per agent. Worth every minute.

**2. Show ROI in week 1, not week 8**
- Engineer a "wow moment" as early as possible
- The ideal: within 48 hours of signup, the agent gets a reminder, calls the lead, and books an appraisal
- That one moment creates a convert. Everything else is rationalization.
- Build the product to accelerate this: surface the "most overdue" lead prominently on first login

**3. Use their language, not software language**
- Not "pipeline stages" β†’ "where you're at with each person"
- Not "CRM records" β†’ "your clients"
- Not "activity log"