Back to App

Layout Concepts

Every flow is divided into three sections: Pre, Middle, and Post. Understanding these sections is the key to building effective flows.

The 3 Sections

┌─────────────────────────────────────────────────────────────┐ │ PRE SECTION │ │ Runs ONCE before the main data. │ │ Use for: Opening apps, navigating, logging in, setup. │ ├─────────────────────────────────────────────────────────────┤ │ MIDDLE SECTION │ │ Runs ONCE PER ROW of data. │ │ Use for: The actual data entry — typing values into fields.│ │ This is where your extracted data gets typed. │ ├─────────────────────────────────────────────────────────────┤ │ POST SECTION │ │ Runs ONCE after all rows are processed. │ │ Use for: Saving, closing, cleanup, final reporting. │ └─────────────────────────────────────────────────────────────┘

Pre Section — "Before the Data"

The Pre section runs once, before any data rows are processed. Think of it as your setup phase.

Common Pre Commands

Pre Columns

Columns defined in the Pre section hold setup data that doesn't change per row. For example: a login date, a default party name, or a starting reference number.

Example

Pre Commands: 1. LEFT CLICK AT {"X":340,"Y":250} ← Click on Tally icon 2. DELAY WITH PARAMETER: 2000 ← Wait for app to open 3. TYPE COLUMN DATA (from "Login Date") ← Type today's date 4. ENTER ← Confirm 5. TYPE TEXT WITH PARAMETER: "admin" ← Type username 6. ENTER ← Submit

Middle Section — "The Data Entry Loop"

The Middle section is the heart of your flow. It runs once per row of extracted data. If you extracted 50 invoices, the Middle section runs 50 times — once for each invoice.

How It Works

  1. DashX reads the next row of data from the extracted table
  2. Each column value is available via the TYPE COLUMN DATA command
  3. Commands in the Middle section execute in order
  4. After all commands run, DashX moves to the next row and repeats

Middle Columns

These are the data fields that change per row — invoice numbers, dates, amounts, party names, item descriptions. Each Middle column maps to a column in your extracted data.

Example

Middle Commands (runs once per invoice): 1. TYPE COLUMN DATA (from "Invoice No") ← Type invoice number 2. TAB ← Move to next field 3. TYPE COLUMN DATA (from "Date") ← Type date 4. TAB ← Move to next field 5. TYPE COLUMN DATA (from "Party") ← Type party name 6. TAB 7. TYPE COLUMN DATA (from "Amount") ← Type amount 8. ENTER ← Save this entry Data rows: Row 1: INV-001 | 15/06/2026 | Acme Corp | 12,500 Row 2: INV-002 | 16/06/2026 | Beta Ltd | 8,750 Row 3: INV-003 | 17/06/2026 | Gamma Inc | 23,100 Execution: Run Middle commands with Row 1 data → Run Middle commands with Row 2 data → Run Middle commands with Row 3 data
Key concept: The Middle section is where the automation happens. The Pre section sets up, the Middle section does the work (per row), and the Post section wraps up.

Post Section — "After the Data"

The Post section runs once, after all Middle rows have been processed. Use it for cleanup.

Common Post Commands

Post Columns

Columns defined in the Post section hold finalization data — summary values, total counts, or closing information that's only needed after all rows are done.

Columns — Your Data Fields

Columns are the data fields your flow reads from. They map directly to the columns extracted by the AI tool from your documents.

Column SectionPurposeWhen It's ReadExample
Pre Columns Setup / configuration data Once, before data processing Login Date, Default Party
Middle Columns Main data that changes per row Once per row, during data entry Invoice No, Date, Amount, Party
Post Columns Finalization / summary data Once, after all rows are processed Total Count, Final Status

Adding Columns

  1. In the Flow Editor, look at the left panel with Pre/Middle/Post column boxes
  2. Click the + button in the appropriate section
  3. Enter a column name — this should match the column name in your extracted data
  4. Repeat for all data fields

Items vs Commands

TermWhat It IsWhere
Column A data field the flow reads from Left panel (Pre/Middle/Post column lists)
Command An action the flow performs (type, press, click) Right panel (command palette) → dragged into center sections
Command Chip A placed command in a section (with parameter and order) Center panel (inside a section dropzone)

Complete Example: Entering Invoices into Tally

WORKSPACE: Tally Invoice Entry TOOL: Table Extraction (extracts invoices from images) COLUMNS: Pre: [Login User, Login Pass] Middle: [Invoice No, Invoice Date, Party Name, Amount] Post: [] FLOW: PRE COMMANDS: 1. LEFT CLICK AT {"X":100,"Y":200} ← Click Tally icon 2. DELAY WITH PARAMETER: 3000 ← Wait for Tally to open 3. TYPE COLUMN DATA (Login User) ← Type username 4. ENTER 5. TYPE COLUMN DATA (Login Pass) ← Type password 6. ENTER 7. DELAY WITH PARAMETER: 1000 ← Wait for home screen 8. LEFT CLICK AT {"X":450,"Y":300} ← Click "Create Invoice" MIDDLE COMMANDS (per row): 1. TYPE COLUMN DATA (Invoice No) ← Type invoice number 2. TAB 3. TYPE COLUMN DATA (Invoice Date) ← Type date 4. TAB 5. TYPE COLUMN DATA (Party Name) ← Type party name 6. TAB 7. TYPE COLUMN DATA (Amount) ← Type amount 8. ENTER ← Save invoice POST COMMANDS: 1. ENTER ← Confirm 2. DELAY WITH PARAMETER: 500 3. CUSTOM KEYS: ^{w} ← Ctrl+W to save/close EXECUTION: For each extracted invoice: → Run PRE once (login, navigate) → For each data row: Run MIDDLE (type invoice data) → Run POST once (save and close)
Next: Understand how the execution pipeline works in detail — per-row processing, the data context model, and column matching.