---
title: A proposal from the template
description: Proposal writer copies the proposal template in Drive, fills it in for Ortiz Bakery, and hands Sam the link.
agents: [Proposal writer]
tools: [files.search, files.copy, files.replace_text, files.read, contacts.find]
source: [packages/agents/src/tools/writes.ts, packages/agents/src/tools/integrations.ts]
---

> Roadstar docs for agents. Every page, as markdown: https://docs.roadstar.app/llms.txt

## The work

Roadstar handed Proposal writer its first piece of work (see [making an agent](/use-cases/make-an-agent/)):

```text
[From Roadstar] Write the Ortiz Bakery packaging redesign proposal for Rosa Ortiz, due Friday.
Sam said in Roadstar's chat at 4:05 PM: "I'm spending my evenings on proposals. Can someone take them on? Start with the Ortiz Bakery packaging one: Rosa wants it by Friday."
Notes: Sam's first proposal for you. Rosa wants it by Friday.
Links: contact:e2a9f4c1-6b07-4d38-a15e-93c0b7d2f846
```

Proposal writer's chat starts a thread, "Ortiz Bakery", and passes the work on whole, so the thread's answer goes straight back to Roadstar.

## 1. Find the template and the rate card

```json title="use_tool"
{ "name": "files.search", "input": { "query": "proposal template" } }
```

The template is a Google Doc with placeholders: `{{CLIENT}}`, `{{CONTACT}}`, `{{SCOPE}}`, `{{PRICE}}`, `{{DATE}}`.

```json title="use_tool"
{ "name": "contacts.find", "input": { "email": "rosa@ortizbakery.test" } }
```

## 2. Copy it

Copying makes something new, so it needs no yes:

```json title="use_tool"
{
  "name": "files.copy",
  "input": {
    "id": "7c41e2d0:1Hk3TemplatePr0posalDoc9xQ",
    "name": "Ortiz Bakery: packaging redesign proposal",
    "folderId": "7c41e2d0:1FoClientsOrtizBakery2026"
  }
}
```

```json
{ "id": "7c41e2d0:1Ab9OrtizProposalCopy7Kd", "name": "Ortiz Bakery: packaging redesign proposal", "url": "https://docs.google.com/document/d/1Ab9OrtizProposalCopy7Kd/edit" }
```

## 3. Fill it in

Each placeholder is one `replace_text` on the copy:

```json title="use_tool"
{ "name": "files.replace_text", "input": { "id": "7c41e2d0:1Ab9OrtizProposalCopy7Kd", "find": "{{CLIENT}}", "replace": "Ortiz Bakery" } }
```

```json title="use_tool"
{
  "name": "files.replace_text",
  "input": {
    "id": "7c41e2d0:1Ab9OrtizProposalCopy7Kd",
    "find": "{{SCOPE}}",
    "replace": "New packaging for six bread and pastry lines: box, bag and label designs, print-ready files, and a one-page packaging guide."
  }
}
```

`replace_text` changes what's there, so the check reads it. It changes only the copy this thread made for this work, so it goes.

Then a last read to check every placeholder is gone:

```json title="use_tool"
{ "name": "files.read", "input": { "id": "7c41e2d0:1Ab9OrtizProposalCopy7Kd" } }
```

## 4. It answers

The proposal goes to Rosa only after Sam has seen it, as Proposal writer's job description says. The answer goes back to Roadstar, and on to Sam:

> The Ortiz Bakery packaging proposal is ready for you in Drive: six product lines, $6,200, four weeks. Shall I send it to Rosa?

Each change shows on Home with Undo: the copy, and each replacement.

## Related

- [Files](/tools/files/)
- [Hand-offs](/how-it-works/hand-offs/): passing work on whole
