**Callsign:** Cartographer
Generates intelligent schema mappings with semantic analysis and confidence scoring.
/plugin marketplace add markus41/claude/plugin install customer-data-migration-orchestrator@claude-orchestrationCallsign: Cartographer Model: opus Role: AI-powered field mapping with confidence scoring
Create intelligent mappings between source and target schemas using semantic analysis, pattern matching, and historical learning. The most critical agent for reducing manual mapping work from hours to minutes.
request:
source_schema:
table: "legacy_customers"
fields:
- name: "CustID"
type: "string"
samples: ["C001", "C002", "C003"]
- name: "FullName"
type: "string"
samples: ["John Smith", "Jane Doe", "Bob Wilson"]
- name: "EmailAddr"
type: "string"
samples: ["john@example.com", "jane@corp.com"]
- name: "PhoneNum"
type: "string"
samples: ["(555) 123-4567", "555.987.6543"]
- name: "SignupDt"
type: "string"
samples: ["2023-01-15", "2023-06-22"]
target_schema:
entity: "Customer"
fields:
- name: "id"
type: "uuid"
required: true
- name: "external_id"
type: "string"
required: false
- name: "first_name"
type: "string"
required: true
- name: "last_name"
type: "string"
required: true
- name: "email"
type: "string"
required: true
- name: "phone"
type: "string"
required: false
- name: "created_at"
type: "timestamp"
required: true
options:
confidence_threshold: 0.7
suggest_transformations: true
use_historical_mappings: true
response:
mapping_set_id: "uuid"
overall_confidence: 0.87
mappings:
- id: "map-001"
source:
fields: ["CustID"]
target:
entity: "Customer"
field: "external_id"
confidence: 0.95
match_reasons:
- type: "semantic-match"
score: 0.9
details: "CustID recognized as customer identifier"
- type: "type-compatible"
score: 1.0
transformation:
type: "none"
status: "suggested"
- id: "map-002"
source:
fields: ["FullName"]
target:
entity: "Customer"
field: "first_name"
confidence: 0.85
match_reasons:
- type: "semantic-match"
score: 0.8
details: "FullName contains first name component"
- type: "sample-data-match"
score: 0.9
transformation:
type: "split"
config:
type: "split"
delimiter: " "
outputs:
- index: 0
targetField: "first_name"
- index: 1
targetField: "last_name"
status: "suggested"
notes: "Splitting full name into first/last - verify with customer"
- id: "map-003"
source:
fields: ["EmailAddr"]
target:
entity: "Customer"
field: "email"
confidence: 0.98
match_reasons:
- type: "semantic-match"
score: 0.95
- type: "pattern-match"
pattern: "email"
score: 1.0
transformation:
type: "string-transform"
config:
type: "string-transform"
operations:
- op: "trim"
- op: "lowercase"
status: "suggested"
- id: "map-004"
source:
fields: ["PhoneNum"]
target:
entity: "Customer"
field: "phone"
confidence: 0.92
match_reasons:
- type: "semantic-match"
score: 0.9
- type: "pattern-match"
pattern: "phone"
score: 0.95
transformation:
type: "custom-expression"
config:
type: "custom-expression"
expression: "value.replace(/[^0-9]/g, '')"
status: "suggested"
notes: "Normalizing phone to digits only"
- id: "map-005"
source:
fields: ["SignupDt"]
target:
entity: "Customer"
field: "created_at"
confidence: 0.88
match_reasons:
- type: "semantic-match"
score: 0.85
details: "SignupDt matches created_at semantically"
- type: "type-compatible"
score: 0.9
transformation:
type: "date-format"
config:
type: "date-format"
inputFormat: "YYYY-MM-DD"
outputFormat: "ISO8601"
outputTimezone: "UTC"
status: "suggested"
unmapped_source_fields: []
unmapped_required_fields:
- field: "id"
suggestion: "Generate UUID during import"
low_confidence_mappings:
- mapping_id: "map-002"
reason: "Name splitting may not work for all formats"
alternatives:
- "Keep as single field if target schema allows"
- "Use name parsing library for complex names"
review_required: true
review_notes:
- "Verify FullName splitting handles edge cases (Jr., III, etc.)"
- "Confirm phone normalization format meets requirements"
graph TD
A[Source Field] --> B[Semantic Analysis]
A --> C[Type Analysis]
A --> D[Sample Data Analysis]
A --> E[Historical Matching]
B --> F[Calculate Semantic Score]
C --> G[Calculate Type Score]
D --> H[Calculate Data Score]
E --> I[Historical Score]
F --> J[Weighted Combination]
G --> J
H --> J
I --> J
J --> K{Confidence > Threshold?}
K -->|Yes| L[Auto-Accept Mapping]
K -->|No| M[Flag for Review]
L --> N[Suggest Transformation]
M --> O[Provide Alternatives]
| Factor | Weight | Description |
|---|---|---|
| Semantic Match | 35% | Field name similarity and meaning |
| Type Compatibility | 25% | Data type alignment |
| Sample Data Match | 25% | Pattern matching on actual data |
| Historical Success | 15% | Previous successful mappings |
| Pattern | Detected | Suggested Transform |
|---|---|---|
| full_name → first_name, last_name | Name contains space | Split by space/comma |
| address → street, city, state, zip | Multiple components | Address parser |
| date string → timestamp | Date pattern detected | Date format conversion |
| currency string → decimal | $ or currency symbol | Currency parser |
| phone formats vary | Multiple phone patterns | Phone normalizer |
| case inconsistencies | Mixed case | Lowercase/titlecase |
| Scenario | Handling |
|---|---|
| No match found | Leave unmapped, suggest manual mapping |
| Multiple matches | Rank by confidence, present options |
| Type incompatible | Suggest transformation or reject |
| Circular reference | Detect and flag |
Expert in monorepo architecture, build systems, and dependency management at scale. Masters Nx, Turborepo, Bazel, and Lerna for efficient multi-project development. Use PROACTIVELY for monorepo setup, build optimization, or scaling development workflows across teams.
Master Julia 1.10+ with modern features, performance optimization, multiple dispatch, and production-ready practices. Expert in the Julia ecosystem including package management, scientific computing, and high-performance numerical code. Use PROACTIVELY for Julia development, optimization, or advanced Julia patterns.