Real Estate¶
Last Updated: February 2026
The Real Estate module is a Scott Recycling custom application for managing property investments — from deal sourcing through renovation, leasing, and sale. It tracks the full lifecycle of each property with standalone financial reporting (separate from Odoo's accounting module).
What Real Estate Does¶
- Deal Pipeline — Track property opportunities from lead to closing
- Property Management — Manage owned properties through their lifecycle
- Renovation Tracking — Budget and manage renovation projects with task-level detail
- Lease Management — Track tenants, lease terms, rent payments, and renewals
- Financial Reporting — Income, expenses, and ROI at the property level
- Contractor Directory — Manage contractors with ratings and work history
Navigation¶
Real Estate
├── Properties (all properties — kanban/list/calendar)
├── Deals (deal pipeline — kanban/list)
├── Renovations (renovation projects — kanban/list)
├── Leases (active leases — list/calendar)
├── Payments (rent payments — list)
├── Financial Reports
│ ├── Expenses (expense records)
│ ├── Income (income records)
│ ├── Expense Analysis (pivot table)
│ └── Income Analysis (pivot table)
└── Configuration (managers only)
├── Contractors (contractor directory)
├── Deal Sources (how deals are found)
└── Expense Categories (expense types)
Deal Pipeline¶
Deals track property opportunities before they become owned properties.
Deal Stages¶
| Stage | Meaning |
|---|---|
| Lead | New opportunity — not yet analyzed |
| Analyzing | Running the numbers (ARV, repair estimates, etc.) |
| Offer Made | Offer submitted to seller |
| Under Contract | Offer accepted, contract signed |
| Closed | Deal completed — automatically creates a Property record |
| Dead | Deal fell through (can be marked from any stage) |
Creating a Deal¶
- Go to Real Estate > Deals
- Click New
- Fill in the address and property basics
- Add deal analysis numbers:
| Field | Description |
|---|---|
| Asking Price | Seller's listed price |
| ARV | After Repair Value — estimated value after renovation |
| Repair Estimate | Estimated cost to renovate |
| Offer Price | Your offer amount |
| Max Allowable Offer | Auto-calculated: ARV x 70% - Repair Estimate (the 70% rule) |
| Expected Profit | Auto-calculated: ARV - Offer Price - Repair Estimate |
- Set the Deal Score (Hot, Warm, or Cold)
- Assign a user and set a follow-up date
Closing a Deal¶
When a deal closes:
- Click Close Deal
- Odoo automatically creates a Property record with all the deal data (address, purchase price, ARV, etc.)
- The property starts in Owned state
Follow-Up Automation¶
A daily cron job checks deals in Lead or Analyzing stage with past follow-up dates and creates activity reminders.
Properties¶
Properties represent owned real estate with full lifecycle tracking.
Property States¶
| State | Meaning | Transition Requirements |
|---|---|---|
| Prospect | Potential acquisition | — |
| Offer | Offer submitted | — |
| Under Contract | Offer accepted | — |
| Owned | Property acquired | Purchase price required |
| Renovating | Active renovation work | — |
| Listed for Sale | On the market | List price required |
| Sold | Sale completed | Sale price required |
| Rented | Leased to tenant | Must have an active lease |
Property Fields¶
| Section | Fields |
|---|---|
| Address | Street, City, State, ZIP (US only) |
| Classification | Type (Residential/Commercial), Subtype (SFH, Duplex, Condo, etc.), Strategy (Flip/Hold) |
| Details | Bedrooms, Bathrooms, Sq Ft, Lot Sq Ft, Year Built, Parking, Units |
| Purchase | Purchase Price, Closing Costs, Total Acquisition Cost (computed), Purchase Date |
| Sale | List Price, Sale Price, Sale Closing Costs, Sale Date |
| Valuation | ARV (After Repair Value), Current Market Value |
Financial Summary¶
Each property tracks totals automatically:
| Field | Calculation |
|---|---|
| Total Acquisition Cost | Purchase Price + Closing Costs |
| Total Renovation Cost | Sum of completed renovation task costs |
| Total Expenses | Sum of all expense records |
| Total Income | Sum of all income records |
| Net Profit | Income - (Acquisition + Renovation + Expenses) + Sale Proceeds |
| ROI % | (Net Profit / Total Invested) x 100 |
Smart buttons on the property form link to renovations, leases, expenses, and income.
Renovations¶
Renovations are project-like containers for tracking repair and improvement work on a property.
Renovation Workflow¶
Creating a Renovation¶
- Open a property and click Create Renovation (or go to Real Estate > Renovations)
- Enter the renovation Name and set the Budget
- Add Tasks (individual work items):
| Task Field | Description |
|---|---|
| Name | What needs to be done |
| Category | Type of work (Electrical, Plumbing, Roofing, Painting, etc.) |
| Contractor | Assigned contractor |
| Estimated Materials | Expected material costs |
| Estimated Labor | Expected labor costs |
| Due Date | Target completion |
- Track progress as tasks move: Todo → In Progress → Done
Budget Tracking¶
| Field | What It Shows |
|---|---|
| Budget | Planned total spend |
| Actual Spend | Sum of completed task costs |
| Budget Remaining | Budget - Actual Spend |
| Budget Variance % | How far over/under budget |
| Progress % | Completed tasks / Total tasks |
Leases¶
Leases track tenant agreements for rental properties.
Lease Lifecycle¶
Lease Fields¶
| Field | Description |
|---|---|
| Property | Which property is being leased |
| Tenant | The lessee (an Odoo contact) |
| Lease Start / End | Term dates |
| Monthly Rent | Rent amount |
| Security Deposit | Deposit held |
| Rent Due Day | Day of month rent is due (1-28) |
| Late Fee | Fee charged when rent is late |
| Late After Days | Grace period before late fee applies (default: 5) |
Lease Renewal¶
- Open an active or expiring lease
- Click Renew
- A new lease is created with:
- Same property, tenant, and rent
- Start = old lease end + 1 day
- End = start + 1 year
- The old lease is marked as Renewed and linked to the new one
Automated Alerts¶
A daily cron job handles:
- Auto-expire: Marks leases as Expired when end date passes
- Expiring warning: Marks active leases as Expiring when within 90 days of end
- Activity reminders: Creates to-do activities at 90, 60, and 30 days before expiration
Rent Payments¶
Payments track individual rent collections for each lease.
Payment States¶
| State | Color | Meaning |
|---|---|---|
| Pending | — | Not yet due or awaiting payment |
| Received | Green | Full payment collected |
| Late | Red | Past due (auto-set by daily cron) |
| Partial | — | Partial payment received |
| Waived | Gray | Payment forgiven |
Payment Fields¶
| Field | Description |
|---|---|
| Lease | Which lease this payment belongs to |
| Amount | Payment amount |
| Due Date | When rent is due |
| Payment Date | When payment was received |
| Payment Method | Check, Cash, Transfer, Zelle, Venmo, CashApp, Money Order |
| Reference | Check number, transaction ID, etc. |
| Late Fee Applied | Late fee amount if applicable |
Overdue Automation¶
A daily cron job marks pending payments past their due date as Late and posts a notification on the lease.
Expenses & Income¶
Expenses¶
Track all property-related expenses:
| Field | Description |
|---|---|
| Property | Which property |
| Category | Mortgage, Insurance, Property Tax, Utilities, HOA, Maintenance, etc. |
| Amount | Expense amount |
| Date | When incurred |
| Vendor | Who was paid |
| Renovation Task | Optional link to a renovation task |
| Receipt | Upload receipt file |
Income¶
Track all property-related income:
| Field | Description |
|---|---|
| Property | Which property |
| Type | Rent, Sale Proceeds, Late Fee, Deposit Forfeiture, Other |
| Amount | Income amount |
| Date | When received |
| Lease / Payment | Optional link to lease and payment records |
Analysis¶
Use the Expense Analysis and Income Analysis pivot tables to:
- View totals by property and month
- Compare expenses across properties
- Track income trends over time
Contractors¶
Maintain a directory of contractors with:
| Field | Description |
|---|---|
| Name / Company | Contact details |
| Phone / Email | Communication info |
| Specialty | General, Electrical, Plumbing, HVAC, Roofing, Flooring, Painting, etc. |
| License Number | Contractor license |
| Insurance Expiry | When their insurance expires |
| Rating | 1-5 stars (Poor to Excellent) |
| Tasks / Total Paid | Computed from assigned renovation tasks |
Tips¶
Use the 70% Rule
The Max Allowable Offer on deals auto-calculates using the 70% rule: ARV x 0.70 - Repair Estimate. This is a quick sanity check on whether a deal makes financial sense.
Link Expenses to Renovation Tasks
When recording expenses for renovation work, link them to the specific renovation task. This gives you accurate cost tracking at both the task and property level.
Set Follow-Up Dates on Deals
Every deal in Lead or Analyzing stage should have a follow-up date. The daily cron job creates activity reminders so nothing goes stale.
Track Payment Methods
Always record the payment method and reference (check number, transaction ID) on rent payments. This creates an audit trail for accounting.
Security¶
| Group | Access |
|---|---|
| Real Estate User | View, create, and edit all records. Cannot delete records or access configuration. |
| Real Estate Manager | Full access including delete, plus configuration management (contractors, deal sources, expense categories). |