About Dealsplit

Revenue recognition for real estate teams, simplified.

Changelog

0.2.0 - 2026-02-03

Added
  • Google Sheets: Added "Gross to Office" column for principal agent's gross commission
  • Google Sheets: Added Agent 3 Name and Agent 3 Split columns (now supports 3 non-principal agents)
  • Google Sheets: Agent overflow warning when deal has more agents than available sheet slots
  • QBO: Auto-create vendors when posting journal entries - agents without a QBO vendor ID get matched to existing vendors via fuzzy name matching, or created as new vendors
  • QBO: Qbo.VendorSync module with ensure_vendors_for_deal/2 for bulk vendor sync and sync_agent/2 for single-agent sync
  • QBO: Vendor sync summary included in posting audit logs (matched/created/skipped/errors counts)
  • Initialized tk ticket system for project task tracking
Changed
  • Google Sheets: Agent splits now show GROSS commission (base commission component) instead of NET (fee_amount) to match journal entries
  • Google Sheets: Agents now sorted by gross commission amount (highest first) instead of insertion order
  • Google Sheets: Principal agent separated from non-principal agents - principal goes to "Gross to Office", others fill Agent 1/2/3 slots in order of commission
  • QBO Poster: Now runs vendor sync before posting journal entries - preloads deal_parties with agents
  • Row formatter now preloads agent association to detect principal status via agent.role == :principal
Fixed
  • Google Sheets: Agent split amounts now match journal entry "Commissions Paid Out" values (gross, not net)
  • Google Sheets: Consistent ordering between UI display and sheet output
  • Deal Wizard: Running tally no longer overlaps the Progress sidebar
  • Deal Wizard: Journal Entry Preview now shows full account names on hover (tooltip)
  • Dark Mode: Fixed overly bright chips and badges throughout the app (status badges, fee component tags, dimension tags, role badges)
Tech Debt / Refactor
  • Extracted partition_agents/1 helper to cleanly separate principal from non-principal agents
  • Extracted get_gross_commission/1 helper to calculate base commission from fee components
  • Added Qbo.Client.query_vendors/1 and create_vendor/2 for vendor API operations
  • New Qbo.VendorSync module encapsulates fuzzy name matching (via NameMatcher) and vendor lifecycle
Upgrade and Migration
  • Users must add "Gross to Office" column to their Google Sheets and refresh mappings
  • Users may add "Agent 3 Name" and "Agent 3 Split" columns for 3-agent deals

0.1.0 - 2026-01-11

Added
  • Deal Wizard Redesign: Real-time accounting workbench with running tally showing Gross Commission, Agent Splits, Expenses, and Net to Office as you edit
  • Edit Tracking System: Visual badges (AI/Edited/User) show what came from extraction vs. user corrections
  • Collapsible Review Sections: Extraction Summary, Agent Matching, Deal Knowledge, Revenue Configuration, and Dimensional Tags organized by correction category
  • Golden Path Integration Tests: End-to-end test framework comparing AI extraction + corrections against expected journal entries for real deals
  • New account types: broker_review_fee, charitable_contributions, stock_purchase (equity account)
  • Brokerage name field on deals for NAME dimension in journal entries
  • About page: Accessible via header link, displays changelog with semantic styling
Changed
  • Wizard flow reduced from 5 to 4 steps: Upload and Extract merged into single step with auto-extraction
  • Journal entries now use deal-side-specific accounts: Listing deals → listing_income/agent_listing_splits, Buyer deals → buyer_income/agent_buyer_splits, etc.
  • Always per-agent entries: Each agent gets separate expense line (no more aggregation mode)
  • Consistent entry ordering: Revenue (credits) → Agent splits → Fee components → Referral fees → Undeposited Funds
Fixed
  • Principal handling: Principal commissions correctly stay with office, not recorded as expenses
Removed
  • Zero-balance placeholder entries removed from journal output
  • Simple/aggregated agent expense mode removed
  • Separate Extract step removed from wizard flow
Tech Debt / Refactor
  • FeeComponentEditor extracted as reusable LiveComponent
  • Edit state computation decoupled into EditTracker module
  • Running tally computed from deal state, not stored
Upgrade and Migration
  • Migration adds brokerage_name column to deals table

Built with care for real estate professionals who deserve better tools for managing their business.