Every release.
Fully documented.
MLS Genie™ ships updates weekly. This is the public record of every feature, fix, and improvement — version by version. Built from real agent feedback.
Release history
- Improved: spacing below the existing-reply block on review cards (1rem bottom margin).
- Fixed: the review-cache background fill could fail silently and never retry — it now re-queues itself every 5 minutes until the first sync lands, records every sync outcome, and self-installs its table even when the cron fires first.
- New: "Sync all reviews now" button beside the catch-up controls — fills the cache on demand with live progress ("Syncing… 25s"), reports the count synced, and reloads into the instant cached inbox.
- Fixed: the "needs a response" counter is now office-scoped — selecting one office shows that office's exact unresponded count from the cache instead of a vendor estimate (the source of the 204/201/0 inconsistency).
- Improved: "Run catch-up now" clears any stale done state, finds and responds to one review on the spot, and restarts the recurring clock so the next automatic pass is a full 6 hours from your click.
- Changed: catch-up cadence set to every 6 hours (one response per pass), per Daniel.
- Fixed: the "Run catch-up now" button did nothing — its click handler was attached to the inbox list container while the button lives in the Settings panel. Now bound at the module root; the button runs the sweep and updates the status line.
- New: "Run catch-up now" button under the Backlog status line (admins) — runs one sweep on the spot and refreshes the status, so you can watch it work instead of waiting for the schedule.
- Improved: Backlog catch-up now runs every 4 hours (up to 6 responses/day) until caught up — existing 6-hour schedules migrate automatically on this update.
- Improved: all Feature Module descriptions trimmed to one concise sentence each — the license screen is staff-facing and staff know the products. Applies on the license screen after the site's next check-in.
- Changed: Genie Mail Relay moves from the Starter tier group to Agent — it becomes available at the Agent tier.
- Cleanup: removed the duplicate "Yelp business page" field from Reputation Settings — the office's Review Sites page is the single home for review profile URLs.
- Improved: the Reputation inbox description now reflects exactly how the module works — Google and Facebook sync and respond natively; other connected sites arrive as captured cards with AI-drafted replies and one-click copy-and-open.
- Improved: the "Your response" block on review cards — removed a duplicate stylesheet rule that was overriding itself, dropped the teal left border, and rounded all four corners (8px) for a cleaner card look.
- Changed: review-card site badges show friendly names — "Google" instead of "maps.google" — matching the site filter.
- Changed: Reputation Settings styling aligned to the MLS Genie design tokens, and the settings form now uses the full available width.
- New: the Average rating card carries the same status accent (4.3+ green, 3.8-4.29 amber, under 3.8 red). Total reviews stays neutral.
- Changed: stat cards reordered to Average rating, Total reviews, Response rate, Avg time to respond.
- New: Response rate and Avg time to respond carry a status accent — soft green/amber/red left border and tint (response rate: 75%+/40-74/<40; time to respond: ≤24h/24-72h/>72h).
- Fix: the deep-scan indicator shows a single spinner with the "Scanned X of Y" text centered beneath it — the duplicate spinner is gone.
- Fix: "Avg time to respond" is back on every view, now computed over the last 30 days (hinted on the tile). It works on All offices and refines automatically as more reviews load.
- Fix: infinite scroll now flows continuously — batches keep loading while you're at the bottom instead of stalling after one page, and normal browsing is no longer slowed by deep-scan pacing (pacing applies only to filtered history scans).
- New: a spinner shows beneath the list whenever more reviews are loading, so it's always clear there's more coming.
- Fix: infinite scroll now works on the "All offices" view — the inbox streams every office's full history simultaneously, merged in date order, with no depth limit. Filters and deep-scan progress work the same as single-office view.
- Changed: the Average rating stat now shows two decimal places (4.94 instead of 4.9).
- Improved: the stat cards render immediately on page load with a shimmer placeholder while the numbers load — no layout shift. Shimmer respects reduced-motion preferences.
- Changed: "Avg time to respond" (not offered by the platform) is computed from recent reviews and labeled with its timeframe, e.g. "last 100 reviews."
- Changed: the Reputation "Checking your reputation setup…" indicator now appears centered below the Inbox/Settings tabs, where the reviews load — the page header and tabs render immediately with no layout shift.
- Changed: review-card dates now show a calendar icon and slightly bolder styling, per design.
- New: stat strip atop the Reputation inbox — response rate, average rating, recent review count, and average time to respond.
- Changed: Reputation reply buttons reordered to Ask Genie → Post response → Cancel on all screen sizes.
- Fix: Ask Genie's preset question chips return after ending a chat — previously, closing a conversation removed them until the page was reloaded.
- New: Ask Genie is now screen-aware — every question carries what you're currently viewing (page, sections, visible stats), so you can ask about "this page" or a number on screen and get an informed answer.
- Fix: Ask Genie's feature status now reads live from the module registry — no more stale "Not loaded" claims for active features like Client Alerts, and every current module is listed.
- New: the site now responds to the license server's Sync Now request by reporting its AI usage immediately (securely signed), powering on-demand usage numbers for MLS Genie staff.
- Changed: GenieCMA Property Features chips are now in alphabetical order for easier scanning. Property Type order is unchanged.
- Improved: "Analyze comps with AI" now streams — comps are analyzed in small batches and each card's analysis appears as soon as it's ready, with live "Analyzed X of Y" progress, instead of waiting for the whole set to finish.
- Fix: GenieCMA comp-card badges now show normalized labels — "Single Family Residence" instead of "SingleFamilyResidence", "Trees Woods View" instead of "TreesWoods View", and so on across property types and views.
- Changed: CRM page-title icons now display in the MLS Genie brand teal.
- Improved: editing a posted review response now uses the review platform's true edit — the original response is updated in place instead of re-posted.
- New: Delete response — remove a posted response from the review site (with confirmation).
- Improved: much faster Reputation browsing — reviews, stats, and review-site settings are served from a shared short-lived cache, refreshed instantly whenever you post, edit, or remove a response.
- Fix: the Review Sites panel now only shows sites the review service can actually accept URLs for — sites like Realtor.com that it monitors but can't yet be configured no longer appear (and no longer error).
- New: review-site filter in the Reputation toolbar — filter the inbox to Google, Facebook, Yelp, Zillow, or any other site sending you reviews. The list builds itself from the sites that actually have reviews.
- Fix: saving Review Sites works — site names are translated to the review service's expected form, and only the URLs you actually changed are submitted.
- Changed: Reputation intro copy now describes exactly how responding works per site.
- Changed: the "Choose Facebook Page" / "Choose Google Listing" buttons only appear mid-connection — after the network is connected and before its page/listing is picked. Once picked (or before connecting), they're hidden.
- Fix: the REPUTATION MANAGER title and the "Reviews active" status are now perfectly vertically centered on their shared line.
- New on-page listing content — a compliant, factual market paragraph (median price, days on market, months of supply) for the listing's city, plus dynamic links to the community page and housing-market report.
- Adds unique, indexable content to every listing page without touching the MLS remarks.
- Drop-in shortcodes with theme-native markup and class hooks, documented in the Listing Tools tab.
- Listings now render a complete social preview card (OpenGraph + Twitter image) when shared on Facebook or X.
- A new Default Social Sharing Image covers pages without their own photo, like city and area pages — listings still use their own photo first.
- Duplicate social tags emitted by the theme are removed, leaving one clean set per page.
- Intelligent Meta — SEO titles and descriptions adapt to each listing: optional bracketed sections appear only when the data exists, and zero values (0 beds/baths/sqft) are hidden.
- Listing price renders as formatted currency, and Terms Manager renames (e.g. House) flow through to titles and descriptions while schema stays standards-valid.
- One template now reads correctly across houses, land, boat slips, and everything else.
- Listing structured data now carries the full photo gallery (up to 12 images) instead of a single image.
- Corrected price specification, Google-valid availability status, and a brand added — richer, standards-valid listing markup.
- Active listing updates (price, status, days on market, photos) now appear within about 15 minutes of reaching the MLS feed instead of potentially taking hours.
- The nightly full sync remains as a safety net, and property-history timelines refresh on the next view rather than waiting out the cache.
- Your brokerage now publishes a connected business graph — organization data with the cities you serve, per-office map links, geo coordinates, and hours of operation.
- Your team members appear as agent structured data on the homepage, and when one of your agents is the listing agent on a property they are credited in that listing's structured data.
- A Featured Service Areas control publishes your cities automatically or by selection; third-party listings are unaffected.
- Unified lead attribution across every intake path — Form Bridge, native Genie forms, and AI Chat now resolve through one canonical engine.
- Source shows the real channel (Google, Social, Direct…) while Lead Action carries the form type (Valuation Request, Buyer Inquiry).
- AI Chat leads attribute through the same path and read "AI Assistant" as the lead action.
- New Communication Manager sends branded lead and inquiry confirmation emails automatically on every intake path.
- Settings → Notifications tab inside GenieCRM™ — control the confirmation copy and per-event notifications without leaving the CRM.
- Default confirmation copy is a single source of truth, shown as the live placeholder so you see exactly what sends.
- Listings that arrive without photos now show a clean map image instead of a blank placeholder.
- Applies everywhere — the property hero, listing cards, theme widgets, and GenieCMA™ comp cards.
- Handled entirely in the import layer, with no theme edits required.
- Mobile pull-to-refresh — pull down at the top of any CRM page to refresh, with a spinning refresh indicator.
- Closed and sold transactions can now surface as a dated event on the property history timeline.
- Performance hardening — faster public property pages and search via postmeta indexing, batched backfills, and removal of slow per-request queries.
- Resolves the elevated-CPU regression some sites experienced, and a GeoGenie™ quarantine check that was slowing property search.
- Global CINC on/off toggle — pause CINC lead forwarding site-wide with one switch, without losing the configured forwarding address.
- Houzez 4.3 form-hook compatibility so lead capture keeps flowing into GenieCRM™.
- Team management moved into the CRM — Team Members, Team Chat settings, and the Settings navigation are now all inside GenieCRM™, no wp-admin trips.
- Manage Teams stays gated to the Brokerage tier.
- Market Data Library — a precomputed store so market-data KPI shortcodes render inline and instantly.
- Smooth dim-then-brighten seeding for every market-data shortcode.
- Address-correction engine — parcel-verified displayed addresses, corrected and title-cased from authoritative parcel data.
- Drives the correct city taxonomy and listing slug, applied theme-agnostically through the Scout writer, with a per-AOR toggle.
- GenieScout Engine Live Search draw tools rebuilt — polygon and circle draw-to-search on the map.
- Draggable shapes, a reliable finish anchor, and re-search by dragging a completed shape.
- Persistent, sortable Lead Score engine with a learning scaffold and priority-framed labels.
- Ask Genie upgraded — web research, a broader help mandate, and real usage metering.
- Property Lookup by APN as well as address, and Search MLS auto-routing by county.
- Search Intent on lead profile — paid keyword (utm_term), organic referrer query (DuckDuckGo, Bing, Yahoo, Brave, Ecosia + 7 more), or inferred from landing-page slug.
- Assigned-agent pill becomes an inline dropdown — reassign a lead in one tap without leaving the profile.
- Auto-log every reassignment to Notes & Activity with the previous and new agent names.
- Server-side first-touch capture — reads HTTP referrer, Sec-Fetch-Site, and User-Agent directly from the request. Invisible to ad blockers, Brave/Safari/Firefox privacy modes, and visitors with JavaScript disabled.
- Honest source labels for "Direct" traffic — "Facebook App", "Instagram App", "TikTok App", "Gmail App", "Direct (typed or bookmark)", "Cross-site (referrer hidden)" — no more vague fallback.
- Hover tooltip on every Source value explaining exactly how the label was derived and how much to trust it.
- Hero row refinements on Lead Detail — assigned agent surfaced as a pill alongside the type badge, no scrolling required.
- Pipeline stage pill now coloured to match the stage (New = slate, Contacted = blue, Nurturing = amber, Hot = red, Under Contract = violet, Closed = green).
- Tighter visual rhythm — consistent padding across stage, type, and agent pills.
- Inline pipeline-stage dropdown on the Lead Detail page — change a stage in one tap without navigating to the board.
- Auto-logged stage transitions in Notes & Activity — *"Stage changed: New Lead → Contacted"* with timestamp + agent name on every move.
- Same code path as drag-drop on the Pipeline board — identical permissions, history-table writes, and notification hooks.
- Tracked Pages — pick non-property pages (Free Home Valuation, Schedule Tour, Contact, etc.) to surface on lead profiles.
- Two tiers: Conversion (gold-star highlight + optional real-time email alerts to the assigned agent) and Engagement (subtle eye icon, contextual logging only).
- Works for visitors who block Google Analytics — first-party tracker runs on your own domain, not subject to ad-blocker lists.
- Conversion hits add a new "Conversions" stat to the Site Activity card and appear in the chronological Visitor Journey timeline.
- Privacy-Conscious Visitor indicator — surfaced when a visitor's browser blocked Google Analytics (≈30–40% of real traffic today).
- Framed as a known, normal scenario rather than a data gap — hover tooltip educates the agent that contact details were still captured normally.
- Honest framing of attribution depth, not a "data missing" warning.
- Verified phone numbers now show a green checkmark next to the number on the Lead Detail page.
- Visual confirmation that the carrier check cleared the number — no more hovering to read the tooltip.
- VoIP and unverified numbers keep their existing amber and red indicators.
- Form name now displays correctly on Forminator-sourced leads instead of the generic "Contact Form" placeholder.
- Switched to the documented Forminator_API for form lookup with a CPT-title fallback for resilience.
- GenieScout MLS Rules registry — self-healing install + backfill so the registry populates automatically on first load.
- Detection of multiple feeds (CRMLS + BBAOR + future additions) now correctly tags each listing's originating MLS.
- Improved MLS detection for multi-feed brokerages so each listing is correctly tagged with its originating MLS.
- First-touch attribution beacon now fires for every visitor on first landing, not just visitors arriving with UTM parameters.
- Captures the referrer header server-side so anyone who later submits a form has full attribution context, even days later.
- GA4 async enrichment pipeline — automatically queries Google Analytics for source, medium, campaign, device, and session count on every new lead.
- Retry schedule handles GA4's 24–48 hour processing delay; verified leads earn a green "Verified via GA" pill in their profile.
- GA4 Client ID captured at form-submit time from the `_ga` cookie — stored alongside every lead for cross-referencing GA sessions and audience export.
- Lead Action field — captures the form name (Forminator title, Houzez "Property Inquiry" / "Contact Agent" / "Schedule Tour", CF7 / WPForms / Elementor form name) on every submission.
- Campaign field — pulls first-touch utm_campaign for every lead and resolves it through your campaign mappings.
- Guaranteed-non-empty Source contract — every lead now lands with a human-readable source, no exceptions.
- Five-tier resolution: explicit upstream value → derived from UTM / cookie / referrer → form-name fallback → default-source floor → audit token stamped on the row.
- Sitewide visitor cookie and UTM capture — visitor identity persists across the entire site, not just property pages.
- A visitor who arrives via a Google Ads UTM, browses /about/, leaves, and returns days later still has full attribution when they submit a form on any page.
- Dual-column timestamps (local + GMT) across the activity table — eliminates a whole class of DST and timezone bugs.
- Role-based access system — `mlsg_agent`, `mlsg_manager`, `mlsg_team_admin`, `mlsg_team_lead` roles with the custom `mlsg_manage` capability gating every admin page.
- WordPress administrators automatically inherit `mlsg_manage` — no double-permission setup.
- GenieScout cron architecture hardened — MLSG_Cron_Manager always-loaded, schedules registered at every page load.
- Nightly imports trigger at 1am local time; refresh runs cursor-paginated batches of 50; jobs page run every 30 seconds with a 2-minute stagger to keep the host happy.
- Genie CRM — full standalone shell at /genie-crm/, no WordPress chrome, hardcoded asset injection so no theme dependency.
- Commission Manager, Lead Tags, CINC integration, and the Form Bridge module all ship inside the shell.
- GeoGenie™: Extracted all quarantine logic into new shared MLSG_GeoGenie class — single source of truth across all entry points.
- GeoGenie™: Phase 2 area string now built from listing's own MLSAreaMajor → City → PostalCode — works for every property regardless of import origin.
- GeoGenie™ batch: Added geocoded area centroid as third check; area_major and state now collected per listing.
- GeoGenie™ single: run_geogenie_single() now delegates to MLSG_GeoGenie::evaluate_single().
- GeoGenie™: Reimport from MLS now re-evaluates single-listing geo-validation.
- Phase 1: median centroid of sibling listings from same import job (50km threshold).
- Phase 2: Google-geocoded job area centroid (25km threshold, cached 30 days).
- Self-healing: listings that pass after coordinate correction are automatically un-quarantined.
- ListingGenie™ v1.0 — 6-step pre-listing package wizard.
- CMA packet with Include/Exclude toggles on comp cards.
- Pricing fields with Conservative/Recommended/Optimistic auto-compute (25th/50th/75th percentile $/sqft).
- Net Proceeds table and Comparable Sales Analysis on share page.
- DB schema v1.1: subject_address, subject_data_json, agent_notes, pricing_json columns added.
- Fixed Python string splice boundary error in content parser (content[end+4:] → content[end:]).
- Node.js PHP syntax scanner now runs on every modified file before zip assembly.
- Property data lookup caching improved to 24h transient.
- GenieLayers™ boundary packs (.mlsgpack format) — domain-locked HMAC-SHA256 license keys.
- Settings UI upload/remove for boundary packs.
- Big Bear AOR pack v1.0.2 — Moonridge, Sugarloaf, Big Bear City.
- BoundaryLabel now uses google.maps.OverlayView (no close buttons or tails).
- Google OAuth migration to the MLS Genie™ project.
- Root cause fix: nonce mismatch on Analytics connection.
- Houzez CRM reactivation confirmed non-conflicting with GenieCRM.
- Genie Social: migrated to new social publishing backend.
- All user-facing surfaces continue to display "Genie Social" — vendor never exposed.
- Fixed CSS/JS loading in genie-crm-shell.php (direct link/script tags, no wp_head dependency).
- Version 1.0 released and the platform built out fast — GenieCRM, automated MLS import, area pages, and the schema engine — across rapid daily iteration from v1.0.0 through the v1.6 series.
- Early development and architecture groundwork.
- MLS Genie project created — the first working build.