Skip to content

Add Parseable Cloud CTA, adopters section, auto-sync, and frictionless adopter registration#1569

Merged
nitisht merged 4 commits intomainfrom
readme/cloud-cta-and-adopters
Mar 5, 2026
Merged

Add Parseable Cloud CTA, adopters section, auto-sync, and frictionless adopter registration#1569
nitisht merged 4 commits intomainfrom
readme/cloud-cta-and-adopters

Conversation

@Debanitrkl
Copy link
Contributor

@Debanitrkl Debanitrkl commented Mar 4, 2026

Summary

Cloud CTA & Adopters Section

  • Updated README description to explicitly link Parseable Cloud and added a centered call-to-action block
  • Added a new "Adopters" section sourced from USERS.md, showing current adopters with <!-- ADOPTERS:START/END --> markers
  • Added .github/workflows/sync-adopters.yaml to auto-sync USERS.md → README on push to main

Frictionless Adopter Registration (New)

  • Issue Form: Added .github/ISSUE_TEMPLATE/add-adopter.yml — users fill a simple web form (org name, URL, contact, description + authorization checkbox) to request being added as an adopter. No fork needed!
  • Automation Workflow: Added .github/workflows/add-adopter.yaml — when the issue is created with new-adopter label, a GitHub Action parses the form, validates fields, checks for duplicates in USERS.md, and auto-creates a PR. Maintainers just merge.
  • Template Chooser: Added .github/ISSUE_TEMPLATE/config.yml with links to Slack community and docs
  • CLA Allowlist: Added github-actions[bot] to .github/workflows/cla.yaml so bot-created PRs aren't blocked
  • README Update: Changed adopters line to link directly to the issue form: "Add yours here — no fork needed!"

How users add their organization

  1. Go to Issues → New Issue → "Add Adopter"
  2. Fill in: Organization Name, URL, Contact, Description of Use
  3. Check the authorization box and submit
  4. A PR is automatically created — maintainers review and merge
  5. The sync-adopters.yaml workflow updates the README table

Test plan

  • Preview README — verify Cloud CTA and Adopters table render correctly
  • Visit issues/new/choose — verify "Add Adopter" form appears with all fields
  • Submit with valid data — verify PR is created with correct USERS.md row
  • Submit with existing org name (e.g. "HireXL") — verify duplicate detection comments and closes the issue
  • Merge a test PR — verify issue auto-closes and README updates via sync workflow
  • Verify CLA check passes on bot-created PRs

🤖 Generated with Claude Code

Summary by CodeRabbit

  • New Features

    • Added an Adopters section (table) to the README.
    • Added an "Add Adopter" submission flow via issue-based form.
    • Added a promotional "Try Parseable Cloud — Start Free" callout.
  • Chores

    • Automated workflows to process adopter submissions, create PRs, and keep the README adopters table in sync.
    • Updated issue template configuration and CLA allowlist entries.

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Mar 4, 2026

Walkthrough

Adds CI automation and contributor UX for managing adopters: new "Add Adopter" and "Sync Adopters to README" workflows, README updates with ADOPTERS markers and Parseable Cloud promo, plus an issue template/config and a small CLA allowlist tweak.

Changes

Cohort / File(s) Summary
Adopter workflows
.github/workflows/add-adopter.yaml, .github/workflows/sync-adopters.yaml
Adds "Add Adopter" workflow that parses labeled issue forms, validates fields, detects duplicates, creates a branch, commits an updated USERS.md, and opens a PR; adds "Sync Adopters to README" workflow that regenerates a markdown table from USERS.md and replaces content between <!-- ADOPTERS:START --> / <!-- ADOPTERS:END --> in README.md, committing if changed.
Issue templates / config
.github/ISSUE_TEMPLATE/add-adopter.yml, .github/ISSUE_TEMPLATE/config.yml
Introduces an "Add Adopter" issue form with required fields and confirmation checkbox; enables blank issues and adds contact links in template config.
Documentation
README.md
Updates onboarding/hosting links to Parseable Cloud, inserts centered promo callout, and adds ADOPTERS section delimited by markers for automated syncing.
CLA workflow tweak
.github/workflows/cla.yaml
Minor change: extends CLA allowlist to include github-actions[bot].

Sequence Diagram(s)

sequenceDiagram
participant User as Issue Creator
participant GH_Actions as GitHub Actions
participant Repo as Repository (USERS.md)
participant API as GitHub API

User->>GH_Actions: Open issue with "new-adopter" template/label
GH_Actions->>Repo: Checkout main, read USERS.md
GH_Actions->>GH_Actions: Parse & validate fields (org, url, contact, desc)
alt invalid or duplicate
    GH_Actions->>API: Comment on issue, add label (invalid/duplicate), optionally close
else valid & unique
    GH_Actions->>Repo: Create branch, append row to USERS.md, commit
    GH_Actions->>API: Create PR to main
    GH_Actions->>API: Comment on issue with PR URL
end
Loading
sequenceDiagram
participant Push as Push to main (USERS.md)
participant GH_Actions as GitHub Actions
participant Repo as Repository (README.md)
participant Git as Git operations

Push->>GH_Actions: Trigger sync-adopters workflow
GH_Actions->>Repo: Read USERS.md, generate adopters table
GH_Actions->>Repo: Replace content between ADOPTERS markers in README.md
GH_Actions->>Git: Run git diff on README.md
alt README changed
    GH_Actions->>Git: Commit & push README update
end
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

Possibly related PRs

  • update readme #1417 — Overlapping README branding and demo/onboarding link edits (related content changes).

Poem

🐰 I tap the form with fluffy feet,
Names hop in rows so tidy and neat.
From issue to branch and README shine,
I nibble away and keep the list in line. ✨

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately summarizes all major changes in this PR: adding Parseable Cloud CTA, adopters section, auto-sync workflow, and frictionless adopter registration system.
Description check ✅ Passed The PR description is comprehensive, covering all changes with clear sections, user flow explanation, and a detailed test plan, though the required template checklist items are incomplete.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch readme/cloud-cta-and-adopters

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In @.github/workflows/sync-adopters.yaml:
- Around line 46-51: The replacement using re.sub should verify exactly one
block was replaced: switch to re.subn on the readme string with the same pattern
and replacement (keeping rf"\g<1>{table}\g<2>" and flags=re.DOTALL), capture the
(new_readme, count) tuple, then check the count and fail fast (raise an
exception or exit non-zero) if count != 1 so the workflow surfaces missing or
ambiguous ADOPTERS markers; update usages of the original readme variable to use
the new_readme when the count check passes.
- Around line 34-38: The code appends raw org and desc into a Markdown table
which breaks if values contain pipes or newlines; create and call a sanitizer
(e.g., escape_md) to replace "|" with "\|" and convert newlines to "<br>" (or
"\\n") for both org and desc before the rows.append call so rows.append(f"|
{escaped_org} | {escaped_desc} |") is used instead of the current raw variables;
update the logic around the variables named org and desc and add the helper
function near this block to ensure all table cells are escaped.

In `@README.md`:
- Line 20: The introductory sentence in README.md should hyphenate "full-stack"
when used as a compound adjective; update the phrase "Parseable is a full stack
observability platform" to "Parseable is a full-stack observability platform" so
the copy follows standard compound adjective styling.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: fa8abbf4-5c59-437d-b8a5-c53939597490

📥 Commits

Reviewing files that changed from the base of the PR and between 08073d6 and ef9d19e.

📒 Files selected for processing (2)
  • .github/workflows/sync-adopters.yaml
  • README.md

@Debanitrkl Debanitrkl changed the title Add Parseable Cloud CTA, adopters section, and auto-sync workflow Add Parseable Cloud CTA, adopters section, auto-sync, and frictionless adopter registration Mar 4, 2026
Debanitrkl and others added 3 commits March 5, 2026 00:51
- Update README description to link Parseable Cloud (app.parseable.com)
- Add centered Cloud CTA block before YouTube embed
- Add Adopters section (between Features and Verify Images) with
  ADOPTERS:START/END markers, sourced from USERS.md
- Add GitHub Action to auto-sync adopters from USERS.md to README
  on push to main

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Users can now add their organization to the adopters list by simply
filling out a GitHub Issue Form — no fork or PR needed.

How it works:
1. User opens an issue using the "Add Adopter" template
2. Fills in: Organization Name, URL, Contact, and Description of Use
3. A GitHub Action automatically validates the submission, checks for
   duplicates, and creates a PR updating USERS.md
4. Maintainers review and merge the PR — issue auto-closes

Changes:
- Add issue form template (.github/ISSUE_TEMPLATE/add-adopter.yml)
- Add template chooser config with Slack and docs links
- Add add-adopter workflow to automate PR creation
- Add github-actions[bot] to CLA allowlist for bot-created PRs
- Update README adopters section to link to the issue form

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Escape pipe and newline characters in adopter table cells
- Fail fast if ADOPTERS markers are missing or ambiguous in README
- Hyphenate "full-stack" compound adjective in README

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@Debanitrkl Debanitrkl force-pushed the readme/cloud-cta-and-adopters branch from c967dd0 to 5a155fa Compare March 4, 2026 19:22
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In @.github/workflows/add-adopter.yaml:
- Around line 104-105: The PR writes user-supplied orgName, contact and
description directly into a Markdown table row (see newRow construction using
orgName, contactCell, description and then updatedContent), which allows
pipes/newlines to break the table; sanitize these values before composing newRow
by escaping pipe characters ('|') and stripping or replacing newlines in
orgName, contact (used to build contactCell) and description, and ensure the
same sanitization is applied to the other table-insert location that mirrors
this logic (the second occurrence where a row is built and appended). Use the
sanitized variables when building newRow and updatedContent so the table shape
and downstream sync-adopters parsing remain stable.
- Line 74: The current duplicate check uses substring matching
(usersContent.toLowerCase().includes(orgNameLower)) which can false-positive;
instead parse the existing adopters from usersContent into discrete names (and
optionally URLs), normalize each (trim, collapse whitespace, lower-case, strip
punctuation/`www.`/protocol for URLs) and check for exact equality against
orgNameLower. Update the logic that builds the duplicate check (referencing
usersContent and orgNameLower) to iterate the parsedNames array and use
normalizedName === orgNameLower (and/or compare normalized URLs) rather than
includes.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: bdaf6b84-04b3-4109-970c-4f0360be4677

📥 Commits

Reviewing files that changed from the base of the PR and between ef9d19e and 5a155fa.

📒 Files selected for processing (6)
  • .github/ISSUE_TEMPLATE/add-adopter.yml
  • .github/ISSUE_TEMPLATE/config.yml
  • .github/workflows/add-adopter.yaml
  • .github/workflows/cla.yaml
  • .github/workflows/sync-adopters.yaml
  • README.md
✅ Files skipped from review due to trivial changes (2)
  • .github/workflows/cla.yaml
  • .github/ISSUE_TEMPLATE/config.yml
🚧 Files skipped from review as they are similar to previous changes (2)
  • README.md
  • .github/workflows/sync-adopters.yaml

…te check

- Replace demo.parseable.com with app.parseable.com (demo is no longer live)
- Sanitize user-supplied fields (escape pipes, strip newlines) before
  inserting into USERS.md table row
- Improve duplicate detection: parse existing org names from USERS.md
  and do exact match instead of substring includes

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@README.md`:
- Line 20: Replace the verb "checkout" with the correct two-word verb phrase
"check out" in the README sentence that invites users to experience Parseable UI
(the sentence containing "To experience Parseable UI, checkout
[app.parseable.com ↗︎](https://app.parseable.com)"). Update the text so it reads
"To experience Parseable UI, check out [app.parseable.com
↗︎](https://app.parseable.com)".

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 3073ab74-3c67-439e-b456-0d8afa30f632

📥 Commits

Reviewing files that changed from the base of the PR and between 5a155fa and 222a4cc.

📒 Files selected for processing (2)
  • .github/workflows/add-adopter.yaml
  • README.md
🚧 Files skipped from review as they are similar to previous changes (1)
  • .github/workflows/add-adopter.yaml

</div>

Parseable is a full stack observability platform built to ingest, analyze and extract insights from all types of telemetry (MELT) data. You can run Parseable on your local machine, in the cloud, or as a managed service. To experience Parseable UI, checkout [demo.parseable.com ↗︎](https://demo.parseable.com/login).
Parseable is a full-stack observability platform built to ingest, analyze and extract insights from all types of telemetry (MELT) data. You can run Parseable on your local machine, in the cloud, or use [Parseable Cloud](https://app.parseable.com) — the fully managed service. To experience Parseable UI, checkout [app.parseable.com ↗︎](https://app.parseable.com).
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Fix verb form: "check out" (two words).

"checkout" should be "check out" when used as a verb. As a noun or adjective it's one word, but here it's a verb phrase.

✏️ Proposed fix
-Parseable is a full-stack observability platform built to ingest, analyze and extract insights from all types of telemetry (MELT) data. You can run Parseable on your local machine, in the cloud, or use [Parseable Cloud](https://app.parseable.com) — the fully managed service. To experience Parseable UI, checkout [app.parseable.com ↗︎](https://app.parseable.com).
+Parseable is a full-stack observability platform built to ingest, analyze and extract insights from all types of telemetry (MELT) data. You can run Parseable on your local machine, in the cloud, or use [Parseable Cloud](https://app.parseable.com) — the fully managed service. To experience Parseable UI, check out [app.parseable.com ↗︎](https://app.parseable.com).
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@README.md` at line 20, Replace the verb "checkout" with the correct two-word
verb phrase "check out" in the README sentence that invites users to experience
Parseable UI (the sentence containing "To experience Parseable UI, checkout
[app.parseable.com ↗︎](https://app.parseable.com)"). Update the text so it reads
"To experience Parseable UI, check out [app.parseable.com
↗︎](https://app.parseable.com)".

@nitisht nitisht merged commit f403bfb into main Mar 5, 2026
12 checks passed
@nitisht nitisht deleted the readme/cloud-cta-and-adopters branch March 5, 2026 11:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants