Skip to main content

What's new

Recent updates and improvements to STRecon.

126 updates shipped since April 2026

v0.7.74.0May 19, 2026

Added

  • The map and the listings table on every report now read as one connected view.Hover any row in the table and the matching pin on the map flashes with a soft white halo — even if that pin is hidden inside a cluster, the cluster itself flashes so you always know where the listing lives in space. Tab through rows with the keyboard and the same flash fires on focus, with a clean stop on blur, so keyboard-only readers get the same spatial cue mouse users do. The flash is a box-shadow halo, not a scale-up, so the pin never moves or "jumps" while you're hovering — it just glows in place.
  • The table now narrows itself to whatever you can see on the map.Pan or zoom into a neighborhood and the table below filters down to the listings inside that visible rectangle. The counter above the table picks up an "... in map view" suffix while you're narrowing, so the changing count never feels mysterious. The default state (map fit to all listings) shows everything — narrowing only kicks in once you actively explore. No toggle to remember, no setting to dig up: the map view is the lens.
  • Pin popups now carry the same numbers the table does.Click any pin and the popup shows two more lines beyond the title and tier: a "0-30D · 31-60D" booking summary and the calculated ADR (formatted in USD, with an em-dash placeholder when ADR data isn't available for that listing). Previously the popup only carried 0-30D bookings, so you'd lose the rest of the picture the moment you switched from table-scanning to map-clicking. Now the pin tells you the same story the row would.

Fixed

  • Pins no longer disappear when you hover a row.The first cut of the hover-link animated the pin's CSS `transform: scale(...)` to make it pulse — but Leaflet uses the same `transform: translate3d(x, y, 0)` property on every marker to position it on the map, and CSS doesn't compose multiple transform values from different sources. The animation was silently overriding Leaflet's positioning transform, snapping each pulsing pin to (0,0) of its map pane (so it looked like the pin had vanished). Switched to animating `box-shadow` (an expanding white halo) instead — box-shadow is positionally inert, so Leaflet's `translate3d` stays untouched and the pin stays put while flashing. Caught in the same release as the feature it broke — no users ever saw the disappearing pin.
v0.7.73.0May 18, 2026

Added

  • You can finally delete reports you don't want.Open any report you own and there's a new "Delete" button in the action row, right next to Share, Monitor, and CSV. Same trash icon shows up on the My Account page's Recent Analyses list and on the dedicated My Reports page, wherever a report appears, you can clean it up from there. Clicking opens a confirmation modal that names the report and warns you it can't be undone, with the destructive button styled in the caution amber so nobody hits it by accident. Clicking outside the modal cancels. The Delete button shows a "Deleting…" state while the request is in flight so you can't double-fire it.
  • Delete reaches every corner of the underlying data.When you delete a report, the cleanup is one atomic database transaction: the report row goes, every scraped listing for that job goes, all the scrape attempts go, and the parent job itself goes. The credit-transaction ledger is preserved, the row that recorded the spend stays in your account history, only its job link is cleared, so your credit accounting is never lost. The deletion also reaches Monitored Markets: if a monitor was watching the market that report came from, the monitor disappears too along with all its scheduled-run history. No orphaned rows showing up anywhere as "queued" with no actual queued job behind them.
  • The "Delete" button works on stuck and failed scrapes too.This was the most common case anyone wanted: a market that never finished scraping, or a run that crashed, sitting at the top of your Recent Analyses with no useful report to view. The backend's job-keyed endpoint handles those even though they have no `reports` row to delete, you get the same trash icon, same modal, same one-click cleanup. No more dead jobs cluttering up your dashboard.
v0.7.72.1May 17, 2026

Fixed

  • The "Monitor this market" dialog now actually covers the map when you open it.On any report page, clicking "Monitor this market" opens a modal you fill in with cadence, schedule, and a few preferences. The backdrop behind that modal was sitting at z-index 200, but the report page's `CoverageMap` puts its tier legend and fullscreen control at z-index 400 inside the map container. Without a stacking context to contain them, those map overlays were punching through the modal backdrop and rendering on top of it — the dialog would open but the map's legend in the bottom-left and the fullscreen button in the top-right would stay visible and clickable, like the modal wasn't really there. Bumped the modal backdrop to z-index 1000 so it sits above every map overlay (the fullscreen-map iframe still wins at 9999, but you can't reach the modal trigger while fullscreen anyway). One-line CSS fix, but the dialog finally feels modal again.
v0.7.72.0May 17, 2026

Fixed

  • Admin-owned monitors now run uncapped, the way one-off discoveries already did.When a monitor fires, it goes through `fireMonitorRun` in `src/lib/monitors.ts`, which used to unconditionally set the job's `listing_cap` to whatever the user's credit balance happened to be and reserve the full balance up front. Admins (anyone whose email matches `FOUNDER_EMAIL`) were getting clipped the same as paid users: a monitored market that discovered 285 listings would only scrape the first 50 if the admin happened to be sitting on a 50-credit balance, with the other 235 silently marked `'skipped'`. The fix mirrors the existing admin bypass on `/api/jobs` — `listing_cap` is set to `ADMIN_LISTING_CAP` (999999), `payment_status` is `'free'` so the worker's reconciliation pass skips refund-charging, the credit-balance-zero short-circuit is gated on `!isAdmin`, and `reserveCredits` is skipped entirely for admin runs. The `ADMIN_LISTING_CAP` constant moved from `src/app/api/jobs/route.ts` into `src/lib/beta.ts` so both call sites import the same value and can't drift.
v0.7.71.0May 16, 2026

Added

  • The Market Trajectory report on `/monitors/:id` is live.Once a monitor has fired two or more times, opening it now shows a single Fraunces-italic verdict word — Improving, Holding, Deteriorating, or Baseline — that tells you in one read whether the market is moving in your favor. Below it: a verdict-drift timeline (STRONG → MODERATE → CAUTION across every fired run, with hollow markers for runs that were skipped or failed), a recognition-moment sentence (“Since you started watching N months ago: listings +X%, verdict held STRONG, median ADR −Y%.”), and four evidence sections — Supply, Quality Mix, Rates, and Listings That Changed — each headed by a one-line verdict on the underlying signal ("Supply is rising," "Rates are compressing," etc.). The Listings-That-Changed section pins every tier-mover on an interactive map with click-through links to the listing on Airbnb. When two adjacent runs differ in scrape coverage by more than 15 percentage points, churn and movers entries are dimmed with a "low confidence" caveat so apparent transitions that are really sampling artifacts don't read as real changes.
  • Each run on the monitor page is now editable inline.Hover any row in Runs & Gaps and a pencil appears next to the report title — click it, type a new name, Enter to save. The rename uses the same per-report title field as `/my-reports`, so the change propagates everywhere that report appears. Each row also shows its run date and a small uppercase "MANUAL" badge when you triggered the run by hand rather than the scheduler.
  • Rename a monitored market from the Monitored Markets ledger.Hover any row on `/monitors` and a pencil appears next to the market name — click it, type a new name, Enter to save. Clicking the input or pencil doesn't open the detail page; only clicking elsewhere on the row navigates.
  • Room type and minimum-guest count now show on the monitor's header.Alongside cadence and schedule info, every monitor's detail page shows the filters it was snapshot with (e.g. "Entire home · 6+ guests") so you can see at a glance what kind of property mix you're tracking.

Changed

  • A user who downgrades from Superhost to Host now sees a single "Upgrade to view" empty state on monitored markets.Previously the page header would render but the editorial body underneath would 403, leaving a half-broken UI. Both endpoints now return the same upgrade response, so the page shows one coherent CTA pointing at /pricing.
v0.7.70.0May 16, 2026

Added

  • New deep-dive blog: "DC Weekenders and the Shenandoah Divide."A study of 1,140 Shenandoah Ridge cabins (verdict: Caution) scraped April 12 to May 10. The piece walks through the 75/55 scatter on the cleaner 820-listing standalone-cabin cohort (Massanutten Resort excluded for HOA-managed-calendar contamination), a two-peak seasonality line (October 2.02× peak, August 1.93× secondary, September dip), a vertical operator-portfolio breakdown showing small operators (2–4 listings) winning at 7.78% pass rate vs the 10+-portfolio property managers at 2.22%, and a horizontal DC drive-time chart showing pass rate decaying from 12.5% inside 55 miles to 0.76% past 95 miles. Plus a tier-distribution table, amenity and null-data callouts, and three operator-decision cards.
  • New market overview at `/market/shenandoah-ridge-va`.Live Caution verdict, listing count, pass-75/55 rate, median forward occupancy, tier breakdown, regulation notes (no significant municipal STR regulation in the corridor), seasonality summary, and FAQ — wired into the same template every other `/market/*` page uses.
v0.7.69.0May 15, 2026

Added

  • Monitors now fire on their own schedule.The schedule you pick when creating a monitor (monthly, quarterly, semi-annually, or annually) is now actually honored. A scheduler inside the worker claims every monitor whose next run is due and fires it on the same transactional path as the manual "Run now" button, so each scheduled run is the same atomic credit-reserve-and-job-insert as if you clicked the button yourself. If the worker is down across multiple scheduled anchors (say, two months of missed monthly runs), the catch-up logic fires exactly once and advances directly to the next future anchor — no stampede of back-to-back catch-up runs draining your credits when service comes back.
  • Pause, Resume, and Archive a monitor from its detail page.Three new buttons next to "Run now" on `/monitors/:id`. Pause stops the schedule without losing history; Resume picks the cadence back up and recomputes the next-run date from today; Archive soft-deletes the monitor and takes you back to the ledger. Run-now is now correctly disabled when a monitor is paused (previously only disabled when archived, which was wrong).
  • Skip emails.When a scheduled run skips because your balance is too low or because the previous run is still in flight, you now get an email explaining what happened with a deep link back to the monitor's detail page. Manual "Run now" skips don't email since you're already at the screen — the result shows up in the UI immediately.
v0.7.68.0May 15, 2026

Added

  • Monitor a market on a recurring schedule.Open any completed report on Superhost or Megahost and the "Monitor this market" button (replacing the old dimmed "Track monthly / Coming soon" placeholder) takes a snapshot of the report's exact polygon and filters, then re-runs the same analysis on a cadence you pick — monthly, quarterly, semi-annually, annually, or manual only. Each scheduled run produces its own report linked from the monitor, so over time you build a series of dated snapshots of the same market under the same filters.
  • Monitored Markets ledger at `/monitors`.A new entry in the account dropdown opens a status-grouped list (active first, then paused, then archived) of every market you're tracking. Each row shows cadence, next run, last run, and links to the monitor's detail page.
  • Monitor detail page at `/monitors/:id`.The detail page lists the run history with each fired run linking back to its Report and skipped runs showing why (no credits, or a prior run still in flight). The first fired run shows a "Baseline captured — trends begin at run 2" message; cross-run trend visuals land in a follow-up release.
  • Run now.A button on each monitor's detail page fires an immediate run, separate from the schedule. Subject to the same credit and concurrent-run guards as scheduled fires.
v0.7.63.1May 10, 2026

Added

  • Renames now show up in the "Recent Analyses" list on your Account page, and you can rename reports directly from there too.The rename feature shipped a few minutes ago let you change a report's title from `/my-reports` or from the report page itself, but the Recent Analyses card on `/account` was still pulling straight from the market name and ignoring renames. Now it reads the same custom title as everywhere else, and each row with a finished report picks up the same hover-pencil affordance: hover the row, click the pencil, type a new name, Enter to save. Jobs that are still running or that failed before producing a report show the original market name only, since there's no report to attach a custom title to yet.
v0.7.63.0May 10, 2026

Added

  • You can now rename any of your past reports.Reports have always been labeled by market name (e.g., "Missoula, MT"), which makes it hard to tell apart multiple analyses of the same market — different polygons, different room types, different dates. Each report now has an editable title: hover a row on `/my-reports` and a pencil appears next to the title, or open the report and click the pencil next to the heading in the verdict section. Type a new name (up to 80 characters), press Enter or click away to save. The rename shows up everywhere the report's title appears — your list, the report page itself, the sticky mobile header, and the shared/public view if you've shared the link. Hit the pencil again and you can reset back to the original market name at any time. Available to every signed-in owner, no tier gating.
v0.7.62.0May 3, 2026

Added

  • Reports now show the average nightly rate (ADR) for every market and every listing.The headline stats row gains a fifth cell with the median ADR across the market's qualified listings (Exceptional, Performer, Potential), with the min and max range underneath. It sits right next to Top Performer %, so the median reads as the price the top performers actually charge. Each listing card adds the per-night rate to the configuration line (`2 bed · 1 bath · 4 guests · $245/night`), and the listings table gets a sortable ADR column with the per-listing range and sample count on hover. Sort menu picks up an "ADR (high to low)" option since most investors scan the top of the price stack first. Old reports light up on next page load, no re-scraping needed.
  • The market ADR shows in amber when the underlying data is thin.If fewer than 30% of qualified listings have pricing data, or if the average listing only had a couple of successful price probes out of six, the median renders in the same amber color we use for partial coverage, and the tooltip explains which condition is in play. A market where every listing got one probe no longer reads as full confidence.
  • Individual listings whose price is built on thin probe data are now marked with an asterisk.Each listing's ADR is computed from up to six sampled future stays, but some listings (hidden calendars, high minimum stays) only return one or two successful probes, those are the ones whose nightly rate is the noisiest. We now flag them with a trailing asterisk on both the table cell (`$245*`) and the card config line (`· $245/night*`). The table's ADR column header carries a tooltip explaining what ADR is, how it's computed, and what the asterisk means, so you can scan the column and see at a glance which prices to trust most.
v0.7.61.3May 3, 2026

Fixed

  • Coverage maps now render on every report, even ones whose discovery phase didn't record a search bounding box.Some markets (typically very small or rural ones where the first search returns zero listings before the scraper widens its area) finished discovery without ever writing down the bounding box of where they searched. The report page used that bounding box as the gate for showing the map, so even when 400+ listings were found and had valid coordinates, the map section would silently disappear and you'd see only the verdict, the stats, and the listings table. The fix: when the recorded bounding box is missing, the page now derives one from the actual listing coordinates so the map can render. No re-scraping or re-running needed, every existing report in this state lights up on next page load.
v0.7.61.2Apr 29, 2026

Changed

  • Glossary entries on the 75/55 rule and AirDNA comparison now use the same vocabulary as the How It Works page.The two entries pre-dated How It Works, so a reader clicking through from the methodology page into a glossary article was hitting the older vocabulary with no cross-reference back. The 75/55 entry now spells out that 75/55 is one of two tests (calendar plus review cadence), explains how the pass/fail outcome maps to the six-tier system, fixes a stale line that mis-described the Caution threshold, and adds a section showing where 75/55 fits inside the broader Market Signal logic. The AirDNA comparison entry now describes STRecon's output as a tier distribution and Market Signal rather than a single occupancy number, and the section on host blocks now shows how STRecon handles them (review cadence routes high-calendar but low-review-activity listings into the Watch tier so they don't inflate the headline number) instead of just naming the problem. Documentation only.
v0.7.61.1Apr 29, 2026

Changed

  • The Booked Days column tooltip, the Calendar Booked Rate glossary entry, and the How It Works page now explain why our occupancy counts are sharper than what you'd get counting strikethrough days on the Airbnb calendar yourself.Airbnb strikes through any night a guest can't book, and that can include empty nights stranded between stays when a minimum-stay rule prevents a valid booking from filling the gap (think a single Tuesday between two week-long stays on a seven-night-minimum vacation rental). The underlying availability data tells us which nights are actually occupied versus which are just unbookable, and we use the former. For the great majority of listings, our booked count is the true occupancy count, not the strikethrough count. The gap is widest on high-minimum-stay listings with fragmented calendars, which is exactly where eyeball estimates from competitors are most misleading. Behavior is unchanged from last release; this update just surfaces the methodology in product copy.
v0.7.61.0Apr 28, 2026

Fixed

  • The "days booked" numbers in your reports now match what you'd actually count on the Airbnb calendar.Counts on Performer and Exceptional listings were sometimes running 2 to 3 days too high per window. The cause: when Airbnb's calendar marks a day "unavailable," that can mean a guest is staying there, or it can mean the property is empty but the day is the morning after a checkout (no new booking can start because of minimum-stay rules or the host's prep-time setting). We were counting both as booked. We now only count a day as booked when the property is actually occupied that night. On a recent Houston report, six top-tier listings dropped to potential once the inflated counts were removed. No false drops, the fix only takes away days that were never really booked.
v0.7.60.0Apr 27, 2026

Fixed

  • Active rentals no longer get mis-labeled as "Avoid" when our scraper has a bad day.When Airbnb served us a stripped page (a known anti-bot pattern) or a calendar request timed out, we'd come back with calendar numbers that looked like a dead listing, even though the listing was perfectly active. Owners would open their own report and see their property in the Avoid tier, and the qualified-listing count for the whole market would be off because of these phantom Avoids. We now detect when the calendar reading contradicts a recent successful read of the same listing (review activity stayed steady but the calendar suddenly went cold), retry on the spot with a fresh session, and if the retry still can't get a clean read the listing is marked Unreliable and excluded from the market verdict instead of dragging it down.
  • About 165 listings already affected by this bug have been reclassified across existing reportsas part of the same release. The market verdicts for the impacted reports were recomputed, so when you reopen one, the qualified ratio and verdict reflect the corrected numbers. Nothing to do on your end.
v0.7.59.4Apr 27, 2026

Fixed

  • Map markers and clusters now show up reliably the first time you open a report.Sometimes when you'd load a report, the basemap and the boundary outline would render but the listing dots and clusters would be missing, and the only way to see them was to refresh the page. The marker layer now survives every page load, no refresh needed.
v0.7.59.3Apr 26, 2026

Changed

  • Admins can now download the CSV from any report, not just their own.Previously the CSV download required Superhost-tier and report ownership. Anyone whose email is in the admin allowlist now bypasses both gates, matching the existing admin pattern across the rest of the app. Useful when you're debugging or supporting a customer and need the underlying listing data without going through an account-tier or ownership detour.
v0.7.59.2Apr 26, 2026

Changed

  • CSV download now exports every column you see in the report, not just 18 of them.Spreadsheet workflows used to be missing signals that were visible in the UI: the review-trend sparkline, the demand trend, and the ADR price triplet (`adr_usd` / `adr_min_usd` / `adr_max_usd`) were all dropped from the export. The CSV now covers all 35 columns spanning identity, property, host, occupancy thresholds, reviews, rates, tier, location, and scrape metadata. No more switching between the report and the export to get the full picture.
  • Array fields export as pipe-delimited strings(e.g. `wifi|pool|parking`, `3|5|2|4|6|1`). Pipes survive Excel imports without re-quoting, and the existing escape logic still wraps cells that contain commas, quotes, or newlines.
v0.7.59.1Apr 25, 2026

Changed

  • Top navigation cleaned up, far fewer items in the bar, especially when signed in.Signed-out visitors now see five clean items: About, How it works, Insights, Pricing, Sign in (Insights replaces the old "Blog" label and points to /blog; the standalone "What's New" link was removed). Signed-in users see only the Upgrade button (when relevant) and the account menu. Marketing links stay out of the way during the report-reading flow.
  • Account dropdown reorganized into grouped sections.Top: your tier badge plus credit balance plus a prominent Purchase Credits button. Middle (your stuff): My Account, Credit Transactions, Report History, What's New. Bottom (learning): How It Works, Glossary, STRecon Insights. The "Running Jobs" item that nobody clicked is gone.
  • Mobile menu simplified for signed-in users.The hamburger used to duplicate everything already inside the tier badge dropdown. Signed-in users now tap the tier badge for everything; signed-out users still get the hamburger for marketing links.
v0.7.58.1Apr 25, 2026

Fixed

  • You only pay credits for listings that show up in your report.Two ways this used to overcharge: (1) when you drew a polygon, discovery would find every listing in the bounding box (sometimes 2,000+) but only the ones inside your polygon ended up in the report (often half that). You were charged for the full bounding-box count. (2) When scraping failed on some listings, you paid for those failures even though they never appeared in your report. Now both flavors get auto-refunded the moment your report finishes. The credit history shows a `Reconciliation: N credits (charged X, presented Y)` entry for every refund, so you can see exactly what changed and why. No action needed on your end.
v0.7.59.0Apr 25, 2026

Added

  • You can now tell which analysis each credit was spent on.Credit history rows used to all read the same generic "Job deduction: 18 listings" with no way to tell two analyses apart. Now each row shows the market name and the filters you ran (e.g. `Vienna · Entire home · 6+ guests`) right under the description, and tapping it takes you straight to the report it paid for, or the job status page if the analysis is still running.
  • Recent Analyses now show room type and minimum guests.Two analyses on the same market with different filters used to look identical in the Recent Analyses list. Now the filter chip sits next to the market name so you can spot the difference at a glance.
v0.7.57.0Apr 25, 2026

Fixed

  • The "Total Listings" number in your reports now matches the dots on the map.Before this, you might have seen something like "96 Total Listings" in the headline but only ~87 pins on the map, with no explanation for the gap. Now the headline shows the same count the map shows, with a tooltip on hover that breaks down what's inside your boundary versus what was scraped overall. The same number appears on `/history`, `/my-reports`, and the admin user view, so every place you see a listing count for a report agrees with every other place.
  • The boundary you drew now actually shows up on the map.When you drew a polygon to focus a report, the boundary outline was supposed to render on the CoverageMap so you could see exactly what area was analyzed. It wasn't drawing. Fixed.
v0.7.56.0Apr 25, 2026

Added

  • Your account page now updates job status live.While a job is running, the badge flips from "running" to "complete" within 10 seconds, no manual refresh needed.

Fixed

  • Stale "failed" badge after a retried job.If a job had failed and was retried by the team, the account page kept showing "failed" even after a hard refresh. Fixed.
v0.7.55.2Apr 25, 2026

Changed

  • Home page is way less cluttered.Logo, headline, and search field still right where you'd expect. Filter and guest controls (place type, minimum guests) are now pills under the search field — tap one and the picker opens right there, no full FILTERS section taking up half the screen. Drew an area on the map? You'll see `1 listing = 1 credit` and a "Check listing count to estimate cost ›" link, both right where the pills sit. Footer link is now "Your Reports" (goes to your past reports). Mobile-first redesign: every pixel has to earn its spot.
v0.7.55.1Apr 25, 2026

Changed

  • This changelog now covers v0.7.47.0 through v0.7.54.0.A handful of releases in that range were missing user-facing entries. They're back, including the per-listing ADR launch (v0.7.50.0) and a corrected example in the v0.7.53.0 URL migration entry.
v0.7.55.0Apr 25, 2026

Added

  • Sharing a market or blog post link now shows a custom preview card.Paste `strecon.app/market/nashville-tn` or any blog post URL into a Twitter, Slack, or iMessage thread and you'll see a 1200×630 preview with the market name (or post title) in big serif type, the STRecon logo, and the "Real calendars, not estimates" tagline. Each market gets its own preview, generated on demand. The rest of the site keeps the existing default preview card.
v0.7.54.0Apr 25, 2026

Changed

  • DC blog now has four entry points, not two.The "run your own market" prompt used to appear only near the bottom of the DC post. It's now threaded through the piece — after the 75/55 scatter, after the AirDNA comparison, and at the wrap — so readers who stop partway through still see the call to action.
v0.7.53.0Apr 25, 2026

Changed

  • Market overview pages moved to shorter URLs.`/airbnb-market/nashville-tn` is now `/market/nashville-tn`, `/airbnb-market/washington-dc` is now `/market/washington-dc`, and so on. Old links redirect automatically — nothing to update on your end.
v0.7.52.0Apr 25, 2026

Added

  • Washington, DC deep-dive is live.The new blog post at `/blog/washington-dc-winning-airbnb-formula` covers the full DC verdict (Moderate — 12.3% of 1,030 scraped listings pass both thresholds), four patterns across Capitol Hill and 14th Street corridors, the independent-operator advantage, review velocity gaps, and DC's unique LLC-ban / primary-residence licensing rules. Interactive tier map, 75/55 scatter, seasonality curve, metro-proximity bands, operator structure, and amenity differential charts.

Fixed

  • "Check listing count on Airbnb" button now reflects your filter picks.After setting a custom place type or guest count, the link in the credit balance block was still showing Entire Home / 6-guest counts. It now mirrors whatever you've selected.
v0.7.51.1Apr 25, 2026

Added

  • Washington, DC market page is live at `/market/washington-dc`.Verdict: Moderate. Covers 1,030 scraped listings, regulation context (primary-residence requirement, LLC ban), neighborhood breakdown, and seasonality.
v0.7.51.0Apr 25, 2026

Added

  • Pick your place type and minimum guest count before running an analysis.The job form now has two new controls: "Type of place" (Any / Room / Entire Home, default Entire Home) and "Minimum guests" (default 6). Until now both were locked to Entire Home / 6 guests, so studio investors and room-arbitrage markets couldn't target their actual product. In map mode your picks shape the search URL the worker scrapes; in URL mode the form prefills from a pasted Airbnb URL and any change you make takes precedence.
v0.7.50.1Apr 24, 2026

Fixed

  • Nightly rate estimates are slightly more accurate.The ADR sampling logic now skips windows where Airbnb's own minimum-stay rule would reject the probe before it ran — cutting ~10–15% of wasted requests per listing. Fill rate and output are unchanged; probes that would have failed are now never fired.
v0.7.50.0Apr 24, 2026

Added

  • Per-listing average nightly rate is back.Every scraped listing now carries an estimated ADR (average daily rate) — the mean nightly price across multiple sample windows drawn from Airbnb's pricing API — plus the min/max spread and sample count. The previous rate extraction was removed in an earlier release because it was unreliable; this re-introduces it using Airbnb's `StaysPdpBookItQuery` endpoint for structured per-stay pricing.
v0.7.49.0Apr 24, 2026

Fixed

  • Discovery progress map shows "areas searched" boxes again.While a job is running, the map overlays orange rectangles for each sub-area the worker has scraped. These disappeared in v0.7.48.0 and are now restored.
v0.7.48.5Apr 24, 2026

Fixed

  • Capped jobs no longer return false STRONG or MODERATE verdicts.A job run with a listing cap that scraped only a fraction of the target (e.g., 60 of 100) could return a confident STRONG verdict based on the small sample. Those jobs now return INCONCLUSIVE, which is the honest answer when coverage is too low.
v0.7.48.4Apr 24, 2026

Fixed

  • Discovery failure hotfix.A change in v0.7.48.0 caused every discovery run to silently return zero listings. Fixed same-day. Jobs that ran during the window and show empty results can be re-run.
v0.7.47.0Apr 24, 2026

Changed

  • Nashville blog post completely rebuilt.`/blog/nashville-airbnb-market-failing` is now a full visual market report: interactive tier map with all 4,086 scraped listings, 75/55 quadrant scatter, seasonality curve, bedroom breakdown, review velocity gradient, amenity differential chart (revealing the building-vs-house gap), operator paradox diverging bars, and three inline CTAs. A new Pattern #4 — "Top-tier listings aren't houses, they're buildings" — covers the amenity differential between high-rises and single-family homes in the top tiers. Hero map now lets you filter by tier and switch between clustered and individual-point views.
v0.7.46.5Apr 23, 2026

Changed

  • Calendar data is more reliable on hard-to-scrape listings.Some listings were repeatedly coming back with empty calendar data because Airbnb's anti-bot detection was stripping the page content. STRecon now pulls calendar data straight from Airbnb's API before falling back to page-scraping, so those stubborn listings now report properly.
  • Reports now cover 12 months of availability instead of 6.The new extraction path returns a full year in a single call. Day-by-day "available/booked" data now spans 365 days. (Booking count stats over the next 30/60/90 days are unchanged.)
v0.7.46.4Apr 23, 2026

Fixed

  • Market runs finish ~3x faster.A silent 30-second wait was burning on every listing the scraper touched. Per-listing time drops from ~55s median to ~20s, so the typical market scrape completes dramatically sooner.
v0.7.46.2Apr 23, 2026

Changed

  • Blog references on city pages are now clickable.The Nashville market page pointed readers to the full blog analysis as plain text. Now any `/blog/...` reference in a city's seasonality notes renders as a real link.
v0.7.46.1Apr 22, 2026

Fixed

  • About page hero now shows all six listing tiers with the correct colors.The sample-report card was missing a tier, had "Avoid" mislabeled as "Caution," and used the wrong color palette. Now matches `/glossary/listing-tiers` exactly.
  • Market Signal "Caution" badges are the same muted brown everywhere.Several pages were tinting Caution badges the same red used for the Avoid tier. Caution (market signal) is now brown, Avoid (tier) stays red, so the two taxonomies don't get visually mixed up.
v0.7.46.0Apr 22, 2026

Added

  • First blog post is live.*The Nashville Airbnb Market Isn't Broken. 80% of Listings Are.* — a deep read off the April 2026 Nashville scrape covering location dominance, the oversupplied 4+BR segment, four anti-patterns, and the operator paradox. Read it at `/blog/nashville-airbnb-market-failing`.
  • Blog section.New `/blog` index, per-post pages, and a `Blog` link in the nav (between "How it works" and "Pricing"). Posts are MDX files under `content/blog/`.
v0.7.45.0Apr 22, 2026

Added

  • Nashville market page live.`/airbnb-market/nashville-tn` now publishes real data: 4,077 scraped listings, Market Signal Moderate, 6.7% passing both 75/55 thresholds, plus regulation notes (Metro Codes Type 1 vs Type 2 permits), a bimodal seasonality curve, six FAQs, and an inline cross-link to the Nashville blog deep-dive.
v0.7.44.1Apr 22, 2026

Fixed

  • No more sideways scrolling on mobile glossary and "how it works" pages.Wide tables on `/glossary/listing-tiers` (and similar MDX content) were pushing pages past the iPhone viewport. Tables now scroll within their own container; the page itself stays put.
v0.7.44.0Apr 22, 2026

Changed

  • Market Signal names now match their labels everywhere.Internally, reports had been storing `MONITOR` and `AVOID` while the UI displayed `MODERATE` and `CAUTION`. Reports, APIs, and the database are now unified on the display names. Existing reports render correctly either way.
  • City data model renamed `caution` → `avoid` for tier distribution.The data always meant the Avoid tier — only the field name was stale. No user-visible change; just a cleaner foundation for future city pages.
  • Copy now describes the full six-tier taxonomy.Some marketing pages were listing only five tiers and omitting "Unreliable." Now consistent: Exceptional, Performer, Potential, Watch, Avoid, Unreliable.
v0.7.43.1Apr 21, 2026

Fixed

  • City-page intros rotate across all five templates.A hash bug in the template picker was collapsing most cities into the same intro variant. Now intros vary as intended, so no two cities read identically.
v0.7.43.0Apr 21, 2026

Added

  • Colored tier and signal pills across marketing pages.Listing tier names (Exceptional / Performer / Potential / Watch / Avoid / Unreliable) and Market Signal names (Strong / Moderate / Caution / Inconclusive) now render as colored pill badges in glossary tables, threshold lists, and city verdict heroes. Colors match the report palette exactly so reference pages and live reports share a visual language.
v0.7.42.2Apr 21, 2026

Changed

  • "How it works" and the glossary now use the same tier names.The fifth tier is "Avoid" everywhere (not "Caution" on some pages). "Caution" is now used exclusively for the Market Signal vocabulary.
v0.7.42.1Apr 21, 2026

Added

  • New glossary entry: Listing Tiers.`/glossary/listing-tiers` defines the six-tier listing classification, the estimated-tier variants, and how tier distribution maps to the four Market Signals.
v0.7.42.0Apr 21, 2026

Changed

  • "How it works" rewritten as proper reference content.The page now covers methodology, the review-cadence test, the six-tier classification, the four-state Market Signal with explicit thresholds, scraping pipeline, data scope, known limitations, and a 9-question FAQ. Lives as MDX so copy edits don't need a code change.
v0.7.41.0Apr 20, 2026

Added

  • Glossary launched at `/glossary`.First three entries: **The 75/55 Rule**, **Calendar Booked Rate**, and **AirDNA Estimates vs. Scraped Airbnb Data**. Entries cross-link each other and `/how-it-works`, and are included in the sitemap and `llms.txt`.
v0.7.40.0Apr 20, 2026

Added

  • Programmatic city pages at `/airbnb-market/[city]`.Publishing a new city is one JSON file — no code changes. Each city page covers a short-answer verdict, calendar stats, comparison table, who wins here, regulations, seasonality, decision frame, CTA, and FAQ. Gatlinburg ships first as a seeded template while real data lands.
v0.7.38.0Apr 20, 2026

Changed

  • Report pages load faster and feel steadier.Opening a report now shows a layout-shaped skeleton instead of a tiny spinner, so the page doesn't jump when the data lands. The coverage map loads in the background after the rest of the report is visible, and the verdict headline no longer nudges the stats and map around as it types itself in.
  • Maps no longer depend on a third-party CDN.The clustering plugin and map stylesheets now ship bundled with the app instead of being fetched from `unpkg.com` at runtime. One less thing that can break if the external CDN has a bad day.
v0.7.33.0Apr 19, 2026

Added

  • Toggle between clustered and individual map pointsa new button in the "Listings by Tier" legend flips the report map between clustered view (the default) and individual dots for every listing. Clusters stay great for dense areas; individual points give an at-a-glance read without zooming. Your choice is remembered per browser and the tier filter works identically in both modes.
v0.7.31.1Apr 18, 2026

Changed

  • Cleaner report mapthe subdivision quadrant overlays are gone. Your report map now shows just the dotted bounding box, so it's easier to read.
v0.7.31.0Apr 18, 2026

Fixed

  • Addon credits now arrive when bundled with a subscriptionif you purchased extra credits at the same time as subscribing (e.g., Megahost + 1000 credits), those addon credits were silently lost. They now show up immediately.
  • Subscription renewal date fixedyour next billing date could show the wrong date if you had addon credits on the same invoice. Now always reads from the subscription line.
v0.7.29.0Apr 18, 2026

Added

  • Map marker clusteringreports with many listings now group nearby markers into clusters. Click a cluster to zoom in. Each cluster shows a colored ring indicating the tier mix inside it.
  • Tier legend on the mapa floating panel shows all tiers with counts and colored indicators. Click any tier to filter it on and off. The filter syncs with the listing table below.
  • Fullscreen mapclick the expand button (top-right) to view the map fullscreen. Press Escape to close.
v0.7.28.0Apr 18, 2026

Changed

  • Better data qualitylistings with suspiciously low calendar data are now retried automatically instead of being permanently marked "Unreliable". More listings get a fair second chance at accurate classification.
v0.7.27.4Apr 18, 2026

Changed

  • Mobile admin improvementsboth admin pages now use compact sort buttons on mobile instead of filter inputs. Tighter spacing throughout.
v0.7.27.0Apr 17, 2026

Changed

  • Host plan credits updatedHost tier now includes 200 credits/month (was 500). If you subscribed before this change, you keep the original 500 credits.
  • Account page pricing fixedyour subscription price now always shows the correct amount.
v0.7.25.4Apr 17, 2026

Removed

  • 250-credit pack discontinuedthe smallest credit add-on ($10 / 250 credits) is no longer available. Remaining packs: 500, 1000, and 2000 credits.
v0.7.25.3Apr 17, 2026

Changed

  • Better reports on mobilesmaller map, bigger touch targets, and no more horizontal scrolling on phones.
v0.7.25.2Apr 15, 2026

Fixed

  • Credits no longer disappear when starting an analysisa bug was deducting your entire balance upfront. Credits are now charged only for listings actually found.
v0.7.25.0Apr 15, 2026

Added

  • Unreliable listing classificationlistings where scraping couldn't get clean data are now marked "Unreliable" instead of "Avoid", so bad data doesn't skew your market verdict.
v0.7.24.1Apr 15, 2026

Changed

  • Referral reward updatedboth you and the person you refer now receive 50 credits (was 250) when they subscribe to a paid plan.
v0.7.22.1Apr 15, 2026

Fixed

  • Report page no longer overflows on mobilecards and data now fit properly on phone screens.
v0.7.22.0Apr 14, 2026

Added

  • Find your reports fasterclick your subscription badge in the nav bar to see your credit balance, report history, running jobs, and what's new. Everything in one place.
  • My Reports pagebrowse all your past reports grouped by month, with verdict badges and listing counts. No more digging through the account page.
v0.7.21.0Apr 13, 2026

Changed

  • Explorer plan adjustmentfree Explorer tier now includes 25 credits/month (was 50). Existing users keep their current balance.

Added

  • Credit reservationcredits are now reserved when you start an analysis, not after. If discovery finds fewer listings than expected, unused credits are refunded automatically.
v0.7.20.0Apr 12, 2026

Added

  • Mobile-friendly navigationthe navbar now collapses into a hamburger menu on phones. All pages are easier to use on small screens.
  • Credit cost hintsee how many credits an analysis will cost before you hit Analyze.
v0.7.19.0Apr 12, 2026

Added

  • What's New pagesee all recent updates in one place. A notification dot appears on the nav bar when there's something new to read.
v0.7.18.0Apr 12, 2026

Changed

  • Market verdict renamedreports now show "STRONG" instead of "HIGH ACTIVITY" for high-performing markets. Clearer at a glance.
v0.7.17.0Apr 12, 2026

Fixed

  • Double-charge bug fixedsome users were charged 2-3x for the same analysis when the worker crashed and retried. All affected balances have been automatically restored with refund records.
v0.7.16.0Apr 11, 2026

Fixed

  • More accurate listing tiersfixed a bug where review frequency was being inflated for established listings, leading to incorrect tier classifications. Reports now show more reliable tier assignments.
v0.7.15.1Apr 11, 2026

Added

  • Promotion codesyou can now apply promo codes at checkout for discounts on subscriptions and credit packs.
v0.7.15.0Apr 11, 2026

Added

  • Feedback buttonyou can now submit bug reports, feature requests, and questions directly from the app using the chat bubble in the bottom-right corner.
v0.7.14.0Apr 11, 2026

Added

  • Unshare reportsyou can now revoke shared report links at any time. Even if you downgrade your plan, you can still unshare previously shared reports.
v0.7.13.0Apr 11, 2026

Added

  • Share reportsMegahost users can share reports via a link. Anyone with the link can view the report without signing in.
  • Better error messagesclearer messages when you try to access a report you don't own or aren't signed in for.
v0.7.12.7Apr 11, 2026

Added

  • Safe to close your browserthe status page now tells you that you can close the tab and come back later. Your analysis keeps running.
  • Quick access to running analysesin-progress analyses on your account page now link directly to the live status page.
v0.7.12.6Apr 11, 2026

Fixed

  • Account page linkthe credit balance in the navbar is now clickable and takes you to your account page.

Changed

  • Color-coded tier badgesyour subscription tier badge now shows in your tier's color.
v0.7.12.4Apr 11, 2026

Added

  • FAQ updateadded a note about property type filtering coming soon. Currently we focus on entire homes with 6+ guests.
v0.7.12.0Apr 11, 2026

Added

  • About pagelearn what STRecon does, how it works, and see a sample report.
  • Pricing pagecompare tiers, subscribe, buy credit packs, and learn about the referral program.
  • Guide pageunderstand what each part of your report means.

Changed

  • Cleaner home pagethe landing page is now just the interactive map. No more marketing clutter below the fold.