Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.useterse.ai/llms.txt

Use this file to discover all available pages before exploring further.

Comparison

Zapier / MakeTerse
Where logic livesVisual stepsTypeScript in your repo
Workspace contextIDs and step wiringGenerated typed helpers
BranchingVisual pathsNormal code
Reviews and versioningLimitedGit
AI + deterministic toolsAdd-onNative pattern

Example: enrichment workflow

A multi-step Zapier flow becomes a single TypeScript file:
import { createJob, TerseAgent, Trigger } from "terse-sdk"

import { Apollo, Attio, AttioList } from "./terse.generated"

createJob({
    name: "new-deal-enrichment",
    triggers: [Attio.onRecordCreated({ list: AttioList.Pipeline.NewDeals })],
    onTrigger: async (event: Trigger) => {
        const agent = TerseAgent.create({
            prompt: "You enrich new deals and recommend a next step.",
            skills: [Attio.skill({ lists: [AttioList.Pipeline.NewDeals] }), Apollo.skill()]
        })

        const company = await agent.tools.apollo.enrichCompany({
            domain: event.record.values.company_domain
        })

        const summary = await agent.runAndWait("Summarize fit and recommend a next step.")

        await agent.tools.attio.updateRecord({
            list: AttioList.Pipeline.NewDeals,
            recordId: event.record.id,
            fields: { fit_score: company.score, research_summary: summary }
        })
    }
})

Choose Zapier when

  • the workflow is linear with no branching
  • the team prefers a visual builder over code
  • versioning and code review are not required

Choose Terse when

  • the workflow needs branching, scoring, or typed context
  • you want source control and code review
  • you need deterministic writes around model judgment