Lab Mode Assignments
TAFNE Lab Mode — Demo Assignments
Lab Mode is the engine room. Every table you build in Table Mode, every sheet that comes through the Node Editor, lands here to be validated, transformed, and summarized. It's where raw data becomes trustworthy data.
How to Use This File
Each assignment carries one or more demo type tags:
[INSTRUCTIONAL]— Teaching a new user how the tool works. Go slow. Explain the why.[MARKETING]— Building excitement for an audience who hasn't committed. Go fast. Lead with the transformation.[SALES]— Converting a specific lead. Mirror their language. End with a clear ask.
(:00), a DO line, and a SAY line.
Pause here ► marks the moments where you stop and let the screen breathe.
Assignment 1 — The Human Error Cleanup
[MARKETING] [SALES]
Audience: Anyone who manages data that was typed manually — inventory, contacts, order logs. Duration: 2 minutes. Payoff line: "You just caught every broken row in a 500-row table in 10 seconds. That audit used to take two hours."
Before You Start
Have any sheet open with at least 10 rows. Column names should includeSKU (or any ID column) and Price (or any numeric column).
Steps
(:00) DO: Switch to Lab Mode (the flask icon in the toolbar). SAY: "Lab Mode is the validation and cleaning layer. It doesn't edit your table directly — it runs a pipeline against it and shows you what it found."
(:15) DO: Click Add Step → select Flag empty → Column: Price. SAY: "I'm telling it: find every row where Price is blank. These are the rows that will crash a checkout system or throw an error in a report."
(:30) DO: Click Add Step → select Flag duplicate → Column: SKU. SAY: "And flag duplicates in SKU. Duplicate product IDs are a silent killer — exports look fine, databases reject the insert."
(:45) DO: Click Run. Pause here ► Let the result table render. Do not speak during the highlight animation.
(:55) SAY: "Every row with a missing price is flagged. Every duplicate SKU is flagged. The table isn't modified — this is a report. You now know exactly which rows need human attention before this data goes anywhere."
(1:20) SAY: "The original table is untouched. You can take this validation report, fix the flagged rows, and run it again. Each run is a clean pass."
If Something Goes Wrong
- If no rows are flagged: the data is already clean. Say: "Your data is clean — nothing to flag. This is actually the goal. We're verifying integrity, not looking for problems."
- If Lab Mode doesn't load: check that you have an active sheet in the Sheet Manager. Lab Mode requires a source.
Sales Follow-Up Hook
"What column would you most want to validate in your data? I can show you the pattern match validator — it checks against formats like email addresses, phone numbers, or custom ID patterns."Assignment 2 — The Currency and Tax Normalizer
[INSTRUCTIONAL] [SALES]
Audience: Finance, operations, or sales teams who export data and then manually clean it in Excel. Duration: 3 minutes. Payoff line: "You just built a repeatable cleaning pipeline. Next time you get this export, you hit Run once."
Before You Start
Have a table with aProduct Name column (some names have leading or trailing spaces) and a Price column (raw numbers, no tax applied).
Steps
(:00) DO: Open Lab Mode on the sales table. SAY: "This is a common export problem. Names have whitespace from the source system. Price is the pre-tax number, but the report needs the total."
(:20) DO: Click Add Step → Trim whitespace → Column: Product Name. SAY: "Trim strips leading and trailing spaces. Sounds small — but this is why VLOOKUPs fail silently. 'Widget A' and ' Widget A' are not the same string."
(:40) DO: Click Add Step → Add column → Name: Total With Tax. DO: Set Expression: multiply-const → Column: Price → Factor: 1.15. SAY: "Now I'm computing a new column: Price times 1.15. That's 15% tax applied to every row. I'm not editing Price — I'm adding a derived column."
(1:05) DO: Click Run. Pause here ► Let the result render. Point at the new column.
(1:15) SAY: "Trimmed names. New tax column. And notice the step count badge — it shows you exactly what the pipeline did and to how many rows."
(1:35) DO: Click Build Table → save as a new sheet. SAY: "That new sheet goes into the Sheet Manager. It's available in Table Mode, exportable as CSV or JSON, or usable as a source in the Node Editor."
Instructional Note
Walk through whymultiply-const is the right expression here versus writing a raw formula. "The expression library gives you named operations that are human-readable — it's self-documenting. Another person reading this pipeline understands it without seeing the formula."
If Something Goes Wrong
- If the new column shows
NaN: the Price column has non-numeric values. Add aFlag pattern mismatchstep first to find them. - If Trim has no visible effect: the source data might use non-breaking spaces (
\u00a0). Mention this: "Some exports use a special space character that looks identical but is different. The Trim step handles that too."
Sales Follow-Up Hook
"What's your most common export format — CSV from Salesforce, Excel from your ERP? I can show you how to run this same pipeline on that specific input."Assignment 3 — The Region Intelligence Report
[MARKETING] [SALES]
Audience: Finance, BI, or operations leads. Anyone who has asked "which region is performing best?" and gotten a 5,000-row dump back. Duration: 3 minutes. Payoff line: "Fifty rows from five thousand. That's your answer. You didn't write a query."
Before You Start
Have a table with at least 20 rows. Columns:Region, Sales (numeric), Category.
If you don't have a live dataset, use this CSV:
Region,Sales,Category North,12000,Hardware South,8400,Software North,15000,Software East,6700,Hardware West,19000,Software South,11000,Hardware East,22000,Services North,9000,Services West,14000,Hardware South,17000,Services
Steps
(:00) DO: Open Lab Mode on the large dataset. SAY: "This is what happens when you ask your database for all sales. You get everything. What you actually need is a summary."
(:20) DO: Click Add Step → Multi-aggregate (pivot). DO: Set Group By: Region. Measure 1: Sales, Function: sum. Measure 2: Sales, Function: average. SAY: "Group by region. Give me the total sales and the average sale per region. That's the question. I'm describing it — not writing it."
(:50) DO: Click Add Step → Analyze → Unique values → Column: Category. SAY: "And how many unique product categories does each region carry? One more step."
(1:10) DO: Click Run. Pause here ► Let the output render. Let the contrast land: thousands of rows reduced to a small summary table.
(1:20) SAY: "The raw table is still there. This is the summary view. Three or four rows instead of five thousand. Which region is top? You can see it without scrolling."
(1:40) SAY: "If this were SQL, you'd write a GROUP BY with aggregate functions, test it, fix the aliases. If this were Excel, you'd build a pivot table from scratch. Here, you described the analysis in two steps."
If Something Goes Wrong
- If aggregate returns no output: verify the Sales column contains numeric values, not formatted strings like
$12,000. Strip the dollar sign in a Transform step first. - If Group By has too many unique values: the column isn't categorical. Suggest grouping by a different column.
Sales Follow-Up Hook
"What's the question your team asks every week that requires pulling raw data and summarizing it? That's the pipeline I'd build with you."Assignment 4 — The Automated Bill of Materials
[MARKETING] [SALES]
Audience: Engineering, supply chain, or operations teams who work with product data, BOM reports, or inventory systems. Duration: 5 minutes. Payoff line: "Clean, validate, consolidate — all in one pipeline. What used to be a Python script is now a saved recipe you can hand to anyone."
Before You Start
Paste this CSV into Table Mode first:part_name,SKU,qty_in_stock,Price,Description
Bolt M5,SKU-001,120,0.15,M5 x 10mm
Nut M5,SKU-002,200,0.10,Standard hex nut
Bolt M5,SKU-001,80,0.15,M5 x 10mm duplicate entry
Washer,SKU-003,-5,0.05,Flat washer
Bracket A,SKU 004,40,2.30,L-bracket aluminum
spring,SKU-005,60,0.75,Compression spring
Steps
(:00) DO: Open Lab Mode. SAY: "This is a raw engineering log. Duplicate part entries, a negative inventory count, inconsistent capitalization — typical state of a real BOM before anyone cleans it."
(:20) DO: Add Step → Trim whitespace → all columns. DO: Add Step → Find & replace → find: pc, replace: Piece. DO: Add Step → Rename column → from: qty_in_stock, to: Inventory. SAY: "Phase one: cleaning. Trim whitespace, normalize a unit abbreviation, rename a column to match the output spec."
(:50) DO: Add Step → Flag out of range → Column: Inventory, Min: 0. DO: Add Step → Flag pattern mismatch → Column: SKU, Pattern: whole-number. SAY: "Phase two: validation. Any inventory below zero is physically impossible. Any SKU that isn't a clean number format is a data entry error." Pause here ► Point at the two validation steps in the pipeline. Let them read the step labels.
(1:20) DO: Add Step → Merge / BOM consolidate. DO: Set Key Column: SKU. Rules: Inventory: sum, Price: first, Description: unique. SAY: "Phase three: consolidation. The two Bolt M5 entries with the same SKU get merged — inventory summed, price kept from the first record, description deduplicated."
(1:50) DO: Click Run. Pause here ► Let the pipeline execute. Point at the step-by-step result badges as they appear.
(2:00) SAY: "Cleaned. Validated. Consolidated. The output is one row per SKU. The negative inventory is flagged. The malformed SKU is flagged."
(2:20) DO: Click Build Table → Submit to New Sheet. SAY: "That goes into the Sheet Manager. You can export it as SQL to load into your parts database, or as CSV for your procurement team — without touching the original data."
(2:45) SAY: "And this pipeline is saved. Next month when the new BOM dump comes in, you load it, run the same recipe, and it works the same way."
If Something Goes Wrong
- If Merge step shows an error: confirm SKU column values are consistent across rows (they need to match exactly for the key merge to work).
- If Flag steps show nothing: your test data might already be clean. Use the sample CSV above which has deliberate errors built in.
Sales Follow-Up Hook
"Does your team have a regular data export — weekly, monthly — that goes through a manual cleaning process? That manual process is what this pipeline replaces."Lab Mode Reference
| Step Category | What It Does | When to Use | |---------------|--------------|-------------| | Flag empty | Marks rows with blank cells | Before any export that requires complete rows | | Flag duplicate | Marks repeated values in a column | Before loading to a database with unique constraints | | Flag out of range | Marks values outside a numeric bound | Inventory, age, score validation | | Flag pattern mismatch | Marks values that don't match a format | Phone numbers, SKUs, emails | | Trim whitespace | Removes leading/trailing spaces | First step in any cleaning pipeline | | Find & replace | Swaps values in a column | Normalizing abbreviations or codes | | Rename column | Changes a column header | Before a merge or export that expects specific names | | Add column | Computes a derived column | Tax calculations, scores, totals | | Multi-aggregate | Group By + aggregate functions | Pivot summaries, region/category reports | | Merge / BOM consolidate | Combines duplicate-key rows | BOM reports, inventory deduplication |
Recipe panel: Open the Recipe view to see the underlying pipeline as editable text. You can copy it and paste it into any Lab Mode session to apply the same logic to a different dataset.