feat(comparison): add Microsoft Copilot Studio, OpenClaw, Dust, CrewAI, and LangChain#5384
Conversation
…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
|
The latest updates on your projects. Learn more about Vercel for GitHub. |
PR SummaryLow Risk Overview The comparison table gains three rows everywhere profiles support them: sub-workflows, loop / iteration, and vetted first-party integrations ( Fact parsing and copy now treat New SVG brand icons in Reviewed by Cursor Bugbot for commit 652e373. Configure here. |
Greptile SummaryAdds five new "Sim vs Competitor" comparison pages (Microsoft Copilot Studio, OpenClaw, Dust, CrewAI, LangChain) and their supporting brand icons, plus three new fact dimensions (
Confidence Score: 4/5Safe 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 ChangedFlowchart%%{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
%%{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
Reviews (9): Last reviewed commit: "improvement(comparison): cite Sim's own ..." | Re-trigger Greptile |
|
@cursor review |
There was a problem hiding this comment.
✅ 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.
…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.
|
@cursor review |
There was a problem hiding this comment.
✅ 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.
- 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.
|
@cursor review |
|
@cursor review |
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.
|
@cursor review |
There was a problem hiding this comment.
✅ 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).
|
@cursor review |
There was a problem hiding this comment.
✅ 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.
Summary
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 oneType of Change
Testing
tsc --noEmitandbiome checkboth pass cleannext build) completes with zero errors across all 744 pagesChecklist