Engineering Journal
Demo Guide
Demo Guide

All Modes Assignments

2026-05-11

TAFNE — All Modes: The P2P Demo Playbook

"A table isn't an island — it's a flow."
>
TAFNE's P2P (Pipeline-to-Pipeline) architecture means every sheet produced in any mode is immediately available in every other mode. Table Mode is your layout canvas. Lab Mode is your cleaning engine. The Node Editor is your logic layer. They share one sheet store. Data moves between them without export, import, or copy-paste.

How to Use This File

Each assignment carries one or more demo type tags:

Each step has a timing guide (:00), a DO line, and a SAY line. Pause here ► marks the moments where you stop and let the screen breathe.
These are the highest-stakes demos. They show the full system working together. Run single-mode demos first (table-mode-assignments, lab-mode-assignments, node-editor-assignment) to establish the individual capabilities before combining them here.

Assignment 1 — The Quick Scrub

[MARKETING] [SALES]

Audience: Anyone who has manually cleaned a contact list, guest list, or mailing export. Duration: 3 minutes. Payoff line: "You fixed it by eye, then audited 500 rows by machine. One workflow. One tool."

Before You Start

Have a contact table open with columns: Name, Email, Status. Include one obvious typo in a name cell and at least one blank email row.

Steps

(:00) DO: In Table Mode, locate the typo in a name cell. Double-click it, fix the spelling. DO: Select the VIP rows → apply class highlighted. SAY: "Table Mode is where I make the human edits. I can see the typo — I fix it. I know who the VIPs are — I flag them. This is judgment-level work." Pause here ► Show the highlighted rows clearly.

(:30) SAY: "But I can't eyeball 500 email addresses to check which ones are blank. That's machine work."

(:40) DO: Click the flask icon to enter Lab Mode. The same sheet is already selected as the source. SAY: "Same sheet. I didn't export it. I didn't copy it. Lab Mode sees everything in the Sheet Manager."

(:55) DO: Add Step → Trim whitespace → Column: Email. DO: Add Step → Flag empty → Column: Email. DO: Click Run. Pause here ► Let the flagged rows appear. Point at them.

(1:20) SAY: "Every blank email is flagged. The rows I need to chase down before I send the invite. Human intuition plus machine precision — one seamless handoff."

(1:40) DO: Click Build Table → save as Cleaned Guest List. SAY: "New sheet. Available anywhere in the tool. I can export it to CSV, push it to HTML, or use it as a source in the Node Editor."

Sales Follow-Up Hook

"What's your most painful data cleaning step right now — the one that takes the most time before you can actually use the data? That's the step I'd show you how to automate."

Assignment 2 — The Live Market Enrichment

[MARKETING] [SALES]

Audience: Data, product, or operations teams who pull from external APIs or third-party feeds. Duration: 6 minutes. Payoff line: "Live data, cleaned, styled, and exported — three modes, one session, no code."

Steps

Phase 1: Node Editor — Extract the Data

(:00) DO: Open the Node Editor. Add an API node. DO: Set URL: https://jsonplaceholder.typicode.com/users. Method: GET. SAY: "I'm pulling live data from an external source. In your workflow, this would be your CRM API, your database endpoint, or a third-party feed."

(:20) DO: Click Run on the API node. Show the raw output. Pause here ► Let the data appear.

(:30) DO: Add a Filter node: Column id, Operator <=, Value 7. Click Run → select Filter → Build Table → name the sheet Users Raw. SAY: "Seven users. That sheet is now in the Sheet Manager."

Phase 2: Lab Mode — Clean and Shape It

(:55) DO: Switch to Lab Mode. Select Users Raw as the source. SAY: "Same session. The sheet I just built from the API is right there."

(1:10) DO: Add Step → Rename column → from: username, to: Handle. DO: Add Step → Flag empty → Column: email. DO: Click RunBuild Table → save as Users Cleaned. SAY: "Column renamed for the output format. Blank emails flagged. This is the VTA pass: Validate, Transform, Analyze. Two steps, one run."

Phase 3: Table Mode — Style for Delivery

(1:50) DO: Open Users Cleaned in Table Mode. DO: Select the header row → apply class freeze-pane. DO: Export → HTML. Pause here ► Open the exported HTML in a browser. Let it sit for three seconds.

(2:10) SAY: "From API call to styled HTML in under three minutes. No Python. No spreadsheet formulas. No CSS written. Three modes, one data flow, one output."

If Something Goes Wrong

Sales Follow-Up Hook

"Which of those three phases is the biggest bottleneck for your team today — the pull, the cleaning, or the formatting? I'll focus the next demo on that specific step."

Assignment 3 — The Corporate Dashboard

[SALES]

Audience: Finance, HR, or operations leads who manage data across departments that don't talk to each other. Duration: 8 minutes. Payoff line: "A multi-department data merge. If you did this in Excel, you'd have broken VLOOKUPs and 50 hidden columns."

Before You Start

You'll need two sheets in Table Mode:

Sheet: Sales Log

Rep ID,Rep Name,Revenue,Status R001,Jordan Lee,84000,Active R002,Priya Sharma,120000,Active R003,Marcus Webb,61000,Legacy Gold R004,Aisha Osei,95000,Active

Sheet: HR Staff

Rep ID,Department,Start Date,Manager R001,Enterprise,2021-03-15,Kim Hayes R002,Mid-Market,2020-08-01,Kim Hayes R003,Enterprise,2018-11-22,Kim Hayes R004,SMB,2022-01-10,Dana Cruz

Steps

Phase 1: Table Mode — Human Override

(:00) DO: Open Sales Log in Table Mode. Select the Marcus Webb row. DO: Apply class highlighted to that row. SAY: "Marcus is Legacy Gold — a status that means something specific to this team. I'm annotating it visually so it carries through every export. That's a judgment I'm making as a human. The machine can't know this."

Phase 2: Lab Mode — Compute Commission

(:35) DO: Switch to Lab Mode. Source: Sales Log. DO: Add Step → Add column → Name: Commission. Expression: multiply-const, Column: Revenue, Factor: 0.10. DO: Click RunBuild Table → save as Sales with Commission. SAY: "Ten percent commission computed against every revenue row. New column, new sheet. The original Sales Log is unchanged."

Phase 3: Node Editor — Join Across Departments

(1:20) DO: Open Node Editor. Add Sales with Commission as a node. Add HR Staff as a second node. DO: Connect both to a Join node. Open the Join config: Mode: Inner Join, Left Key: Rep ID, Right Key: Rep ID. SAY: "This is the join that Finance and HR have been doing manually for years. Left table: sales data with commissions. Right table: HR records. Join key: the Rep ID that appears in both." Pause here ► Show the two nodes and the join node visually connected. Let them read the config.

(2:00) DO: Click Run → select Join node → Build Table → name the sheet Master Performance Dashboard. Pause here ► Show the merged table: Rep Name, Revenue, Commission, Department, Manager — all in one row per rep.

(2:15) SAY: "One row per rep. Sales data and HR data in the same view. Commission column computed in Lab Mode. Highlighted row from Table Mode. All preserved."

(2:40) DO: Export → SQL. SAY: "The BI team gets this as a SQL insert script. Your data warehouse can run it directly."

If Something Goes Wrong

Sales Follow-Up Hook

"Does your team have a regular cross-department merge like this — sales and HR, finance and ops, CRM and support? The join setup is the same pattern regardless of the source."

Assignment 4 — The Full P2P Loop

[MARKETING] [SALES]

Audience: Decision-makers evaluating the tool. This is the closing demo. Run it last. Duration: 10 minutes. Payoff line: "Raw text dump to a publishable, styled, multi-format report. No code. No spreadsheet. One tool, one session."

Before You Start

This demo starts from scratch — no pre-built sheets. The raw material is a text blob.

Have this copied to your clipboard:

Company|Role|Stage|Date|Notes Stripe|Senior Engineer|Applied|Dec 3|No response Notion|Product Designer|Interviewing|Dec 5|Round 2 scheduled Linear|Frontend Dev|Applied|Dec 7|No response Figma|Staff Engineer|Offer|Dec 1|Negotiating Vercel|DevRel|Closed|Nov 28|Rejected after screen Loom|PM|Applied|Dec 9|No response Arc Browser|Designer|Interviewing|Dec 6|Take-home sent

Steps

Phase 1: Table Mode — Parse the Raw Input

(:00) DO: Open TAFNE to a blank session. Paste the blob into cell A1. SAY: "This is real. Notes app. Text file. A wall of pipe-delimited text sitting in one cell." Pause here ► Show the blob in the single cell. Let the mess be visible.

(:20) DO: With A1 selected, press Alt+Shift+T. Set Row delimiter: newline. Column delimiter: pipe. Press Alt+Shift+X. Pause here ► Watch the split happen. Stay silent during the transform.

(:35) SAY: "Eight rows. Five columns. Two keystrokes."

(:45) DO: The first row contains the headers — they're already correct. Select the Figma row → apply class highlighted. Select the Vercel row → apply class highlighted-gray. SAY: "Flag the offer. Dim the closed application. These classes travel with the data into every export."

Phase 2: Lab Mode — Validate It

(1:15) DO: Switch to Lab Mode. The current sheet is already the source. SAY: "Now I validate. Before this goes anywhere, I want to know: are there any blank notes? Any duplicate companies?"

(1:30) DO: Add Step → Flag empty → Column: Notes. DO: Add Step → Flag duplicate → Column: Company. DO: Click Run. Pause here ► Show the flagged rows. Multiple "No response" notes are not duplicates in Company — but if a company appeared twice as an application, it would be flagged.

(1:55) SAY: "Clean. Nothing flagged. I know the data is structurally sound before I share it."

(2:10) DO: Add Step → Add column → Name: Priority. Expression: custom → if Stage = Offer then High else if Stage = Interviewing then Medium else Low. SAY: "Add a priority column. Derived from Stage. This is computed logic, not something I type into each cell." DO: Click RunBuild Table → save as Job Tracker Processed.

Phase 3: Node Editor — Enrich with Live Data

(2:55) DO: Open Node Editor. Add Job Tracker Processed as a node. DO: Add an API node → URL: https://jsonplaceholder.typicode.com/todos?userId=1. JSON Path: blank. SAY: "This is where you'd pull in context from an external system — a CRM record, a job board status, a company database. I'm using a placeholder to show the connection pattern."

(3:20) DO: Add a Filter node on the API output → Column: completed, Operator: =, Value: true. DO: Wire filtered API result to a Join node. Wire Job Tracker Processed to the other input. Mode: Stack (to show the sheet can be combined with external data). SAY: "The local tracker and the external data in the same view. In a real workflow this would be your ATS data alongside your personal notes." Pause here ► Show the full node graph. Source node, API node, filter, join — all connected.

(4:10) DO: Click RunBuild Table → name it Job Tracker Final.

Phase 4: Table Mode — Publish It

(4:30) DO: Open Job Tracker Final in Table Mode. DO: Select the header row → apply class freeze-pane. DO: Add a row above the headers → merge across all columns → type Job Applications — Q4. Apply class highlighted. SAY: "Merged title row. Freeze-paned header. Two classes applied — no CSS written."

(5:00) DO: Export → HTML. Open in browser. Pause here ► Full page. Let it sit for five seconds. The highlighted Figma row, the gray Vercel row, the frozen header — all there.

(5:15) SAY: "This is publishable. Drop it in a personal site, send the HTML file, embed it anywhere."

(5:30) DO: Back in TAFNE → Export → Markdown. SAY: "Markdown version — GitHub, Notion, any markdown-native tool."

(5:45) DO: Export → SQL. SAY: "SQL version. Load this into a database. The highlighted class is stored as a data attribute, not lost."

(6:00) SAY: "One session. We started with a blob in one cell. We ended with a validated, enriched, styled table in three export formats. Table Mode, Lab Mode, Node Editor — each did what it's best at. The data moved between them automatically."

The Close

SAY: "That's the P2P architecture. Any sheet from any mode is immediately available in every other mode. You're not exporting and reimporting — you're working in one connected system."

Pause here ► Let silence hold for two or three seconds. Then:

SAY: "What does your current data flow look like for this kind of task? I want to show you the specific path that matches your workflow."

If Something Goes Wrong


The P2P Golden Path

| If you need to... | Start in... | End in... | |-------------------|-------------|-----------| | Clean a messy file | Lab Mode | Table Mode | | Connect two sheets | Node Editor | Table Mode | | Fix a specific cell | Table Mode | (stay there) | | Validate data integrity | Lab Mode | (build report) | | Pull from an API | Node Editor | Lab Mode or Table Mode | | Style for publishing | Table Mode | (export from here) |

Any sheet produced in any mode goes into the Sheet Manager. Every mode reads from the Sheet Manager. That is the loop.
Read this post in the full Engineering Journal →