Releases
Changelog
- June 3, 2026 v0.65.2
- Welcome emails and job-alert digests now actually send. The shared email orchestrator was looking up the recipient in `authUsers` with the hex-string id, but Better-Auth's Mongo adapter stores `_id` as a real ObjectId, so every send since 0.62.0 returned "user-not-found" before reaching Resend. Drip emails were caught by the same bug. All three paths now coerce through the shared `authUserIdFilter` helper.
- /companies search bar is now semi-transparent with an 8px backdrop blur so rows ghost under it as you scroll, matching /app/board. The list pane drops the preview pane entirely below 1200px (clicks route to /companies/<slug>) so the search + rows claim the full available width on tablets and narrow laptops.
- /companies also collapses to a full-width list + search when filters return zero matches, instead of leaving an empty preview track on the right.
- Responsive overhaul for /app/board and /companies. Under 1400px the side rail shrinks (200px, wordmark hidden) and the filter + inbox columns drop a tier to keep the preview pane usable. Under 1200px the filter rail collapses into a "Filters" button + a drawer modal mirroring the desktop stack; a single "Clear" button next to it resets every filter at once.
- JobPreview action bar restructured: vertical-ellipsis menu pinned to the left (Report and Research live in its dropdown that opens upward), with "Open" + the primary "Tailor" CTA grouped on the right via `space-between`. The previous four-button row is gone.
- Keyboard hints toned down to opacity 0.35 (white at 0.35 on primary surfaces). Hide breakpoint raised from 600px to 1200px so the chips drop off entire narrow-desktop range.
- Buttons lost one step of horizontal padding on every size so labels sit closer to the chrome.
- Detail / preview panes (`pane-detail` on /companies, `pane-right` on /board) now carry a permanent `border-left` hairline so the divider reads even when the resizer column is hidden.
- SplineChart highlight tracks the cursor across the whole plot area: LayerChart's Tailwind utility classes for `.TooltipContext` were no-ops here (project does not load Tailwind) so bisect tracking ran on a wrong-shape element; replaced with explicit `position: absolute`.
- History page chart now uses the shared SplineChart with hover-only dots, brand-blue line, and the range tabs sit top-right above the chart without surrounding pill chrome.
- June 3, 2026 v0.64.2
- Mobile drawer + page menu now mirror the desktop side rail: sans `--font-md` body links, uppercase tracked-out `--font-sm` section headers with the hairline underline, brand-blue active link on `--surface-2`. The guest Pricing chip folds into Main under Home (no separate trailing entry), the Admin section is filtered out (its segmented control on /app/admin owns that nav), and the leftover "Actions / Tailor queue" plus the duplicate bottom-of-drawer Settings link are removed. Job alerts now carries a count pill in both the dropdown and the drawer to match the side rail.
- June 3, 2026 v0.64.1
- New UI preferences tab under /app/settings with a "Show keyboard hints" toggle. Stored per device in localStorage. With the toggle off, every kbd-hint chip across the app hides; shortcuts still work.
- Keyboard-hint chips bumped to a darker `--text` border and glyph at 0.35 opacity so they read as quiet metadata against any button surface instead of disappearing into the hairline.
- June 3, 2026 v0.64.0
- SplineChart redesign: left y-axis with a floating "Hours"-style label, brand-blue line, hover-only dot, white-card tooltip (title + hairline + label + big value) that follows the bisected column above the data point, and an optional "This week"-style highlighted band on the rightmost column via a new `currentBandLabel` prop. Hover column snaps to each data step and centres on the dot. Pointer-tracking fixed across the whole plot area (the underlying Tailwind utility classes LayerChart depends on were silently no-ops since the project does not load Tailwind, so the tooltip context and tooltip card had been getting wrong positioning).
- History page chart now uses the shared SplineChart instead of a hand-rolled LayerChart stack. Range tabs (7d / 1m / 6m / 1y / Max) sit at the top-right above the chart, no outer pill chrome.
- Side rail: when signed out, the Pricing link sits inside the Main section right under Home rather than as a standalone trailing chip.
- "Try for free" button replaced everywhere (hero, side rail, top nav, mobile drawer) with "Start now" plus a small inline "free" pill. New shared `.cta-pill` class drives the chip so future variants ("new", "beta", etc.) reuse the same shape.
- Mobile homepage hero tightened: shorter vertical rhythm between elements, hero outer padding pulled in, input and button both stretch full-width on their own rows, and the input radius matches the button (10px) instead of the desktop pill.
- Hero byline copy dropped to keep the above-the-fold lighter.
- "Apply to top companies today" headline hides on mobile, and the top-companies strip drops its `--space-3xl` padding to `--space-lg` so it no longer pushes the rest of the page down.
- Carousel arrows on the top-companies strip now use the default secondary Button colours (surface-2 fill, text-coloured glyph) instead of the dark accent fill.
- Mobile top-nav brand now lines up the regular logo, a small gap, and the "Miserably Unemployed" wordmark in mono at one size smaller than the side rail. The wordmark wraps to two lines so the brand fits without competing with the page-switcher.
- Typography pass across the whole app. Every button, input, select, multi-select, toggle, label, and body line now renders in Roboto Flex at the same small size with no bold weights. Page headers stay in JetBrains Mono at one step up; section headers (modal titles, settings subsections, landing-page section headlines, /vs blocks) sit one step above that. The mix of weights and faces that had accumulated across the codebase is gone.
- New TableData component is now the single source of truth for every structured list. The open-roles table on company pages, saved job alerts on /app/alerts, settings purchase history, /app/history timeline, employment country list, layoffs recent filings, and both admin tables (users + LinkedIn jobs) all render through it. One CSS change rolls through every list in the app.
- New StatTiles component for hero stat rows (the bordered card with hairline-divided cells used on /market, /market/funded, /market/employment, /market/layoffs and now /app/history). Same look, one component.
- New FilterSection component owns the filter-rail row pattern (title + control + trigger overrides). Board and /companies both consume it so visual changes propagate.
- Count pills unified into one style: small oblong chip with a tinted brand-blue background and brand-blue text. Side rail "Job alerts" badge, top-nav history queue, multi-select trigger counts, location drill-down summary pill, /companies and /app/board page-header counts, and the new slider readout pills (Freshness · Any age, Minimum salary · Any) all share the look.
- Filter sliders restyled as wide compact toggles: surface-2 pill track with a brand-blue circular thumb inside. The current value pops out as a small brand-blue pill next to the section title rather than under the slider.
- Pressed state on default Button variants (used by every multi-select dropdown trigger and the active persona pill) now fills brand-blue instead of black, matching primary CTAs and selected rows.
- Hero search on the homepage uses the design-system Input at large size + Button at large size, with locked min-heights so the input and the "Find jobs" button line up exactly. Button + Input heights are now standardised across all sizes wherever they sit next to each other.
- Clear filters on /app/board now also drops the implicit English language default. With nothing filtered, both "Save alert" and "Clear" disappear from the filter footer.
- Mobile top-nav brand now shows the regular logo plus "Miserably Unemployed" wordmark instead of the black square. The hero logo on the homepage hides under 768px so the page has one logo, not two.
- Admin overview charts (New users + Revenue) and the /app/history applications chart now use the shared SplineChart component: brand-blue lines, span-aware date ticks (no more "May 5 May 7 May 9..." smudge), one tooltip pattern.
- BoardDemo on the homepage retyped to match the rest of the app (body in sans, headers in mono at the new sizes, no leftover weight-500 / 600 declarations).
- New DESIGN.md at the repo root documents the typography rules, every token (colors, sizes, spacing, chrome), the full primitive list (Button, Input, Select, MultiSelectDropdown, SegmentedControl, Toggle, Modal, PageTopBar, TableData, StatTiles, FilterSection, SaveAlertModal), and the utility classes (.field-label, .kbd-hint, .muted, .err, .serif, .page-wrap).
- June 2, 2026 v0.62.0
- Saved job alerts. On /app/board, apply filters you want to keep an eye on and hit "Save as alert" (or press q) and we mail you a digest of new matches on a daily, weekly, or instant cadence. Manage the list at /app/alerts (rename, pause, change cadence, delete). Each digest links straight back to the board with the alert's filters reapplied. Toggle the master switch under Email preferences in /app/settings to opt out of every alert at once.
- "Save as alert" and "Clear filters" stack vertically in the filter rail footer at small size so two CTAs share the strip without crowding each other.
- Resume Tailor no longer hard-redirects when you have no personas. /app/tailor, /app/personas, and /app/alerts now each render a vertically centered primary CTA (Add new persona / Open job board) with a short explainer, and the redundant page-header Add button on /app/personas hides while the library is empty.
- Count pills unified across the app. The side rail "Job alerts" entry carries a saved-count, plus the top nav history queue, board filter triggers, and page-header totals all share one tinted brand-blue style: small, oblong, transparent fill, brand-color text.
- Companies filter pane brought into line with the job board. Industry and Funding stage use the same multi-select dropdown shell as the board, the three trigger labels render in matching mono small typography, the page-header count pill picks up the new tint and drops the redundant "companies" label when nothing is filtered, and Clear filters matches the board's stacked small-default style.
- Salary disclosed-only filter on the board uses the design-system Toggle and the small-caps mono section-title style, matching the email preferences row pattern.
- Delete account buttons now read in proper red via a new Button danger variant; the confirm dialog's destructive action picks it up automatically.
- Side rail typography matches the footer (sans body links, uppercase tracked-out section headers). Admin section dropped from the side rail since /app/admin owns its own segmented control.
- Dropped the WARN button on /market/layoffs recent filings. The per-row source URL didn't reliably resolve to the actual agency filing (only to each state's general WARN page or the upstream aggregator), so the button was pointing readers at the wrong destination. Recent-filing rows are now just a clickable card linking into the company page when we track it, or a static card when we don't. The Kadoa intel source stops stamping its aggregator URL into stored rows too.
- /market/employment hero backdrop now tints every country we have employment data for in brand-blue, not just USA. USA stays the zoom anchor on the right side of the masked map; every country with BLS, OECD, Eurostat, or WDI coverage joins it as an in-scope silhouette so the page reads "we cover everywhere on this map" at a glance. CountryMapBackdrop grew an optional `highlightIso3s` prop to support this pattern; other backdrops (per-country, /market/layoffs) keep their single-country highlight.
- /market/employment split into two labelled sections under one hero. A "United States" block leads with the BLS national chart plus a single "US scope" dropdown that hops between US national and any US state in one control (the old separate country + state selectors are gone); an "International employment" block hosts the cross-country choropleth and the country table, where clicking a country opens its dedicated /market/employment/<iso3> page. Each section gets a brand-blue 2px left rail so the boundary between the US story and the international story is unmistakeable.
- Recent-filings WARN action on /market/layoffs now opens the state labor department's own WARN page in a new tab. Previously every row from the Kadoa-aggregator backfill (which covers 45 states for us) stored "https://layoffs.kadoa.com" as its source URL; the WARN button now rewrites that to the correct state's official agency page (edd.ca.gov, dol.ny.gov, etc.) and hides the button for states with no maintained URL. The button itself is now a real design-system Button instead of a hand-rolled pill.
- Country employment pages (/market/employment/<iso3>) got a full pass. A US-style map backdrop now sits in the hero, masked left-to-right and tinted in the brand-blue, with the target country highlighted. A toolbar between the breadcrumb and the hero hosts a Back button (icon-only on mobile) on the left and a native country switcher dropdown on the right. Switching countries is instant: the page renders skeleton tiles immediately while the World Bank profile indicators load client-side, instead of blocking the navigation behind the WB API.
- /market/employment hub hero and /market/layoffs hero both got the same US map backdrop, so every page in the /market tree opens with a consistent geographic visual.
- Stat tile chrome unified across /market, /market/funded, /market/employment, /market/employment/<iso3>, /market/layoffs, and /market/layoffs/<region>. Every "hero tiles" row now renders as one bordered, rounded card with hairline dividers between cells, matching the country profile tile pattern instead of the previous loose top-hairline strips.
- UsStateMap and WorldCountryMap choropleths repainted in the brand-blue (--selected). The layoffs hub state map, the layoffs region map, the global employment world map, and the layoffs rank bars all read in one palette with the existing chart lines and progress bars.
- /market/layoffs reframed as US-only ("Who's cutting in the US.") since WARN is a US-only statutory filing, the previous "Layoffs around the world" hero overpromised global coverage we don't have.
- Country switcher dropdown filters out noise from the index: US-state codes (which live on the dedicated state picker) and World Bank regional / income / lending-group aggregates (HIPC, IDA & IBRD, Least Developed Countries, etc.) no longer appear in the country list.
- Side rail active link reads in brand-blue text on its surface-2 fill, so the current page reads at a glance.
- /market/funded gets a chart above the daily list. Per-day sum of open roles across companies that filed a Form D on each date, gap days zero-filled across the full window so the line drops to a baseline between funding events instead of cutting from spike to spike. Same brand-blue line style as the /market overview chart.
- Charts now paint their lines in the brand-blue (--selected) instead of plain foreground. New-per-day bars, top-country / top-company / top-source horizontal bars, and the Remote / Hybrid / On-site / Unspecified work-type progress bars all match. The interactive globe's busy-country fill tweens up to brand-blue too, so every visualization on /market reads in one palette.
- Fixed the time-scope picker on the /market open-jobs chart. 6m and 1y were rendering tick labels as a run of "2026 2026 2026..." because the formatter always returned year-only; it now picks granularity from the actual span of visible data (MMM d for short windows, MMM or MMM YYYY for medium, year-only for multi-year). Default scope is now Max so you see the full history we have collected, not the narrowest 2-point window.
- Same span-aware tick formatting now lives in the shared SplineChart component, so the layoffs timeline, BLS employment chart, per-country employment chart, regional layoffs chart, and per-company funding chart all benefit without any caller changes.
- /market hero CTA cards (These companies have money / Understand the labor market / Dig deep on layoffs) got 60px line icons above each title (wallet, bar chart, trending-down), painted in the brand-blue. The Unicode arrow on each button became a stroked SVG arrow so it matches the line-icon style.
- Fixed Tailor when the URL fetch comes back empty (JS-rendered pages we can't parse). The paste box would accept the description, but Tailor was still handing the model the empty cached body, and the model came back with "The job post body is empty, I can't fetch URLs." Now editing or pasting after a thin fetch correctly resends the new text.
- Homepage hero copy now reads "Job board with a built-in AI-powered resume tailoring service." Hero byline second line is no longer bolded.
- Modals across the app (Personas add / rename, Tailor add / rename, Report a job, confirm dialogs) restyled with 20px rounded corners, a banded header and footer that take the side-rail background tint, a deeper drop shadow, and a one-step-smaller title size so the action area reads as primary.
- Form labels on /app/post-job, /app/tailor, and the Report-a-job modal now use the same mono / xs / muted typography as the filter section headers. The label-to-input gap and the gap between field groups are unified, so every signed-in form surface reads consistently.
- Cancel buttons in modals all match now: the Report-a-job Cancel was rendering as a transparent label only; it now uses the same default chip style as every other Cancel in the app. Tertiary "ghost" Button variant removed from the design system entirely.
- Fixed the Location filter dropdown on /app/board getting clipped by the filter-rail scroll container that landed in 0.55.0. LocationDrillDown's panel now uses `position: fixed` with JS-computed viewport coordinates, matching the pattern Work type / Company / Seniority / Language already used. Mobile sub-pane height also got the same `max-height: 100dvh` override so the JS-driven cap doesn't shrink it.
- /app/history, /app/tailor, /app/settings, and /app/post-job all now use the shared PageTopBar component, so the topbar treatment (sticky offset, padding, title typography) is identical across every signed-in surface. Tailor's per-letter bouncing wizard title became a `bouncing` flag on PageTopBar itself, off by default everywhere else.
- Per-company OG share preview (the /companies/<slug>/og.png card LinkedIn / Twitter / Slack pull for unfurls) and the site-wide /og-image.png both got their primary CTA repainted in the new brand-blue, matching the live primary buttons after the 0.56.0 selection rollout.
- Industry taxonomy. Every company now maps onto a fixed 18-category list (Software, Consumer Tech, Financial Services, Healthcare, Retail, Manufacturing, Transportation, Aerospace and Defense, Energy, Real Estate, Food and Beverage, Hospitality, Media, Telecommunications, Professional Services, Education, Public Sector, Other). Replaces the free-text "Pharmaceutical retail" / "Ride-sharing" chaos with stable categories. New companies auto-classify as they're enriched; existing rows backfill once on next deploy.
- New brand-blue (#0057fe) for primary CTAs and selected states. Primary buttons, the selected job-board row, the active persona pill, and tabular hover all now read in the same brand-blue instead of black or grey. New `--selected` design token, separate from `--accent` (which keeps the black text/utility colour).
- /market overview restructured. Hero is text-only on top with three CTA cards under it (Just raised / Labor market / Who's cutting), each linking into one of the deep market hubs. Open-jobs-over-time chart moved to its own row below. The "Market stats · 634,059 jobs open right now" headline is gone; the live count is in the topbar pill now.
- Job board topbar count pill drops the "filtered" word. When a filter is active the pill just shows the number.
- Mobile /app/board: "Add a job" collapses to a single `+` icon so the topbar stays compact on phones.
- Single-job page (/app/board/<id>) wrapped in the standard rounded card chrome to match other public pages, with a single hairline divider between the header and body instead of two stacked card surfaces. Tailor / Open buttons sit centered at equal widths with `t` and `o` keyboard shortcuts. Closing the page (Esc, X, or "All listings") returns to the board with the same job pre-opened in the side pane.
- Homepage board demo updated to match the new live design. Dropped the four-line stats panel (it lives in the topbar pill now), turned the terminal-style search into a plain search input with a `/` keyboard hint, and bumped button corner radii to match the DS Button.
- Chart x-axis labels on mobile dropped to year-only ("2020 2021 ... 2026") so the unemployment-rate and layoffs workers-affected lines stay readable on a phone instead of running together as a smear of "Jan 2020Jan 2021Jan 2022...". Hover tooltips keep the full "MMM d, YYYY" date so precision isn't lost when you actually want it.
- Fixed the unreadable tick labels on the /market overview chart in the 1m range, which used to render runs of "30 30 31 31 06.2026 06.2026..." (a leftover gimmick that mixed day-of-month numbers with month-boundary banners). Now: short month + day ("Jun 2", "Jun 9", ...) for the 1m view, year-only for 6m / 1y / Max.
- /market/funded hero stat tiles ("57 companies funded", "2,116 open jobs", "90d window") stack one-per-row on phones instead of compressing into a three-column row.
- June 1, 2026 v0.55.0
- New Minimum salary filter on /app/board, with a snapping slider (Any / $40k+ / $60k+ / ... / $200k+) and a "Disclosed salary only" toggle. Listings pull salary from Y Combinator, Breezy HR, and Welcome to the Jungle when employers disclose it; values are normalised to annual USD via a 16-currency mid-market table (refreshed quarterly). Listings without a disclosed salary disappear as soon as you raise the threshold off zero. New partial compound index keeps the query as a fast range scan over the disclosed-salary subset only.
- Keyboard shortcuts across /app/board and /companies. `/` focuses search, `Esc` clears all filters, `←` and `→` page through the inbox. /app/board adds `a` to jump to Add a job. The job preview footer became a four-column grid (Report / Open / Research / Tailor) and each button has its own letter: `x` `o` `r` `t`. Every shortcut shows a tiny key pill on its trigger so you can find them without memorising.
- Live count pill next to the page title on /app/board and /companies, reads "N filtered" when any filter is active, "N open jobs" / "N companies" otherwise. Replaces the four-line terminal stats panel that used to sit at the top of the filter rail.
- Search box on /app/board and /companies is now a plain search input instead of the terminal-style prompt. Recent-search history is gone (the `/` shortcut + your URL bar are both faster). Absolute positioning lets the inbox scrollbar reach the very top of the column, with rows sliding under the search bar as you scroll.
- Filter rail on /app/board now scrolls when the section list overflows the viewport. "Clear filters" stays pinned at the bottom regardless of scroll position. Filter dropdowns use fixed positioning so they keep working when the rail is scrolled.
- /how-it-works now has a primary CTA under each feature row: "Browse the job board" (Fresh from the source), "Add your first persona" (Knows who you are), "Ask the job market" (Query with AI), "Tailor your resume" (Beat the ATS). Each links straight into the relevant app surface so the page doubles as an onboarding ramp instead of being a dead-end essay.
- Side rail nav sections (Main / Market / User / Admin) now sit inside their own rounded cards with hairline borders, so the four groupings read as four distinct blocks instead of one long unstructured stack.
- Killed the last of the old cream colour. `#f7f4ee` was still hiding in the `theme-color` meta tag, the pre-paint inline script, the theme swatch, and the OS-default text-selection highlight, which made the iOS Safari overscroll bounce zone and macOS Safari text selections render in the old palette. All four now use the current cool-white. New `::selection` rule uses `--surface-2` so highlighted text reads in our palette regardless of OS theme.
- Homepage copy: the why-not section headline is now "Try being less miserable", and the board link reads "The jobs board is free and always will be."
- Mobile responsive pass across the site. Every page-wrap goes flush to the device edges (no more rounded card with margins around it on phones), the hamburger drawer locks the page behind it and fills the full viewport, and segmented controls collapse to a Select dropdown so filter rows stop overflowing.
- /companies on mobile: tapping a row now opens the company page (instead of being a no-op against the hidden detail pane), the inbox list stays visible (was being hidden along with the filters), and the search terminal collapses to a single line.
- /companies/<slug> on mobile: TopNav added (was missing the hamburger entirely), back/website actions collapse to icon-only buttons that match the "X jobs" pill in height and padding, "open roles" relabelled to "jobs", the open-roles table breaks out of the page padding and scrolls horizontally so columns keep their natural widths, and the lower-grid spacing tightens up.
- /market/employment, /market/employment/<iso3>, /market/layoffs, /market/layoffs/<region> hero stat tiles stack one-per-row on phones instead of compressing into a three-column row that wraps the period text onto two lines.
- /how-it-works on mobile: feature illustrations now use a 5/3 aspect ratio (more room for the animations) and reach into their inner padding to give moving pieces breathing space.
- Inputs, selects, and buttons share one size on mobile with tighter `--space-md` horizontal padding so toolbar rows fit.
- Landing: the desktop job-board screenshot is hidden on phones (it was shrinking to an illegible postage stamp), credit pricing cards get real breathing room around the dividers when stacked, hero placeholder reads "What job do you want?".
- Fixed iOS Safari auto-inflating text inside horizontally-scrolling tables (`-webkit-text-size-adjust: 100%`).
- New per-country details table below the world map on /market/employment. Every covered country listed with its latest value, period, and a year-over-year % change pill (up/down arrow, green when the trend is good for the labor market, red when it isn't, direction flips for unemployment and layoff rates). Rows link straight into the per-country page.
- Per-country page (/market/employment/<iso3>) now opens with a country-profile block sourced from World Bank WDI: total population, working-age population (15-64), labor force, participation rate, working-age share, GDP per capita, each tagged with its WDI reporting year. Page title now reads "Unemployment rate in <country>" (or whichever metric is selected) so the headline matches what the chart actually shows.
- Methodology section on /market/employment rewritten to cover every data source the page reads from: BLS national + LAUS state series, OECD DSD_KEI, Eurostat une_rt_m and lfsi_emp_q, and World Bank WDI SL.UEM.TOTL.ZS. Each row shows the actual series ID, the agency, and what the value measures.
- New methodology section on /market/layoffs documenting the WARN-Act scope (what triggers a filing, the 60-day notice rule, the 50-employee threshold) and the roadmap for adding OECD layoff/separations rates and analogous statutory filings outside the US.
- Hover on any line chart (employment, layoffs, market, per-company funding, ...) now shows a tooltip with the exact date and value at the cursor, instead of only the dashed crosshair.
- Fixed: picking a US state on /market/employment used to 400 the API ("country (ISO-3) and kind are required"); the endpoint now accepts both ISO-3 codes and the US-<USPS> form the state picker emits.
- Removed the "See the whole market" / "See every country" CTA button from /market/employment, /market/employment/<iso3>, /market/layoffs, and /market/funded. The breadcrumb already points back to /market so the dark pill was redundant.
- World Bank WDI annual unemployment added for emerging markets the monthly sources don't reach: India, Brazil, Indonesia, Nigeria, Pakistan, Egypt, Vietnam, Bangladesh, plus ~180 more. Skips countries already covered at monthly cadence by BLS/OECD/Eurostat so the higher-resolution series never gets overwritten. The world choropleth now colours 230+ countries instead of the previous ~80.
- Eurostat employment dataset now yields two indicators in one pull: working-age employment rate (EMP_LFS) AND labor force participation rate (ACT). LFPR for 31 EU/EFTA countries now available alongside the existing US national series.
- New US-state picker on /market/employment, separate from the country dropdown. Lets you switch the chart to California, Texas, New York, or any of the 50 states + DC without polluting the global country list.
- OECD monthly unemployment added: 37 OECD economies including Australia, Canada, Korea, Mexico, Israel, Chile. Pulled via the new sdmx.oecd.org DSD_KEI dataflow.
- New world map on /market/employment: countries shaded by the latest value for the selected metric, hover for the exact number + period + source, click to switch the chart to that country.
- New per-country pages at /market/employment/<iso3> (e.g. /market/employment/deu, /market/employment/jpn). Hero stat tile, breadcrumb, metric picker filtered to whichever metrics that country actually has, with the chart driving on real source data.
- The country dropdown now opens directly below the trigger and caps its height to match the chart underneath, instead of flying off to the right.
- US states are filtered out of the global country picker (they belong on a future state picker, not next to Australia and Belgium).
- mu-intel scheduler now drives every market-data source on its own cron: Kadoa (daily), BLS national + state (daily), OECD unemployment (daily), Eurostat unemployment (daily), Eurostat employment-rate (weekly), Eurostat vacancies (weekly). Boot delays stagger the first runs so all six don't race the same network second after a restart.
- Employment hub gained a country picker. The chart now defaults to the US national series but flips to Germany, France, the UK, California, or any of 84 covered countries / US states via the new dropdown above the metric switcher. The metric switcher hides tabs the selected country doesn't have data for, and snaps to the first available metric when a country only carries one.
- BLS state-level unemployment series added. All 50 states + DC, monthly, seasonally adjusted, from a 50-series-budget-aware chunked BLS API call. Each state appears as its own row in the country picker (California, Texas, New York, ...).
- Eurostat quarterly employment rate added: working-age (15-64), seasonally adjusted, 31 EU/EFTA countries (742 quarterly points).
- Eurostat quarterly job-vacancy rate added: all NACE activities, all firm sizes, seasonally adjusted, 14 countries with reporting (336 points). Shown under the same "Job openings" metric as US JOLTS.
- New interactive US state map on /market/layoffs, below the workers-affected timeline. Each state is shaded by filings (or workers affected when available); hover for the exact numbers, drag to pan, scroll to zoom, double-click to reset, click a state to drill into its detail page.
- Eurostat monthly unemployment rate added to the employment data pipeline. 2,363 monthly observations across 32 EU and EFTA countries flow into the same market collection as the BLS series, so the US-vs-Europe comparison story is data-ready.
- Layoffs feed expanded from 4 US states to 45 via the open Kadoa dataset. Single fetch pulls every public WARN-Act notice (~44,000 records covering 1998-present) and lands them in our market collection alongside the direct state pulls. The hub now charts actual workers-affected numbers (1.18M tracked across the 5-year window) instead of falling back to filing counts.
- Layoff hub is general market data now. Every WARN filing the scrapers parse lands on /market/layoffs, whether or not the company is on our job board. Filings from board companies still link out to their /companies/<slug> profile; everyone else reads as plain text in the same row. Default window widened from 90 to 365 days so the page renders out of the box even when the most recent state filings are several months stale.
- /market/employment picker swapped to the shared SegmentedControl (matches the market range switcher). Labels trimmed (no more "(JOLTS)" suffix); title and picker now stack vertically and align left.
- /market/employment now shows real BLS data. Seven monthly US labor metrics from the Bureau of Labor Statistics: unemployment rate, labor force participation, employment population ratio, plus the JOLTS suite (openings, hires, quits rate, layoffs rate). Pickable via a top-of-page control; the chart redraws with the right axis format (percent vs thousands) for whichever metric you pick. Five years of history loaded by default. OECD and Eurostat country coverage joins next.
- Per-state layoff pages at /market/layoffs/<state> (e.g. /market/layoffs/california, /market/layoffs/new-york). Same hero, timeline chart, top-affected companies, and recent filings as the hub, scoped to one state. Each region row on the hub now links to its detail page. Sitemap updated so search engines can crawl all 51 region URLs.
- /market/layoffs now shows real WARN-Act data. New hub layout: workers-affected timeline chart, per-state ranking, top affected companies, and a day-grouped recent filings feed. Each company name links to its profile. Hub is sourced from California, New York, Texas, and Washington WARN feeds today; further state coverage lands as Phase A continues.
- A bit more breathing room around the rail brand header.
- Job board and Companies page each got a sticky top bar: page title on the left, primary action on the right. The "+ Add a job" button moved out of the rail nav into the Job board top bar where it lives next to the listings it affects.
- Personas, Market Chat, and Admin page top bars all now share one component, so a single tweak to the bar style updates every page at once.
- New /market/layoffs and /market/employment pages. Layout, breadcrumb, meta, and source documentation are live so the routes can be linked, shared, and indexed while the WARN, Layoffs.fyi, Eurostat, BLS, and OECD data pipes come online.
- Rail nav restructured into four labelled sections (Main, Market, User, Admin) with a small mono header above each group. Mobile drawer + page-menu dropdown use the same sections so the structure is consistent across breakpoints. Sub-pages highlight their own child via longest-prefix matching.
- Post-a-job page now uses the same rounded card frame as the rest of the public pages.
- Tightened the contrast on the company intel sidebar: descriptions, chips, and rows now read in the muted grey instead of full-contrast black, so the open-roles table stays the visual anchor of the page.
- Share previews now look bespoke per company. Posting a /companies/<slug> link on LinkedIn, Twitter, Slack, or anywhere else with link unfurls renders a custom 1200x630 card with the company name, headcount, HQ, latest funding round, and a "View N open roles" CTA, instead of the generic brand image.
- Refreshed the homepage share image to match the current site palette (cool-white background, JetBrains Mono headline) and dropped the old cream/serif look.
- Company pages now show two "more like this" blocks above the open-roles table: other companies in the same industry, and other companies in the same HQ country. Each block links to up to five sibling profiles plus a "See all" out to the matching hub page.
- Bing, Yandex, Seznam, Naver, and DuckDuckGo learn about company-page changes within minutes via IndexNow instead of waiting on their crawl schedule. Fires fire-and-forget from the company-doc upsert path with a 1-hour per-slug debounce so a sync run doesn't spam.
- Removed the source-and-date superscripts ([AI, Jun 2026], [derived, Jun 2026], etc.) from the company intel chips, description, funding, layoff and hiring-velocity rows on the right pane. Cleaner read; the provenance is still tracked under the hood.
- Performance: preload the variable woff2 fonts on every public route so first paint doesn't wait on the font CSS to parse. Added explicit width/height on the homepage why-stage images and the company-logo carousel to prevent layout shift while they load.
- Each release group on /releases now ships Schema.org Article structured data so search engines can render the changelog as article rich results.
- /companies directory and the /market top-companies tile no longer surface the "Unknown" and "Non renseigné" buckets. Those slugs aren't real companies, they're per-feed placeholders the scraper assigned when the source posting had no company name, and they were dominating both rankings. /companies/<catchall> pages also 404 now.
- Company pages now show their industry as a link to a new browse page that lists every company in that industry.
- New hub pages at /companies/industry/<name>, /companies/country/<name>, and /companies/funding/<stage> so you (and search engines) can browse companies by sector, headquarters country, or funding stage.
- Funding history on company pages got a cumulative dollars-raised chart above the rounds table. Each round reads as a clear step up the line so it's obvious when and how a company's money came in.
- Breadcrumbs added across the public site (home, market, companies, about, releases, terms, privacy, how it works, recently funded) so you can trace back up the path with one click.
- Fixed the company website button: was linking at Wikipedia for some AI-described companies. Now it only trusts URLs from the actual website crawl, with the slug-based guess as a fallback.
- Every open role on a company page now ships a JobPosting structured-data block so Google Jobs can index it.
- May 31, 2026 v0.38.1
- Funding history on /companies/<slug> now merges rounds from every source we know about (SEC Form D, SEC 8-K Item 3.02, Y Combinator, AI synth, OpenVC imports) deduped by round + year + amount, with the higher-confidence source winning on collisions.
- Funding table now shows the round kind (Seed, Series A, etc.) and a comma list of lead and notable investors when known.
- New Y Combinator source pulls the public YC companies feed and stamps a seed round on every tracked YC alumni company.
- New SEC 8-K source scans daily filings for Item 3.02 (Unregistered Sales of Equity Securities) and captures public-company private placements / PIPE deals that Form D doesn't cover.
- About, releases, terms, privacy, market, recently funded, the company intel page, and the in-app history, personas, chat, and tailor surfaces now sit inside a single rounded card frame so the chrome stays consistent across the site.
- Personas redesigned with a sticky top bar (page title + Add new persona) and a sticky bottom bar (active persona + Search with selected). The selected persona shows as a dark fill with light text. Per-row application history was dropped to keep the list scannable.
- History redesigned with the same sticky top-bar pattern (title + Tailor another).
- Chat redesigned with a sticky top bar (Chat title + New conversation) and the action moved out of the conversation sidebar.
- Input focus state replaced the outline ring with a subtle background tint that adapts to theme.
- Fixed a blank gap below the "A smarter way to land the job" scroll section on the homepage.
- New /sitemap.xml advertises every public route plus every enriched company page so search engines can discover and re-crawl them on their own. Listed in robots.txt.
- Company rows on /companies are now real links to /companies/<slug>, so they open in new tabs with the standard browser shortcuts and so crawlers can follow them.
- Every /companies/<slug> page now ships a full SEO head: dynamic title, description, keywords, canonical, Open Graph (with site image), Twitter large-image card, and a richer Schema.org Organization (headcount, sameAs links). /companies index gets the same suite.
- Split /sitemap.xml into a sitemap index plus chunked child sitemaps (10K URLs each), so crawlers no longer time out fetching a single 12 MB / 60K-URL file. Google reported "Couldn't fetch" against the monolithic version.
- May 30, 2026 v0.30.0
- Company pages now have an About section and a Culture section, written in our own voice by Claude Haiku off Wikipedia summaries and the company's own about pages. Each runs once per company so the same paragraph keeps showing up after the first read.
- Wikipedia source feeds factual infobox data (founding year, HQ, industry, headcount) into the company profile when our other sources don't carry it.
- May 30, 2026 v0.29.0
- Every profiled company now has its own public page at /companies/<slug>: about paragraph, profile facts, full funding history, full layoff history, and a link to the company website. Each page is server-rendered with canonical, OG and schema.org Organization metadata so search engines can index them. Open the page from the /companies right pane via "View company intel".
- /companies open-roles table is now horizontally aligned to the header above (var(--space-xl) outer inset, var(--space-md) between cells).
- May 30, 2026 v0.28.0
- Company intel panel now surfaces more of what we already know: industry chip, ownership type, VC backers, age in years next to founding year, total raised across all rounds, total employees laid off across all WARN filings, and repost rate when significant.
- Website crawl now falls back to a domain guess (<slug>.com) when no curated domain is on file, so the description / HQ / founding year light up for many more companies on the next 30-day cadence.
- May 30, 2026 v0.27.5
- New Companies directory at /companies (also in the side nav under Market). Same three-pane chrome as the job board: filter sidebar, searchable inbox with pagination, profile + sortable Open roles table on the right. Click any column header in the roles table to re-sort.
- Company pages now show a Company intel panel above the open roles, with funding history and hiring velocity, each tagged with its source and as-of date.
- Layoff history (state WARN Act filings from CA, NY, TX and WA) and a company description / HQ pulled from each company website now feed into the same panel.
- May 29, 2026 v0.26.0
- The job board now defaults to English postings only, so non-English listings no longer crowd the inbox on a fresh visit. Pick other languages from the Language filter to include them.
- May 28, 2026 v0.24.1
- We're adjusting our plans to fit Madrigal
- May 27, 2026 v0.24.0
- Job descriptions in the board preview pane now keep their original formatting (headings, bullet lists, links, bold text) instead of being flattened into a wall of plain text
- Fixed shared links to a specific job so they reliably open that exact listing, instead of falling back to the newest job on the board
- Security hardening pass: tightened how external job links are rendered (any non-http link is no longer clickable) and how the sign-in callback URL is validated, so a tampered link can no longer redirect you off the site after sign-in
- May 26, 2026 v0.21.1
- The Funded Companies page now reaches back over two weeks of filings each refresh, so recently funded companies keep showing up even across long holiday weekends
- May 26, 2026 v0.21.0
- Company pages now show who backs the company, like "Backed by Andreessen Horowitz, Sequoia Capital", for venture-backed names we track
- Added hundreds of new venture-backed companies to the job board, pulled fresh from their own careers pages
- Simplified the signed-out homepage hero
- May 26, 2026 v0.20.3
- The footer copyright is now a full-width bar that lines up with the sidebar account area
- The How it works page now closes with the same sources strip and "Find a job now" button as the homepage
- May 26, 2026 v0.20.2
- The Market and Funded Companies headers now stack on narrower screens, with the chart and stats sliding below the intro instead of getting squeezed
- May 26, 2026 v0.20.1
- Tidied the footer: dropped the FAQ link and fixed Pricing so it jumps to the pricing section from any page
- May 26, 2026 v0.20.0
- New Funded Companies page: companies that just raised money (matched from public SEC filings) and are hiring, with their open jobs one click away. Refreshed every 12 hours
- Reworked the footer with a Market section linking to Market Statistics and Funded Companies, on a lighter background
- May 26, 2026 v0.19.0
- The homepage board preview is now fully clickable and takes you straight to the job board, with its buttons matching the real ones
- Fixed the Market page globe rendering as a flat grey or black ball after a refresh in dark mode
- Fixed the board preview buttons getting clipped or vanishing at the bottom, especially in Firefox
- May 26, 2026 v0.18.0
- Unified the credit-pack pricing so it looks identical everywhere it appears: the homepage, the chat paywall, and the resume tailor
- Cleaner pricing cards: borderless with dividers, a "popular" tag on the recommended pack, and tighter, better-behaved spacing on smaller screens
- May 26, 2026 v0.17.1
- Tidied the pricing section: matched its spacing to the section above and gave the credit packs clean vertical dividers instead of boxed borders
- May 26, 2026 v0.17.0
- Reworked the "A smarter way to land the job" story into a full-screen scrolling experience: each step pins for a moment while its photo wipes in and slowly zooms
- "Fresh on the board" now adapts how many roles it shows to your screen size
- The strip above the footer now tells you how many companies we pull jobs from and links you straight to the board
- Polished the homepage comparison section and made the company-logo carousel arrows clearer, looping back around at the ends
- May 26, 2026 v0.16.1
- Sharpened the copy on the new homepage comparison section so it speaks to what is actually working against you out there
- May 26, 2026 v0.16.0
- New homepage section laying out why Miserably Unemployed beats scrolling LinkedIn or leaning on a generic AI chatbot, with pricing built right into it
- The Market page now shows how many companies we are currently pulling jobs from
- Fixed the interactive globe on the Market page failing to render in dark mode
- May 26, 2026 v0.15.0
- Roughly doubled the companies we pull jobs from: now tracking 9,500+ employers across Greenhouse, Lever, Ashby, SmartRecruiters, Personio, Workable, Recruitee and Breezy
- The job board now refreshes every 12 hours
- May 25, 2026 v0.14.0
- Pick a persona on the Personas page and a "Search for jobs" bar lets you jump straight to the board pre-filtered to that persona
- The mobile menu now matches the sidebar styling and no longer lingers on screen once the sidebar is visible
- Polished the board: straight hairline dividers between listings, a fade on older searches instead of a scrollbar, and lighter filter labels
- Consistent footer/action bars throughout, and dialogs now sit above the sidebar instead of behind it
- May 25, 2026 v0.13.0
- Moved site navigation into an expanded left sidebar that always highlights the page you are on; the top bar is gone on larger screens
- Job previews now have a "Research" button that opens the AI chat already asking for more jobs like the one you are viewing
- Reworked the Market page: a cleaner intro with the open-jobs trend chart up top, then the headline stats below
- Consistent button styling across the site, plus a tidier sign-in flow from the sidebar and job previews
- May 25, 2026 v0.12.0
- Redesigned the homepage around one big "What job are you looking for?" search and a clearer "Your AI recruiter" pitch
- Added a live, self-playing preview of the job board to the homepage so you can see how it works before signing in
- New "Fresh on the board" strip showing the latest listings
- Fix: the job board no longer errors out when the total job count is slow to tally; it stays up and shows the latest known count instead
- May 25, 2026 v0.11.7
- If resume tailoring stalls, it now times out and automatically refunds your credit so you can retry
- Stricter request validation and tighter database query limits for a more stable, harder-to-abuse board
- Security and reliability hardening across uploads, sessions, and our database connections
- Hardened how posted job descriptions are cleaned before they are shown, and application links on posted jobs must now be secure (https)
- May 24, 2026 v0.11.4
- Fix: deleting your account now fully removes it, your sign-in records included, instead of leaving the login behind
- Reporting a job now opens in a tidy popup instead of an inline panel
- Bigger, easier-to-scan job titles in the board and homepage lists
- Simplified the market chart to a single clean line tracking open jobs over time
- May 23, 2026 v0.11.0
- Search the job board by US ZIP code with an adjustable radius (10 to 100 miles)
- Cleaner job lists on the homepage and board: more breathing room, Mail-style divider lines, and a rounded highlight on the active listing, with job titles back in Roboto
- You can now report a job posting that looks like spam, a scam, or a duplicate, straight from its preview
- Polish: the main nav menu and avatar menu now use the same rounded corners as the buttons and other dropdowns
- Fix: jobs with several locations no longer overflow and break the row; the location now truncates cleanly (job board and homepage)
- Fix: the bottom of the job board (and post-a-job page) is no longer clipped a few pixels short of the screen
- Unified every browser-tab title to a single "Page | Miserably Unemployed" format
- SEO: every page now has a proper title (page name plus the brand), a description, and keywords; fixed a leftover placeholder browser-tab title on the homepage
- Added a small byline under the homepage headline: "No ads. No nonsense. Just hope."
- New homepage strip of top company logos (Amazon, Apple, OpenAI, and more), each linking straight to that company's open jobs
- Pricing is now one clear call to action: browse free, apply with AI-tailored resumes, buy a pack and start in 90 seconds
- Out-of-credits and signed-out states now show the same banner and gating across the homepage, chat, and resume tailor, with one consistent pricing screen
- Homepage feature rows now alternate zoom direction as they scroll into view
- Mobile: the homepage jobs list no longer scrolls inside its panel
- The "How it works" feature rows now match the homepage's rounded image-and-text panels, with an animated illustration in each
- Pricing: "Browsing the board is free" now links straight to the job board
- New "How it works" page (linked from the menu and footer) that walks through what the product does for you: fresh sourcing, personas, AI market queries, and ATS-beating tailoring, each with its own animated illustration
- Fix: clicking a link now lands you at the top of the next page instead of slowly scrolling there
- Homepage chat no longer asks you to sign up and then hits you with a paywall. You only see the chat box when you have credits; otherwise a clear banner tells you up front that querying the market needs an account and a credit pack
- New homepage section, "A smarter way to land the job": four reasons a job board alone won't get you hired and how we help, with imagery
- Reframed the pricing section around what credits actually pay for, and moved the list of job sources we parse down near the footer with a "Tailor a resume" call to action
- Fix: closed a gap that appeared below the nav on the Resume Tailor page, and the homepage hero now fills the screen exactly with no sliver beneath it
- May 22, 2026 v0.5.1
- Fix: removed 72 duplicate company entries that made the scraper fetch the same job board twice every cycle (no listings lost, just wasted work)
- New employers: 1,556 more companies added to the board, sourced by a much-expanded discovery pipeline that mines startup directories (YC, VC portfolios, unicorn lists) and Hacker News hiring threads, then verifies each against its live careers board before listing it
- New employers: 67 companies added to the board via automated ATS discovery, including ClickHouse, Astranis, One Medical, Duolingo, Whoop, Hopper, Writer, and Persona
- Fix: the new Content-Security-Policy was blocking the job board from loading its data (the board calls the API on the www host while the page is on the bare domain); the policy now allows both, so the board works again
- Added an llms.txt index at the site root, a machine-readable table of contents that helps AI crawlers find the board, market, and key pages
- Faster: the site now serves over HTTP/2, so the browser can fetch many resources over one connection at once instead of queuing them, speeding up page loads
- Security: the site now tells browsers to always use HTTPS (HSTS), closing the brief window where a first visit could be downgraded to an insecure connection
- Security: the site now sends a Content-Security-Policy, which tells your browser to only run scripts and load data from trusted sources, adding a layer of protection against injected or malicious code
- May 21, 2026 v0.4.5
- Snappier homepage: the chat suggestion typewriter now starts after the page loads and animates more efficiently, so the page responds to clicks sooner (and is skipped entirely if you prefer reduced motion)
- Faster homepage: job-market stats and recent listings are cached briefly on the server, so the page responds without waiting on a fresh database round-trip each visit
- SEO: added Schema.org structured data (Organization plus site search), so search engines understand the site better and it can qualify for richer results
- Faster first paint: the page now ships its critical styles inline instead of fetching a stack of separate stylesheets, so content shows up sooner
- SEO: every page now declares a canonical URL, and social-share (Open Graph / Twitter) links point at the canonical address
- Faster homepage: removed a heavy animated background and made the headline render instantly, so the page paints and becomes interactive much sooner
- Fonts now load from our own domain instead of Google's CDN, so first paint no longer waits on a third party (and no font requests leak your IP to Google)
- Fix: signing out now fully clears your session, so signing back in with a different Google account no longer leaves you logged in as the previous one
- New: opt-in session replay, heatmaps, and conversion goal tracking (SessionSight), behind its own "Session replay (SessionSight)" toggle in the cookie banner, so nothing records until you accept (you may see the banner again to confirm your choices)
- New employers: AstraZeneca, Pearson, Informa, and Bupa added to the board
- Fix: GSK was listed but returning no jobs (stale careers address); corrected (~700 postings)
- Fix: signing in now works when you visit the www version of the site (some visitors were getting stuck on the login screen)
- Board: filter jobs by language, auto-detected per posting, so you can narrow to English, Spanish, German, Portuguese, Chinese, Japanese, and more
- New source: Radancy / TalentBrew, an enterprise careers platform (Arm, ING to start)
- New employers: ABB, H&M, and NAB added to the board (roughly 4,200 more postings)
- New employers: Takealot (South Africa) and Nuvei (Canada fintech) added to the board
- Market page: the "Where we get the data" section now charts every ATS source by volume, not just the top 5
- Fix: H&M and NAB were already listed but silently returning no jobs (wrong slug/board); corrected both
- Fix: stop the language backfill from running at server boot (it was crash-looping the API/scraper on deploy); now run out of band
- Market stats: record the snapshot before the scrape so the chart stays fresh even if a scrape tick fails
- Started versioning the apps; pm2 now shows a version for the UI process (was N/A)
- May 20, 2026
- Public /releases changelog page + footer link
- Homepage hero rework: two-panel jobs + chat layout, themed nav, board polish
- Multi-select work-type board filter (remote/hybrid/on-site), end to end
- Consolidated posting body to a single bodyHtml field
- New source: Get on Board, Latin America tech jobs (Chile, Argentina, Peru, Colombia, Mexico) plus remote
- New source: Arbeitsagentur, the German national job board (~1M postings)
- New source: MyCareersFuture, Singapore national job board
- New sources: The Hub (Nordic startups) and NoFluffJobs (Poland tech)
- New source: Gupy, Brazil job aggregator (~1.9k postings/run)
- Removed the defunct Features link from nav and footer
- Seed wave: 28 new international employers (LATAM, Europe, APAC, Africa, Canada)
- Seed wave 2: 41 more international employers across the same regions (incl. GoTo on Workday)
- Seed wave 3: 13 more EU employers across Greenhouse/Ashby/Recruitee/Personio/Workable (Fever, Enpal, Moss, etc.)
- New source: Pinpoint ATS (UK/EU): Rightmove, Abel & Cole, Quantexa
- Market chart: graceful empty-state for sparse history; auto-picks a populated default range
- Market chart footer: fixed cramped readout and right-aligned the range toggle
- May 19, 2026
- Chat + design-system overhaul; Sonnet+Haiku model split, chat paywall
- Chat search: OR semantics, country aliasing, radius via nearCity
- API workspace TypeScript cleanup + JobGlobe theme fix
- May 18, 2026
- Free job posting flow + nav polish
- Mobile-friendly job board: hamburger nav, filter drawer, closable detail
- Cross-level location search in the board filter
- Cover-letter voice selection step in the tailor wizard
- GDPR cookie-consent banner + tracking gate; Hotjar + analytics wiring
- Footer, legal, about pages; shared spinner component
- Social/OG image + sharing meta polish
- May 17, 2026
- Massive job-source expansion: YC, Breezy, PostJobFree, Reed, Findwork, Jooble, Scalis, JazzHR, iCIMS aggregators + ATS auto-discovery sniffer
- Bespoke multi-tenant fetchers: Amazon, Apple, Disney, Oracle, EA, Phenom (CVS, Lowe's, Humana, TEKsystems, PNC, DHL, and more), hundreds of thousands of jobs
- Detail-page body fetching across many sources; reject/cull bodyless postings
- /market skeleton loading state; analytics wiring
- May 16, 2026
- Stripe integration + credits system fixes
- Homepage demo, big content refresh, security-audit docs
- Production infra: adapter-node, Bun runtime for build, PM2 fixes
- May 15, 2026
- Architectural migration to the workspace structure
- Market stats + big job-source update
- May 14, 2026
- Job board, personas, resume tailoring, history
- Claude CLI component + tailoring wizard
- New homepage; large source expansion
- Apr 29, 2026
- Better personas, modals, auth
- Cover-letter template update
- Apr 28, 2026
- First commit: basic app scaffolding