Skip to content

Security Notice

This document has been auto-published from the internal knowledge base. All passwords, API keys, tokens, and IP addresses have been redacted for security.

WSI Operations Specialist

Salesforce CRM

Connection

  • API: Power Automate connector → Azure API Hub → Salesforce
  • Objects: Account, Task, Event, User, Opportunity, Contact, Lead

Sales Pipeline Stages (Sales_Stage__c)

  1. Prospect → 2. Conversing with PIC → 3. Opportunity → 4. Active → 5. Won → 6. Freezer (dormant)

Sales Team (9 users)

NameOwnerIdTerritoryProfileStatus
Manuel Chavez005Kd000004ZvCKIA0AdminAdmin 00eKd000001X48MIASActive
Cristhian Trinidad005Kd000004a5hhIAAMX accountsAdmin 00eKd000001X48MIASActive
Janice Kim005Kd000004a9wjIAALAX/SoCal (largest book)Sales 00eKd000001APnrIAGActive
Thomas Kim005Kd000004a9weIAALAX areaSales alt 00eVp000001sqDxIAIActive
George Damwijk005Kd000004ao2MIAQAZ marketSalesActive
Jimmy Yim005Kd000004ao2RIAQSoCalSalesActive
Michael Mendoza005Kd000004aZgzIAEAZ, nationalSalesActive
Jeff Chang005Kd000004asgOIAQUnknownSalesInactive (last login Jul 2025)
Insights Integration005Kd000004a7N2IAIIntegrationSystem

Account Object — Key Fields

Standard: Id, Name, Type (Customer/Prospect/Consignee/Co-loader), Industry, Phone, Website, OwnerId, BillingAddress, ShippingAddress Sales: Sales_Stage__c, Account_Status__c (New/Qualified), Elapsed__c (activity bucket), T_Y_Volume__c (Hot/Warm/Medium), Lead_Date__c, Assign_Date__cServices (Booleans): Ocean_Import_FCL__c, Ocean_Import_LCL__c, Ocean_Export_FCL__c, Air_Import__c, Air_Export__c, Over_the_Road_FTL__c, Customs_Brokerage__c, Warehouse__c, Hazmat_DG__cCargo: Container__c (20/40/40HQ/NOR), Commodity__c, Company__cDataMyne: Company_Name__c, Competitor_VOCC__c, Country_of_Origin__c, Port_of_Origin__c, Port_of_Destination__c, HS_Code_List__c, Total_Volume_Current_Year__c, Total_Volume_Last_Year__cIntegration: CWCode__c — CargoWise customer code (links SF Account ↔ CW OrgHeader)

Top Accounts by Volume (TEU, Last Year)

Tireco (18,267), Koyorad (908), Liberty Paper (825), VM International (480), Twenty Four 7 (112→430 CY), Master Toy (177), ACM Tech (30→141 CY)

Task Object (Email/Call Activities)

  • Subject, Description (full email body with To/CC/BCC), Status, Priority, TaskSubtype (Email/Call/Task), OwnerId, AccountId, WhoId
  • Sample: 10 tasks from George Damwijk (Feb-Mar 2025), all email
  • Rate trend: China→AZ: $5,800 (Jan) → $4,600 (Feb 24-25)
  • Key leads: Barron Lighting (2 tasks), UP Auto (multi-country), Today's Patio

Event Object

  • Subject, Description, Type, Location, ActivityDate, DurationInMinutes, OwnerId, AccountId
  • Sample: 10 events (Oct 2024-Mar 2025), George Damwijk (7) + Manuel (3)

User Object

  • Identity, Profile/Permissions, Contact/Locale, Login/Security, Photo, Email/Feed prefs
  • Key flags: ForecastEnabled (Manuel+Cristhian only), MarketingUser (same), UserDebugModePref (George only)

Data Quality Issues

  • Placeholder phone numbers, missing addresses, Phiysical_Address_fx__c typo, possible duplicates, sample accounts mixed in

CargoWise Integration

eAdaptor

  • Endpoint: https://jecprdservices.wisegrid.net/eAdaptor (JEC/PRD/LAX)
  • Credential: "EadaptorProdCredentials" (HTTP Basic Auth)
  • MS SQL: Credential [CREDENTIAL_ID]

Arrival Notice Upload Workflow (hJdFaSEsRZc1VtuF, ACTIVE)

  • 15 nodes: Webhook → Extract → Cognito Auth → S3 Upload → AI Parser → Poll Results → CW SQL Match → eAdaptor Upload → Callback
  • AI Parser: udm.api.junctionnet.cloud (Cognito auth, org: WSI)
  • CW Match: Consol→Shipment→Declaration priority, SCAC-prefix stripping
  • Doc codes: CustomsDeclaration→ARN, has CAN→RAN, no CAN→CAN

AN Audit (7 workflows, INACTIVE)

  • Orchestrator AsL9OZSRkD7calhd + 6 sub-workflows (Field Validation, CW Comparison, ETA & Routing, Container Audit, Regulatory Logic, Financial Audit)
  • CW Tables: JobConsol, JobShipment, JobDeclaration, JobConsolTransport, JobConsolContainer, AccTransactionHeader, JobMilestone, OrgHeader

AP Invoice Processor (YYUjYczdRH8kIfAG, INACTIVE)

  • 24 nodes: Webhook → PDF Extract → AI Extract (Claude Haiku, 15 fields) → 8 parallel CW checks → Exception Evaluator → Response
  • 6 exception checks: Duplicate, Already Paid, Amount Tolerance (>25%=block, 10-25%=warn), Currency Mismatch, Tax IVA, Date validation

WSI Follow-up Email Ingestor (bpSRrvueoqy1E32M, ACTIVE)

Architecture

  • Webhook: POST /wsi-tasks | API Key: [API_KEY]
  • Email path: Power Automate (flagged Outlook emails) → n8n → Claude Haiku classify → Store task
  • CRUD path: action=list|get|update|delete|stats|bulk_update|get_recap
  • Recap path: action=recap → Recap Builder → AI Recap → staticData.lastRecap
  • Storage: $getWorkflowStaticData('global') (max 500 tasks, newest first)
  • AI: Claude Haiku 4.5 classifies: priority (HIGH/MEDIUM/LOW), category (MISSING_DOCS/PAYMENT/TRACKING/CUSTOMS/GENERAL), sentiment, summary, action_required
  • Statuses: PENDING → IN_PROGRESS → DONE

Power Automate Email Recap

  • Flow: Recap JSON cada 20 minutos — every 20 min → Get emails → Filter unread/important/flagged → POST /wsi-tasks action=recap
  • AI Recap: Claude Haiku generates Spanish briefing → stored as staticData.lastRecap
  • Dashboard: MC section 5 + WSI MC section 7 poll action: get_recap every 2 min

Salesforce Data Hub (aXxt5OPrwtVoGZsQ, ACTIVE)

  • Webhook: POST /sf-data | API Key: [API_KEY]
  • Actions: push (PA sends raw SF objects), get (cached data), stats (computed metrics)
  • Data source: Power Automate pushes SF objects (Opportunities, Accounts, Contacts, Leads, Tasks, Events, Users)
  • Stats: total_pipeline, weighted_pipeline, win_rate_pct, avg_deal_size, open_leads, overdue_tasks, total_accounts, total_contacts, stage_breakdown, lead_sources, pipeline_by_owner
  • Dashboard: MC section 8 polls stats + get every 2 min

Shipment Notice Emailer (dH1nNvwPxR3eyGU8, ACTIVE)

  • Webhook: POST /shipment-notice | Carriers: ONE + MSC
  • MSC merge bug FIXED (2026-02-22): Added Merge node before Normalize

WSI MC — Standalone Dashboard

  • Live: wsi.handymanny.cloud (basic auth: same as MC)
  • Source: ~/wsi-mc/ | Deploy: bash ~/wsi-mc/deploy.sh
  • Stack: Python generator → static HTML → nginx:alpine → Traefik HTTPS
  • Theme: Light/white, WSI blue #0457A1, red #E53B30, bg #F2F7FA
  • 7 sections: Overview → Email Briefing (full-width, 3-col) → Follow-up Tasks → Team + Assignments → n8n Workflows + CargoWise
  • Data: ~/mission-control/projects.json (wsi section) + n8n /wsi-tasks API + localStorage CRUD
  • localStorage keys: wsi-mc-team / wsi-mc-tasks
  • JS bug fix (2026-02-23): Python ''' ate \' → "Unexpected string". Fixed with \x27.

Sales MC — WSI Salesman Dashboard

  • Live: sales.handymanny.cloud (basic auth: admin / WestSide)
  • Source: ~/projects/sales-mc/ | Deploy: cd ~/projects/sales-mc && bash deploy.sh
  • Stack: React (Vite) + Express 5 + better-sqlite3 + nginx (Docker multi-stage)
  • Features: Weighted scorecard (A+ to F), 7 salespeople, 12 months data, KPI bar, alerts, Import Intel, drill-down
  • Real Team: Janice Kim (#1 A+), Thomas Kim (#2), George Damwijk, Jimmy Yim, Michael Mendoza, Cristhian Trinidad | Jeff Chang (inactive)
  • Import Intel: 10 records — Tireco, Koyorad, Liberty Paper, Barron Lighting, GT Industries, VM Int'l, UP Auto, Today's Patio, Twenty Four 7, Grupo Logistico
  • n8n: Salesforce Data Hub (aXxt5OPrwtVoGZsQ, ACTIVE, /webhook/sf-data) | Sales Digest Generator (BssAxFxxEWk2T67T, ACTIVE, cron 5AM CST)
  • API: /api/kpis, /api/scorecard, /api/salespeople/:id, /api/alerts, /api/sync/salesforce, /api/upload/import-intel, /api/entity-review, /api/digest (POST), /api/digest/latest (GET)
  • AI Digest: Daily newspaper generated by Claude Haiku 4.5 — fetches 10 internal APIs + RSS → AI generates lead, columns, Trade Wire (with logos/links), Champion, Curious Fact, Finance Brief, ticker, briefs → stored in digests SQLite table. API key: digest_wsi_9f3a2b7c8e1d4056. Cost: ~$0.01/day.
  • Re-seed: ssh ... "docker volume rm sales-mc_sales-data" then redeploy

WSI Management Report — Power BI Rebuild (2026-02-23)

  • Source: ~/projects/wsi-management-report/ | Git: commit 599c1a9
  • Stack: Static HTML + CSS + JS (Chart.js 4.4 + Leaflet 1.9 + DM Sans) | 209KB single file
  • 30 pages: Customs(7), Volume(7), Financial(7), Rankings(2), Dashboards(5), Other(1)
  • 58 charts, 5 Leaflet maps, 31 sortable tables, 80 KPI cards, 27 filter bars
  • TODO: Deploy to VPS, connect to live CargoWise data, add deploy.sh

CHAROS Trucking (n8n Workflows)

Batch Tracker (fCVbPtxhdMcroH4P, ACTIVE)

  • Webhook: POST /charos-batch-track
  • Input: { shipments: [{ unit, containers[], tracking_url, eta }] }
  • Output: { totals: {trucks, on_time, attention}, shipments: [{status, location, speed, driver}] }
  • Status categories: on_time, stopped, delayed, expired, not_found

Email Report (ry7zDIJTBXzV1dez, ACTIVE)

  • Webhook: POST /charos-email-report
  • Input: { to, cc, from, subject, data: {batch tracker output} }
  • Preview mode: If to empty, returns HTML without sending
  • Gmail credential: [CREDENTIAL_ID]

HandyManny Documentation System