Skip to content

feat(comparison): add Microsoft Copilot Studio, OpenClaw, Dust, CrewAI, and LangChain#5384

Merged
waleedlatif1 merged 7 commits into
stagingfrom
worktree-add-ms-copilot
Jul 3, 2026
Merged

feat(comparison): add Microsoft Copilot Studio, OpenClaw, Dust, CrewAI, and LangChain#5384
waleedlatif1 merged 7 commits into
stagingfrom
worktree-add-ms-copilot

Conversation

@waleedlatif1

Copy link
Copy Markdown
Collaborator

Summary

  • 5 new "Sim vs Competitor" pages, bringing the total to 20: Microsoft Copilot Studio, OpenClaw, Dust, CrewAI, LangChain
  • Each has ~58 independently sourced facts, standout features, and limitations, researched against the vendor's own docs/pricing/GitHub
  • New brand icons: MicrosoftCopilotIcon, OpenClawIcon, DustIcon, LangChainIcon, CrewAIIcon
  • OpenClaw, CrewAI, and LangChain are marked isWorkflowBuilder: false (personal agent runtime / code-first frameworks, not visual builders), so their FAQ asks a category-clarifying question instead of a peer feature-gap one

Type of Change

  • New feature

Testing

  • tsc --noEmit and biome check both pass clean
  • Production build (next build) completes with zero errors across all 744 pages
  • Independent tone audit (no over-praising competitors, no unflattering Sim framing) — clean
  • Fresh accuracy re-verification pass: 50 highest-stakes facts across all 5 new profiles independently re-checked against live sources — all confirmed, zero mismatches
  • Manually verified rendering of all 5 new detail pages (200s, correct icons, correct JSON-LD, correct FAQ text)

Checklist

  • Code follows project style guidelines
  • Self-reviewed my changes
  • Tests added/updated and passing
  • No new warnings introduced
  • I confirm that I have read and agree to the terms outlined in the Contributor License Agreement (CLA)

…I, and LangChain

- 5 new "Sim vs Competitor" profiles (now 20 total), each with ~58
  independently sourced facts, standout features, and limitations,
  researched against each vendor's own docs/pricing/GitHub
- New brand icons: MicrosoftCopilotIcon, OpenClawIcon, DustIcon,
  LangChainIcon, CrewAIIcon
- isWorkflowBuilder: false for OpenClaw, CrewAI, and LangChain since
  they're a personal agent runtime and code-first frameworks rather
  than visual workflow builders, so their FAQ asks a
  category-clarifying question instead of a peer feature-gap one
- Independent tone audit (no over-praising competitors, no unflattering
  Sim framing) and a fresh accuracy re-verification pass (50 highest-
  stakes facts across all 5 profiles, all confirmed against live
  sources) both came back clean
@vercel

vercel Bot commented Jul 3, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
Project Deployment Actions Updated (UTC)
docs Skipped Skipped Jul 3, 2026 6:19pm

Request Review

@cursor

cursor Bot commented Jul 3, 2026

Copy link
Copy Markdown

PR Summary

Low Risk
Landing-page comparison data and icons only; no runtime product, auth, or data-path changes.

Overview
Adds Sim vs pages for Microsoft Copilot Studio, OpenClaw, Dust, CrewAI, and LangChain, each backed by large sourced CompetitorProfile datasets, exports from lib/compare/data, and registration in ALL_COMPETITORS. OpenClaw, CrewAI, and LangChain set isWorkflowBuilder: false so FAQs can clarify they are not visual workflow builders like Sim.

The comparison table gains three rows everywhere profiles support them: sub-workflows, loop / iteration, and vetted first-party integrations (thirdPartyVetting). Existing profiles (e.g. Claude Cowork, Flowise, Gumloop) are filled in for those keys where the diff shows updates.

Fact parsing and copy now treat Yes, / No, like Yes: / No: in parseFactValue and FAQ summarizeFact. FAQ intro text uses ensurePeriod(competitor.oneLiner) instead of lowercasing the one-liner, and lowercaseFirst skips CamelCase brand words (LangChain, CrewAI, etc.).

New SVG brand icons in components/icons.tsx for the five additions.

Reviewed by Cursor Bugbot for commit 652e373. Configure here.

Comment thread apps/sim/components/icons.tsx
@greptile-apps

greptile-apps Bot commented Jul 3, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

Adds five new "Sim vs Competitor" comparison pages (Microsoft Copilot Studio, OpenClaw, Dust, CrewAI, LangChain) and their supporting brand icons, plus three new fact dimensions (subWorkflows, loopIteration, thirdPartyVetting) backfilled across all 15 existing competitor profiles and the Sim reference profile.

  • Data additions: Each new competitor profile supplies ~58 independently-sourced facts (standout features, limitations, and a full ComparisonFacts object). OpenClaw, CrewAI, and LangChain are flagged isWorkflowBuilder: false, which adds a category-clarifying FAQ to their comparison pages.
  • Code fixes bundled in: the lowercaseFirst helper is widened from "2+ consecutive capitals at start" to "2+ uppercase letters anywhere in leading word" to avoid mangling CamelCase brands like "LangChain" and "OpenClaw"; the parseFactValue / summarizeFact regexes now accept a comma separator (Yes, … / No, …) for fact values that already existed in pipedream.ts and stackai.ts; and the FAQ Q1 answer drops the now-redundant ${name} is … prefix (all oneLiners are self-contained sentences that already start with the product name).
  • Icons: LangChainIcon, CrewAIIcon, and OpenClawIcon are pure SVG paths using currentColor; MicrosoftCopilotIcon and OpenClawIcon use useId-scoped gradient IDs following the same pattern already established for MicrosoftTeamsIcon and others in the file. DustIcon is the only icon that deviates from the SVG-path convention (see the outstanding outside-diff comment).

Confidence Score: 4/5

Safe to merge with one outstanding cosmetic issue in icons.tsx: the DustIcon uses an embedded base64 JPEG rather than SVG paths, making it unresponsive to CSS theming and heavier than necessary.

The DustIcon renders a raster JPEG inside an SVG image element. Every other icon in the file is a pure SVG path that responds to fill='currentColor', so the Dust icon will not follow dark/light theme context and adds unnecessary bytes to the bundle. The fix is straightforward (replace with SVG paths), but until it is addressed the icon will not behave consistently with the rest of the icon set.

apps/sim/components/icons.tsx — specifically the DustIcon implementation.

Important Files Changed

Filename Overview
apps/sim/components/icons.tsx Adds LangChainIcon, CrewAIIcon (both pure SVG paths with currentColor), OpenClawIcon and MicrosoftCopilotIcon (both using useId-scoped gradients, matching the existing MicrosoftTeamsIcon pattern). DustIcon deviates from every other icon by embedding a base64 JPEG in an SVG element—it won't respond to CSS color context and adds raster bytes to the bundle (flagged in an earlier outside-diff comment).
apps/sim/app/(landing)/comparison/utils.ts Three coordinated fixes: (1) FAQ Q1 drops the double-name regression by removing the redundant ${name} is prefix; (2) lowercaseFirst now handles CamelCase brands by counting all uppercase letters in the leading word rather than only consecutive leading caps; (3) summarizeFact regex widened to strip "Yes," / "No," comma separators. All three are correct.
apps/sim/app/(landing)/comparison/fact-status.ts STATUS_PREFIX regex updated to accept "Yes,"/"No," (comma separator) in addition to "Yes:"/"No:" (colon). Fixes existing values in pipedream.ts and stackai.ts that were previously parsed with a leading ", " in their rest text.
apps/sim/lib/compare/data/types.ts Adds three new required Fact fields—builderExperience.subWorkflows, aiBehavior.loopIteration, governance.thirdPartyVetting—with JSDoc explaining the distinction each captures. All 15 existing competitor profiles and sim.ts were updated to satisfy the TypeScript interface.
apps/sim/lib/compare/data/competitors/microsoft-copilot.ts New 1258-line profile for Microsoft Copilot Studio with 5 standout features, 5 limitations, and full ComparisonFacts. All three new fields (subWorkflows, loopIteration, thirdPartyVetting) are present and sourced.
apps/sim/lib/compare/data/competitors/openclaw.ts New profile for OpenClaw (isWorkflowBuilder: false) with 6 standout features, 5+ limitations, and full ComparisonFacts including all three new fields.
apps/sim/app/(landing)/comparison/comparison-sections.ts Adds three new comparison-table row definitions for subWorkflows, thirdPartyVetting, and loopIteration, correctly placed within their respective section definitions.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    subgraph Data["Competitor Data Layer"]
        CP["CompetitorProfile\n(5 new + 15 updated)"]
        SF["standoutFeatures[]"]
        LM["limitations[]"]
        FA["ComparisonFacts\n(+subWorkflows, loopIteration,\nthirdPartyVetting)"]
    end

    subgraph Util["utils.ts — Page Assembly"]
        FAQ["buildComparisonFaqs()\nQ1: ensurePeriod(oneLiner)\nQ9: isWorkflowBuilder===false"]
        KD["buildKeyDifferenceAnswer()\nformatClaim → lowercaseFirst"]
        RS["summarizeFact()\nstrips Yes:/No: or Yes,/No,"]
        CH["buildChoiceGuidance()"]
    end

    subgraph Parse["fact-status.ts"]
        PF["parseFactValue()\nregex: /^(Yes|No)(?!\\w)(?:[:,]\\s*)?(.*)$/s"]
    end

    subgraph Sections["comparison-sections.ts"]
        SEC["COMPARISON_SECTIONS\n(+subWorkflows row)\n(+thirdPartyVetting row)\n(+loopIteration row)"]
    end

    subgraph Icons["icons.tsx"]
        IC1["LangChainIcon — SVG path"]
        IC2["CrewAIIcon — SVG path"]
        IC3["OpenClawIcon — SVG gradient (useId)"]
        IC4["MicrosoftCopilotIcon — SVG gradient (useId)"]
        IC5["DustIcon — SVG image/JPEG ⚠️"]
    end

    CP --> SF & LM & FA
    FA -->|fact values| PF
    CP --> FAQ & KD & CH
    FA -->|fact values| RS
    RS --> FAQ
    KD --> FAQ
    SEC -->|row keys| FA
    Icons -->|brand.icon| CP
    FAQ -->|rendered| PAGE["Comparison Page\n/comparison/[slug]"]
    SEC -->|table rows| PAGE
    KD --> PAGE
    CH --> PAGE
Loading
%%{init: {'theme': 'base', 'themeVariables': {"darkMode": true, "background": "#0d1117", "primaryColor": "#21262d", "primaryTextColor": "#e6edf3", "primaryBorderColor": "#8b949e", "lineColor": "#8b949e", "textColor": "#e6edf3", "edgeLabelBackground": "#161b22", "actorBkg": "#21262d", "actorBorder": "#8b949e", "actorTextColor": "#e6edf3", "actorLineColor": "#8b949e", "signalColor": "#8b949e", "signalTextColor": "#e6edf3", "noteBkgColor": "#373320", "noteBorderColor": "#d4a72c", "noteTextColor": "#f0e6c0", "labelBoxBkgColor": "#21262d", "labelBoxBorderColor": "#8b949e", "labelTextColor": "#e6edf3", "loopTextColor": "#e6edf3", "activationBkgColor": "#30363d", "activationBorderColor": "#8b949e"}}}%%
flowchart TD
    subgraph Data["Competitor Data Layer"]
        CP["CompetitorProfile\n(5 new + 15 updated)"]
        SF["standoutFeatures[]"]
        LM["limitations[]"]
        FA["ComparisonFacts\n(+subWorkflows, loopIteration,\nthirdPartyVetting)"]
    end

    subgraph Util["utils.ts — Page Assembly"]
        FAQ["buildComparisonFaqs()\nQ1: ensurePeriod(oneLiner)\nQ9: isWorkflowBuilder===false"]
        KD["buildKeyDifferenceAnswer()\nformatClaim → lowercaseFirst"]
        RS["summarizeFact()\nstrips Yes:/No: or Yes,/No,"]
        CH["buildChoiceGuidance()"]
    end

    subgraph Parse["fact-status.ts"]
        PF["parseFactValue()\nregex: /^(Yes|No)(?!\\w)(?:[:,]\\s*)?(.*)$/s"]
    end

    subgraph Sections["comparison-sections.ts"]
        SEC["COMPARISON_SECTIONS\n(+subWorkflows row)\n(+thirdPartyVetting row)\n(+loopIteration row)"]
    end

    subgraph Icons["icons.tsx"]
        IC1["LangChainIcon — SVG path"]
        IC2["CrewAIIcon — SVG path"]
        IC3["OpenClawIcon — SVG gradient (useId)"]
        IC4["MicrosoftCopilotIcon — SVG gradient (useId)"]
        IC5["DustIcon — SVG image/JPEG ⚠️"]
    end

    CP --> SF & LM & FA
    FA -->|fact values| PF
    CP --> FAQ & KD & CH
    FA -->|fact values| RS
    RS --> FAQ
    KD --> FAQ
    SEC -->|row keys| FA
    Icons -->|brand.icon| CP
    FAQ -->|rendered| PAGE["Comparison Page\n/comparison/[slug]"]
    SEC -->|table rows| PAGE
    KD --> PAGE
    CH --> PAGE
Loading

Reviews (9): Last reviewed commit: "improvement(comparison): cite Sim's own ..." | Re-trigger Greptile

Comment thread apps/sim/lib/compare/data/competitors/microsoft-copilot.ts
@waleedlatif1

Copy link
Copy Markdown
Collaborator Author

@greptile

@waleedlatif1

Copy link
Copy Markdown
Collaborator Author

@cursor review

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

✅ Bugbot reviewed your changes and found no new issues!

Comment @cursor review or bugbot run to trigger another review on this PR

Reviewed by Cursor Bugbot for commit 26685f8. Configure here.

@waleedlatif1

Copy link
Copy Markdown
Collaborator Author

@greptile

…al audit

- lowercaseFirst only guarded against 2+ CONSECUTIVE leading capitals
  (acronyms like "AI"/"SSO"), so CamelCase brand names with a single
  leading capital (LangChain, OpenClaw, CrewAI) got their first letter
  wrongly lowercased ("langChain provides..."). Now checks for 2+
  uppercase letters anywhere in the leading word, which covers both
  acronyms and CamelCase brand names.
- parseFactValue and summarizeFact's boolean-prefix stripping only
  recognized "Yes:"/"No:" (colon), but "Yes, ..."/"No, ..." (comma) is
  an equally common phrasing already used across ~15 existing facts
  (stackai, pipedream, workato, zapier, etc.), so those facts kept
  their leading comma when stitched into an FAQ answer (e.g. "StackAI:
  , broad support..."). Both now accept either separator.

Found by systematically sweeping every "Sim vs X" FAQ answer across
all 20 competitor pages for garbled/mis-cased text, not just the 5
newly added ones.
@waleedlatif1

Copy link
Copy Markdown
Collaborator Author

@greptile

@waleedlatif1

Copy link
Copy Markdown
Collaborator Author

@cursor review

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

✅ Bugbot reviewed your changes and found no new issues!

Comment @cursor review or bugbot run to trigger another review on this PR

Reviewed by Cursor Bugbot for commit d466ba0. Configure here.

@waleedlatif1

Copy link
Copy Markdown
Collaborator Author

@greptile

- Two new universal comparison facts across all 20 profiles:
  subWorkflows (calling a saved workflow as a reusable step inside
  another) and loopIteration (a dedicated sequential for-each/while
  loop container, distinct from concurrent Parallel execution)
- Both are real Sim capabilities (Workflow block, Loop block) verified
  directly against the codebase and docs.sim.ai
- Findings are genuinely mixed, not uniformly favorable: n8n, Zapier,
  Make, Workato, Retool, Power Automate, Gumloop, Vellum, Stack AI,
  Tines, Langflow, Flowise, Microsoft Copilot Studio, and LangChain all
  have some form of sub-workflow calling; Zapier and Gumloop's loop
  primitives run concurrently rather than sequentially (marked
  "Partial", not "No"); Pipedream, OpenAI AgentKit, Claude Cowork,
  CrewAI, Dust, and OpenClaw genuinely lack one or both
New universal comparison fact across all 20 profiles: thirdPartyVetting,
whether a platform's integrations/tools/skills come from a vetted
first-party catalog vs. an open marketplace where any third party can
publish executable code with lighter or no vendor security review.

Directly relevant given OpenClaw's ClawHub marketplace has documented
incidents (283 skills, ~7.1% of the registry, found leaking credentials;
24 accounts distributing 600+ malicious skills before scanning existed).

Findings are honest and mixed, not uniformly favorable: Gumloop, Retool,
and Tines are first-party-only like Sim (marked "Yes"); n8n, Zapier,
Make, Workato, and OpenAI AgentKit have partial vetting on an open or
semi-open ecosystem; Pipedream and OpenClaw are open marketplaces with
documented security incidents.
@waleedlatif1

Copy link
Copy Markdown
Collaborator Author

@greptile

@waleedlatif1

Copy link
Copy Markdown
Collaborator Author

@cursor review

@waleedlatif1

Copy link
Copy Markdown
Collaborator Author

@greptile

@waleedlatif1

Copy link
Copy Markdown
Collaborator Author

@cursor review

Comment thread apps/sim/app/(landing)/comparison/utils.ts
Independently re-verified the cited Hacker News article: the primary
malicious package had 4,241 downloads listed (not "3,400 weekly" as
previously written, a number not actually supported by the source).
Every competitor's oneLiner is already a complete "{Name} is ..."
sentence, so prepending "${name} is " before it was always redundant.
Before this session's lowercaseFirst fix, the duplication rendered in
mixed case ("Zapier is zapier is a cloud-based...") and was easy to
miss; the CamelCase-name fix made it fully literal and obvious
("CrewAI is CrewAI is..."), which is what Cursor Bugbot caught.

Fixed by using the oneLiner directly (via ensurePeriod) instead of
re-prepending the name. Verified fixed across all 20 pages via live
curl, not just the CrewAI case Cursor flagged.
@waleedlatif1

Copy link
Copy Markdown
Collaborator Author

@greptile

@waleedlatif1

Copy link
Copy Markdown
Collaborator Author

@cursor review

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

✅ Bugbot reviewed your changes and found no new issues!

Comment @cursor review or bugbot run to trigger another review on this PR

Reviewed by Cursor Bugbot for commit 0a9b777. Configure here.

Added docs.sim.ai citations (Roles and Permissions, BYOK, Debugging
retrieval, Function block) as primary sources for rbac, byok,
kbChunkVisibility, and customCodeSteps, which previously cited only
GitHub source code with no user-facing documentation reference.
Verified all 4 doc URLs resolve (200).
@waleedlatif1

Copy link
Copy Markdown
Collaborator Author

@greptile

@waleedlatif1

Copy link
Copy Markdown
Collaborator Author

@cursor review

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

✅ Bugbot reviewed your changes and found no new issues!

Comment @cursor review or bugbot run to trigger another review on this PR

Reviewed by Cursor Bugbot for commit 652e373. Configure here.

@waleedlatif1 waleedlatif1 merged commit 0cc290e into staging Jul 3, 2026
18 checks passed
@waleedlatif1 waleedlatif1 deleted the worktree-add-ms-copilot branch July 3, 2026 18:29
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.

1 participant