core-team-issues: The GitHub repo that turns issue triage into an AI control plane

Twenty split its core-team workflow into a separate repo, then wired @claude into a GitHub Action that dispatches work back to the main codebase.

10 min read • View on GitHub • More from twentyhq

A lone control desk sits between a cluttered pile of issue cards and a distant machine that keeps running smoothly. The scene explains how the repo acts like a relay station, turning messy human requests into a narrow, deliberate handoff.
Twenty's core-team repo behaves less like a backlog and more like a relay station for decisions.

We're building the first open-source alternative to Salesforce.

Felix Malfait, Founder · Twenty blog
Key Takeaways

This repository does not hold product code. It holds decisions. twentyhq/core-team-issues exists so the people building Twenty can keep high-signal work away from the churn of the main CRM repo, then route certain issues straight into an AI-assisted workflow.

A clean room for the people who build the product

Open-source CRMs accumulate two kinds of noise at once: public requests and internal implementation debate. A separate issue repo compresses the second kind into one place, where core maintainers can move faster without dragging every architectural argument through the same backlog that handles user-facing work. That is not just tidier. It makes the repo legible enough for an agent to act on it.

A hedcut-style portrait of Felix Malfait rendered in black ink on white. The portrait is derived from his verified GitHub avatar and serves as a source-backed visual anchor for the project's origin story.

That ambition explains why this tiny repo matters. If Twenty wants to feel like a serious alternative to Salesforce, it needs more than a modern UI and a good data model. It needs an operating model that lets the team move work, not just store it.

How @claude becomes a workflow, not a novelty

The workflow is almost austere. GitHub watches issue events, a script filters for explicit @claude mentions, and the result is sent as a normalized payload to the main Twenty repository. No separate server. No custom queue. Just GitHub Actions turning a mention into a packet.

The key move is not AI inside GitHub. It is GitHub becoming the dispatch layer for AI work.

The important detail is the normalization step. The workflow strips a noisy human conversation down to the fields a downstream agent actually needs: issue number, issue URL, body, sender, and repository name. That is what makes the handoff reliable. The AI does not have to guess what the issue meant because the workflow has already turned context into structure.

A close-up of a sealed envelope being pushed through a narrow slot into a machine while loose notes pile up beside it. The image explains how the workflow packages an issue into a clean JSON payload before handing it off to the main repo.
The important move is not the mention. It is the normalization.

Why assignment matters more than a mention

The most revealing trigger is not a comment. It is assignment. When a task is assigned, the workflow can forward the sender alongside the issue itself, which means the AI is being placed into an explicit chain of accountability rather than a vague chat thread. That is a small design choice with a large cultural effect.

I think you will be able to set up a custom dashboard by the end of the year with such information by using custom layouts and groupBy api which @etiennejouan is working on would allow such a thing ?

prastoin, Core Team Member · Issue #1688

That issue thread shows the repo doing real product work, not just meta-work about the repo itself. It is where the team hashes out feature shape, API direction, and implementation details that would otherwise get buried inside a larger backlog. The separate repo keeps those decisions sharp.

Why this beats one monolithic issue tracker

PatternHow work entersWhat it optimizes for
Issues in the main repoEvery discussion lands where the code lives.Simplicity, but higher noise.
core-team-issuesCore work lands in a separate issue router.Signal, accountability, and AI dispatch.
External bot or serviceWork leaves GitHub and enters another system.Flexibility, but more moving parts.

The tradeoff is obvious. Twenty pays for the clean split with an extra hop and a second permission boundary. But that friction buys isolation, and isolation buys speed when the team wants to iterate on agentic workflows without turning the main codebase into a pilot project.