> ## Documentation Index
> Fetch the complete documentation index at: https://docs.gainable.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Best practices

> Dos and don'ts for writing effective prompts

## Do this

### Be specific about data fields

<CodeGroup>
  ```text Do this theme={null}
  Track contacts with:
  - Full name
  - Email address
  - Phone number
  - Company name
  - Job title
  - LinkedIn profile URL
  ```

  ```text Don't do this theme={null}
  Track contact information
  ```
</CodeGroup>

### Specify field types when it matters

<CodeGroup>
  ```text Do this theme={null}
  Track deals with:
  - Deal name (text)
  - Amount (currency)
  - Close date (date)
  - Probability (percentage)
  - Status (new, negotiating, won, lost)
  ```

  ```text Don't do this theme={null}
  Track deals with name, amount, date, probability, status
  ```
</CodeGroup>

Common field types to specify:

* **Currency**: "amount (currency)" or "price in dollars"
* **Date**: "due date" or "close date"
* **Percentage**: "probability (percentage)"
* **Options**: "status (option A, option B, option C)"
* **Yes/No**: "is active (yes/no)" or "completed (checkbox)"

### Describe relationships clearly

<CodeGroup>
  ```text Do this theme={null}
  Build a project system where:
  - Projects have a name and description
  - Each project has multiple tasks
  - Tasks have a title, due date, and status
  - Each task is assigned to one user
  ```

  ```text Don't do this theme={null}
  Track projects, tasks, and users
  ```
</CodeGroup>

### Request specific visualizations

<CodeGroup>
  ```text Do this theme={null}
  Add a dashboard with:
  - Total revenue card
  - Number of deals card
  - Pie chart showing deals by status
  - Line chart showing monthly revenue trend
  ```

  ```text Don't do this theme={null}
  Add a dashboard with some charts
  ```
</CodeGroup>

### Define options explicitly

<CodeGroup>
  ```text Do this theme={null}
  Status options: draft, pending review, approved, rejected
  Priority levels: low, medium, high, critical
  ```

  ```text Don't do this theme={null}
  Add status and priority fields
  ```
</CodeGroup>

***

## Don't do this

### Don't reference other products

<CodeGroup>
  ```text Don't do this theme={null}
  Build something like Asana
  Make it work like Notion
  Copy the Salesforce pipeline
  ```

  ```text Do this instead theme={null}
  Build a task manager with:
  - Projects containing tasks
  - Tasks with title, assignee, due date, status
  - Kanban board view
  - List view with filters
  ```
</CodeGroup>

Why: Gainable doesn't know what features you want from those products. Describe the specific features you need.

### Don't use vague design terms

<CodeGroup>
  ```text Don't do this theme={null}
  Make it modern
  Keep it clean
  Professional looking
  ```

  ```text Do this instead theme={null}
  Use the corporate theme
  Use blue and gray colors
  Use a sidebar navigation layout
  ```
</CodeGroup>

### Don't request everything at once

<CodeGroup>
  ```text Don't do this theme={null}
  Build a complete CRM with leads, contacts, companies,
  deals, tasks, emails, calendar, reports, dashboards,
  team management, permissions, notifications, and
  mobile app with offline support.
  ```

  ```text Do this instead theme={null}
  Build a deal tracker with:
  - Deals (name, amount, status, close date)
  - Contacts (name, email, linked to deal)
  - Dashboard with deal totals

  (Then add more features in subsequent prompts)
  ```
</CodeGroup>

### Don't assume Gainable knows your domain

<CodeGroup>
  ```text Don't do this theme={null}
  Build a standard e-commerce checkout flow
  Add the usual project management features
  ```

  ```text Do this instead theme={null}
  Build checkout with:
  - Cart review step
  - Shipping address form
  - Payment method selection
  - Order confirmation page
  ```
</CodeGroup>

***

## Changing an app you have already built

Everything above is about the prompt that creates an app. Once it exists, the rules shift: you are naming things that are already there, and a plan card appears before anything changes.

<Card title="Changing a built app" icon="wand-magic-sparkles" href="/prompting/refining">
  Naming pages and components, bug versus preference, screenshots, and the plan card.
</Card>

***

## Quick reference

| Situation | Best Practice |
| - | - |
| Defining data | List all fields with types |
| Connecting data | Explicitly state relationships |
| Adding charts | Name the chart type and what data it shows |
| Adding features | Use feature names (kanban, chat, filter) |
| Styling | Reference theme names or specific colors |

## Learn more

<CardGroup cols={2}>
  <Card title="Changing a built app" icon="wand-magic-sparkles" href="/prompting/refining">
    Prompting once it's up and running
  </Card>

  <Card title="Examples" icon="lightbulb" href="/prompting/examples">
    See real prompts in action
  </Card>

  <Card title="Common patterns" icon="copy" href="/prompting/common-patterns">
    Templates for common app types
  </Card>
</CardGroup>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.