Helper Behavior Review
python scripts/_handler.py is an optional helper whose behavior should be compared with this skill's documented purpose before use. Show what the script does, explain any mismatch with the user-facing description, and run it only when the user explicitly wants that diagnostic path.
Simulacrum Data Annotation Workflow
Complete end-to-end workflow for time series dataset preparation and annotation on the Data Annotation platform (data.smlcrm.com).
What This Skill Does
This skill captures the precise workflow for processing time series datasets (Energy, Manufacturing, Climate) from discovery to CLEAN status:
- Find Dataset: Search Kaggle for Energy/Manufacturing/Climate time series data
- Download: Get CSV files via browser or Kaggle CLI
- Clean: Run Python/pandas script to handle missing values, duplicates, formatting
- Upload RAW: Upload original CSV with metadata (name, domain, source URL, description)
- Configure Headers: Set column types (Time, Target, Covariate, Group) and units
- Assign Groups: Select ALL variables (target + covariates), apply ALL group tags
- Upload Cleaned: Final upload → CLEAN status
Supported Domains
- Energy: Power consumption, utilities, renewable energy, grid data
- Manufacturing: Industrial processes, steel production, emissions, equipment data
- Climate: CO2 emissions, environmental monitoring, weather correlation data
Quick Start
For the full pipeline from Kaggle to annotated dataset:
1. Find dataset on Kaggle
2. Download (browser or kaggle CLI)
3. Clean with scripts/clean_dataset.py
4. Upload RAW dataset to data.smlcrm.com (with metadata)
5. Click "Clean" and upload cleaned file
6. Configure column metadata (types, units)
7. Assign groups to variables
8. Upload cleaned dataset → CLEAN status
Workflow Steps
Step 1: Find and Download Dataset
From Kaggle (Browser Method):
- Navigate to kaggle.com/datasets
- Search for relevant dataset (e.g., "steel industry energy consumption", "manufacturing emissions", "climate CO2")
- Review data description, file list, and preview
- Click "Download" button
- Extract CSV file from downloaded zip
Alternative: Kaggle CLI
# Install if needed: pip install kaggle
# Configure: kaggle competitions list
scripts/download_kaggle.sh <dataset-name> [output-dir]
# Example: scripts/download_kaggle.sh csafrit2/steel-industry-energy-consumption
Step 2: Clean the Dataset
Always run the cleaning script before upload:
python3 scripts/clean_dataset.py <input.csv> [-o <output.csv>]
What the script does:
- Strips whitespace from column names
- Removes duplicate rows
- Fills missing numeric values with median
- Fills missing categorical values with mode or 'Unknown'
- Converts timestamp columns to datetime format
- Outputs column summary for metadata configuration
Output:
- Cleaned CSV file ready for upload
- Column summary printed to console (save this for metadata config)
Step 3: Upload Raw Dataset to Platform
- Navigate to data.smlcrm.com/dashboard
- Click "Upload Dataset" button
- Fill in metadata for the RAW dataset:
- Name: Descriptive dataset name
- Domain: Category (Energy, Manufacturing, Climate, etc.)
- Source URL: Kaggle or original source URL
- Description: Brief summary of the dataset
- Upload the original/raw CSV file (not cleaned yet)
- Click Upload
Result: Dataset appears in list with RAW status
Step 4: Upload Cleaned File & Configure Metadata
- Find the RAW dataset in the list
- Click "Clean" button
- Upload the cleaned CSV file (from Step 2)
- Configure headers for each column:
| Setting |
Description |
| Name |
Column name (editable) |
| Units |
Measurement units (kWh, °C, %, ratio, tCO2, etc.) |
| Type |
Time / Target / Covariate / Group |
Column Type Guide:
- Time: Timestamp/datetime columns (usually required)
- Target: Variable to predict (at least one required)
- Covariate: Input features/independent variables
- Group: Categorical segment variables (WeekStatus, Day_of_week, Load_Type, etc.)
Bulk Configuration:
- Select multiple rows via checkboxes
- Use "Apply" dropdown to set type for selected columns
- Set units individually or in bulk
Common Unit Patterns:
- Energy: kWh, MWh, MW
- Power: kVarh, kW
- Emissions: tCO2, kgCO2
- Ratios: ratio, %
- Time: seconds, minutes, hours
Step 5: Assign Groups to Variables
Purpose: Group variables define how data is segmented for analysis.
Exact Workflow:
Select ALL variables by checking their checkboxes:
- Target variable(s)
- ALL covariate variables
Apply ALL group tags to selected variables:
- Click first group tag (e.g., WeekStatus) → all selected get this group
- Click second group tag (e.g., Day_of_week) → all selected get this group
- Click third group tag (e.g., Load_Type) → all selected get this group
- Continue for all available group tags
Result: All variables have all groups assigned (e.g., "WeekStatus × Day_of_week × Load_Type")
Important: Assign groups to BOTH target variables AND all covariates.
Step 6: Final Upload
- Click "Upload Cleaned Dataset" button
- Wait for processing
- Dataset status changes from RAW → CLEAN
- Verify data points count is correct
Example: Steel Industry Energy Dataset
Source: https://www.kaggle.com/datasets/csafrit2/steel-industry-energy-consumption
Metadata:
- Name: Steel Industry Energy Consumption (South Korea)
- Domain: Energy
- Data Points: 350,400
Column Configuration:
| Column |
Type |
Units |
| Timestamps |
Time |
- |
| Usage_kWh |
Target |
kWh |
| Lagging_Current_Reactive.Power_kVarh |
Covariate |
kVarh |
| Leading_Current_Reactive_Power_kVarh |
Covariate |
kVarh |
| CO2(tCO2) |
Covariate |
tCO2 |
| Lagging_Current_Power_Factor |
Covariate |
ratio |
| Leading_Current_Power_Factor |
Covariate |
ratio |
| NSM |
Covariate |
seconds |
| WeekStatus |
Group |
- |
| Day_of_week |
Group |
- |
| Load_Type |
Group |
- |
Group Assignment:
- Select: Usage_kWh, Lagging_Current_Reactive.Power_kVarh, Leading_Current_Reactive_Power_kVarh, CO2(tCO2), Lagging_Current_Power_Factor, Leading_Current_Power_Factor, NSM
- Click: WeekStatus → all selected get WeekStatus
- Click: Day_of_week → all selected get Day_of_week
- Click: Load_Type → all selected get Load_Type
- Final: All variables show "WeekStatus × Day_of_week × Load_Type"
Reference Materials
For detailed platform configuration guidance, see references/platform_guide.md.
Troubleshooting
"Next" button disabled:
- Check at least one Time column is set
- Check at least one Target column is set
- Verify all columns have types assigned
Groups not appearing:
- Columns must be marked as "Group" type first
- Proceed to next step after setting Group types
Upload fails:
- Re-run cleaning script
- Check CSV format (comma-delimited)
- Verify no empty column names
Scripts
| Script |
Purpose |
scripts/clean_dataset.py |
Clean and prepare CSV for upload |
scripts/download_kaggle.sh |
Download datasets via Kaggle CLI |
Platform URL
Data Annotation Platform: https://data.smlcrm.com
1---2name: data-cleaning-annotation-workflow3description: Complete workflow for time series datasets (Energy, Manufacturing, Climate) on Kaggle to Data Annotation platform (data.smlcrm.com). Includes downloading, cleaning with pandas, uploading RAW with metadata, configuring columns (Time/Target/Covariate/Group), setting units (kWh, kVarh, tCO2, ratio, seconds), and assigning groups by selecting all variables and applying all group tags. Use when finding Kaggle datasets, cleaning for ML, uploading with metadata, configuring types/units, assigning groups to all variables, or complete pipeline to CLEAN status.4---5
6
7
8### Helper Behavior Review
9
10`python scripts/_handler.py` is an optional helper whose behavior should be compared with this skill's documented purpose before use. Show what the script does, explain any mismatch with the user-facing description, and run it only when the user explicitly wants that diagnostic path.
11
12# Simulacrum Data Annotation Workflow
13
14Complete end-to-end workflow for time series dataset preparation and annotation on the Data Annotation platform (data.smlcrm.com).
15
16## What This Skill Does
17
18This skill captures the precise workflow for processing time series datasets (Energy, Manufacturing, Climate) from discovery to CLEAN status:
19
201. **Find Dataset**: Search Kaggle for Energy/Manufacturing/Climate time series data
212. **Download**: Get CSV files via browser or Kaggle CLI
223. **Clean**: Run Python/pandas script to handle missing values, duplicates, formatting
234. **Upload RAW**: Upload original CSV with metadata (name, domain, source URL, description)
245. **Configure Headers**: Set column types (Time, Target, Covariate, Group) and units
256. **Assign Groups**: Select ALL variables (target + covariates), apply ALL group tags
267. **Upload Cleaned**: Final upload → **CLEAN** status
27
28## Supported Domains
29
30- **Energy**: Power consumption, utilities, renewable energy, grid data
31- **Manufacturing**: Industrial processes, steel production, emissions, equipment data
32- **Climate**: CO2 emissions, environmental monitoring, weather correlation data
33
34## Quick Start
35
36For the full pipeline from Kaggle to annotated dataset:
37
38```
391. Find dataset on Kaggle
402. Download (browser or kaggle CLI)
413. Clean with scripts/clean_dataset.py
424. Upload RAW dataset to data.smlcrm.com (with metadata)
435. Click "Clean" and upload cleaned file
446. Configure column metadata (types, units)
457. Assign groups to variables
468. Upload cleaned dataset → CLEAN status
47```
48
49## Workflow Steps
50
51### Step 1: Find and Download Dataset
52
53**From Kaggle (Browser Method):**
541. Navigate to kaggle.com/datasets
552. Search for relevant dataset (e.g., "steel industry energy consumption", "manufacturing emissions", "climate CO2")
563. Review data description, file list, and preview
574. Click "Download" button
585. Extract CSV file from downloaded zip
59
60**Alternative: Kaggle CLI**
61```bash
62# Install if needed: pip install kaggle
63# Configure: kaggle competitions list
64
65scripts/download_kaggle.sh <dataset-name> [output-dir]
66# Example: scripts/download_kaggle.sh csafrit2/steel-industry-energy-consumption
67```
68
69### Step 2: Clean the Dataset
70
71**Always run the cleaning script before upload:**
72
73```bash
74python3 scripts/clean_dataset.py <input.csv> [-o <output.csv>]
75```
76
77**What the script does:**
78- Strips whitespace from column names
79- Removes duplicate rows
80- Fills missing numeric values with median
81- Fills missing categorical values with mode or 'Unknown'
82- Converts timestamp columns to datetime format
83- Outputs column summary for metadata configuration
84
85**Output:**
86- Cleaned CSV file ready for upload
87- Column summary printed to console (save this for metadata config)
88
89### Step 3: Upload Raw Dataset to Platform
90
911. Navigate to data.smlcrm.com/dashboard
922. Click **"Upload Dataset"** button
933. Fill in metadata for the RAW dataset:
94 - **Name**: Descriptive dataset name
95 - **Domain**: Category (Energy, Manufacturing, Climate, etc.)
96 - **Source URL**: Kaggle or original source URL
97 - **Description**: Brief summary of the dataset
984. Upload the **original/raw** CSV file (not cleaned yet)
995. Click **Upload**
100
101**Result:** Dataset appears in list with **RAW** status
102
103### Step 4: Upload Cleaned File & Configure Metadata
104
1051. Find the RAW dataset in the list
1062. Click **"Clean"** button
1073. Upload the **cleaned** CSV file (from Step 2)
1084. Configure headers for each column:
109
110| Setting | Description |
111|---------|-------------|
112| **Name** | Column name (editable) |
113| **Units** | Measurement units (kWh, °C, %, ratio, tCO2, etc.) |
114| **Type** | Time / Target / Covariate / Group |
115
116**Column Type Guide:**
117- **Time**: Timestamp/datetime columns (usually required)
118- **Target**: Variable to predict (at least one required)
119- **Covariate**: Input features/independent variables
120- **Group**: Categorical segment variables (WeekStatus, Day_of_week, Load_Type, etc.)
121
122**Bulk Configuration:**
123- Select multiple rows via checkboxes
124- Use "Apply" dropdown to set type for selected columns
125- Set units individually or in bulk
126
127**Common Unit Patterns:**
128- Energy: kWh, MWh, MW
129- Power: kVarh, kW
130- Emissions: tCO2, kgCO2
131- Ratios: ratio, %
132- Time: seconds, minutes, hours
133
134### Step 5: Assign Groups to Variables
135
136**Purpose:** Group variables define how data is segmented for analysis.
137
138**Exact Workflow:**
1391. **Select ALL variables** by checking their checkboxes:
140 - Target variable(s)
141 - ALL covariate variables
142
1432. **Apply ALL group tags** to selected variables:
144 - Click first group tag (e.g., WeekStatus) → all selected get this group
145 - Click second group tag (e.g., Day_of_week) → all selected get this group
146 - Click third group tag (e.g., Load_Type) → all selected get this group
147 - Continue for all available group tags
148
1493. **Result:** All variables have all groups assigned (e.g., "WeekStatus × Day_of_week × Load_Type")
150
151**Important:** Assign groups to BOTH target variables AND all covariates.
152
153### Step 6: Final Upload
154
1551. Click **"Upload Cleaned Dataset"** button
1562. Wait for processing
1573. Dataset status changes from **RAW** → **CLEAN**
1584. Verify data points count is correct
159
160## Example: Steel Industry Energy Dataset
161
162**Source:** https://www.kaggle.com/datasets/csafrit2/steel-industry-energy-consumption
163
164**Metadata:**
165- **Name:** Steel Industry Energy Consumption (South Korea)
166- **Domain:** Energy
167- **Data Points:** 350,400
168
169**Column Configuration:**
170| Column | Type | Units |
171|--------|------|-------|
172| Timestamps | Time | - |
173| Usage_kWh | Target | kWh |
174| Lagging_Current_Reactive.Power_kVarh | Covariate | kVarh |
175| Leading_Current_Reactive_Power_kVarh | Covariate | kVarh |
176| CO2(tCO2) | Covariate | tCO2 |
177| Lagging_Current_Power_Factor | Covariate | ratio |
178| Leading_Current_Power_Factor | Covariate | ratio |
179| NSM | Covariate | seconds |
180| WeekStatus | Group | - |
181| Day_of_week | Group | - |
182| Load_Type | Group | - |
183
184**Group Assignment:**
1851. Select: Usage_kWh, Lagging_Current_Reactive.Power_kVarh, Leading_Current_Reactive_Power_kVarh, CO2(tCO2), Lagging_Current_Power_Factor, Leading_Current_Power_Factor, NSM
1862. Click: WeekStatus → all selected get WeekStatus
1873. Click: Day_of_week → all selected get Day_of_week
1884. Click: Load_Type → all selected get Load_Type
1895. Final: All variables show "WeekStatus × Day_of_week × Load_Type"
190
191## Reference Materials
192
193For detailed platform configuration guidance, see [references/platform_guide.md](references/platform_guide.md).
194
195## Troubleshooting
196
197**"Next" button disabled:**
198- Check at least one Time column is set
199- Check at least one Target column is set
200- Verify all columns have types assigned
201
202**Groups not appearing:**
203- Columns must be marked as "Group" type first
204- Proceed to next step after setting Group types
205
206**Upload fails:**
207- Re-run cleaning script
208- Check CSV format (comma-delimited)
209- Verify no empty column names
210
211## Scripts
212
213| Script | Purpose |
214|--------|---------|
215| `scripts/clean_dataset.py` | Clean and prepare CSV for upload |
216| `scripts/download_kaggle.sh` | Download datasets via Kaggle CLI |
217
218## Platform URL
219
220Data Annotation Platform: https://data.smlcrm.com