Cameron Burke Real Estate SaaS Platform¶
Created: 2025-12-20 Last Updated: 2025-12-20 (Comprehensive Update) Type: Project Status: Architecture & Planning Phase Priority: CRITICAL
Executive Summary¶
Building an all-in-one SaaS platform for mom-and-pop real estate investors (<100 units) to replace fragmented spreadsheet workflows. Combines Cameron Burke's Value Add Investing methodology with AI-powered deal analysis.
Target Price: $99/month (Solo tier) Target Market: Small real estate investors (<100 units) using spreadsheets Primary Competitor: FlipperForce ($79-499/mo) Differentiator: RAG-powered AI trained on Cameron's 30+ hours of methodology
Key Stakeholders¶
| Role | Person | Responsibility |
|---|---|---|
| Domain Expert | Cameron Burke | RE methodology, content, course material |
| Technical Lead | Bert Frichot | Architecture, AI/RAG, development |
| AI System | Corby AI | Persistent memory, content extraction |
Database Architecture¶
Entity Relationship Diagram (ERD)¶
Database Tables (PostgreSQL)¶
Core User Tables¶
-- Users and Authentication
CREATE TABLE users (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
email VARCHAR(255) UNIQUE NOT NULL,
password_hash VARCHAR(255) NOT NULL,
first_name VARCHAR(100),
last_name VARCHAR(100),
phone VARCHAR(20),
company_name VARCHAR(255),
created_at TIMESTAMPTZ DEFAULT NOW(),
updated_at TIMESTAMPTZ DEFAULT NOW(),
last_login_at TIMESTAMPTZ,
is_active BOOLEAN DEFAULT true,
stripe_customer_id VARCHAR(255),
subscription_tier VARCHAR(50) DEFAULT 'free'
);
CREATE TABLE user_preferences (
user_id UUID PRIMARY KEY REFERENCES users(id),
default_market VARCHAR(100),
target_coc_return DECIMAL(5,2) DEFAULT 15.00,
min_cash_flow_per_door DECIMAL(10,2) DEFAULT 100.00,
max_arv DECIMAL(12,2),
max_ltv_percent DECIMAL(5,2) DEFAULT 70.00,
min_flip_profit DECIMAL(12,2) DEFAULT 25000.00,
preferred_strategies JSONB DEFAULT '["flip", "brrrr", "rental"]',
notification_settings JSONB,
created_at TIMESTAMPTZ DEFAULT NOW(),
updated_at TIMESTAMPTZ DEFAULT NOW()
);
-- Subscriptions (Stripe Integration)
CREATE TABLE subscriptions (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
user_id UUID REFERENCES users(id),
stripe_subscription_id VARCHAR(255) UNIQUE,
tier VARCHAR(50) NOT NULL, -- 'free', 'solo', 'pro', 'team'
status VARCHAR(50) NOT NULL, -- 'active', 'canceled', 'past_due', 'trialing'
current_period_start TIMESTAMPTZ,
current_period_end TIMESTAMPTZ,
cancel_at_period_end BOOLEAN DEFAULT false,
created_at TIMESTAMPTZ DEFAULT NOW(),
updated_at TIMESTAMPTZ DEFAULT NOW()
);
Property & Deal Tables¶
-- Properties
CREATE TABLE properties (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
user_id UUID REFERENCES users(id),
address_line1 VARCHAR(255) NOT NULL,
address_line2 VARCHAR(255),
city VARCHAR(100) NOT NULL,
state VARCHAR(2) NOT NULL,
zip_code VARCHAR(10) NOT NULL,
county VARCHAR(100),
property_type VARCHAR(50), -- 'sfr', 'duplex', 'triplex', 'quad', 'multi', 'land'
bedrooms INTEGER,
bathrooms DECIMAL(3,1),
sqft INTEGER,
lot_size_sqft INTEGER,
year_built INTEGER,
parcel_number VARCHAR(50),
latitude DECIMAL(10,7),
longitude DECIMAL(10,7),
current_value_estimate DECIMAL(12,2),
arv_estimate DECIMAL(12,2),
status VARCHAR(50) DEFAULT 'prospect', -- 'prospect', 'under_contract', 'owned', 'sold', 'archived'
source VARCHAR(100), -- 'mls', 'wholesaler', 'direct_mail', 'driving_for_dollars', 'facebook', 'craigslist'
created_at TIMESTAMPTZ DEFAULT NOW(),
updated_at TIMESTAMPTZ DEFAULT NOW()
);
-- Deals (Core Transaction Tracking)
CREATE TABLE deals (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
user_id UUID REFERENCES users(id),
property_id UUID REFERENCES properties(id),
deal_name VARCHAR(255),
strategy VARCHAR(50) NOT NULL, -- 'flip', 'brrrr', 'rental', 'wholesale', 'subject_to', 'seller_finance'
status VARCHAR(50) DEFAULT 'analyzing', -- 'analyzing', 'offer_sent', 'under_contract', 'in_rehab', 'listed', 'sold', 'holding', 'dead'
-- Purchase Info
asking_price DECIMAL(12,2),
offer_price DECIMAL(12,2),
purchase_price DECIMAL(12,2),
purchase_date DATE,
-- ARV & Rehab
arv DECIMAL(12,2),
rehab_estimate DECIMAL(12,2),
rehab_actual DECIMAL(12,2),
-- Costs (70% Rule Components)
buying_closing_costs DECIMAL(12,2), -- BSCCC
holding_costs DECIMAL(12,2), -- HOLDCO
selling_closing_costs DECIMAL(12,2), -- SSCC
-- Calculated Fields
mao DECIMAL(12,2), -- Maximum Allowable Offer
all_in_cost DECIMAL(12,2),
expected_profit DECIMAL(12,2),
actual_profit DECIMAL(12,2),
-- Sale Info (for flips/wholesales)
list_price DECIMAL(12,2),
sale_price DECIMAL(12,2),
sale_date DATE,
days_on_market INTEGER,
-- Rental Info (for BRRRR/rentals)
monthly_rent DECIMAL(10,2),
refinance_amount DECIMAL(12,2),
cash_left_in_deal DECIMAL(12,2),
-- AI Scoring
deal_score_id UUID,
-- Metadata
notes TEXT,
created_at TIMESTAMPTZ DEFAULT NOW(),
updated_at TIMESTAMPTZ DEFAULT NOW()
);
-- Deal Analyses (Multiple scenarios per deal)
CREATE TABLE deal_analyses (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
deal_id UUID REFERENCES deals(id),
analysis_name VARCHAR(100) DEFAULT 'Primary',
-- Input Assumptions
purchase_price DECIMAL(12,2),
arv DECIMAL(12,2),
rehab_cost DECIMAL(12,2),
-- Flip Analysis
gross_profit DECIMAL(12,2),
total_costs DECIMAL(12,2),
net_profit DECIMAL(12,2),
roi_percent DECIMAL(6,2),
-- Rental Analysis
monthly_rent DECIMAL(10,2),
vacancy_rate DECIMAL(5,2) DEFAULT 5.00,
property_mgmt_rate DECIMAL(5,2) DEFAULT 10.00,
capex_reserve_rate DECIMAL(5,2) DEFAULT 5.00,
insurance_monthly DECIMAL(10,2),
taxes_monthly DECIMAL(10,2),
hoa_monthly DECIMAL(10,2) DEFAULT 0,
utilities_monthly DECIMAL(10,2) DEFAULT 0,
-- Calculated Rental Metrics
gross_monthly_income DECIMAL(10,2),
operating_expenses DECIMAL(10,2),
noi_monthly DECIMAL(10,2),
noi_annual DECIMAL(12,2),
cap_rate DECIMAL(5,2),
cash_flow_monthly DECIMAL(10,2),
cash_on_cash_return DECIMAL(5,2),
-- BRRRR Specific
refinance_ltv DECIMAL(5,2) DEFAULT 75.00,
refinance_rate DECIMAL(5,3),
refinance_term_years INTEGER DEFAULT 30,
refinance_amount DECIMAL(12,2),
cash_out DECIMAL(12,2),
cash_left_in DECIMAL(12,2),
-- Financing
down_payment_percent DECIMAL(5,2),
loan_amount DECIMAL(12,2),
interest_rate DECIMAL(5,3),
loan_term_years INTEGER,
monthly_piti DECIMAL(10,2),
created_at TIMESTAMPTZ DEFAULT NOW()
);
-- AI Deal Scoring
CREATE TABLE deal_scores (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
deal_id UUID UNIQUE REFERENCES deals(id),
overall_score VARCHAR(10) NOT NULL, -- 'green', 'yellow', 'red'
confidence_level DECIMAL(5,2), -- 0-100%
-- Category Scores
arv_score VARCHAR(10),
rehab_score VARCHAR(10),
market_score VARCHAR(10),
profit_score VARCHAR(10),
risk_score VARCHAR(10),
-- JSON breakdown
score_breakdown JSONB,
calculated_at TIMESTAMPTZ DEFAULT NOW()
);
-- Score Explanations (Links to educational content)
CREATE TABLE score_explanations (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
deal_score_id UUID REFERENCES deal_scores(id),
category VARCHAR(50), -- 'arv', 'rehab', 'market', 'profit', 'risk'
score VARCHAR(10),
explanation TEXT NOT NULL,
recommendation TEXT,
video_module_id UUID REFERENCES video_modules(id),
video_timestamp_seconds INTEGER,
created_at TIMESTAMPTZ DEFAULT NOW()
);
Scope of Work Tables¶
-- Scope of Work
CREATE TABLE scope_of_work (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
deal_id UUID REFERENCES deals(id),
property_id UUID REFERENCES properties(id),
version INTEGER DEFAULT 1,
status VARCHAR(50) DEFAULT 'draft', -- 'draft', 'sent_to_contractor', 'approved', 'in_progress', 'completed'
total_estimate DECIMAL(12,2),
total_actual DECIMAL(12,2),
estimated_days INTEGER,
actual_days INTEGER,
created_at TIMESTAMPTZ DEFAULT NOW(),
updated_at TIMESTAMPTZ DEFAULT NOW()
);
-- SOW Line Items
CREATE TABLE sow_line_items (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
sow_id UUID REFERENCES scope_of_work(id),
category VARCHAR(100) NOT NULL, -- 'roofing', 'hvac', 'plumbing', 'electrical', 'flooring', etc.
subcategory VARCHAR(100),
description TEXT NOT NULL,
quantity DECIMAL(10,2),
unit VARCHAR(50), -- 'sqft', 'each', 'linear_ft', 'lump_sum'
unit_price DECIMAL(10,2),
estimated_cost DECIMAL(10,2),
actual_cost DECIMAL(10,2),
contractor_id UUID REFERENCES contacts(id),
status VARCHAR(50) DEFAULT 'pending', -- 'pending', 'in_progress', 'completed', 'skipped'
notes TEXT,
sort_order INTEGER,
created_at TIMESTAMPTZ DEFAULT NOW()
);
-- Pricing Database (Cameron's OK market prices as baseline)
CREATE TABLE pricing_database (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
category VARCHAR(100) NOT NULL,
subcategory VARCHAR(100),
item_name VARCHAR(255) NOT NULL,
description TEXT,
unit VARCHAR(50),
min_price DECIMAL(10,2),
max_price DECIMAL(10,2),
typical_price DECIMAL(10,2),
market VARCHAR(100) DEFAULT 'oklahoma', -- Base market, users can add their own
user_id UUID REFERENCES users(id), -- NULL for system defaults
source VARCHAR(100), -- 'cameron_methodology', 'user_input', 'system'
last_updated TIMESTAMPTZ DEFAULT NOW(),
is_active BOOLEAN DEFAULT true,
UNIQUE(category, subcategory, item_name, market, user_id)
);
CRM & Contacts¶
-- Contacts (Agents, Wholesalers, Contractors, Lenders)
CREATE TABLE contacts (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
user_id UUID REFERENCES users(id),
contact_type VARCHAR(50) NOT NULL, -- 'agent', 'wholesaler', 'contractor', 'lender', 'property_manager', 'seller', 'buyer', 'other'
first_name VARCHAR(100),
last_name VARCHAR(100),
company_name VARCHAR(255),
email VARCHAR(255),
phone VARCHAR(20),
secondary_phone VARCHAR(20),
address TEXT,
-- Contractor-specific
contractor_specialty JSONB, -- ['roofing', 'hvac', 'plumbing']
license_number VARCHAR(100),
insurance_expiry DATE,
-- Agent-specific
mls_id VARCHAR(50),
brokerage VARCHAR(255),
-- Wholesaler-specific
avg_deal_fee DECIMAL(10,2),
markets_served JSONB,
-- Lender-specific
lender_type VARCHAR(50), -- 'hard_money', 'private', 'bank', 'dscr'
max_ltv DECIMAL(5,2),
typical_rate DECIMAL(5,3),
min_credit_score INTEGER,
-- Tracking
source VARCHAR(100), -- 'facebook', 'referral', 'mls_listing', 'investor_lift'
tags JSONB,
notes TEXT,
rating INTEGER CHECK (rating >= 1 AND rating <= 5),
status VARCHAR(50) DEFAULT 'active', -- 'active', 'dormant', 'dnc'
last_contact_date DATE,
next_followup_date DATE,
created_at TIMESTAMPTZ DEFAULT NOW(),
updated_at TIMESTAMPTZ DEFAULT NOW()
);
-- Contact Interactions Log
CREATE TABLE contact_interactions (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
contact_id UUID REFERENCES contacts(id),
user_id UUID REFERENCES users(id),
interaction_type VARCHAR(50), -- 'call', 'text', 'email', 'meeting', 'deal_sent', 'deal_closed'
direction VARCHAR(10), -- 'inbound', 'outbound'
subject VARCHAR(255),
content TEXT,
outcome VARCHAR(100),
deal_id UUID REFERENCES deals(id),
created_at TIMESTAMPTZ DEFAULT NOW()
);
Portfolio & Rental Management¶
-- Rental Portfolio
CREATE TABLE portfolios (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
user_id UUID REFERENCES users(id),
name VARCHAR(255) DEFAULT 'My Portfolio',
description TEXT,
created_at TIMESTAMPTZ DEFAULT NOW()
);
CREATE TABLE rental_properties (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
portfolio_id UUID REFERENCES portfolios(id),
property_id UUID REFERENCES properties(id),
acquisition_date DATE,
acquisition_price DECIMAL(12,2),
current_value DECIMAL(12,2),
mortgage_balance DECIMAL(12,2),
equity DECIMAL(12,2),
monthly_rent DECIMAL(10,2),
monthly_mortgage DECIMAL(10,2),
monthly_expenses DECIMAL(10,2),
monthly_cash_flow DECIMAL(10,2),
annual_noi DECIMAL(12,2),
cap_rate DECIMAL(5,2),
coc_return DECIMAL(5,2),
status VARCHAR(50) DEFAULT 'active', -- 'active', 'vacant', 'renovating', 'for_sale'
created_at TIMESTAMPTZ DEFAULT NOW(),
updated_at TIMESTAMPTZ DEFAULT NOW()
);
CREATE TABLE tenants (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
rental_property_id UUID REFERENCES rental_properties(id),
first_name VARCHAR(100),
last_name VARCHAR(100),
email VARCHAR(255),
phone VARCHAR(20),
lease_start DATE,
lease_end DATE,
monthly_rent DECIMAL(10,2),
security_deposit DECIMAL(10,2),
status VARCHAR(50) DEFAULT 'active', -- 'active', 'notice_given', 'eviction', 'past'
notes TEXT,
created_at TIMESTAMPTZ DEFAULT NOW()
);
CREATE TABLE income_records (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
rental_property_id UUID REFERENCES rental_properties(id),
tenant_id UUID REFERENCES tenants(id),
record_date DATE NOT NULL,
amount DECIMAL(10,2) NOT NULL,
income_type VARCHAR(50), -- 'rent', 'late_fee', 'pet_deposit', 'application_fee', 'other'
description TEXT,
created_at TIMESTAMPTZ DEFAULT NOW()
);
CREATE TABLE expense_records (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
rental_property_id UUID REFERENCES rental_properties(id),
record_date DATE NOT NULL,
amount DECIMAL(10,2) NOT NULL,
expense_type VARCHAR(50), -- 'mortgage', 'insurance', 'taxes', 'repairs', 'capex', 'utilities', 'hoa', 'property_mgmt', 'other'
description TEXT,
contractor_id UUID REFERENCES contacts(id),
is_recurring BOOLEAN DEFAULT false,
created_at TIMESTAMPTZ DEFAULT NOW()
);
Capital Management¶
-- Capital Tracking (Cameron's Capital Management Stack)
CREATE TABLE capital_records (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
user_id UUID REFERENCES users(id),
record_date DATE NOT NULL,
total_capital DECIMAL(14,2),
available_capital DECIMAL(14,2),
deployed_capital DECIMAL(14,2),
pending_capital DECIMAL(14,2), -- Committed but not yet deployed
reserved_capital DECIMAL(14,2), -- Emergency/reserves
created_at TIMESTAMPTZ DEFAULT NOW()
);
CREATE TABLE capital_deployments (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
capital_record_id UUID REFERENCES capital_records(id),
deal_id UUID REFERENCES deals(id),
description VARCHAR(255),
amount DECIMAL(12,2) NOT NULL,
deployment_type VARCHAR(50), -- 'purchase', 'rehab', 'holding', 'refinance_out'
deployed_date DATE,
expected_return_date DATE,
actual_return_date DATE,
return_amount DECIMAL(12,2),
status VARCHAR(50) DEFAULT 'deployed', -- 'pending', 'deployed', 'returned', 'lost'
notes TEXT,
created_at TIMESTAMPTZ DEFAULT NOW()
);
Comps & Market Data¶
-- Comparable Sales
CREATE TABLE comps (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
property_id UUID REFERENCES properties(id),
deal_id UUID REFERENCES deals(id),
address VARCHAR(255) NOT NULL,
city VARCHAR(100),
state VARCHAR(2),
zip_code VARCHAR(10),
-- Property Details
bedrooms INTEGER,
bathrooms DECIMAL(3,1),
sqft INTEGER,
lot_size_sqft INTEGER,
year_built INTEGER,
property_type VARCHAR(50),
-- Sale Info
sale_price DECIMAL(12,2),
sale_date DATE,
price_per_sqft DECIMAL(10,2),
days_on_market INTEGER,
-- Condition
condition VARCHAR(50), -- 'as_is', 'dated', 'average', 'updated', 'fully_renovated'
comp_quality VARCHAR(50), -- 'excellent', 'good', 'fair', 'stretch'
-- Distance/Relevance
distance_miles DECIMAL(5,2),
in_same_subdivision BOOLEAN DEFAULT false,
-- Adjustments (for manual comp analysis)
location_adjustment DECIMAL(12,2) DEFAULT 0,
condition_adjustment DECIMAL(12,2) DEFAULT 0,
size_adjustment DECIMAL(12,2) DEFAULT 0,
age_adjustment DECIMAL(12,2) DEFAULT 0,
adjusted_price DECIMAL(12,2),
-- Status
comp_type VARCHAR(20), -- 'sold', 'pending', 'active'
source VARCHAR(50), -- 'mls', 'zillow', 'redfin', 'manual'
mls_number VARCHAR(50),
notes TEXT,
created_at TIMESTAMPTZ DEFAULT NOW()
);
-- Market Analysis Data
CREATE TABLE market_data (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
user_id UUID REFERENCES users(id),
market_name VARCHAR(255) NOT NULL, -- 'Oklahoma City, OK' or zip code
data_date DATE NOT NULL,
-- Supply Metrics
active_listings INTEGER,
pending_listings INTEGER,
monthly_sales INTEGER,
months_of_inventory DECIMAL(4,1), -- MOI
-- Price Metrics
median_list_price DECIMAL(12,2),
median_sale_price DECIMAL(12,2),
avg_price_per_sqft DECIMAL(10,2),
-- Time Metrics
avg_dom INTEGER, -- Days on Market
median_dom INTEGER,
-- Trends
yoy_price_change DECIMAL(5,2), -- Year over year %
mom_price_change DECIMAL(5,2), -- Month over month %
source VARCHAR(50),
notes TEXT,
created_at TIMESTAMPTZ DEFAULT NOW(),
UNIQUE(market_name, data_date)
);
Educational Content (RAG)¶
-- Cameron's Methodology Content (for RAG)
CREATE TABLE methodology_content (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
title VARCHAR(255) NOT NULL,
content_type VARCHAR(50), -- 'module', 'worksheet', 'template', 'coaching_call'
description TEXT,
created_at TIMESTAMPTZ DEFAULT NOW()
);
CREATE TABLE video_modules (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
methodology_id UUID REFERENCES methodology_content(id),
title VARCHAR(255) NOT NULL,
module_number INTEGER,
description TEXT,
duration_seconds INTEGER,
video_url VARCHAR(500),
thumbnail_url VARCHAR(500),
transcript TEXT,
-- RAG Embeddings
embedding_id VARCHAR(255), -- Reference to vector store
-- Topics for linking to deal scores
topics JSONB, -- ['arv', 'comps', 'rehab_estimation', 'financing']
created_at TIMESTAMPTZ DEFAULT NOW()
);
CREATE TABLE worksheets (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
methodology_id UUID REFERENCES methodology_content(id),
title VARCHAR(255) NOT NULL,
description TEXT,
template_url VARCHAR(500),
topics JSONB,
created_at TIMESTAMPTZ DEFAULT NOW()
);
-- RAG Embeddings Index
CREATE TABLE rag_embeddings (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
source_type VARCHAR(50), -- 'video_transcript', 'worksheet', 'coaching_call'
source_id UUID,
chunk_index INTEGER,
content TEXT NOT NULL,
embedding vector(768), -- Using pgvector
metadata JSONB,
created_at TIMESTAMPTZ DEFAULT NOW()
);
-- Enable pgvector
CREATE EXTENSION IF NOT EXISTS vector;
CREATE INDEX ON rag_embeddings USING ivfflat (embedding vector_cosine_ops);
Inspections & Photos¶
-- Property Inspections
CREATE TABLE inspections (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
property_id UUID REFERENCES properties(id),
deal_id UUID REFERENCES deals(id),
inspection_date DATE,
inspector_name VARCHAR(255),
inspection_type VARCHAR(50), -- 'initial_walkthrough', 'formal_inspection', 'rehab_progress', 'final'
overall_condition VARCHAR(50), -- 'good', 'fair', 'poor', 'gut_job'
notes TEXT,
created_at TIMESTAMPTZ DEFAULT NOW()
);
CREATE TABLE inspection_items (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
inspection_id UUID REFERENCES inspections(id),
category VARCHAR(100), -- 'roof', 'hvac', 'plumbing', 'electrical', 'foundation', 'interior', 'exterior'
item_name VARCHAR(255),
condition VARCHAR(50), -- 'good', 'fair', 'replace', 'repair', 'critical'
estimated_cost DECIMAL(10,2),
notes TEXT,
sort_order INTEGER
);
-- Property Photos
CREATE TABLE photos (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
property_id UUID REFERENCES properties(id),
deal_id UUID REFERENCES deals(id),
inspection_id UUID REFERENCES inspections(id),
photo_url VARCHAR(500) NOT NULL,
thumbnail_url VARCHAR(500),
category VARCHAR(100), -- 'exterior', 'kitchen', 'bathroom', 'bedroom', 'living', 'basement', 'roof', 'damage'
caption TEXT,
photo_date DATE,
is_before BOOLEAN, -- For before/after tracking
sort_order INTEGER,
created_at TIMESTAMPTZ DEFAULT NOW()
);
Contracts & Documents¶
-- Contracts
CREATE TABLE contracts (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
deal_id UUID REFERENCES deals(id),
contract_type VARCHAR(50), -- 'purchase', 'wholesale_ab', 'wholesale_bc', 'listing', 'contractor', 'lease'
status VARCHAR(50) DEFAULT 'draft', -- 'draft', 'sent', 'signed', 'executed', 'expired', 'cancelled'
-- Key Dates
effective_date DATE,
due_diligence_end DATE,
closing_date DATE,
expiration_date DATE,
-- Financials
contract_price DECIMAL(12,2),
earnest_money DECIMAL(10,2),
assignment_fee DECIMAL(10,2), -- For wholesale deals
-- Parties
buyer_id UUID REFERENCES contacts(id),
seller_id UUID REFERENCES contacts(id),
-- Documents
document_url VARCHAR(500),
signed_document_url VARCHAR(500),
notes TEXT,
created_at TIMESTAMPTZ DEFAULT NOW(),
updated_at TIMESTAMPTZ DEFAULT NOW()
);
-- Deal Timeline/Activity Log
CREATE TABLE timeline_events (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
deal_id UUID REFERENCES deals(id),
event_date TIMESTAMPTZ DEFAULT NOW(),
event_type VARCHAR(100), -- 'status_change', 'offer_sent', 'inspection', 'rehab_start', 'listed', 'showing', 'offer_received', 'closed'
title VARCHAR(255),
description TEXT,
created_by UUID REFERENCES users(id),
metadata JSONB
);
Expenses Tracking¶
-- Deal Expenses (Actuals)
CREATE TABLE expenses (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
deal_id UUID REFERENCES deals(id),
expense_date DATE NOT NULL,
category VARCHAR(100), -- 'acquisition', 'rehab', 'holding', 'selling', 'other'
subcategory VARCHAR(100),
description TEXT,
amount DECIMAL(12,2) NOT NULL,
vendor_id UUID REFERENCES contacts(id),
receipt_url VARCHAR(500),
is_billable BOOLEAN DEFAULT true,
sow_line_item_id UUID REFERENCES sow_line_items(id),
notes TEXT,
created_at TIMESTAMPTZ DEFAULT NOW()
);
Tech Stack Architecture¶
Frontend¶
React 18 + TypeScript
├── Next.js 14 (App Router)
├── TailwindCSS + shadcn/ui
├── React Query (data fetching)
├── Zustand (state management)
├── React Hook Form + Zod
└── Recharts (analytics)
Backend¶
Python FastAPI
├── SQLAlchemy 2.0 (ORM)
├── Alembic (migrations)
├── Pydantic v2 (validation)
├── Celery + Redis (background jobs)
└── pgvector (RAG embeddings)
Database¶
PostgreSQL 16
├── pgvector extension (embeddings)
├── pg_cron (scheduled jobs)
└── Row-Level Security (multi-tenant)
AI/RAG¶
RAG Pipeline
├── LM Studio (local embeddings - nomic-embed-text-v1.5, 768d)
├── Qdrant Cloud (vector storage - existing infrastructure)
├── Claude API (deal analysis, explanations)
└── Whisper (video transcriptions)
Infrastructure¶
Cloud Services
├── Vercel (frontend hosting)
├── Railway or Render (backend)
├── Supabase or Neon (PostgreSQL)
├── Cloudflare R2 (file storage)
├── Stripe (payments)
└── Resend (transactional email)
Application Architecture Diagram¶
Subscription Tiers & eCommerce¶
Pricing Structure¶
| Tier | Price | Deals/Month | Features |
|---|---|---|---|
| Free | $0 | 3 | Basic deal analysis, no AI scoring |
| Solo | $99/mo | Unlimited | AI deal scoring, Cameron's methodology, SOW builder |
| Pro | $199/mo | Unlimited | + Rental portfolio tracking, market analysis, CRM |
| Team | $399/mo | Unlimited | + Multi-user, API access, white-label reports |
Stripe Integration¶
// Stripe Product IDs
const PRODUCTS = {
solo: 'prod_XXXXX',
pro: 'prod_XXXXX',
team: 'prod_XXXXX'
};
// Webhook Events to Handle
const WEBHOOK_EVENTS = [
'checkout.session.completed',
'customer.subscription.updated',
'customer.subscription.deleted',
'invoice.payment_failed',
'invoice.payment_succeeded'
];
Billing Features¶
- Free trial: 14 days of Solo tier
- Annual discount: 2 months free (pay 10, get 12)
- Upgrade/downgrade: Prorated immediately
- Usage limits: Soft limits with warning, hard limits on free tier
Project Phases & Roadmap¶
Phase 1: Foundation (Weeks 1-2)¶
- [ ] Database schema implementation (PostgreSQL + pgvector)
- [ ] User auth (NextAuth.js + Stripe)
- [ ] Core deal CRUD operations
- [ ] Basic property management
- [ ] Stripe subscription integration
Phase 2: Deal Analysis Engine (Weeks 3-4)¶
- [ ] 70% Rule calculator
- [ ] Flip analysis module
- [ ] BRRRR analysis module
- [ ] Rental analysis module
- [ ] SOW builder with pricing database
Phase 3: AI Scoring (Weeks 5-6)¶
- [ ] RAG pipeline setup (transcript embeddings)
- [ ] Deal scoring algorithm (Green/Yellow/Red)
- [ ] Score explanations with video links
- [ ] Market condition awareness
Phase 4: CRM & Portfolio (Weeks 7-8)¶
- [ ] Contact management
- [ ] Follow-up automation
- [ ] Rental portfolio tracking
- [ ] P&L reporting
- [ ] Capital deployment tracking
Phase 5: Polish & Launch (Weeks 9-10)¶
- [ ] Mobile responsiveness
- [ ] Onboarding flow
- [ ] Help documentation
- [ ] Beta user testing
- [ ] Production deployment
Content Extraction Status (Dec 21, 2025)¶
Video Transcriptions¶
| Status | Count | Files |
|---|---|---|
| Completed | 22 | video.mp4, (1)-(12), (18), (20)-(23), (26)-(27), (30)-(31) |
| In Progress | 4 | (19), (24), (28), (29) - Large files, Whisper processing |
| Not Provided | ~5 | (13)-(17), (25) - Not in user's Downloads |
Note: Videos 13-17 and 25 were not provided by user. Videos 19, 24, 28, 29 are large (500-775MB) and being processed.
Module Topics Identified¶
- Module 1: Key Terminology
- Module 2: Investor Mindset
- Module 5: Course Welcome (55 modules, 30-50 hrs total)
- Module 7: Building Relationships (Realtors, Lenders, Contractors)
- Module 10: ARV Comps Analysis
- Personal Financial Statement (PFOS)
- Coaching Call: Direct Mail, VAs, Lead Management
Course Documents Extracted¶
- Technology Stack (Basic → Advanced)
- Unified SOW Estimation Worksheet (full pricing database)
- Deal Sourcing System (Daily/Weekly routine)
- Example BRRR Strategy (full worked example)
- Real Estate Comp Analysis Worksheet
- Underwriting Long Term Hold Sheet
- Prep for Funding Your First Deal
- Investor Readiness Checklist
- Buy Box Worksheet
- Market Research Worksheet
- Midway Checkpoint Worksheet
Google Sheets Links (Cameron's)¶
- Master Sheet:
https://docs.google.com/spreadsheets/d/13LGIf7z19QsoiXvU9J2GkUuBnXqF_yhn - PFS:
https://docs.google.com/spreadsheets/d/1a912jlt-2q3xk86iAOqiTLKl5sAVaVxipHWliZsuPO8 - Capital Mgmt:
https://docs.google.com/spreadsheets/d/12hhyrSs3AWr1RE3r3mJsmNhJFLQJoydzQSQo9AtoNKE - SOW Template:
https://docs.google.com/document/d/1ceXcG8wNacJ7Rv5aXgZ0lAmcp0SGlFsz4y5awmrrQww
FlipperForce Competitive Gaps (Our Opportunities)¶
| Gap | FlipperForce | Our Solution |
|---|---|---|
| AI Deal Scoring | None (DaveBot is support only) | Green/Yellow/Red with explanations |
| Methodology Training | Generic tool | Trained on Cameron's 30hr course |
| Personal Financials | None | DTI, Net Worth, Credit tracking |
| Portfolio P&L | None | Full rental portfolio analytics |
| Market Analysis | None | MOI, DOM, trend tracking |
| Buy Box Creation | None | Guided buy box builder |
| Wholesaling Workflow | Limited | Full A-B/B-C contract flow |
| Educational Links | None | Every warning links to video |
Key Formulas (Cameron's Methodology)¶
70% Rule (Maximum Allowable Offer)¶
MAO = ARV × 0.7 - REHAB - BSCCC - HOLDCO - SSCC
Where:
- ARV = After Repair Value
- REHAB = Renovation costs
- BSCCC = Buying-Side Closing Costs & Carrying
- HOLDCO = Holding Costs
- SSCC = Selling-Side Closing Costs & Commissions
Core Metrics¶
NOI = Gross Rent – Operating Expenses
Cap Rate = NOI ÷ Purchase Price
Cash-on-Cash = Annual Cash Flow ÷ Cash Invested
LTV = Loan Amount ÷ ARV
MOI = Active Listings ÷ Monthly Sales
DTI = Monthly Debt ÷ Monthly Income
Cameron's Targets¶
- Cash-on-Cash Return: 15%+
- Cash Flow per Door: $100+/month
- All-in Cost: ≤70% of ARV
- Minimum Flip Profit: $25,000
File References¶
- Full Specification:
docs/projects/cameron-burke-re-saas-spec.md(2,500+ lines) - FlipperForce Analysis:
entities/competitors/flipperforce/flipperforce_comprehensive_analysis.md - Project Tracking:
entities/trading/projects/cameron_burke_real_estate.md - Transcripts:
/Users/bertfrichot/Downloads/cameron_transcripts/
Competitive Landscape Research (Dec 21, 2025)¶
Market Overview¶
The house flipping and real estate investing SaaS market is fragmented, with most tools focusing on ONE aspect of the workflow. This creates an opportunity for an all-in-one platform that integrates deal sourcing, analysis, project management, and portfolio tracking.
Key market insights from Investopedia (2025): - Median gross profit per flip: $73,766 (Q3 2020 high, still strong in 2024) - Success factors: Education, knowing the numbers, market research, hiring great contractors - The 70% Rule is universally cited as the standard for deal analysis
Tier 1 Competitors (Direct Competition)¶
1. FlipperForce ($79-499/mo)¶
Our Primary Competitor - Full Documentation in /entities/competitors/flipperforce/
| Feature | Details |
|---|---|
| Pricing | Starter $79, Pro $149, Elite $499 |
| Modules | Flip Analyzer, BRRRR Analyzer, Repair Estimator, Scheduler, CRM |
| Strengths | 6-step wizards, detailed repair categories (25 types), project stages |
| Weaknesses | No AI scoring, no methodology training, no personal financials |
| Knowledge Base | 30 tool pages scraped → /entities/competitors/flipperforce/kb_tools_batch*.json |
Our Advantage: AI deal scoring trained on Cameron's methodology, educational video links
2. PropStream (Property Data)¶
URL: propstream.com | Focus: Lead Generation & Property Data
| Feature | Details |
|---|---|
| Lead Lists | Pre-Foreclosure, Bankruptcy, Zombie Properties, Tax Delinquent, Vacant |
| Tools | 165+ search filters, 20 Lead Lists, Rehab Calculator, Skip Tracing |
| Features | Comps engine, email campaigns, postcards, mobile app, "Drive for Dollars" |
| Pricing | 7-day free trial, subscription-based |
| Academy | Free courses on fix-and-flip, lead generation |
Integration Opportunity: Could integrate PropStream data via API for lead sourcing
3. Realeflow (White-Label Platform)¶
URL: realeflow.com | Focus: B2B White-Label Real Estate Platform
| Feature | Details |
|---|---|
| Model | White-label SaaS for brokerages, educators, influencers |
| AI Tools | Sellability Scores, Target Match AI, Signal AI Heat Maps, Buyer Match AI |
| Features | CRM, Deal Analyzer, Skip Tracing, Direct Mail, Comping Engine |
| Clients | Brokerages, Tech Companies, Educators & Influencers |
| Support | Done-for-you marketing, dedicated account manager |
Key Insight: They serve educators/influencers who want THEIR OWN branded platform - this is Cameron's potential competitor if he wants white-label
4. RealtyTrac (Foreclosure Deals)¶
URL: realtytrac.com | Focus: Foreclosure & Deal Finding
| Feature | Details |
|---|---|
| Property Types | Pre-Foreclosure, Bank-Owned (REO), Auctions, MLS Listings |
| Investment Calculators | Long-term Rental, Fix & Flip (coming), Wholesale (coming), Short-term Rental (coming) |
| Data | Owner info, auction dates, pricing history |
| Content | Learning center, market reports, state-by-state foreclosure data |
Integration Opportunity: Foreclosure data feed for deal sourcing
Tier 2 Competitors (Adjacent Tools)¶
5. BatchData.io (Property Intelligence)¶
URL: batchdata.io | Focus: Property Data API
| Tier | Price/mo | Records |
|---|---|---|
| Lite | $500 | 20,000 |
| Growth | $1,000 | 100,000 |
| Professional | $2,500 | 300,000 |
| Scale | $5,000 | 750,000 |
Products: - Bulk Property Data (240+ data points) - Pre-Foreclosure Data, Mortgage Transactions - Demographics, Permit Data, AVM (valuations) - Skip Tracing (pay-per-match) - MCP Server (new AI integration) - BatchRank - Sale propensity scoring
Integration Opportunity: Enterprise-grade data enrichment for deal analysis
6. Matterport (3D Property Tours)¶
URL: matterport.com | Focus: Digital Twins / 3D Visualization
| Feature | Details |
|---|---|
| Use Cases | Property Marketing, Facilities Management, Design & Construction |
| Technology | 3D renderings, virtual tours, floor plans |
| Integrations | Procore, Autodesk, AWS |
| Value | Buyers can "walk through" property remotely |
Integration Opportunity: 3D tour embedding for property listings
7. Houzz (Design & Contractors)¶
URL: houzz.com | Focus: Design Inspiration & Contractor Network
| Feature | Details |
|---|---|
| For Homeowners | Find pros, design ideas, shop products |
| For Pros | 3D Floor Plans, Estimates, Proposals, Invoicing, CRM |
| Pro Software | "Houzz Pro" - construction management platform |
| Pricing | Software demo available |
Integration Opportunity: Contractor directory, design inspiration feed
8. Redfin (Brokerage/Listings)¶
URL: redfin.com | Focus: Real Estate Brokerage
| Feature | Details |
|---|---|
| Services | Buy, Sell, Rent, Mortgage |
| Data | Listings by city, neighborhood, state |
| Agent Network | Salaried agents, low commissions |
| Tools | Affordability calculator, home value estimates |
Integration Opportunity: MLS data, comparable sales
9. Angi (Contractor Marketplace)¶
URL: angi.com (formerly Angie's List) | Focus: Home Services
| Feature | Details |
|---|---|
| Categories | Handyperson, Plumbing, Electrical, Roofing, HVAC, Remodeling |
| Content | Cost guides (furnace $X, roof snow removal $Y) |
| Model | Review-based marketplace |
| Value | Verified contractors, real reviews |
Integration Opportunity: Contractor recommendations, cost estimation data
Tier 3 (Supporting Tools)¶
10. Jasper.ai (AI Content Marketing)¶
URL: jasper.ai | Focus: AI Content Automation for Marketing
| Feature | Details |
|---|---|
| Products | Content Pipelines, Agents, Studio, Canvas, Grid |
| Intelligence | Brand IQ, Marketing IQ, Knowledge Base |
| Use Cases | SEO/AEO/GEO, campaign creation, blog posts |
| Clients | Wayfair, Boeing, Cushman & Wakefield |
Relevance for Cameron: Marketing automation for his course, content repurposing
11. Curotec (SaaS Development Agency)¶
URL: curotec.com | Focus: SaaS & Application Development
| Feature | Details |
|---|---|
| Location | Philadelphia/Newtown Square, PA + LATAM |
| Tech Stack | Laravel, Vue.js, React, Python, Node.js, AWS |
| Models | Staff Augmentation, Retainer, Project Delivery |
| Clients | Comcast, FDA, PAIRIN (Series B SaaS) |
| Awards | Inc. 5000, Philly 100, Official Laravel Partner |
Potential Partner: Could build Cameron's platform if needed
12. Accruent/Lucernex (Enterprise Lease Management)¶
URL: accruent.com | Focus: Enterprise Lease Administration
| Feature | Details |
|---|---|
| Target | Large enterprises (Genesco, L'Oreal, Alaska Airlines) |
| Compliance | ASC 842, IFRS 16 automation |
| Features | Multi-site, multi-currency, ERP integration |
Not Direct Competitor: Too enterprise-focused, but shows lease management patterns
13. New Again Houses (Fix & Flip Franchise)¶
URL: franchise.newagainhouses.com | Focus: Fix & Flip Franchise System
| Feature | Details |
|---|---|
| Model | Real estate investing franchise |
| Pricing | Packages from $97/mo (Flipster component) |
| Technology | MasterSuite (proprietary analysis), Flip Simulator (training) |
| Funding | Alta Capital Management (exclusive lender) |
| Recognition | FBR #16 franchise, #2 in real estate |
Key Insight: Shows demand for structured systems in fix-and-flip
12 Must-Use House Flipping Apps (Industry Standard)¶
| App | Category | Price | Key Feature |
|---|---|---|---|
| Realeflow | CRM/Lead Gen | Subscription | White-label, AI lead scoring |
| Repair Estimator Plus | Rehab Costs | FortuneBuilders | Spreadsheet-based cost estimation |
| Matterport | 3D Tours | Subscription | Virtual property walkthroughs |
| Houzz | Design/Contractors | Free/Pro | Design ideas + contractor directory |
| Redfin | Listings | Free | Property search, comps |
| SpyFu | SEO Marketing | Subscription | Keyword competitive analysis |
| Homesnap | Property Search | Free | On-market listings, Waze integration |
| Property Fixer | Deal Analyzer | Free/Premium | Quick ROI calculations |
| Property Evaluator | Multi-Property | Free/Premium | Compare multiple rehabs |
| Flipster | Lead Sourcing | From $97/mo | Off-market lead identification |
| RealtyTrac | Foreclosures | Subscription | Pre-foreclosure, auction data |
| Angi | Contractors | Free | Verified contractor reviews |
Competitive Positioning Matrix¶
Our Sweet Spot: Full platform + AI intelligence (trained on methodology)
Key Differentiators Summary¶
| Feature | Others | Cameron's Platform |
|---|---|---|
| Deal Scoring | Manual or basic | AI Green/Yellow/Red with WHY |
| Methodology | Generic | Cameron's 30+ hr course embedded |
| Training Integration | Separate | Every warning links to video |
| Personal Finances | Not tracked | PFOS, DTI, Net Worth, Credit |
| Portfolio Analytics | Basic or none | Full rental P&L, ROI tracking |
| Buy Box | User creates manually | Guided builder from course |
| Pricing | $79-499/mo | $99/mo Solo tier |
File Storage Summary¶
| Data | Location |
|---|---|
| FlipperForce Full Docs | /entities/competitors/flipperforce/FLIPPERFORCE_SYSTEM_DOCUMENTATION.md |
| FlipperForce KB Batch 1 | /entities/competitors/flipperforce/kb_tools_batch1.json |
| FlipperForce KB Batch 2 | /entities/competitors/flipperforce/kb_tools_batch2.json |
| FlipperForce KB Batch 3 | /entities/competitors/flipperforce/kb_tools_batch3.json |
| This Master Doc | /entities/projects/cameron_burke_re_saas_platform.md |
| Full Spec | /docs/projects/cameron-burke-re-saas-spec.md |
System architecture designed December 2025