{"id":47805949,"url":"https://github.com/sjnims/intacct-release-notes","last_synced_at":"2026-04-03T17:37:49.016Z","repository":{"id":337088611,"uuid":"1152276535","full_name":"sjnims/intacct-release-notes","owner":"sjnims","description":"Searchable markdown archive of Sage Intacct release notes with AI-generated executive summaries","archived":false,"fork":false,"pushed_at":"2026-03-23T23:20:13.000Z","size":1650,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-03-24T21:16:25.849Z","etag":null,"topics":["ai-summary","anthropic-claude","erp","executive-summary","markdown","playwright","release-notes","sage-intacct","web-scraping"],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"isc","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sjnims.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-02-07T16:31:24.000Z","updated_at":"2026-03-23T23:20:16.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/sjnims/intacct-release-notes","commit_stats":null,"previous_names":["sjnims/intacct-release-notes"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/sjnims/intacct-release-notes","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sjnims%2Fintacct-release-notes","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sjnims%2Fintacct-release-notes/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sjnims%2Fintacct-release-notes/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sjnims%2Fintacct-release-notes/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sjnims","download_url":"https://codeload.github.com/sjnims/intacct-release-notes/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sjnims%2Fintacct-release-notes/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31366371,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-03T17:13:05.644Z","status":"ssl_error","status_checked_at":"2026-04-03T17:13:04.413Z","response_time":107,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai-summary","anthropic-claude","erp","executive-summary","markdown","playwright","release-notes","sage-intacct","web-scraping"],"created_at":"2026-04-03T17:37:47.743Z","updated_at":"2026-04-03T17:37:48.996Z","avatar_url":"https://github.com/sjnims.png","language":"JavaScript","readme":"# Sage Intacct Release Notes\n\nSearchable, version-controlled markdown archive of [Sage Intacct](https://www.intacct.com/) release notes scraped from intacct.com, with AI-generated executive summaries.\n\nSage Intacct publishes quarterly release notes as HTML pages. This tool extracts them into clean markdown files with YAML frontmatter, then uses Claude to generate executive-level summaries organized by impact category.\n\n## What's included\n\n**714 pages** across 9 quarterly releases, 3 \"hidden gems\" recaps, and a release calendar:\n\n| Release | Pages | Coverage                           |\n| ------- | ----: | ---------------------------------- |\n| 2024-R1 |    66 | Quarterly release (2024 Release 1) |\n| 2024-R2 |    70 | Quarterly release (2024 Release 2) |\n| 2024-R3 |    77 | Quarterly release (2024 Release 3) |\n| 2024-R4 |    83 | Quarterly release (2024 Release 4) |\n| 2025-R1 |    86 | Quarterly release (2025 Release 1) |\n| 2025-R2 |    94 | Quarterly release (2025 Release 2) |\n| 2025-R3 |    94 | Quarterly release (2025 Release 3) |\n| 2025-R4 |    71 | Quarterly release (2025 Release 4) |\n| 2026-R1 |    69 | Quarterly release (2026 Release 1) |\n\nPlus standalone pages: `hidden-gems-2023.md`, `hidden-gems-2024.md`, `hidden-gems-2025.md`, `2026-calendar.md`\n\nEach quarterly release also has an AI-generated **executive summary** and each year has an **annual rollup** in `docs/\u003cyear\u003e/summaries/`.\n\n## Output format\n\nEach page becomes a markdown file with YAML frontmatter:\n\n```yaml\n---\nsource: https://www.intacct.com/ia/docs/en_US/releasenotes/2025/2025_Release_4/2025-R4-home.htm\nrelease: 2025-R4\nextracted: 2026-02-07\ntitle: \"2025 R4 Release Notes\"\n---\n```\n\nQuarterly releases are organized into directories by module:\n\n```text\n2025-R4/\n  index.md                              # Release overview\n  manifest.json                         # URL-to-file mapping\n  1-regional-updates/australia.md       # Regional updates\n  accounts-payable/...                  # AP features\n  general-ledger/...                    # GL features\n  platform-services/...                 # API/platform features\n  ...\n```\n\nStandalone pages (hidden gems, calendar) live in the year root directory.\n\nExecutive summaries use BLUF (Bottom Line Up Front) format with impact categories:\n\n```yaml\n---\nsource: generated\nrelease: 2025-R4\ngenerated: 2026-02-07\ngenerator: claude-opus-4-6\ntype: executive-summary\n---\n```\n\n## Setup\n\nRequires Node.js 20.6+ (for `--env-file` support).\n\n```bash\nnpm install\nnpx playwright install chromium\n```\n\nFor summarization, copy `.env.example` to `.env` and add your [Anthropic API key](https://console.anthropic.com/):\n\n```bash\ncp .env.example .env\n# Edit .env with your key\n```\n\n## Usage\n\nThe extractor has two phases: **discover** (find all sub-pages) and **extract** (convert to markdown).\n\n```bash\n# Extract a single release\nnode extract.mjs discover 2025-R4     # Scrape home page, write manifest.json\nnode extract.mjs extract 2025-R4      # Convert each page to markdown\n\n# Re-extract even if files already exist\nnode extract.mjs extract 2025-R4 --force\n\n# Discover + extract all releases at once\nnode extract.mjs all\n```\n\nAvailable release IDs: `2024-R1` through `2025-R4`, `2026-R1`, `hidden-gems-2023`, `hidden-gems-2024`, `hidden-gems-2025`, `2026-calendar`.\n\nStandalone releases (hidden gems, calendar) skip the discover phase and extract directly.\n\n### Summarization\n\nGenerates executive summaries from each release's index page using Claude Opus 4.6.\n\n```bash\n# Summarize a single release\nnpm run summarize -- 2025-R4\n\n# Generate an annual rollup (creates missing per-release summaries first)\nnpm run summarize:year -- 2025\n\n# Summarize all releases and years\nnpm run summarize:all\n\n# Re-generate even if files exist\nnpm run summarize -- 2025-R4 --force\n```\n\nPer-release summaries are organized by executive impact: Breaking Changes \u0026 Deprecations, Action Required, New Capabilities, AI \u0026 Automation, Early Adopter Opportunities, Platform \u0026 API Changes, and Minor Enhancements. Empty categories are omitted. Annual summaries synthesize across quarters into Key Themes, Most Significant Changes, Items Requiring Attention, and What to Watch.\n\n## Adding a new release\n\nAdd an entry to the `RELEASES` object in `lib/config.mjs`:\n\n```js\n'2026-R2': { year: '2026', dir: '2026_Release_2', home: '2026-R2-home.htm' },\n```\n\nThen run:\n\n```bash\nnode extract.mjs discover 2026-R2 \u0026\u0026 node extract.mjs extract 2026-R2\n```\n\nFor preview/upcoming releases, add `preview: true` (uses `preview.intacct.com`).\nFor standalone single-page content, add `standalone: true, dir: null`.\n\n## How it works\n\nTwo scripts: `extract.mjs` for scraping (using [Playwright](https://playwright.dev/) and [Turndown](https://github.com/mixmark-io/turndown)) and `summarize.mjs` for AI summarization (using the [Anthropic SDK](https://github.com/anthropics/anthropic-sdk-typescript)).\n\n1. **Discover** -- Opens a release home page in headless Chromium, collects all sub-page links from the content area and sidebar navigation, and writes a `manifest.json` mapping URLs to output filenames.\n\n2. **Extract** -- Reads the manifest, visits each page, strips boilerplate (sidebar, footer, breadcrumbs, TOC, \"Related help topics\"), converts HTML tables to markdown tables in-browser (because Turndown's node objects don't support DOM methods like `querySelectorAll`), then runs Turndown on the cleaned HTML. Waits 300ms between requests.\n\n3. **Summarize** -- Reads each release's `index.md` (the overview page with the full feature table), sends it to Claude Opus 4.6 with a structured prompt, and writes the summary to `docs/\u003cyear\u003e/summaries/`. Annual summaries use a map-reduce pattern: read the per-release summaries, then synthesize across quarters.\n\n## Linting and formatting\n\n```bash\nnpm run lint            # ESLint + markdownlint\nnpm run lint:js         # ESLint only\nnpm run lint:md         # markdownlint only\nnpm run format          # Prettier (write)\nnpm run format:check    # Prettier (check)\n```\n\n## License\n\nISC\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsjnims%2Fintacct-release-notes","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsjnims%2Fintacct-release-notes","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsjnims%2Fintacct-release-notes/lists"}