Skip to main content
In this tutorial you’ll build Document Generator — an app that turns reusable templates into personalized documents using the data already in your CRM. Write a template once with {{placeholders}}, then generate a filled-in document for any Person or Company in one click — from the command menu, from an AI agent, or from a workflow.
A generated Sales proposal document

What you’ll learn

Each chapter adds one capability. By the end you’ll have touched most of the SDK.
ChapterCapabilityReference
1. Data modelObjects, fields, and a relationData
2. Generating documentsA logic function (AI tool + workflow action) that fills a Markdown template and attaches a polished PDFLogic functions
3. HTTP routesServing JSON and a shareable HTML page from routesLogic functions
4. Building the UIViews, navigation, command menu, and front components that preview a document and edit a templateLayout
5. An AI agentAgent + skillSkills & agents
6. PublishingShip it to the marketplacePublishing

Prerequisites

You should have finished the Quick Start: a local Twenty server running on port 2020 and the CLI authenticated to it. If not, scaffold and start one now:
npx create-twenty-app@latest document-generator
cd document-generator
yarn twenty dev
Prefer to read the finished code? The complete app lives in packages/twenty-apps/examples/document-generator. Every snippet below is copied from it.

How the app fits together

A template with placeholders is generated into a polished document with a PDF, triggered from the command menu, an AI agent, a workflow, or a shareable link
You write a template once in a rich-text editor, with {{placeholders}}. Picking a template and a CRM record fills the placeholders and stores a polished document (with a PDF file). Everything else — the command menu, the AI agent, the workflow step, the shareable link — is just a different way to trigger that one generator.

Keep this loop running

Leave yarn twenty dev running in a terminal for the whole tutorial. Every time you add or edit a file under src/, it re-syncs to your server within a few seconds, so you can watch each capability appear in the UI as you build it.

Start building →

Chapter 1: model documents and templates.