/digital-marketing-pro:crm-sync skill

Sync contacts and deals with a connected CRM, deduped, approval-gated.

by indranilbanerjee·MIT license·★ 866 Stars on the repo·GitHub ↗

Use now

Inside this skill

SKILL.md · the author's own words
# /digital-marketing-pro:crm-sync

> **Script location.** If your host does not set `${CLAUDE_PLUGIN_ROOT}`, the scripts are in this plugin's `scripts/` folder, next to `skil…

## Purpose

Sync marketing data to and from the brand's connected CRM platform. Handles contact creation, deal updates, and campaign linking with autom…

Use this command instead of manual CSV imports when you need deduplication, compliance validation, or audit logging. For lead-specific impo…

## Execution gate (MANDATORY — cannot be skipped)

1. Present the full preview — recipients / spend / changes / compliance — as an **Execution Summary** before touching any live system.
2. The user must type `yes` (or an equivalent explicit approval). ANY other input — ambiguous, implied, partial, or absent approval — cance…
3. Never proceed on ambiguous input. Never auto-retry a failed execution; a failure needs human review before any re-run.
4. Only after the user types `yes`, record it: `python "${CLAUDE_PLUGIN_ROOT}/scripts/approval-manager.py" --brand {slug} --action create-a…

Word-for-word excerpt, not a result. Read the full SKILL.md ↓

Files of /digital-marketing-pro:crm-sync

indranilbanerjee/main1 file shown
SKILL.md
Show the full text83 lines

/digital-marketing-pro:crm-sync

Script location. If your host does not set ${CLAUDE_PLUGIN_ROOT}, the scripts are in this plugin's scripts/ folder, next to skills/. Run them with Python 3.10 or newer: python, or python3 where python is not found (macOS, many Linux systems).

Purpose

Sync marketing data to and from the brand's connected CRM platform. Handles contact creation, deal updates, and campaign linking with automatic field mapping, deduplication, and compliance checks. Supports Salesforce, HubSpot, Zoho, and Pipedrive with bi-directional sync capabilities, ensuring marketing and sales teams operate from a single source of truth without manual data entry or import/export cycles. Designed for both one-time bulk syncs and recurring automated transfers, with full audit trails and rollback capabilities for enterprise-grade data governance.

Use this command instead of manual CSV imports when you need deduplication, compliance validation, or audit logging. For lead-specific imports with scoring, use /digital-marketing-pro:lead-import instead.

Execution gate (MANDATORY — cannot be skipped)

  1. Present the full preview — recipients / spend / changes / compliance — as an Execution Summary before touching any live system.
  2. The user must type yes (or an equivalent explicit approval). ANY other input — ambiguous, implied, partial, or absent approval — cancels the run.
  3. Never proceed on ambiguous input. Never auto-retry a failed execution; a failure needs human review before any re-run.
  4. Only after the user types yes, record it: python "${CLAUDE_PLUGIN_ROOT}/scripts/approval-manager.py" --brand {slug} --action create-approval --data '{"type":"crm-sync","platform":"<platform>","content_summary":"<one line from the Execution Summary>","risk_level":"<tier>"}', then python "${CLAUDE_PLUGIN_ROOT}/scripts/approval-manager.py" --brand {slug} --action approve --id {approval_id}. If either command errors, stop and report the error; never work around it with another tool. The record proves the approval step ran for this action; it cannot prove who typed yes.
  5. Execute. A write sent through connector_executor.py needs --approval-id and fires only against a matching, unused, unexpired record (see /digital-marketing-pro:execute-action). A write through a connected MCP server tool is outside that code check: it relies on this typed yes and on your host's permission prompt. Afterwards run python "${CLAUDE_PLUGIN_ROOT}/scripts/approval-manager.py" --brand {slug} --action mark-executed --id {approval_id} --data '{"execution_result":"success"}' (or failure).

Input Required

The user must provide (or will be prompted for):

  • Sync type: What to sync — contacts, deals, campaigns, or a combination of multiple object types in a single operation
  • Data source: Where the data comes from — CSV file path, JSON array, manual entry, or data from another connected MCP (e.g., Google Sheets, email platform, ad platform)
  • Target CRM platform: Salesforce, HubSpot, Zoho, or Pipedrive — and the specific object type if applicable (e.g., Salesforce Leads vs. Contacts, HubSpot Contacts vs. Companies)
  • Sync direction: One-way push (marketing to CRM), one-way pull (CRM to marketing), or bi-directional merge with conflict resolution preference (source wins, CRM wins, or most recent wins)
  • Field mapping overrides (optional): Custom mappings if default field mapping does not match the CRM's schema — e.g., "company_name" maps to "Account Name" in Salesforce, or "phone_mobile" maps to "MobilePhone"
  • Deduplication strategy: Match on email, phone, CRM ID, or composite key — and whether to update existing records, skip duplicates, or merge fields from both sources
  • Consent and compliance requirements: Whether GDPR consent fields, opt-in status, or data processing basis must be validated before sync — and which markets' regulations apply
  • Record filters (optional): Criteria to limit which records are synced — date range, segment membership, source campaign, lifecycle status, or custom field values
  • Batch size preference (optional): Number of records per API batch — smaller batches for safer rollback, larger batches for speed on high-volume syncs
  • Notification preferences: Whether to alert sales reps when new contacts or deals are synced to their pipeline, and via which channel (CRM notification, email, Slack)
  • Relationship linking: Whether to associate synced contacts with existing accounts, deals, or campaigns in the CRM — and the lookup key for matching (domain, account name, deal ID)
  • Tag or list assignment (optional): Tags, lists, or campaign memberships to apply to synced records for downstream segmentation and reporting attribution
  • Error handling preference: What to do when individual records fail — skip and continue (log failures for later), halt the entire sync (rollback completed records), or quarantine failed records for manual review
  • Sync schedule (optional): Whether this is a one-time sync or should be saved as a recurring sync template — if recurring, specify frequency (hourly, daily, weekly) and whether to sync only records modified since the last run (incremental) or all matching records (full)

Process

  1. Load brand context: Read ~/.claude-marketing/brands/_active-brand.json for the active slug, then load ~/.claude-marketing/brands/{slug}/profile.json. Apply brand voice, compliance rules for target markets (skills/context-engine/compliance-rules.md), and industry context. Also check for guidelines at ~/.claude-marketing/brands/{slug}/guidelines/_manifest.json — if present, load restrictions and relevant category files. Check for agency SOPs at ~/.claude-marketing/sops/. If no brand exists, ask: "Set up a brand first (/digital-marketing-pro:brand-setup)?" — or proceed with defaults.
  2. Check connected CRM status: Run python "${CLAUDE_PLUGIN_ROOT}/scripts/crm-sync.py" --brand {slug} --action get-crm-status to verify platform connection, API credentials, rate limit headroom, and available objects. If no CRM is connected, guide the user to configure their CRM MCP integration and provide platform-specific setup instructions.
  3. Validate input data: Parse the source data and validate required fields — check email format (RFC 5322), phone number normalization (E.164), required field presence, data type consistency, and character encoding. Flag invalid records with specific error reasons and separate them from the valid set.
  4. Map fields to CRM schema: Consult skills/context-engine/crm-integration-guide.md for standard field mappings per platform. Auto-map matching field names, apply user overrides, identify unmapped source fields, and flag required CRM fields with no source mapping. Present the complete field mapping table for confirmation before proceeding.
  5. Check for duplicates: Run python "${CLAUDE_PLUGIN_ROOT}/scripts/crm-sync.py" --brand {slug} --action check-dedup --data '{"email":"[email protected]","phone":"...","name":"...","company":"..."}' — the script takes one contact dict per call with email required (phone, name, company optional); loop over records for bulk dedup checks. Identify exact matches, fuzzy matches (Levenshtein distance on name + domain), and genuinely new records. Present dedup results with recommended actions per record (create, update, skip, merge).
  6. Validate compliance requirements: Check consent fields, opt-in status, and data processing basis against compliance rules for the brand's target markets. Flag records missing required consent or violating data retention policies. For GDPR markets, verify lawful basis is documented per record.
  7. Prepare CRM-ready payloads: Transform validated, deduplicated records into platform-specific API payloads with correct field names, data types, picklist values, relationship references (e.g., linking contacts to accounts), and owner assignment based on territory or round-robin rules.
  8. Create approval gate: Assess risk level — medium for fewer than 100 records, high for 100 or more. Present sync preview showing total record count, create/update/skip breakdown, dedup results, field mapping summary, compliance status, and any validation warnings requiring attention.
  9. On approval, execute sync via CRM MCP: Push payloads to the target CRM through the platform MCP in batched requests. Handle rate limits with exponential backoff and retry only a write that provably never reached the platform (connection refused, DNS failure, or a 429 rate-limit rejection); after a timeout or a lost reply, look the record up on the platform first (by email or external ID) and resend only what is missing. Log each record's outcome (created with ID, updated with changed fields, skipped with reason, failed with error code).
  10. Verify record counts and data integrity: Confirm synced record counts match expected totals by querying the CRM post-sync. Spot-check 5 random records to verify field values transferred correctly. Flag any count mismatches or data discrepancies for immediate investigation.
  11. Apply relationship linking and tags: For synced records, execute relationship associations — link contacts to accounts by domain match, associate contacts with deals by email, and apply campaign memberships. Add tags and list assignments specified by the user for downstream segmentation.
  12. Generate rollback manifest: Create a reversible change manifest listing every record ID created or modified, with previous field values stored, enabling targeted rollback within the CRM if data quality issues surface post-sync.
  13. Log results and notify: Record the complete sync execution — timestamp, record counts, field mapping, errors, relationship links created, and duration — to ~/.claude-marketing/brands/{slug}/logs/crm-sync-log.json. If notification preferences were set, alert relevant sales reps about new records in their pipeline.

Output

A structured CRM sync report containing:

  • Sync summary: Total records processed with breakdown — created, updated, skipped (duplicates), and failed counts with percentages and comparison to expected totals
  • Deduplication report: Duplicate records found with match type (exact/fuzzy), match fields used, confidence score, and action taken (updated, skipped, or merged) for each duplicate pair
  • Field mapping table: Complete source-to-CRM field mapping used, including auto-mapped fields, user overrides, unmapped source fields, and any default values applied to required CRM fields
  • Compliance audit: Records flagged for missing consent, opt-in gaps, or data processing basis issues — with remediation recommendations per record and applicable regulation referenced
  • Validation error report: Invalid records listed with specific field-level errors — malformed email, missing required field, data type mismatch, or encoding issue — and suggested corrections
  • Execution log: Timestamped record of every API call — batch number, records per batch, response status, retries (each for a write that provably never reached the platform), rate limit pauses, and processing duration per batch
  • Rollback reference: Record IDs created or modified during this sync with previous field values, enabling targeted rollback if issues are discovered post-sync
  • Data integrity verification: Post-sync spot-check results — 5 randomly sampled records compared source vs. CRM to confirm field accuracy across all mapped fields
  • Relationship linking summary: Contacts linked to accounts, deals associated with campaigns, and any relationship links that failed due to missing target records — with manual resolution steps
  • Performance metrics: Sync throughput (records per second), total API calls consumed, rate limit utilization percentage, and estimated time for future syncs of similar size
  • Tag and list assignment confirmation: Tags applied, lists assigned, and campaign memberships created — with counts per tag/list and any assignment failures noted
  • Conflict resolution log (bi-directional only): For bi-directional syncs, each field-level conflict encountered — source value, CRM value, resolution applied (source wins, CRM wins, most recent wins), and any conflicts requiring manual review
  • Next sync recommendations: Suggested follow-up actions — re-sync failed records, schedule recurring syncs, clean up unmapped fields, update field mapping defaults, or configure automated bi-directional sync

Agents Used

  • crm-manager — Field mapping, deduplication logic, data validation, CRM schema resolution, compliance checking, payload preparation, owner assignment, relationship linking, and sync execution management
  • execution-coordinator — Approval workflow, risk assessment, batched execution orchestration, rate limit handling, retries limited to writes that provably never reached the platform, rollback manifest generation, notification delivery, and execution logging
1---
2name: crm-sync
3description: "Sync contacts and deals with a connected CRM, deduped, approval-gated. \"sync deals to Salesforce\""
4disable-model-invocation: false
5argument-hint: "[crm-platform]"
6---
7 
8# /digital-marketing-pro:crm-sync
9 
10> **Script location.** If your host does not set `${CLAUDE_PLUGIN_ROOT}`, the scripts are in this plugin's `scripts/` folder, next to `skills/`. Run them with Python 3.10 or newer: `python`, or `python3` where `python` is not found (macOS, many Linux systems).
11 
12## Purpose
13 
14Sync marketing data to and from the brand's connected CRM platform. Handles contact creation, deal updates, and campaign linking with automatic field mapping, deduplication, and compliance checks. Supports Salesforce, HubSpot, Zoho, and Pipedrive with bi-directional sync capabilities, ensuring marketing and sales teams operate from a single source of truth without manual data entry or import/export cycles. Designed for both one-time bulk syncs and recurring automated transfers, with full audit trails and rollback capabilities for enterprise-grade data governance.
15 
16Use this command instead of manual CSV imports when you need deduplication, compliance validation, or audit logging. For lead-specific imports with scoring, use `/digital-marketing-pro:lead-import` instead.
17 
18## Execution gate (MANDATORY — cannot be skipped)
19 
201. Present the full preview — recipients / spend / changes / compliance — as an **Execution Summary** before touching any live system.
212. The user must type `yes` (or an equivalent explicit approval). ANY other input — ambiguous, implied, partial, or absent approval — cancels the run.
223. Never proceed on ambiguous input. Never auto-retry a failed execution; a failure needs human review before any re-run.
234. Only after the user types `yes`, record it: `python "${CLAUDE_PLUGIN_ROOT}/scripts/approval-manager.py" --brand {slug} --action create-approval --data '{"type":"crm-sync","platform":"<platform>","content_summary":"<one line from the Execution Summary>","risk_level":"<tier>"}'`, then `python "${CLAUDE_PLUGIN_ROOT}/scripts/approval-manager.py" --brand {slug} --action approve --id {approval_id}`. If either command errors, stop and report the error; never work around it with another tool. The record proves the approval step ran for this action; it cannot prove who typed `yes`.
245. Execute. A write sent through `connector_executor.py` needs `--approval-id` and fires only against a matching, unused, unexpired record (see `/digital-marketing-pro:execute-action`). A write through a connected MCP server tool is outside that code check: it relies on this typed `yes` and on your host's permission prompt. Afterwards run `python "${CLAUDE_PLUGIN_ROOT}/scripts/approval-manager.py" --brand {slug} --action mark-executed --id {approval_id} --data '{"execution_result":"success"}'` (or `failure`).
25 
26## Input Required
27 
28The user must provide (or will be prompted for):
29 
30- **Sync type**: What to sync — contacts, deals, campaigns, or a combination of multiple object types in a single operation
31- **Data source**: Where the data comes from — CSV file path, JSON array, manual entry, or data from another connected MCP (e.g., Google Sheets, email platform, ad platform)
32- **Target CRM platform**: Salesforce, HubSpot, Zoho, or Pipedrive — and the specific object type if applicable (e.g., Salesforce Leads vs. Contacts, HubSpot Contacts vs. Companies)
33- **Sync direction**: One-way push (marketing to CRM), one-way pull (CRM to marketing), or bi-directional merge with conflict resolution preference (source wins, CRM wins, or most recent wins)
34- **Field mapping overrides (optional)**: Custom mappings if default field mapping does not match the CRM's schema — e.g., "company_name" maps to "Account Name" in Salesforce, or "phone_mobile" maps to "MobilePhone"
35- **Deduplication strategy**: Match on email, phone, CRM ID, or composite key — and whether to update existing records, skip duplicates, or merge fields from both sources
36- **Consent and compliance requirements**: Whether GDPR consent fields, opt-in status, or data processing basis must be validated before sync — and which markets' regulations apply
37- **Record filters (optional)**: Criteria to limit which records are synced — date range, segment membership, source campaign, lifecycle status, or custom field values
38- **Batch size preference (optional)**: Number of records per API batch — smaller batches for safer rollback, larger batches for speed on high-volume syncs
39- **Notification preferences**: Whether to alert sales reps when new contacts or deals are synced to their pipeline, and via which channel (CRM notification, email, Slack)
40- **Relationship linking**: Whether to associate synced contacts with existing accounts, deals, or campaigns in the CRM — and the lookup key for matching (domain, account name, deal ID)
41- **Tag or list assignment (optional)**: Tags, lists, or campaign memberships to apply to synced records for downstream segmentation and reporting attribution
42- **Error handling preference**: What to do when individual records fail — skip and continue (log failures for later), halt the entire sync (rollback completed records), or quarantine failed records for manual review
43- **Sync schedule (optional)**: Whether this is a one-time sync or should be saved as a recurring sync template — if recurring, specify frequency (hourly, daily, weekly) and whether to sync only records modified since the last run (incremental) or all matching records (full)
44 
45## Process
46 
471. **Load brand context**: Read `~/.claude-marketing/brands/_active-brand.json` for the active slug, then load `~/.claude-marketing/brands/{slug}/profile.json`. Apply brand voice, compliance rules for target markets (`skills/context-engine/compliance-rules.md`), and industry context. **Also check for guidelines** at `~/.claude-marketing/brands/{slug}/guidelines/_manifest.json` — if present, load restrictions and relevant category files. Check for agency SOPs at `~/.claude-marketing/sops/`. If no brand exists, ask: "Set up a brand first (/digital-marketing-pro:brand-setup)?" — or proceed with defaults.
482. **Check connected CRM status**: Run `python "${CLAUDE_PLUGIN_ROOT}/scripts/crm-sync.py" --brand {slug} --action get-crm-status` to verify platform connection, API credentials, rate limit headroom, and available objects. If no CRM is connected, guide the user to configure their CRM MCP integration and provide platform-specific setup instructions.
493. **Validate input data**: Parse the source data and validate required fields — check email format (RFC 5322), phone number normalization (E.164), required field presence, data type consistency, and character encoding. Flag invalid records with specific error reasons and separate them from the valid set.
504. **Map fields to CRM schema**: Consult `skills/context-engine/crm-integration-guide.md` for standard field mappings per platform. Auto-map matching field names, apply user overrides, identify unmapped source fields, and flag required CRM fields with no source mapping. Present the complete field mapping table for confirmation before proceeding.
515. **Check for duplicates**: Run `python "${CLAUDE_PLUGIN_ROOT}/scripts/crm-sync.py" --brand {slug} --action check-dedup --data '{"email":"[email protected]","phone":"...","name":"...","company":"..."}'` — the script takes one contact dict per call with `email` required (`phone`, `name`, `company` optional); loop over records for bulk dedup checks. Identify exact matches, fuzzy matches (Levenshtein distance on name + domain), and genuinely new records. Present dedup results with recommended actions per record (create, update, skip, merge).
526. **Validate compliance requirements**: Check consent fields, opt-in status, and data processing basis against compliance rules for the brand's target markets. Flag records missing required consent or violating data retention policies. For GDPR markets, verify lawful basis is documented per record.
537. **Prepare CRM-ready payloads**: Transform validated, deduplicated records into platform-specific API payloads with correct field names, data types, picklist values, relationship references (e.g., linking contacts to accounts), and owner assignment based on territory or round-robin rules.
548. **Create approval gate**: Assess risk level — medium for fewer than 100 records, high for 100 or more. Present sync preview showing total record count, create/update/skip breakdown, dedup results, field mapping summary, compliance status, and any validation warnings requiring attention.
559. **On approval, execute sync via CRM MCP**: Push payloads to the target CRM through the platform MCP in batched requests. Handle rate limits with exponential backoff and retry only a write that provably never reached the platform (connection refused, DNS failure, or a 429 rate-limit rejection); after a timeout or a lost reply, look the record up on the platform first (by email or external ID) and resend only what is missing. Log each record's outcome (created with ID, updated with changed fields, skipped with reason, failed with error code).
5610. **Verify record counts and data integrity**: Confirm synced record counts match expected totals by querying the CRM post-sync. Spot-check 5 random records to verify field values transferred correctly. Flag any count mismatches or data discrepancies for immediate investigation.
5711. **Apply relationship linking and tags**: For synced records, execute relationship associations — link contacts to accounts by domain match, associate contacts with deals by email, and apply campaign memberships. Add tags and list assignments specified by the user for downstream segmentation.
5812. **Generate rollback manifest**: Create a reversible change manifest listing every record ID created or modified, with previous field values stored, enabling targeted rollback within the CRM if data quality issues surface post-sync.
5913. **Log results and notify**: Record the complete sync execution — timestamp, record counts, field mapping, errors, relationship links created, and duration — to `~/.claude-marketing/brands/{slug}/logs/crm-sync-log.json`. If notification preferences were set, alert relevant sales reps about new records in their pipeline.
60 
61## Output
62 
63A structured CRM sync report containing:
64 
65- **Sync summary**: Total records processed with breakdown — created, updated, skipped (duplicates), and failed counts with percentages and comparison to expected totals
66- **Deduplication report**: Duplicate records found with match type (exact/fuzzy), match fields used, confidence score, and action taken (updated, skipped, or merged) for each duplicate pair
67- **Field mapping table**: Complete source-to-CRM field mapping used, including auto-mapped fields, user overrides, unmapped source fields, and any default values applied to required CRM fields
68- **Compliance audit**: Records flagged for missing consent, opt-in gaps, or data processing basis issues — with remediation recommendations per record and applicable regulation referenced
69- **Validation error report**: Invalid records listed with specific field-level errors — malformed email, missing required field, data type mismatch, or encoding issue — and suggested corrections
70- **Execution log**: Timestamped record of every API call — batch number, records per batch, response status, retries (each for a write that provably never reached the platform), rate limit pauses, and processing duration per batch
71- **Rollback reference**: Record IDs created or modified during this sync with previous field values, enabling targeted rollback if issues are discovered post-sync
72- **Data integrity verification**: Post-sync spot-check results — 5 randomly sampled records compared source vs. CRM to confirm field accuracy across all mapped fields
73- **Relationship linking summary**: Contacts linked to accounts, deals associated with campaigns, and any relationship links that failed due to missing target records — with manual resolution steps
74- **Performance metrics**: Sync throughput (records per second), total API calls consumed, rate limit utilization percentage, and estimated time for future syncs of similar size
75- **Tag and list assignment confirmation**: Tags applied, lists assigned, and campaign memberships created — with counts per tag/list and any assignment failures noted
76- **Conflict resolution log (bi-directional only)**: For bi-directional syncs, each field-level conflict encountered — source value, CRM value, resolution applied (source wins, CRM wins, most recent wins), and any conflicts requiring manual review
77- **Next sync recommendations**: Suggested follow-up actions — re-sync failed records, schedule recurring syncs, clean up unmapped fields, update field mapping defaults, or configure automated bi-directional sync
78 
79## Agents Used
80 
81- **crm-manager** — Field mapping, deduplication logic, data validation, CRM schema resolution, compliance checking, payload preparation, owner assignment, relationship linking, and sync execution management
82- **execution-coordinator** — Approval workflow, risk assessment, batched execution orchestration, rate limit handling, retries limited to writes that provably never reached the platform, rollback manifest generation, notification delivery, and execution logging
83 

Discussion

Alternatives

⚡ NEXUS Quick-Start Guide> Get from zero to orchestrated multi-agent pipeline in 5 minutes.Business & ops · MITclean-cut — the step-1 cut pipelineStep 1 of the AI Video Editor pipeline — turn raw talking-head footage into a clean master cut. Use when the user wants to "clean cut", "cut the raw footage", "remove filler / dead air / bad takes", "tighten the pacing", produce cuts.json, run the cut editor, or render a cleaned preview/master for a video-N project in this repo. Covers audio extraction, AssemblyAI transcription, authoring cuts.json (keeps/cuts/fluff categorized), the cut policy (content-aggressive, pause-natural ~0.5s), QA + review docs, the local cut-editor UI, tight/natural previews, the final 4K60 render, and producing edited-transcript.json as the handoff to /make-tsx. Not for building TSX overlays (that is /make-tsx) or the raw TSX authoring rules (that is vidtsx-2d-generator).Sales & ecommerce · MITVocaloid-style MV pipeline (手書き / 文字PV)Make an original animated music video (MV / PV) for a song from its audio file plus lyrics, in the Vocaloid / J-pop lyric-video tradition: 手書き/tegaki (V家手书, 手描きMV, ボカロPV), 文字PV and kinetic typography (リリックモーション, リリックビデオ, 歌詞動画, 歌词视频, 动态歌词), anime-illustration MVs with an original character — for any mood, from dark ballads to bright upbeat summer pop. Renders to MP4 with a deterministic Canvas2D/WebGL2 engine in a headless browser: JIZURA lyric motion, AI-generated art, optional Blender toon 3D, beat-locked editing, 9:16 vertical/Shorts version. Use it whenever the user wants a music video, MV, PV, lyric video or beat-synced animation for a song, e.g. make an MV for my song", "turn this track into a lyric video", "给这首歌做个MV/PV", "做个V家手书", "この曲のMVを作って", ボカロPV作って", "縦型ショートも" — even if they only give a .wav/.mp3 and say "make a cool video for it". Not for editing existing footage or clip compilations.Sales & ecommerce · MITConstruction Agent — Email → Project Management PipelineConstruction company AI agent — orchestrates email (Google Workspace), project management (JobTread Pave API), and file routing for a construction business. Handles email triage, attachment routing to JobTread, project status, task management, and daily briefings via Telegram. Reference implementation for a construction/trades business with an existing email→Drive→PM pipeline.Sales & ecommerce · MIT