{"id":"org_uH3VYxn7oiqkfeyIGyF4V","slug":"brex","name":"Brex","domain":"brex.com","description":"Corporate card and spend management platform for growing businesses","category":null,"tags":[],"sourceCount":2,"releaseCount":45,"releasesLast30Days":1,"avgReleasesPerWeek":0.2,"lastFetchedAt":"2026-04-18T13:06:40.350Z","trackingSince":"2021-10-01T00:00:00.000Z","aliases":[],"accounts":[],"products":[],"sources":[{"id":"src_SMlQOcV6upeEQeDXDi0B4","slug":"brex","name":"Brex","type":"scrape","url":"https://www.brex.com/product-announcements","isPrimary":true,"isHidden":false,"fetchPriority":"normal","releaseCount":25,"latestVersion":null,"latestDate":"2025-11-01T00:00:00.000Z","latestAddedAt":"2026-04-18T13:06:39.872Z","productSlug":null,"productName":null},{"id":"src_1V8y0P_RDx-HOrqEAS6P6","slug":"brex-developer-api","name":"Developer API","type":"scrape","url":"https://developer.brex.com/changelog","isPrimary":false,"isHidden":false,"fetchPriority":"low","releaseCount":19,"latestVersion":null,"latestDate":"2026-04-01T00:00:00.000Z","latestAddedAt":"2026-04-13T23:29:02.237Z","productSlug":null,"productName":null}],"overview":null,"knowledgePage":null,"playbook":{"scope":"playbook","content":"# Brex — Playbook\n\n> Agent reference for fetching and maintaining **Brex** (`brex`) changelog sources.\n\n**2** active sources · domain: brex.com\n\n## Sources\n\n| Name | ID | Type | URL | Last Fetched |\n|------|-----|------|-----|--------------|\n| Brex | `src_SMlQOcV6upeEQeDXDi0B4` | scrape | https://www.brex.com/product-announcements | Apr 18 |\n| Developer API | `src_1V8y0P_RDx-HOrqEAS6P6` | scrape | https://developer.brex.com/changelog | Apr 13 |\n\n## Agent Notes\n\n### Fetch instructions\n\n**brex** (primary, scrape + sitemap-seeded crawl)\n- Source URL: `https://www.brex.com/product-announcements`\n- Discovery: Cloudflare crawl API with sitemap seeding. Metadata must include: `crawlEnabled: true`, `crawlSource: \"sitemaps\"`, `crawlPattern: \"https://www.brex.com/product-announcements/**\"`, `crawlRender: false`. CF reads `brex.com/sitemap/sitemap.xml` automatically from robots.txt and enqueues every matching URL.\n- Two release streams flow through this one source:\n  1. **Seasonal rollups** at `/product-announcements/{fall,spring,summer,winter}-release-YYYY` — ~5 pages total, each re-announces 25+ shipped features under themed sections. Classify as `type: rollup`.\n  2. **Individual feature announcements** at `/product-announcements/<slug>` — 160+ dated one-off pages (e.g. `/early-pay`, `/spend-insights`). Classify as `type: feature`.\n- The parser-classifier handles both kinds automatically via the `parsing-changelogs` skill — no source-level signal needed beyond this note.\n\n**brex-developer-api** (scrape, normal priority)\n- Source URL: `https://developer.brex.com/changelog` (no trailing slash, no `/docs/` prefix). An earlier URL `/docs/changelog/` 404s from every client and must not be reused.\n- The page is a JS-rendered SPA — WebFetch sees only the CSS shell but Cloudflare's headless browser renders it correctly. Single-page scrape (no crawl) works fine; the changelog is a dated flat list of ~19 API updates by month.\n- All entries classify as `type: feature` (dated, narrow API changes; no rollup signals).\n\n### Release cadence\n\nBrex ships in two streams on the marketing side, both under `/product-announcements/`:\n\n- **Seasonal rollups** drop ~quarterly (spring / summer / fall). Each rollup anchors a ~quarter-long date range rather than a single moment and re-announces features already shipped individually. **Always classify as `type: rollup`.** Examples: `fall-release-2025`, `summer-release-2025`, `spring-release-2025`, `fall-release-2024`.\n- **Individual feature announcements** drop every 1–2 weeks on average. Narrow, dated, single-change pages — **classify as `type: feature`**. Examples: `early-pay`, `spend-insights`, `guided-reviews`, `smart-rules-suggestions`, `varied-access-by-role-type`.\n\nThe developer API changelog (`brex-developer-api`) is a separate, dev-focused stream with a ~monthly cadence of dated entries. All features, no rollups.\n\nDo not set a source-level rollup override on the primary source — both kinds coexist and the per-page classifier is authoritative.\n\n### Traps\n\n- **Index page returns empty under headless rendering**: `https://www.brex.com/product-announcements` returns no content from Cloudflare's headless browser. `curl` gets static HTML fine. Any fetch strategy that depends on rendering the index page (including single-page `scrape` fallback) will return 0 rows. The working path is sitemap-seeded crawl with `crawlRender: false`. Do not \"fix\" this by flipping `renderRequired: true` or removing `crawlRender: false` from metadata — it will make every fetch slow (or time out) because all 170 sitemap URLs get rendered in a headless browser.\n- **Metadata editing overwrites unspecified keys**: the `PATCH /v1/sources/:slug` endpoint replaces the entire metadata JSON with what you send. When editing brex metadata via curl, always include the full object (`crawlEnabled`, `crawlSource`, `crawlPattern`, `crawlRender: false`, `renderRequired: false`) or you'll silently drop the render hint and the next fetch will time out.\n- **brex-developer-api old URL**: `https://developer.brex.com/docs/changelog/` 404s even though Google still indexes it. The working URL is `https://developer.brex.com/changelog`. Don't revert.\n- **Short rollup content for Summer Release 2025**: the row currently has only 120 chars of content vs 2400–3000 for the other rollups. Re-fetch does not repair it because URL-based dedup skips the existing row. To fix: delete that specific row via the API (or use `releases fetch brex --force` to wipe and re-parse all rows, at AI cost). Low priority — known quirk.\n- **Cloudflare crawl poll timeout**: `pollCrawlResults` has a 5-minute hard timeout. With `crawlRender: true` and `--max > ~20`, the poll gives up before CF finishes. Keep `crawlRender: false` and `--max` reasonable (≤30) unless the adapter timeout is raised.\n\n### Coverage\n\n**brex** is canonical for Brex's marketing-side product releases — both seasonal rollups and individual feature announcements. Sitemap-seeded crawl can cover the full 160+ feature pages + ~5 seasonal rollups; current state is ~10 rows after initial backfill. Run `releases fetch brex --max 30` periodically to pull in new releases as they're added to the sitemap. The blog at `brex.com/journal` is marketing/editorial — do not track it.\n\n**brex-developer-api** is canonical for the Brex REST API changelog. Single-page scrape, ~19 rows. Fetch on cadence; incremental parse handles new entries cheaply.\n","updatedAt":"2026-04-18T13:06:40.548Z"}}