Product Kit · 1.0.0
Local-only browser generation
Data Migration Prep Kit
Prepare explicitly mapped structured data for a manual import with safe exports, rejected-row evidence, and integrity digests.
Operators and developers preparing caller-owned CSV, TSV, JSON, or JSONL before using a destination system’s importer.
Accepted-row preview
[
{
"name": "Ada",
"age": 42,
"active": true
}
]Preparation envelope
{
"ok": true,
"schema_version": "utilito.product-kit.v1",
"kit": {
"id": "data-migration-prep-kit",
"version": "1.0.0"
},
"result": {
"status": "review_required",
"preview": [
{
"name": "Ada",
"age": 42,
"active": true
}
],
"profile": {
"format": "csv",
"rows": 2,
"fields": [
{
"name": "name",
"present": 2,
"nulls": 0,
"types": {
"string": 2,
"number": 0,
"boolean": 0,
"object": 0,
"array": 0
},
"unique": 2,
"unique_truncated": false
},
{
"name": "age",
"present": 2,
"nulls": 0,
"types": {
"string": 1,
"number": 1,
"boolean": 0,
"object": 0,
"array": 0
},
"unique": 2,
"unique_truncated": false
},
{
"name": "active",
"present": 2,
"nulls": 0,
"types": {
"string": 0,
"number": 0,
"boolean": 2,
"object": 0,
"array": 0
},
"unique": 2,
"unique_truncated": false
}
]
},
"converted_file": {
"name": "migration-converted.csv",
"mime_type": "text/csv",
"bytes": 27,
"rows": 1,
"formula_cells_protected": 0,
"content": "name,age,active\nAda,42,true"
},
"rejected_file": {
"name": "migration-rejected.jsonl",
"mime_type": "application/x-ndjson",
"bytes": 171,
"rows": 1,
"content": "{\"row_number\":3,\"reasons\":[{\"code\":\"TRANSFORM_FAILED\",\"source_field\":\"age\",\"target_field\":\"age\"}],\"original_source_record\":{\"name\":\"Bob\",\"age\":\"unknown\",\"active\":\"false\"}}"
},
"diagnostics": {
"input_rows": 2,
"accepted_rows": 1,
"rejected_rows": 1,
"items": [
{
"row_number": 3,
"code": "TRANSFORM_FAILED",
"source_field": "age",
"target_field": "age"
}
]
},
"integrity_manifest": {
"manifest": {
"version": "utilito.file-integrity.v1",
"algorithm": "sha256",
"files": [
{
"path": "migration-converted.csv",
"size": 27,
"digest": "b8c1780f806008fcd3a0e7659285de1ab705a5406703384a06c3c3807779326a"
},
{
"path": "migration-rejected.jsonl",
"size": 171,
"digest": "ca65b97f8b98c04fcb6a37a2e018afee8bc7c02eaedd2216df93a5a2dc9865cf"
}
]
},
"text": "# utilito.file-integrity.v1\nalgorithm sha256\nb8c1780f806008fcd3a0e7659285de1ab705a5406703384a06c3c3807779326a migration-converted.csv\nca65b97f8b98c04fcb6a37a2e018afee8bc7c02eaedd2216df93a5a2dc9865cf migration-rejected.jsonl"
},
"report": {
"format": "markdown",
"mime_type": "text/markdown",
"mode": "details",
"contains_raw_values": false,
"content": "# Data Migration Prep report\n\nStatus: **review_required**\nInput rows: 2. Accepted: 1. Rejected: 1.\nFormula-like string cells protected: 0.\n\nPrivacy: details include field names, row numbers, and reason codes; values are omitted.\n\n## Rejections\n\n- row 3: TRANSFORM\\_FAILED (age → age)\n"
},
"safety": {
"input_overwritten": false,
"import_executed": false,
"database_connected": false,
"uploaded": false,
"formula_protection": true
},
"safe_actions": [
{
"code": "REVIEW_PREVIEW",
"message": "Review the preview and diagnostics before downloading migration artifacts.",
"automatic": false
},
{
"code": "REVIEW_REJECTED_ROWS",
"message": "Review rejected source rows and fix them in the original source before import.",
"automatic": false
},
{
"code": "VERIFY_INTEGRITY",
"message": "Recompute SHA-256 digests before handing artifacts to an importer.",
"automatic": false
},
{
"code": "IMPORT_MANUALLY",
"message": "Use your destination importer manually only after review and backup.",
"automatic": false
}
]
},
"receipt": {
"input_bytes": 646,
"output_bytes": 2864,
"operations": 4,
"omitted_items": 0,
"warnings": [],
"input_rows": 2,
"accepted_rows": 1,
"rejected_rows": 1,
"formula_cells_protected": 0
},
"provenance": {
"deterministic": true,
"model_used": false,
"network_used": false,
"storage_used": false,
"core_versions": {
"data_migration_prep_kit": "1.0.0",
"structured_data_inspection": "1.0.0",
"csv_json_converter": "1.0.0",
"file_integrity_manifest": "utilito.file-integrity.v1"
}
},
"error": null
}Free runnable capability
Prepare one bounded migration batch locally in the browser or through the response-only API with no signup.
Builder boundary
The existing Builder Pilot adds higher bounded batch orchestration; it does not add import execution, database access, storage, uploads, or formula-protection bypasses.
See the existing Builder PilotLocal and response-only privacy
Browser file and text generation runs locally without upload. API and MCP callers use the response-only hosted core; submitted content is not retained, imported, overwritten, or sent to a model.
Limits and trust boundary
- The kit only prepares artifacts. It never connects to a database, destination API, or importer and never overwrites the source.
- CSV and TSV are parsed strictly with preserved field whitespace, exact widths, unique non-empty headers, and no silent header renaming. JSON member names must be lexically unique.
- Only explicit scalar transforms are supported. Nested source values, guessed types, implicit coercion, custom code, and schema inference are rejected.
- CSV and TSV string cells that begin after optional whitespace with =, +, -, or @ are always prefixed with an apostrophe before RFC quoting; numeric values remain numeric.
- Rejected-row JSONL and detail reports are explicit raw/detail artifacts. Review and redact them before sharing.