Solutions · Marketing

It sounds like you because your voice is a file it has to read.

The reason AI copy reads like AI copy is that nothing told it how you write. Here, the voice, the claims you are allowed to make and the words you never use live in your repo as a skill — versioned, reviewed, and loaded into every session before a word is written.

The voice is a file · the claims are a file · every draft is a diff

Voice lives in
A skill file in your repo
Every session
Reads it before writing
Lands as
A draft in a change request
Improves by
Editing the file, not re-prompting
The handoff

The production line, not the idea.

The strategy is not the bottleneck. The bottleneck is that one positioning decision turns into nine assets, and by the third one the register has drifted and nobody has time to notice.

  1. 01

    One decision, all nine assets

    A launch note, the page section, the changelog entry, the social copy, the email. Written from the same source of truth in one session, so they agree with each other — which is usually the actual failure, not the quality of any single one.

  2. 02

    The content brief with the research already done

    What has been published on the subject, what your own site already says about it, what you have said before that this would contradict. The brief starts from what exists rather than from a blank page.

  3. 03

    The claim audit across your own site

    It reads every page and finds where the copy claims something the product does not do, or says it three different ways. This is the job nobody schedules and everybody needs, and it is a diff when it is done.

  4. 04

    The competitive watch, without the manufactured finding

    A scheduled session reads what has publicly changed and reports what is genuinely new — and says plainly when nothing is. A weekly digest that invents a headline every week gets muted by week five.

  5. 05

    One long piece into the formats it should have been

    The talk becomes a post, the post becomes the thread, the thread becomes the email. Each one written for its surface rather than the same text pasted four times with the line breaks moved.

  6. 06

    The campaign read-out

    It pulls what ran and what happened, writes the honest version including the parts that did not work, and drafts what it would change. Attribution stays a judgement call — it presents the numbers, it does not decide what caused them.

The output

A draft on a branch, reviewed as a diff.

Marketing work is normally reviewed by pasting a document into a comment thread and losing track of which version won. Here every draft is a commit, so the review is a diff and the history is real.

content/launch/2026-07-scheduled-sessions.mdDocument

Scheduled sessions — launch note draft

Voice
skills/voice/SKILL.md
Claims
skills/claims/SKILL.md
Status
Draft · for review
Flagged
2 claims, unverified

A trigger fires at 07:00. A session starts, does the work on its own machine, and opens a change request before anyone is at a desk. That is the whole feature.

Two lines in this draft are flagged, not written: a throughput figure and a comparison to a competitor’s scheduling. Neither traces to a source in the repo, so the agent left the claim marked rather than filling the sentence in.

Banned by the voice file and therefore absent: “seamless”, “unlock”, “revolutionary”, and every superlative except the one form the file permits.

Illustration. The paths are the real shape of a Kortix project, the copy is fictional.

The voice is code, so fixing it is a commit

When a draft comes back wrong, you edit the skill file, not the prompt. Every future session in every project that loads that skill inherits the correction — and you can see in the history exactly when the register changed.

It flags what it cannot substantiate

A claims file lists what you are allowed to say and what needs a source. An agent that hits an unsupported claim marks it rather than writing a confident sentence — which is the single most useful behaviour you can configure in this function.

Review is a diff, not a comment thread

Two drafts of the same page are two commits. What changed between them is a diff you can read in ten seconds, instead of a document with eleven suggestion bubbles and no clear current version.

Where it reaches

Where the words live, and where they have to go.

Connect each source once for the whole project. The raw credential is decrypted on our side and attached to the outbound call — it never lands in the machine the model is driving.

Notion and Google Drive
The brief, the positioning doc, the six months of decisions nobody wrote down anywhere else. It reads them as prior art before it writes, and puts the finished draft back where the team looks.
GitHub
If your site is a repo, the copy is code — and a copy change is a change request with a preview, reviewed exactly like a code change, by whoever owns the words.
Your email and campaign tools
The marketing stack is broad and the Easy connect catalogue is where most of it is: click the app, click through its OAuth screen, done. Sending is an action you can set to Ask so nothing reaches a list without a person.
Google Sheets
The campaign tracker, the keyword sheet, the calendar the whole team actually edits. It reads them as input and writes the read-out back into them.
Slack
The one live channel. Ask for the variant in the thread where the launch is being argued about, and the draft comes back into that thread as a file.

Easy connect covers 3,000+ apps through their own OAuth screens. Where a tool is not in the catalogue, it is reachable through OpenAPI, a Postman collection, GraphQL, raw HTTP or a remote MCP server — the same three-minute setup, one step less magic.

How it runs

Draft it now. Never let it send by itself.

The same session machinery started three ways. In marketing the automated mode is the one to be most careful with, because the output is public.

  1. 01On demand

    "Give me the four variants"

    Ask in a thread and the session reads the source, the voice file and the claims file, then comes back with the drafts in the same thread.

  2. 02Human-assisted

    It stops before anything is published

    Set the publish and send actions to Ask. The run pauses at the call with the exact payload in front of you — the list, the subject, the body — and resumes from that point when you approve.

  3. 03Automated

    Research on a schedule, publishing never

    Run the competitive watch and the claim audit on a cron and let them land as change requests. Automating the reading is a clear win; automating the publishing is how a wrong claim goes out at 03:00 with nobody awake.

Control

Nothing published, nothing claimed, without a person.

Marketing is where an autonomous mistake is permanent and public. State the defaults precisely rather than reassuringly.

Approval gates are off until you set them
The shipped default is permissive — an action runs unless you have said otherwise. For a marketing project, setting every publish and every send to Ask is the first change you make. It is not already done for you, and we would rather say so.
Merge is default-deny
A draft lands on the session branch and reaches main through a change request. An agent cannot merge unless an admin has granted project.cr.merge in kortix.yaml, and widening that grant is itself a reviewed change. Nothing goes live because a session decided it was finished.
The claims file is the substance of the control
Permissions stop an agent doing something. A claims skill stops it saying something. Both live in the repo, and the second one is what actually keeps an unverifiable number off your homepage.
Connector credentials never enter the machine
The sandbox carries one project-scoped Kortix token and no third-party keys. The credential for your campaign tool is decrypted server-side and attached to the outbound request.
Every call it made, and who let it
The connector and exact action, the agent, the person or trigger behind the session, the outcome, and who released a held call. If something went out, the record says who released it.

The same platform, the other teams

One project, one set of connectors, one memory that compounds. Each team writes the skills for its own work; nobody stands up a second system.

All solutions →
Marketing

Put the voice in the repo. Let the production line run.

Open source and self-hostable. Any model, your keys. Kortix Cloud, your own VPC, or your own on-prem network.

Kortix for marketing teams