opencode-knowledge-work 0.0.0-stage → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +212 -0
- package/README.md +124 -2
- package/content/bio-research/.mcp.json +48 -0
- package/content/bio-research/CONNECTORS.md +23 -0
- package/content/bio-research/LICENSE +202 -0
- package/content/bio-research/README.md +83 -0
- package/content/bio-research/skills/bio-research-instrument-data-to-allotrope/LICENSE.txt +201 -0
- package/content/bio-research/skills/bio-research-instrument-data-to-allotrope/SKILL.md +280 -0
- package/content/bio-research/skills/bio-research-instrument-data-to-allotrope/references/asm_schema_overview.md +226 -0
- package/content/bio-research/skills/bio-research-instrument-data-to-allotrope/references/field_classification_guide.md +503 -0
- package/content/bio-research/skills/bio-research-instrument-data-to-allotrope/references/flattening_guide.md +254 -0
- package/content/bio-research/skills/bio-research-instrument-data-to-allotrope/references/supported_instruments.md +151 -0
- package/content/bio-research/skills/bio-research-instrument-data-to-allotrope/requirements.txt +26 -0
- package/content/bio-research/skills/bio-research-instrument-data-to-allotrope/scripts/convert_to_asm.py +543 -0
- package/content/bio-research/skills/bio-research-instrument-data-to-allotrope/scripts/export_parser.py +481 -0
- package/content/bio-research/skills/bio-research-instrument-data-to-allotrope/scripts/flatten_asm.py +254 -0
- package/content/bio-research/skills/bio-research-instrument-data-to-allotrope/scripts/validate_asm.py +1102 -0
- package/content/bio-research/skills/bio-research-nextflow-development/LICENSE.txt +201 -0
- package/content/bio-research/skills/bio-research-nextflow-development/SKILL.md +290 -0
- package/content/bio-research/skills/bio-research-nextflow-development/references/geo-sra-acquisition.md +416 -0
- package/content/bio-research/skills/bio-research-nextflow-development/references/installation.md +96 -0
- package/content/bio-research/skills/bio-research-nextflow-development/references/pipelines/atacseq.md +138 -0
- package/content/bio-research/skills/bio-research-nextflow-development/references/pipelines/rnaseq.md +118 -0
- package/content/bio-research/skills/bio-research-nextflow-development/references/pipelines/sarek.md +145 -0
- package/content/bio-research/skills/bio-research-nextflow-development/references/troubleshooting.md +137 -0
- package/content/bio-research/skills/bio-research-nextflow-development/scripts/check_environment.py +452 -0
- package/content/bio-research/skills/bio-research-nextflow-development/scripts/config/genomes.yaml +148 -0
- package/content/bio-research/skills/bio-research-nextflow-development/scripts/config/pipelines/atacseq.yaml +187 -0
- package/content/bio-research/skills/bio-research-nextflow-development/scripts/config/pipelines/rnaseq.yaml +147 -0
- package/content/bio-research/skills/bio-research-nextflow-development/scripts/config/pipelines/sarek.yaml +233 -0
- package/content/bio-research/skills/bio-research-nextflow-development/scripts/detect_data_type.py +300 -0
- package/content/bio-research/skills/bio-research-nextflow-development/scripts/generate_samplesheet.py +455 -0
- package/content/bio-research/skills/bio-research-nextflow-development/scripts/manage_genomes.py +521 -0
- package/content/bio-research/skills/bio-research-nextflow-development/scripts/sra_geo_fetch.py +732 -0
- package/content/bio-research/skills/bio-research-nextflow-development/scripts/utils/__init__.py +69 -0
- package/content/bio-research/skills/bio-research-nextflow-development/scripts/utils/file_discovery.py +189 -0
- package/content/bio-research/skills/bio-research-nextflow-development/scripts/utils/ncbi_utils.py +808 -0
- package/content/bio-research/skills/bio-research-nextflow-development/scripts/utils/sample_inference.py +290 -0
- package/content/bio-research/skills/bio-research-nextflow-development/scripts/utils/validators.py +256 -0
- package/content/bio-research/skills/bio-research-scientific-problem-selection/LICENSE.txt +201 -0
- package/content/bio-research/skills/bio-research-scientific-problem-selection/SKILL.md +269 -0
- package/content/bio-research/skills/bio-research-scientific-problem-selection/references/01-intuition-pumps.md +264 -0
- package/content/bio-research/skills/bio-research-scientific-problem-selection/references/02-risk-assessment.md +323 -0
- package/content/bio-research/skills/bio-research-scientific-problem-selection/references/03-optimization-function.md +481 -0
- package/content/bio-research/skills/bio-research-scientific-problem-selection/references/04-parameter-strategy.md +396 -0
- package/content/bio-research/skills/bio-research-scientific-problem-selection/references/05-decision-tree.md +85 -0
- package/content/bio-research/skills/bio-research-scientific-problem-selection/references/06-adversity-planning.md +123 -0
- package/content/bio-research/skills/bio-research-scientific-problem-selection/references/07-problem-inversion.md +152 -0
- package/content/bio-research/skills/bio-research-scientific-problem-selection/references/08-integration-synthesis.md +173 -0
- package/content/bio-research/skills/bio-research-scientific-problem-selection/references/09-meta-framework.md +504 -0
- package/content/bio-research/skills/bio-research-scvi-tools/LICENSE.txt +201 -0
- package/content/bio-research/skills/bio-research-scvi-tools/SKILL.md +155 -0
- package/content/bio-research/skills/bio-research-scvi-tools/references/atac_peakvi.md +398 -0
- package/content/bio-research/skills/bio-research-scvi-tools/references/batch_correction_sysvi.md +417 -0
- package/content/bio-research/skills/bio-research-scvi-tools/references/citeseq_totalvi.md +420 -0
- package/content/bio-research/skills/bio-research-scvi-tools/references/data_preparation.md +286 -0
- package/content/bio-research/skills/bio-research-scvi-tools/references/environment_setup.md +254 -0
- package/content/bio-research/skills/bio-research-scvi-tools/references/label_transfer.md +373 -0
- package/content/bio-research/skills/bio-research-scvi-tools/references/multiome_multivi.md +384 -0
- package/content/bio-research/skills/bio-research-scvi-tools/references/rna_velocity_velovi.md +410 -0
- package/content/bio-research/skills/bio-research-scvi-tools/references/scarches_mapping.md +401 -0
- package/content/bio-research/skills/bio-research-scvi-tools/references/scrna_integration.md +429 -0
- package/content/bio-research/skills/bio-research-scvi-tools/references/spatial_deconvolution.md +438 -0
- package/content/bio-research/skills/bio-research-scvi-tools/references/troubleshooting.md +420 -0
- package/content/bio-research/skills/bio-research-scvi-tools/scripts/cluster_embed.py +212 -0
- package/content/bio-research/skills/bio-research-scvi-tools/scripts/differential_expression.py +220 -0
- package/content/bio-research/skills/bio-research-scvi-tools/scripts/integrate_datasets.py +237 -0
- package/content/bio-research/skills/bio-research-scvi-tools/scripts/model_utils.py +634 -0
- package/content/bio-research/skills/bio-research-scvi-tools/scripts/prepare_data.py +169 -0
- package/content/bio-research/skills/bio-research-scvi-tools/scripts/train_model.py +370 -0
- package/content/bio-research/skills/bio-research-scvi-tools/scripts/transfer_labels.py +224 -0
- package/content/bio-research/skills/bio-research-scvi-tools/scripts/validate_adata.py +397 -0
- package/content/bio-research/skills/bio-research-single-cell-rna-qc/LICENSE.txt +201 -0
- package/content/bio-research/skills/bio-research-single-cell-rna-qc/SKILL.md +175 -0
- package/content/bio-research/skills/bio-research-single-cell-rna-qc/references/scverse_qc_guidelines.md +186 -0
- package/content/bio-research/skills/bio-research-single-cell-rna-qc/scripts/qc_analysis.py +232 -0
- package/content/bio-research/skills/bio-research-single-cell-rna-qc/scripts/qc_core.py +233 -0
- package/content/bio-research/skills/bio-research-single-cell-rna-qc/scripts/qc_plotting.py +235 -0
- package/content/bio-research/skills/bio-research-start/SKILL.md +79 -0
- package/content/customer-support/.mcp.json +40 -0
- package/content/customer-support/CONNECTORS.md +19 -0
- package/content/customer-support/LICENSE +202 -0
- package/content/customer-support/README.md +140 -0
- package/content/customer-support/skills/customer-support-customer-escalation/SKILL.md +248 -0
- package/content/customer-support/skills/customer-support-customer-research/SKILL.md +252 -0
- package/content/customer-support/skills/customer-support-draft-response/SKILL.md +418 -0
- package/content/customer-support/skills/customer-support-kb-article/SKILL.md +351 -0
- package/content/customer-support/skills/customer-support-ticket-triage/SKILL.md +275 -0
- package/content/data/.mcp.json +36 -0
- package/content/data/CONNECTORS.md +18 -0
- package/content/data/LICENSE +202 -0
- package/content/data/README.md +121 -0
- package/content/data/skills/data-analyze/SKILL.md +119 -0
- package/content/data/skills/data-build-dashboard/SKILL.md +924 -0
- package/content/data/skills/data-create-viz/SKILL.md +154 -0
- package/content/data/skills/data-data-context-extractor/SKILL.md +227 -0
- package/content/data/skills/data-data-context-extractor/references/domain-template.md +147 -0
- package/content/data/skills/data-data-context-extractor/references/example-output.md +198 -0
- package/content/data/skills/data-data-context-extractor/references/skill-template.md +148 -0
- package/content/data/skills/data-data-context-extractor/references/sql-dialects.md +121 -0
- package/content/data/skills/data-data-context-extractor/scripts/package_data_skill.py +126 -0
- package/content/data/skills/data-data-visualization/SKILL.md +305 -0
- package/content/data/skills/data-explore-data/SKILL.md +325 -0
- package/content/data/skills/data-sql-queries/SKILL.md +428 -0
- package/content/data/skills/data-statistical-analysis/SKILL.md +245 -0
- package/content/data/skills/data-validate-data/SKILL.md +383 -0
- package/content/data/skills/data-write-query/SKILL.md +122 -0
- package/content/design/.mcp.json +44 -0
- package/content/design/CONNECTORS.md +18 -0
- package/content/design/README.md +117 -0
- package/content/design/skills/design-accessibility-review/SKILL.md +128 -0
- package/content/design/skills/design-design-critique/SKILL.md +118 -0
- package/content/design/skills/design-design-handoff/SKILL.md +131 -0
- package/content/design/skills/design-design-system/SKILL.md +190 -0
- package/content/design/skills/design-research-synthesis/SKILL.md +92 -0
- package/content/design/skills/design-user-research/SKILL.md +41 -0
- package/content/design/skills/design-ux-copy/SKILL.md +107 -0
- package/content/engineering/.mcp.json +48 -0
- package/content/engineering/CONNECTORS.md +19 -0
- package/content/engineering/README.md +136 -0
- package/content/engineering/skills/engineering-architecture/SKILL.md +85 -0
- package/content/engineering/skills/engineering-code-review/SKILL.md +118 -0
- package/content/engineering/skills/engineering-debug/SKILL.md +95 -0
- package/content/engineering/skills/engineering-deploy-checklist/SKILL.md +78 -0
- package/content/engineering/skills/engineering-documentation/SKILL.md +49 -0
- package/content/engineering/skills/engineering-incident-response/SKILL.md +158 -0
- package/content/engineering/skills/engineering-standup/SKILL.md +75 -0
- package/content/engineering/skills/engineering-system-design/SKILL.md +42 -0
- package/content/engineering/skills/engineering-tech-debt/SKILL.md +32 -0
- package/content/engineering/skills/engineering-testing-strategy/SKILL.md +33 -0
- package/content/enterprise-search/.mcp.json +36 -0
- package/content/enterprise-search/CONNECTORS.md +21 -0
- package/content/enterprise-search/LICENSE +202 -0
- package/content/enterprise-search/README.md +157 -0
- package/content/enterprise-search/skills/enterprise-search-digest/SKILL.md +173 -0
- package/content/enterprise-search/skills/enterprise-search-knowledge-synthesis/SKILL.md +258 -0
- package/content/enterprise-search/skills/enterprise-search-search/SKILL.md +178 -0
- package/content/enterprise-search/skills/enterprise-search-search-strategy/SKILL.md +222 -0
- package/content/enterprise-search/skills/enterprise-search-source-management/SKILL.md +173 -0
- package/content/finance/.mcp.json +32 -0
- package/content/finance/CONNECTORS.md +20 -0
- package/content/finance/LICENSE +202 -0
- package/content/finance/README.md +92 -0
- package/content/finance/skills/finance-audit-support/SKILL.md +374 -0
- package/content/finance/skills/finance-close-management/SKILL.md +221 -0
- package/content/finance/skills/finance-financial-statements/SKILL.md +335 -0
- package/content/finance/skills/finance-journal-entry/SKILL.md +131 -0
- package/content/finance/skills/finance-journal-entry-prep/SKILL.md +186 -0
- package/content/finance/skills/finance-reconciliation/SKILL.md +175 -0
- package/content/finance/skills/finance-sox-testing/SKILL.md +218 -0
- package/content/finance/skills/finance-variance-analysis/SKILL.md +266 -0
- package/content/human-resources/.mcp.json +28 -0
- package/content/human-resources/CONNECTORS.md +19 -0
- package/content/human-resources/README.md +138 -0
- package/content/human-resources/skills/human-resources-comp-analysis/SKILL.md +92 -0
- package/content/human-resources/skills/human-resources-draft-offer/SKILL.md +82 -0
- package/content/human-resources/skills/human-resources-interview-prep/SKILL.md +37 -0
- package/content/human-resources/skills/human-resources-onboarding/SKILL.md +104 -0
- package/content/human-resources/skills/human-resources-org-planning/SKILL.md +28 -0
- package/content/human-resources/skills/human-resources-people-report/SKILL.md +99 -0
- package/content/human-resources/skills/human-resources-performance-review/SKILL.md +149 -0
- package/content/human-resources/skills/human-resources-policy-lookup/SKILL.md +94 -0
- package/content/human-resources/skills/human-resources-recruiting-pipeline/SKILL.md +31 -0
- package/content/legal/.mcp.json +36 -0
- package/content/legal/CONNECTORS.md +21 -0
- package/content/legal/LICENSE +202 -0
- package/content/legal/README.md +234 -0
- package/content/legal/skills/legal-brief/SKILL.md +208 -0
- package/content/legal/skills/legal-compliance-check/SKILL.md +274 -0
- package/content/legal/skills/legal-legal-response/SKILL.md +457 -0
- package/content/legal/skills/legal-legal-risk-assessment/SKILL.md +265 -0
- package/content/legal/skills/legal-meeting-briefing/SKILL.md +220 -0
- package/content/legal/skills/legal-review-contract/SKILL.md +358 -0
- package/content/legal/skills/legal-signature-request/SKILL.md +104 -0
- package/content/legal/skills/legal-triage-nda/SKILL.md +262 -0
- package/content/legal/skills/legal-vendor-check/SKILL.md +159 -0
- package/content/manifest.json +86 -0
- package/content/marketing/.mcp.json +60 -0
- package/content/marketing/CONNECTORS.md +20 -0
- package/content/marketing/LICENSE +202 -0
- package/content/marketing/README.md +90 -0
- package/content/marketing/skills/marketing-brand-review/SKILL.md +276 -0
- package/content/marketing/skills/marketing-campaign-plan/SKILL.md +308 -0
- package/content/marketing/skills/marketing-competitive-brief/SKILL.md +331 -0
- package/content/marketing/skills/marketing-content-creation/SKILL.md +157 -0
- package/content/marketing/skills/marketing-draft-content/SKILL.md +117 -0
- package/content/marketing/skills/marketing-email-sequence/SKILL.md +220 -0
- package/content/marketing/skills/marketing-performance-report/SKILL.md +392 -0
- package/content/marketing/skills/marketing-seo-audit/SKILL.md +190 -0
- package/content/operations/.mcp.json +32 -0
- package/content/operations/CONNECTORS.md +20 -0
- package/content/operations/README.md +135 -0
- package/content/operations/skills/operations-capacity-plan/SKILL.md +113 -0
- package/content/operations/skills/operations-change-request/SKILL.md +121 -0
- package/content/operations/skills/operations-compliance-tracking/SKILL.md +44 -0
- package/content/operations/skills/operations-process-doc/SKILL.md +82 -0
- package/content/operations/skills/operations-process-optimization/SKILL.md +39 -0
- package/content/operations/skills/operations-risk-assessment/SKILL.md +40 -0
- package/content/operations/skills/operations-runbook/SKILL.md +87 -0
- package/content/operations/skills/operations-status-report/SKILL.md +77 -0
- package/content/operations/skills/operations-vendor-review/SKILL.md +104 -0
- package/content/pdf-viewer/.mcp.json +8 -0
- package/content/pdf-viewer/CONNECTORS.md +15 -0
- package/content/pdf-viewer/LICENSE +202 -0
- package/content/pdf-viewer/README.md +57 -0
- package/content/pdf-viewer/commands/annotate.md +51 -0
- package/content/pdf-viewer/commands/fill-form.md +73 -0
- package/content/pdf-viewer/commands/open.md +34 -0
- package/content/pdf-viewer/commands/sign.md +54 -0
- package/content/pdf-viewer/skills/pdf-viewer-view-pdf/SKILL.md +147 -0
- package/content/product-management/.mcp.json +72 -0
- package/content/product-management/CONNECTORS.md +22 -0
- package/content/product-management/LICENSE +202 -0
- package/content/product-management/README.md +118 -0
- package/content/product-management/commands/brainstorm.md +120 -0
- package/content/product-management/skills/product-management-competitive-brief/SKILL.md +302 -0
- package/content/product-management/skills/product-management-metrics-review/SKILL.md +388 -0
- package/content/product-management/skills/product-management-product-brainstorming/SKILL.md +273 -0
- package/content/product-management/skills/product-management-roadmap-update/SKILL.md +266 -0
- package/content/product-management/skills/product-management-sprint-planning/SKILL.md +94 -0
- package/content/product-management/skills/product-management-stakeholder-update/SKILL.md +352 -0
- package/content/product-management/skills/product-management-synthesize-research/SKILL.md +312 -0
- package/content/product-management/skills/product-management-write-spec/SKILL.md +250 -0
- package/content/productivity/.mcp.json +44 -0
- package/content/productivity/CONNECTORS.md +18 -0
- package/content/productivity/LICENSE +202 -0
- package/content/productivity/README.md +97 -0
- package/content/productivity/skills/dashboard.html +3111 -0
- package/content/productivity/skills/productivity-memory-management/SKILL.md +323 -0
- package/content/productivity/skills/productivity-start/SKILL.md +158 -0
- package/content/productivity/skills/productivity-task-management/SKILL.md +91 -0
- package/content/productivity/skills/productivity-update/SKILL.md +168 -0
- package/content/sales/.mcp.json +100 -0
- package/content/sales/CONNECTORS.md +36 -0
- package/content/sales/LICENSE +202 -0
- package/content/sales/README.md +148 -0
- package/content/sales/skills/sales-account-context/SKILL.md +94 -0
- package/content/sales/skills/sales-account-plan/SKILL.md +95 -0
- package/content/sales/skills/sales-account-research/SKILL.md +99 -0
- package/content/sales/skills/sales-account-tiering/SKILL.md +101 -0
- package/content/sales/skills/sales-call-prep/SKILL.md +111 -0
- package/content/sales/skills/sales-call-summary/SKILL.md +111 -0
- package/content/sales/skills/sales-close-plan/SKILL.md +106 -0
- package/content/sales/skills/sales-competitive-intelligence/SKILL.md +102 -0
- package/content/sales/skills/sales-create-an-asset/SKILL.md +105 -0
- package/content/sales/skills/sales-crm-hygiene-check/SKILL.md +103 -0
- package/content/sales/skills/sales-customer-health/SKILL.md +108 -0
- package/content/sales/skills/sales-customer-voice/SKILL.md +94 -0
- package/content/sales/skills/sales-daily-briefing/SKILL.md +61 -0
- package/content/sales/skills/sales-deal-advance-gap/SKILL.md +102 -0
- package/content/sales/skills/sales-deal-review/SKILL.md +105 -0
- package/content/sales/skills/sales-deal-signals/SKILL.md +96 -0
- package/content/sales/skills/sales-deal-slip-scenario/SKILL.md +101 -0
- package/content/sales/skills/sales-draft-outreach/SKILL.md +116 -0
- package/content/sales/skills/sales-end-of-day/SKILL.md +114 -0
- package/content/sales/skills/sales-expansion-whitespace/SKILL.md +97 -0
- package/content/sales/skills/sales-forecast/SKILL.md +100 -0
- package/content/sales/skills/sales-handle-objection/SKILL.md +93 -0
- package/content/sales/skills/sales-inbox-sweep/SKILL.md +114 -0
- package/content/sales/skills/sales-lead-triage/SKILL.md +105 -0
- package/content/sales/skills/sales-log-activity/SKILL.md +111 -0
- package/content/sales/skills/sales-pipeline-review/SKILL.md +97 -0
- package/content/sales/skills/sales-renewal-radar/SKILL.md +95 -0
- package/content/sales/skills/sales-rep-context/SKILL.md +90 -0
- package/content/sales/skills/sales-route-lead/SKILL.md +111 -0
- package/content/sales/skills/sales-schedule-meeting/SKILL.md +99 -0
- package/content/sales/skills/sales-setup/SKILL.md +195 -0
- package/content/sales/skills/sales-stakeholder-map/SKILL.md +107 -0
- package/content/sales/skills/sales-team-pipeline/SKILL.md +105 -0
- package/content/sales/skills/sales-update-opportunity/SKILL.md +111 -0
- package/content/sales/skills/sales-weekly-wrap/SKILL.md +90 -0
- package/content/sales/skills/sales-win-loss-review/SKILL.md +88 -0
- package/content/small-business/.mcp.json +148 -0
- package/content/small-business/README.md +117 -0
- package/content/small-business/skills/small-business-ad-manager/SKILL.md +128 -0
- package/content/small-business/skills/small-business-ad-manager/reference/ad_copy.md +112 -0
- package/content/small-business/skills/small-business-ad-manager/reference/change_playbook.md +127 -0
- package/content/small-business/skills/small-business-ad-manager/reference/data_sources.md +100 -0
- package/content/small-business/skills/small-business-ad-manager/reference/diagnostics.md +89 -0
- package/content/small-business/skills/small-business-ad-manager/reference/gotchas.md +181 -0
- package/content/small-business/skills/small-business-ap-processor/SKILL.md +158 -0
- package/content/small-business/skills/small-business-ap-processor/reference/coding_rules.md +70 -0
- package/content/small-business/skills/small-business-ap-processor/reference/gotchas.md +131 -0
- package/content/small-business/skills/small-business-ap-processor/reference/intake_and_extraction.md +82 -0
- package/content/small-business/skills/small-business-ap-processor/reference/matching_and_exceptions.md +80 -0
- package/content/small-business/skills/small-business-ap-processor/reference/payment_run.md +77 -0
- package/content/small-business/skills/small-business-brand-style/SKILL.md +106 -0
- package/content/small-business/skills/small-business-build-agent/SKILL.md +105 -0
- package/content/small-business/skills/small-business-build-agent/reference/capture.md +133 -0
- package/content/small-business/skills/small-business-build-agent/reference/gotchas.md +204 -0
- package/content/small-business/skills/small-business-build-agent/reference/skill_authoring.md +165 -0
- package/content/small-business/skills/small-business-build-connector/SKILL.md +102 -0
- package/content/small-business/skills/small-business-build-connector/reference/discovery.md +120 -0
- package/content/small-business/skills/small-business-build-connector/reference/gotchas.md +237 -0
- package/content/small-business/skills/small-business-build-connector/reference/paths.md +106 -0
- package/content/small-business/skills/small-business-build-connector/reference/use-zapier.md +128 -0
- package/content/small-business/skills/small-business-business-pulse/SKILL.md +181 -0
- package/content/small-business/skills/small-business-business-pulse/reference/data_sources.md +173 -0
- package/content/small-business/skills/small-business-business-pulse/reference/gotchas.md +103 -0
- package/content/small-business/skills/small-business-business-pulse/reference/output_template.md +109 -0
- package/content/small-business/skills/small-business-business-pulse/reference/thresholds.md +71 -0
- package/content/small-business/skills/small-business-business-pulse/reference/v2_sources.md +63 -0
- package/content/small-business/skills/small-business-call-list/SKILL.md +82 -0
- package/content/small-business/skills/small-business-canva-creator/SKILL.md +448 -0
- package/content/small-business/skills/small-business-canva-creator/reference/canva-api.md +208 -0
- package/content/small-business/skills/small-business-canva-creator/reference/examples/boutique-brief-campaign.md +181 -0
- package/content/small-business/skills/small-business-canva-creator/reference/gotchas.md +380 -0
- package/content/small-business/skills/small-business-canva-creator/reference/hubspot-staging.md +137 -0
- package/content/small-business/skills/small-business-cash-flow-snapshot/SKILL.md +251 -0
- package/content/small-business/skills/small-business-cash-flow-snapshot/reference/examples/worked-example.md +92 -0
- package/content/small-business/skills/small-business-cash-flow-snapshot/reference/gotchas.md +62 -0
- package/content/small-business/skills/small-business-cash-flow-snapshot/reference/v2_sources.md +84 -0
- package/content/small-business/skills/small-business-close-month/SKILL.md +86 -0
- package/content/small-business/skills/small-business-content-strategy/SKILL.md +152 -0
- package/content/small-business/skills/small-business-content-strategy/reference/examples/retail-boutique-example.md +71 -0
- package/content/small-business/skills/small-business-content-strategy/reference/gotchas.md +104 -0
- package/content/small-business/skills/small-business-content-strategy/reference/v2_sources.md +40 -0
- package/content/small-business/skills/small-business-contract-review/SKILL.md +158 -0
- package/content/small-business/skills/small-business-contract-review/reference/docusign-fetch.md +32 -0
- package/content/small-business/skills/small-business-contract-review/reference/examples/flagged-summary-saas.md +97 -0
- package/content/small-business/skills/small-business-contract-review/reference/gmail-fetch.md +30 -0
- package/content/small-business/skills/small-business-contract-review/reference/gotchas.md +105 -0
- package/content/small-business/skills/small-business-contract-review/reference/m365-fetch.md +60 -0
- package/content/small-business/skills/small-business-crm-autopilot/SKILL.md +162 -0
- package/content/small-business/skills/small-business-crm-autopilot/reference/cleanup-checklist.md +82 -0
- package/content/small-business/skills/small-business-crm-autopilot/reference/examples/cleanup-deal.md +83 -0
- package/content/small-business/skills/small-business-crm-autopilot/reference/examples/log-call-happy-path.md +68 -0
- package/content/small-business/skills/small-business-crm-autopilot/reference/examples/log-email-happy-path.md +50 -0
- package/content/small-business/skills/small-business-crm-autopilot/reference/gotchas.md +110 -0
- package/content/small-business/skills/small-business-crm-autopilot/reference/hubspot-fields.md +62 -0
- package/content/small-business/skills/small-business-crm-autopilot/reference/lightweight_crm.md +125 -0
- package/content/small-business/skills/small-business-crm-autopilot/reference/salesforce-fields.md +122 -0
- package/content/small-business/skills/small-business-crm-autopilot/reference/standing_mode.md +144 -0
- package/content/small-business/skills/small-business-grant-rfp-writer/SKILL.md +162 -0
- package/content/small-business/skills/small-business-grant-rfp-writer/reference/drafting.md +129 -0
- package/content/small-business/skills/small-business-grant-rfp-writer/reference/go_no_go.md +125 -0
- package/content/small-business/skills/small-business-grant-rfp-writer/reference/gotchas.md +180 -0
- package/content/small-business/skills/small-business-grant-rfp-writer/reference/opportunity_sources.md +90 -0
- package/content/small-business/skills/small-business-grant-rfp-writer/reference/org_profile.md +81 -0
- package/content/small-business/skills/small-business-grow-pipeline/SKILL.md +92 -0
- package/content/small-business/skills/small-business-growth-pulse/SKILL.md +143 -0
- package/content/small-business/skills/small-business-growth-pulse/reference/data_sources.md +113 -0
- package/content/small-business/skills/small-business-growth-pulse/reference/gotchas.md +175 -0
- package/content/small-business/skills/small-business-growth-pulse/reference/output_template.md +122 -0
- package/content/small-business/skills/small-business-growth-pulse/reference/thresholds.md +110 -0
- package/content/small-business/skills/small-business-hiring-screener/SKILL.md +137 -0
- package/content/small-business/skills/small-business-hiring-screener/reference/candidate_comms.md +132 -0
- package/content/small-business/skills/small-business-hiring-screener/reference/fair_screening.md +103 -0
- package/content/small-business/skills/small-business-hiring-screener/reference/gotchas.md +183 -0
- package/content/small-business/skills/small-business-hiring-screener/reference/onboarding.md +82 -0
- package/content/small-business/skills/small-business-hiring-screener/reference/rubric.md +122 -0
- package/content/small-business/skills/small-business-inbox-manager/SKILL.md +130 -0
- package/content/small-business/skills/small-business-inbox-manager/reference/digest_format.md +110 -0
- package/content/small-business/skills/small-business-inbox-manager/reference/gotchas.md +220 -0
- package/content/small-business/skills/small-business-inbox-manager/reference/handoffs.md +77 -0
- package/content/small-business/skills/small-business-inbox-manager/reference/reply_drafting.md +116 -0
- package/content/small-business/skills/small-business-inbox-manager/reference/triage_rules.md +72 -0
- package/content/small-business/skills/small-business-inventory-planner/SKILL.md +126 -0
- package/content/small-business/skills/small-business-inventory-planner/reference/data_sources.md +94 -0
- package/content/small-business/skills/small-business-inventory-planner/reference/gotchas.md +153 -0
- package/content/small-business/skills/small-business-inventory-planner/reference/po_drafting.md +92 -0
- package/content/small-business/skills/small-business-inventory-planner/reference/seasonality.md +112 -0
- package/content/small-business/skills/small-business-inventory-planner/reference/velocity_and_reorder.md +154 -0
- package/content/small-business/skills/small-business-invoice-chase/SKILL.md +131 -0
- package/content/small-business/skills/small-business-invoice-chase/reference/examples/firm-reminder.md +28 -0
- package/content/small-business/skills/small-business-invoice-chase/reference/examples/gentle-reminder.md +27 -0
- package/content/small-business/skills/small-business-invoice-chase/reference/gotchas.md +75 -0
- package/content/small-business/skills/small-business-invoice-chase/reference/tone-matching.md +44 -0
- package/content/small-business/skills/small-business-invoice-chase/reference/v2_sources.md +78 -0
- package/content/small-business/skills/small-business-job-post-builder/SKILL.md +204 -0
- package/content/small-business/skills/small-business-job-post-builder/reference/docusign-routing.md +63 -0
- package/content/small-business/skills/small-business-job-post-builder/reference/examples/worked-example.md +110 -0
- package/content/small-business/skills/small-business-job-post-builder/reference/existing-document-merge.md +58 -0
- package/content/small-business/skills/small-business-job-post-builder/reference/gotchas.md +68 -0
- package/content/small-business/skills/small-business-job-post-builder/reference/interview-guide-structure.md +93 -0
- package/content/small-business/skills/small-business-job-post-builder/reference/job-post-structure.md +62 -0
- package/content/small-business/skills/small-business-job-post-builder/reference/offer-letter-template.md +145 -0
- package/content/small-business/skills/small-business-job-post-builder/reference/role-intake.md +73 -0
- package/content/small-business/skills/small-business-lead-finder/SKILL.md +119 -0
- package/content/small-business/skills/small-business-lead-finder/reference/gotchas.md +152 -0
- package/content/small-business/skills/small-business-lead-finder/reference/icp_method.md +97 -0
- package/content/small-business/skills/small-business-lead-finder/reference/output_template.md +124 -0
- package/content/small-business/skills/small-business-lead-finder/reference/scoring.md +92 -0
- package/content/small-business/skills/small-business-lead-finder/reference/sourcing.md +78 -0
- package/content/small-business/skills/small-business-lead-triage/SKILL.md +81 -0
- package/content/small-business/skills/small-business-lead-triage/reference/examples/happy-path-triage.md +68 -0
- package/content/small-business/skills/small-business-lead-triage/reference/gotchas.md +76 -0
- package/content/small-business/skills/small-business-lead-triage/reference/hubspot-scoring.md +169 -0
- package/content/small-business/skills/small-business-marketing-monday/SKILL.md +108 -0
- package/content/small-business/skills/small-business-monday-brief/SKILL.md +97 -0
- package/content/small-business/skills/small-business-month-end-prep/SKILL.md +331 -0
- package/content/small-business/skills/small-business-month-end-prep/reference/close-packet-format.md +127 -0
- package/content/small-business/skills/small-business-month-end-prep/reference/examples/pl-narrative.md +52 -0
- package/content/small-business/skills/small-business-month-end-prep/reference/gotchas.md +113 -0
- package/content/small-business/skills/small-business-month-end-prep/reference/paypal-settlements.md +110 -0
- package/content/small-business/skills/small-business-month-end-prep/reference/quickbooks-reconcile.md +71 -0
- package/content/small-business/skills/small-business-month-end-prep/reference/v2_sources.md +125 -0
- package/content/small-business/skills/small-business-month-end-prep/reference/xero-reconcile.md +175 -0
- package/content/small-business/skills/small-business-month-end-prep/reference/zoho-books-reconcile.md +168 -0
- package/content/small-business/skills/small-business-outreach-composer/SKILL.md +144 -0
- package/content/small-business/skills/small-business-outreach-composer/reference/gotchas.md +213 -0
- package/content/small-business/skills/small-business-outreach-composer/reference/output_template.md +147 -0
- package/content/small-business/skills/small-business-outreach-composer/reference/sequence_patterns.md +99 -0
- package/content/small-business/skills/small-business-outreach-composer/reference/slop_test.md +164 -0
- package/content/small-business/skills/small-business-pay-the-bills/SKILL.md +101 -0
- package/content/small-business/skills/small-business-payroll-prep/SKILL.md +139 -0
- package/content/small-business/skills/small-business-payroll-prep/reference/anomaly_rules.md +99 -0
- package/content/small-business/skills/small-business-payroll-prep/reference/books_sync.md +72 -0
- package/content/small-business/skills/small-business-payroll-prep/reference/gotchas.md +153 -0
- package/content/small-business/skills/small-business-payroll-prep/reference/run_sheet_format.md +90 -0
- package/content/small-business/skills/small-business-payroll-prep/reference/timesheet_intake.md +118 -0
- package/content/small-business/skills/small-business-plan-payroll/SKILL.md +88 -0
- package/content/small-business/skills/small-business-proposal-builder/SKILL.md +168 -0
- package/content/small-business/skills/small-business-proposal-builder/reference/discovery_extraction.md +138 -0
- package/content/small-business/skills/small-business-proposal-builder/reference/gotchas.md +184 -0
- package/content/small-business/skills/small-business-proposal-builder/reference/output_template.md +128 -0
- package/content/small-business/skills/small-business-proposal-builder/reference/pricing_method.md +125 -0
- package/content/small-business/skills/small-business-proposal-builder/reference/proposal_structure.md +120 -0
- package/content/small-business/skills/small-business-reactivate/SKILL.md +109 -0
- package/content/small-business/skills/small-business-report-builder/SKILL.md +142 -0
- package/content/small-business/skills/small-business-report-builder/reference/data_sources.md +168 -0
- package/content/small-business/skills/small-business-report-builder/reference/gotchas.md +155 -0
- package/content/small-business/skills/small-business-report-builder/reference/output_template.md +109 -0
- package/content/small-business/skills/small-business-report-builder/reference/report_spec.md +109 -0
- package/content/small-business/skills/small-business-report-builder/reference/saved_reports.md +50 -0
- package/content/small-business/skills/small-business-report-pack/SKILL.md +83 -0
- package/content/small-business/skills/small-business-restock/SKILL.md +88 -0
- package/content/small-business/skills/small-business-review-reputation/SKILL.md +130 -0
- package/content/small-business/skills/small-business-review-reputation/reference/churn-signals.md +110 -0
- package/content/small-business/skills/small-business-review-reputation/reference/examples/example-report.md +150 -0
- package/content/small-business/skills/small-business-review-reputation/reference/gotchas.md +164 -0
- package/content/small-business/skills/small-business-review-reputation/reference/response-patterns.md +123 -0
- package/content/small-business/skills/small-business-review-reputation/reference/sources.md +116 -0
- package/content/small-business/skills/small-business-seo-ai-visibility/SKILL.md +143 -0
- package/content/small-business/skills/small-business-seo-ai-visibility/reference/ai_visibility.md +173 -0
- package/content/small-business/skills/small-business-seo-ai-visibility/reference/audit_checklist.md +134 -0
- package/content/small-business/skills/small-business-seo-ai-visibility/reference/catalog_refresh.md +126 -0
- package/content/small-business/skills/small-business-seo-ai-visibility/reference/content_rewrite.md +113 -0
- package/content/small-business/skills/small-business-seo-ai-visibility/reference/gotchas.md +211 -0
- package/content/small-business/skills/small-business-smb-onboard/SKILL.md +82 -0
- package/content/small-business/skills/small-business-smb-onboard/reference/examples/happy-path.md +190 -0
- package/content/small-business/skills/small-business-smb-onboard/reference/gotchas.md +111 -0
- package/content/small-business/skills/small-business-smb-onboard/reference/onboard-checklist.md +99 -0
- package/content/small-business/skills/small-business-smb-onboard/reference/website-research.md +82 -0
- package/content/small-business/skills/small-business-smb-router/SKILL.md +216 -0
- package/content/small-business/skills/small-business-smb-router/reference/connector-map.md +96 -0
- package/content/small-business/skills/small-business-social-content-engine/SKILL.md +162 -0
- package/content/small-business/skills/small-business-social-content-engine/reference/calendar.md +116 -0
- package/content/small-business/skills/small-business-social-content-engine/reference/canva-api.md +208 -0
- package/content/small-business/skills/small-business-social-content-engine/reference/examples/okonkwo-campaign.md +190 -0
- package/content/small-business/skills/small-business-social-content-engine/reference/gotchas.md +447 -0
- package/content/small-business/skills/small-business-social-content-engine/reference/publishing.md +166 -0
- package/content/small-business/skills/small-business-social-content-engine/reference/shopify-assets.md +77 -0
- package/content/small-business/skills/small-business-speed-to-lead/SKILL.md +172 -0
- package/content/small-business/skills/small-business-speed-to-lead/reference/approval.md +61 -0
- package/content/small-business/skills/small-business-speed-to-lead/reference/gotchas.md +167 -0
- package/content/small-business/skills/small-business-speed-to-lead/reference/qualification.md +153 -0
- package/content/small-business/skills/small-business-speed-to-lead/reference/response_patterns.md +184 -0
- package/content/small-business/skills/small-business-tax-prep/SKILL.md +85 -0
- package/content/small-business/skills/small-business-tax-season-organizer/SKILL.md +210 -0
- package/content/small-business/skills/small-business-tax-season-organizer/reference/calculation-assumptions.md +177 -0
- package/content/small-business/skills/small-business-tax-season-organizer/reference/connector-queries.md +267 -0
- package/content/small-business/skills/small-business-tax-season-organizer/reference/examples/quarterly-estimate.md +92 -0
- package/content/small-business/skills/small-business-tax-season-organizer/reference/examples/year-end-1099.md +102 -0
- package/content/small-business/skills/small-business-tax-season-organizer/reference/gotchas.md +104 -0
- package/content/small-business/skills/small-business-tax-season-organizer/reference/output-formats.md +68 -0
- package/content/small-business/skills/small-business-ticket-deflector/SKILL.md +164 -0
- package/content/small-business/skills/small-business-ticket-deflector/reference/examples/deny-refund-request.md +98 -0
- package/content/small-business/skills/small-business-ticket-deflector/reference/examples/respond-refund-request.md +77 -0
- package/content/small-business/skills/small-business-ticket-deflector/reference/gotchas.md +57 -0
- package/index.ts +83 -0
- package/package.json +28 -3
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: inventory-planner
|
|
3
|
+
description: >
|
|
4
|
+
Works out what to reorder and when, from what is actually selling: pulls
|
|
5
|
+
sales history and stock on hand from Shopify, Square, NetSuite, or an
|
|
6
|
+
uploaded CSV, computes 7-day and 28-day sales velocity per item, projects a
|
|
7
|
+
conservative stockout date for each, sizes a 60-day reorder quantity, and
|
|
8
|
+
drafts the purchase orders and vendor emails to cover it. Flags the money
|
|
9
|
+
sitting still too — overstock, dead stock, and zero-velocity items, reported
|
|
10
|
+
as slow movers to clear rather than things to buy more of. Seasonality is
|
|
11
|
+
applied where the history supports it and named where it does not. Nothing
|
|
12
|
+
is ordered and no vendor is emailed without approval. Reach for this
|
|
13
|
+
whenever stock comes up — "what do I need to reorder," "am I going to run
|
|
14
|
+
out," "what should I order this month," "we keep running out of filters,"
|
|
15
|
+
"how much cash is sitting in the warehouse," "what is not moving," or "draft
|
|
16
|
+
a PO for my supplier."
|
|
17
|
+
allowed-tools: Read, WebFetch
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
# Inventory Planner
|
|
21
|
+
|
|
22
|
+
Buy what sells, before it runs out, and stop buying what doesn't.
|
|
23
|
+
|
|
24
|
+
Stock is cash the owner already spent. Two things go wrong: running out of the item customers came for, and sitting on a pallet of something nobody wants. Both are visible in the sales history well before they become a problem, which is what this skill reads for.
|
|
25
|
+
|
|
26
|
+
## Step 1 — Get sales and stock
|
|
27
|
+
|
|
28
|
+
**Preferred:** Shopify for sales and inventory levels. Square and NetSuite work the same way.
|
|
29
|
+
|
|
30
|
+
**Fallback, fully supported:** a CSV of sales history plus a stock-on-hand count. Two files, or one with both. This path works with zero connectors and gives the same output. Many businesses count on a clipboard, and that is a legitimate input.
|
|
31
|
+
|
|
32
|
+
You need, per item: SKU, name, units sold by date, current stock on hand, unit cost, unit price, vendor, and lead time if known. Missing lead time is asked for once and remembered — see `reference/data_sources.md`.
|
|
33
|
+
|
|
34
|
+
**Say what the count is as of.** A stock figure two weeks old produces a stockout date two weeks wrong.
|
|
35
|
+
|
|
36
|
+
## Step 2 — Compute velocity, both windows
|
|
37
|
+
|
|
38
|
+
For every item, compute:
|
|
39
|
+
|
|
40
|
+
- **7-day velocity** — units per day over the last week. Catches what is happening now.
|
|
41
|
+
- **28-day velocity** — units per day over four weeks. The stable baseline.
|
|
42
|
+
|
|
43
|
+
Both matter, and disagreement between them is information. An item selling three times its 28-day rate this week is either trending or had one bulk order, and those need different responses. `reference/velocity_and_reorder.md` covers how to tell them apart.
|
|
44
|
+
|
|
45
|
+
Exclude one-off distortions from the baseline where you can identify them: a single wholesale order, a returned batch, a stockout period where the item could not sell. **A period of zero sales because there was no stock is not zero demand**, and treating it as such is how an item gets under-ordered forever.
|
|
46
|
+
|
|
47
|
+
## Step 3 — Project stockout dates, conservatively
|
|
48
|
+
|
|
49
|
+
Stockout date is stock on hand divided by the daily velocity you trust least — the higher of the two windows. Being early is cheap; being late loses the sale.
|
|
50
|
+
|
|
51
|
+
Then compare against lead time. The number that matters is not when it runs out, it is whether there is still time to order:
|
|
52
|
+
|
|
53
|
+
- **Past the point of no return** — lead time exceeds days of cover. Already going to stock out. Say so plainly.
|
|
54
|
+
- **Order now** — cover is within lead time plus a safety buffer.
|
|
55
|
+
- **Order soon** — comfortable, but on the next cycle.
|
|
56
|
+
- **Fine** — no action.
|
|
57
|
+
|
|
58
|
+
**Never state a stockout date for an item with no reliable velocity.** New items with two weeks of history and items whose sales were interrupted get flagged as "not enough history," by name.
|
|
59
|
+
|
|
60
|
+
## Step 4 — Size the reorder
|
|
61
|
+
|
|
62
|
+
Default target is **60 days of cover plus the lead time**, sized on the **28-day rate** — not on the faster of the two. The stock has to last from the day it lands until the next order lands, so leaving the lead time out runs the item short by exactly that many days every cycle. Then adjust for pack size, minimum order quantity, and what is already on order.
|
|
63
|
+
|
|
64
|
+
The two rates do different jobs and both get named on the line: the higher one says when it runs out, the 28-day one says how much to buy. Sizing a 60-day order off a one-week spike is how cash ends up in a pallet.
|
|
65
|
+
|
|
66
|
+
Never size a reorder without subtracting inbound stock. Double-ordering a slow item is how a business ends up with three years of it.
|
|
67
|
+
|
|
68
|
+
Round to the vendor's pack size and say which direction you rounded. Show the dollar cost of every recommendation — the owner is deciding about cash, not units.
|
|
69
|
+
|
|
70
|
+
## Step 5 — Handle the items that are not moving
|
|
71
|
+
|
|
72
|
+
Zero-velocity and very slow items are a separate list with a separate purpose. **They are never reorder candidates.**
|
|
73
|
+
|
|
74
|
+
- **Zero velocity** — no units in 28 days. Report as a slow mover with the cash tied up in it. **Never compute days of cover for these** — nothing is selling, so nothing is running out, and the number is either an error or nonsense. The one exception is an item inside a season the owner has named, which goes on a dated watch list instead of the clear-out list.
|
|
75
|
+
- **Overstock** — more than 120 days of cover. Report the excess units and the dollars.
|
|
76
|
+
- **Dead stock** — no movement in 90 days. Suggest clearing, bundling, or discounting.
|
|
77
|
+
|
|
78
|
+
Total the cash sitting in these. That figure is usually the most surprising number in the whole report and often the most useful one.
|
|
79
|
+
|
|
80
|
+
## Step 6 — Apply seasonality only where history supports it
|
|
81
|
+
|
|
82
|
+
With at least a year of history, compare the coming period against the same period last year and adjust.
|
|
83
|
+
|
|
84
|
+
**With less than a year, say so and do not adjust.** A seasonal multiplier invented from nine months of data is a guess wearing a suit. Ask the owner instead — they know their season better than a short history does. `reference/seasonality.md` covers both paths.
|
|
85
|
+
|
|
86
|
+
## Step 7 — Present the buy list
|
|
87
|
+
|
|
88
|
+
Lead with the total dollar amount and the count of items about to stock out. Then: order now, order soon, slow movers, and anything with too little history to judge.
|
|
89
|
+
|
|
90
|
+
Every line carries the numbers behind it — velocity, days of cover, lead time, quantity, cost. An owner who can see the reasoning approves in a minute; one who cannot rebuilds the whole thing by hand.
|
|
91
|
+
|
|
92
|
+
Render the buy list as an HTML artifact using the house artifact style (`../../shared/artifact-style.md`): a stockout table sorted by stockout date with mono tabular-nums numerals, urgency status pills (order now / order soon / fine / past the point of no return), a reorder panel with quantities and dollar totals, and a slow-movers section with the cash tied up in it. The chat summary stays — the artifact is the full picture, not the only one.
|
|
93
|
+
|
|
94
|
+
## Step 8 — Draft POs and vendor emails, with approval
|
|
95
|
+
|
|
96
|
+
Purchase orders commit money and vendor emails go out under the owner's name, so both wait for an explicit yes.
|
|
97
|
+
|
|
98
|
+
State the vendor, the line items, and the total before asking. Draft the vendor email in the owner's voice per [the shared voice profile](../../shared/voice-profile.md). **If no profile exists yet, follow that file's "When there is no sample" instruction** — ask for three emails they have already sent a supplier. If they would rather not, write the email plain and neutral and say it is not in their voice. Never invent a personality for someone's vendor relationship.
|
|
99
|
+
|
|
100
|
+
With Google Calendar connected, offer a recurring block for the restock decision — this works far better as a rhythm than as a fire drill. Keep the approved PO document here — this skill owns it. With QuickBooks or NetSuite connected, hand `ap-processor` the coded memo for each one (vendor, PO number, total, expected date, and the account, class, and job), so the bill three-way-matches against a real record when it arrives. `ap-processor` reads POs; it does not create them.
|
|
101
|
+
|
|
102
|
+
## Closing offer
|
|
103
|
+
|
|
104
|
+
Close with one line on what was decided — the total buy and the items about to run out. Then offer the most relevant next step with its exact trigger phrase: "reorder" (`/restock`) when the owner wants the POs drafted and sent end to end. Up to two more from the router's table, such as "cash forecast" (`cash-flow-snapshot`) or "pay the bills" (`/pay-the-bills`). Three offers at most, and never repeat one the owner already declined this session.
|
|
105
|
+
|
|
106
|
+
## What not to do
|
|
107
|
+
|
|
108
|
+
- **Do not invent a velocity, a lead time, or a stockout date.** Too little history is reported by SKU, not smoothed over.
|
|
109
|
+
- **Do not treat an out-of-stock period as zero demand.** It is suppressed demand and it biases everything downstream.
|
|
110
|
+
- **Do not recommend reordering a zero-velocity item.** No sales means stop buying, not buy more.
|
|
111
|
+
- **Do not size a reorder without subtracting what is already inbound.**
|
|
112
|
+
- **Do not apply seasonality without a year of history.** Ask the owner instead.
|
|
113
|
+
- **Do not send a PO or a vendor email without approval.** Both spend money or spend goodwill.
|
|
114
|
+
- **Do not report units without dollars.** The owner thinks in cash.
|
|
115
|
+
|
|
116
|
+
## Reference files
|
|
117
|
+
|
|
118
|
+
- `reference/data_sources.md` — Shopify, Square, NetSuite, and the CSV path, with required fields
|
|
119
|
+
- `reference/velocity_and_reorder.md` — the 7/28-day math, distortion handling, and reorder sizing
|
|
120
|
+
- `reference/seasonality.md` — when to adjust, when to ask, and how to say which you did
|
|
121
|
+
- `reference/po_drafting.md` — purchase order structure and vendor email drafting
|
|
122
|
+
- `reference/gotchas.md` — the mistakes that stock out a bestseller or bury cash in a pallet
|
|
123
|
+
|
|
124
|
+
## Using a tool that isn't listed
|
|
125
|
+
|
|
126
|
+
The connectors named in this skill are the tested paths, not a wall. If the owner wants this flow to use a tool that isn't connected or listed, offer `build-connector` — it checks the connector directory first and connects through Zapier otherwise, never hand-building against a raw API. Once the connection exists, the tool joins this skill like any other optional connector, under the same approval gates.
|
package/content/small-business/skills/small-business-inventory-planner/reference/data_sources.md
ADDED
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
# Data Sources
|
|
2
|
+
|
|
3
|
+
Where sales and stock come from, and what has to be in the data before any of the math is trustworthy.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Required fields
|
|
8
|
+
|
|
9
|
+
Everything downstream depends on these. Anything missing gets asked for once and remembered.
|
|
10
|
+
|
|
11
|
+
| Field | Needed for | If missing |
|
|
12
|
+
|---|---|---|
|
|
13
|
+
| SKU or item ID | Everything | Cannot proceed for that item |
|
|
14
|
+
| Item name | The report being readable | Use the SKU and say the name is missing |
|
|
15
|
+
| Units sold, by date | Velocity | No velocity, no stockout date. Flag the item |
|
|
16
|
+
| Stock on hand | Days of cover | Flag; velocity alone cannot tell you when it runs out |
|
|
17
|
+
| As-of date for the count | Accuracy of everything | Ask. A stale count is the most common silent error here |
|
|
18
|
+
| Unit cost | Dollar figures on the buy list | Report units only for that item and say why |
|
|
19
|
+
| Unit price | Overstock cash and margin context | Optional, useful |
|
|
20
|
+
| Vendor | PO drafting | Group as "vendor unknown" and ask |
|
|
21
|
+
| Lead time | Whether there is still time to order | Ask once per vendor and remember |
|
|
22
|
+
| Units on order | Not double-ordering | Ask. This one is worth chasing — it causes real over-buying |
|
|
23
|
+
| Pack size / MOQ | Realistic quantities | Round to whole units and note it was not applied |
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## Shopify
|
|
28
|
+
|
|
29
|
+
The preferred source. Pull:
|
|
30
|
+
|
|
31
|
+
- Orders with line items over the lookback window, at least 90 days, 400 days if seasonality is in scope
|
|
32
|
+
- Inventory levels per variant per location (`get-inventory-levels` takes one `productId` per call; loop the products the run needs — `../../../shared/connector-call-shapes.md`)
|
|
33
|
+
- Product and variant records for cost, price, and vendor
|
|
34
|
+
|
|
35
|
+
Watch for:
|
|
36
|
+
|
|
37
|
+
- **Multi-location inventory.** Total across locations only if the owner sells from one pool. Otherwise stockouts are per location and a total hides them.
|
|
38
|
+
- **Variants.** Velocity belongs at the variant level. A shirt that sells fine in medium and never in XL looks healthy at the product level.
|
|
39
|
+
- **Cancelled and refunded orders.** Exclude them from units sold.
|
|
40
|
+
- **Bundles and kits.** A bundle sale consumes component stock. If the store uses bundles, ask how components are tracked before trusting the numbers.
|
|
41
|
+
|
|
42
|
+
## Square
|
|
43
|
+
|
|
44
|
+
Same shape, different names. Sales come from transactions, stock from the item catalog inventory counts. Square inventory tracking is often partially enabled — check which items actually have counts before treating a zero as a zero.
|
|
45
|
+
|
|
46
|
+
## NetSuite
|
|
47
|
+
|
|
48
|
+
The ERP path for the top end. Item records carry cost, preferred vendor, lead time, and reorder points already set by someone. **Use the existing reorder points as context, not as truth** — they are frequently years stale, and pointing out where the computed number diverges from the stored one is genuinely useful.
|
|
49
|
+
|
|
50
|
+
---
|
|
51
|
+
|
|
52
|
+
## The CSV path
|
|
53
|
+
|
|
54
|
+
A fully supported first-class mode. Two files or one.
|
|
55
|
+
|
|
56
|
+
**Sales history file**, one row per sale or per item-day:
|
|
57
|
+
|
|
58
|
+
```
|
|
59
|
+
sku, date, units_sold
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
**Stock file:**
|
|
63
|
+
|
|
64
|
+
```
|
|
65
|
+
sku, name, on_hand, unit_cost, vendor, lead_time_days, on_order
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
Accept whatever column names came out of their system and map them. Report the mapping back so the owner can catch a wrong guess before it becomes a purchase order.
|
|
69
|
+
|
|
70
|
+
**Ask for the as-of date of the stock count.** It is almost never in the file, and it is the difference between a stockout date that is right and one that is two weeks late.
|
|
71
|
+
|
|
72
|
+
---
|
|
73
|
+
|
|
74
|
+
## Data quality checks before any math
|
|
75
|
+
|
|
76
|
+
Run these and report what they find:
|
|
77
|
+
|
|
78
|
+
1. **Negative stock.** Real in most systems, and it means the count is wrong. Flag it.
|
|
79
|
+
2. **Items with sales and no stock record**, or stock and no sales record.
|
|
80
|
+
3. **Duplicate SKUs** with different names.
|
|
81
|
+
4. **A history window shorter than 28 days** — say so; the 28-day velocity will not be reliable.
|
|
82
|
+
5. **Zero-sales stretches** that coincide with zero stock. These are stockouts, not demand. See `velocity_and_reorder.md`.
|
|
83
|
+
|
|
84
|
+
---
|
|
85
|
+
|
|
86
|
+
## Worked example
|
|
87
|
+
|
|
88
|
+
Okonkwo Mechanical stocks common parts on the trucks and in the shop. No Shopify — Ray exported two CSVs from his supply-house portal and counted the shop shelf on a Saturday.
|
|
89
|
+
|
|
90
|
+
- 84 SKUs, 120 days of usage history
|
|
91
|
+
- Stock count as of 3/15, confirmed with Ray
|
|
92
|
+
- Lead times missing for all of them; Ray gave two by vendor: Ferguson 3 days, Watsco 10 days
|
|
93
|
+
- 6 SKUs had usage but no stock line — parts pulled straight to jobs, never shelved. Excluded and reported
|
|
94
|
+
- 2 negative counts flagged, both compressors, both recounted
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
# Gotchas
|
|
2
|
+
|
|
3
|
+
The mistakes that stock out a bestseller or bury cash in a pallet. Inventory errors are slow and expensive — they show up as a missed sale or a shelf nobody touches for two years.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Gotcha: counting a stockout as zero demand
|
|
8
|
+
|
|
9
|
+
**Why it matters:** This is the most damaging error in the whole skill, and it is self-reinforcing. The item ran out because it sells. The zero-sales days drag the velocity down. The next order is smaller. It runs out sooner. Repeat.
|
|
10
|
+
|
|
11
|
+
### Bad
|
|
12
|
+
|
|
13
|
+
```
|
|
14
|
+
Merv 11 filter: 12 units sold in 28 days = 0.43/day. Slow mover, no reorder.
|
|
15
|
+
```
|
|
16
|
+
(the shelf was empty for 20 of those 28 days)
|
|
17
|
+
|
|
18
|
+
### Good
|
|
19
|
+
|
|
20
|
+
```
|
|
21
|
+
Merv 11 filter: 12 units in the 8 days it was actually in stock = 1.5/day.
|
|
22
|
+
Out of stock 20 of the last 28 days — that is suppressed demand, not slow sales.
|
|
23
|
+
Planning on 1.5/day.
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## Gotcha: ordering into a one-week spike
|
|
29
|
+
|
|
30
|
+
**Why it matters:** A single bulk order makes an ordinary item look like a runaway for exactly seven days. Sixty days of cover sized off that number is a pallet the owner paid for and will look at for a year.
|
|
31
|
+
|
|
32
|
+
### Bad
|
|
33
|
+
|
|
34
|
+
7-day velocity 5.8/day vs 28-day 0.4/day. Size 60 days at 5.8/day.
|
|
35
|
+
|
|
36
|
+
### Good
|
|
37
|
+
|
|
38
|
+
```
|
|
39
|
+
7-day rate is 14x the 28-day rate. Looking at the orders: one sale of 40 units
|
|
40
|
+
on the 9th. That is a job, not a trend. Sizing on the 28-day rate and noting
|
|
41
|
+
it in case that customer comes back.
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
## Gotcha: recommending a reorder for a zero-velocity item
|
|
47
|
+
|
|
48
|
+
**Why it matters:** Zero sales in 28 days means stop buying. A reorder point set years ago in the ERP will happily say otherwise, and following it converts working capital into shelf decoration.
|
|
49
|
+
|
|
50
|
+
### Bad
|
|
51
|
+
|
|
52
|
+
NetSuite reorder point says 24, on hand is 6, so order 18.
|
|
53
|
+
|
|
54
|
+
### Good
|
|
55
|
+
|
|
56
|
+
```
|
|
57
|
+
Zero units sold in 28 days. The stored reorder point says 24 — that is stale.
|
|
58
|
+
Not a reorder. Six units, USD 340 tied up. Worth clearing.
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
---
|
|
62
|
+
|
|
63
|
+
## Gotcha: forgetting what is already on order
|
|
64
|
+
|
|
65
|
+
**Why it matters:** Two orders for the same item three weeks apart is the classic double-buy, and it usually happens right after a stockout scare when the owner is paying attention.
|
|
66
|
+
|
|
67
|
+
### Bad
|
|
68
|
+
|
|
69
|
+
On hand 38, target 258, order 240.
|
|
70
|
+
|
|
71
|
+
### Good
|
|
72
|
+
|
|
73
|
+
```
|
|
74
|
+
On hand 38, 160 already inbound from the 3/2 order, target 258 total.
|
|
75
|
+
That leaves 60 — 2 cases of 40, so 80 units. If that inbound number is
|
|
76
|
+
wrong tell me, it changes this.
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
---
|
|
80
|
+
|
|
81
|
+
## Gotcha: a stock count with no as-of date
|
|
82
|
+
|
|
83
|
+
**Why it matters:** Everything downstream is stock divided by velocity. A two-week-old count on a fast mover produces a stockout date that has already passed.
|
|
84
|
+
|
|
85
|
+
### Bad
|
|
86
|
+
|
|
87
|
+
Take the uploaded count at face value and project from today.
|
|
88
|
+
|
|
89
|
+
### Good
|
|
90
|
+
|
|
91
|
+
Ask when it was counted. If the count is from the 1st and today is the 15th, either net out two weeks of sales or ask for a fresh count on the fast movers, and say which you did.
|
|
92
|
+
|
|
93
|
+
---
|
|
94
|
+
|
|
95
|
+
## Gotcha: seasonality invented from partial history
|
|
96
|
+
|
|
97
|
+
**Why it matters:** A multiplier computed from nine months looks exactly like one computed from three years. It gets used to buy real stock, and nobody can tell later which kind it was.
|
|
98
|
+
|
|
99
|
+
### Bad
|
|
100
|
+
|
|
101
|
+
```
|
|
102
|
+
June factor: 1.6x (computed)
|
|
103
|
+
```
|
|
104
|
+
(from 120 days of data that do not include a June)
|
|
105
|
+
|
|
106
|
+
### Good
|
|
107
|
+
|
|
108
|
+
```
|
|
109
|
+
120 days of history — no June in there, so I cannot compute a season.
|
|
110
|
+
You know this better than the data does. Roughly how much heavier is June?
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
---
|
|
114
|
+
|
|
115
|
+
## Gotcha: velocity at the product level instead of the variant
|
|
116
|
+
|
|
117
|
+
**Why it matters:** A product that sells well in one size and never in another looks healthy in aggregate. The good size stocks out while the bad size accumulates, and the product-level number shows neither.
|
|
118
|
+
|
|
119
|
+
### Bad
|
|
120
|
+
|
|
121
|
+
Filter, 20x25: 4.1/day, 38 on hand, healthy.
|
|
122
|
+
|
|
123
|
+
### Good
|
|
124
|
+
|
|
125
|
+
Split by variant. The 1-inch is running out in four days; the 4-inch has nine months of cover. Two different problems, one product line.
|
|
126
|
+
|
|
127
|
+
---
|
|
128
|
+
|
|
129
|
+
## Gotcha: reporting units without dollars
|
|
130
|
+
|
|
131
|
+
**Why it matters:** Owners decide about cash. "Order 240 filters" is not a decision they can make; "USD 888" is.
|
|
132
|
+
|
|
133
|
+
### Bad
|
|
134
|
+
|
|
135
|
+
A buy list of quantities with no cost column.
|
|
136
|
+
|
|
137
|
+
### Good
|
|
138
|
+
|
|
139
|
+
Every line costed, every vendor subtotaled, and the total stated before the approval question.
|
|
140
|
+
|
|
141
|
+
---
|
|
142
|
+
|
|
143
|
+
## Gotcha: quietly accepting a vendor substitution
|
|
144
|
+
|
|
145
|
+
**Why it matters:** A different part number goes onto a customer's equipment. That is the owner's call and sometimes a warranty question, never a shipping detail.
|
|
146
|
+
|
|
147
|
+
### Bad
|
|
148
|
+
|
|
149
|
+
Vendor swaps a compatible capacitor, order updated, nothing said.
|
|
150
|
+
|
|
151
|
+
### Good
|
|
152
|
+
|
|
153
|
+
Report the substitution, the part numbers both ways, and the effect on cover if the owner rejects it. Then let them decide.
|
package/content/small-business/skills/small-business-inventory-planner/reference/po_drafting.md
ADDED
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
# PO Drafting and Vendor Emails
|
|
2
|
+
|
|
3
|
+
Turning an approved buy list into documents, and the gate in front of both.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## The gate
|
|
8
|
+
|
|
9
|
+
A purchase order commits the owner's money and a vendor email goes out under their name. Neither happens without an explicit yes.
|
|
10
|
+
|
|
11
|
+
State before asking:
|
|
12
|
+
|
|
13
|
+
> Ferguson: 8 items, 640 units, USD 4,180. Watsco: 3 items, USD 2,290.
|
|
14
|
+
> Total USD 6,470 across two POs. Draft them?
|
|
15
|
+
|
|
16
|
+
**The dollar total goes before the question.** The owner is deciding about cash, and units alone do not tell them what they need to know.
|
|
17
|
+
|
|
18
|
+
Approve per vendor, not per buy list. An owner may want the Ferguson order today and the Watsco one next week, and forcing an all-or-nothing yes gets a no.
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## Purchase order structure
|
|
23
|
+
|
|
24
|
+
One PO per vendor. Standard contents:
|
|
25
|
+
|
|
26
|
+
- PO number, following the owner's existing numbering if they have one — ask rather than starting a new series
|
|
27
|
+
- Date, and the requested delivery date based on lead time
|
|
28
|
+
- Ship-to and bill-to
|
|
29
|
+
- Line items: SKU, description, quantity, pack or unit of measure, unit price, extended price
|
|
30
|
+
- Subtotal, expected freight, total
|
|
31
|
+
- The owner's terms, payment method, and contact
|
|
32
|
+
|
|
33
|
+
**Use the last known price per item and say when it is from.** A price from four months ago is fine to work with; a price presented as current when it is not sets up a variance argument later. When there is no known price, leave it blank rather than guessing — the vendor will price it.
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
## Vendor email
|
|
38
|
+
|
|
39
|
+
Read the shared voice profile at `../../../shared/voice-profile.md` before writing. These go out under the owner's name to people they have real relationships with, and a message that sounds like software damages that.
|
|
40
|
+
|
|
41
|
+
Keep it short. The useful content is:
|
|
42
|
+
|
|
43
|
+
- What is being ordered, or a reference to the attached PO
|
|
44
|
+
- When they need it by, and why if the timing is tight
|
|
45
|
+
- Any question — availability, a substitution, a price check
|
|
46
|
+
- How the owner wants confirmation
|
|
47
|
+
|
|
48
|
+
What to avoid: apologizing for ordering, over-explaining, and any pleasantry the owner would not actually write.
|
|
49
|
+
|
|
50
|
+
**A price question is worth including when the last known price is stale.** Asking "is this still USD 14.80 a case?" costs one line and prevents the variance that `ap-processor` would otherwise flag when the bill arrives.
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
## Substitutions and backorders
|
|
55
|
+
|
|
56
|
+
When a vendor comes back with a substitution or a partial:
|
|
57
|
+
|
|
58
|
+
- Recompute days of cover on what is actually coming, not what was ordered
|
|
59
|
+
- Report the gap and whether it changes the stockout date
|
|
60
|
+
- Never accept a substitution on the owner's behalf. A different part number is a decision about what goes on a customer's job
|
|
61
|
+
|
|
62
|
+
---
|
|
63
|
+
|
|
64
|
+
## Handoff to AP
|
|
65
|
+
|
|
66
|
+
When QuickBooks or NetSuite is connected, approved POs go into the ledger so `ap-processor` can run the three-way match when the bill arrives. That closes the loop: what was ordered, what showed up, what was billed.
|
|
67
|
+
|
|
68
|
+
When they are not connected, keep the POs as files and tell the owner they are the matching record. A PO nobody can find later is a PO that cannot catch an overbilling.
|
|
69
|
+
|
|
70
|
+
---
|
|
71
|
+
|
|
72
|
+
## Calendar rhythm
|
|
73
|
+
|
|
74
|
+
With Google Calendar connected, offer a recurring block for the restock review — weekly or biweekly, depending on lead times.
|
|
75
|
+
|
|
76
|
+
This works far better as a rhythm than as an emergency. An owner who looks at the buy list every Tuesday for twenty minutes rarely stocks out. One who looks when a customer asks for something already has the problem.
|
|
77
|
+
|
|
78
|
+
Offer once. If they decline, do not ask again.
|
|
79
|
+
|
|
80
|
+
---
|
|
81
|
+
|
|
82
|
+
## Worked example
|
|
83
|
+
|
|
84
|
+
Ray's June order, after approval.
|
|
85
|
+
|
|
86
|
+
**PO 2041 — Ferguson Supply**, requested 6/12
|
|
87
|
+
- 240 ea, Merv 11 filter 20x25x1, USD 3.70 ea, USD 888.00
|
|
88
|
+
- 24 ea, 45/5 capacitor, USD 11.40 ea, USD 273.60
|
|
89
|
+
- 6 ea, contactor 2-pole 30A, USD 18.90 ea, USD 113.40
|
|
90
|
+
- Subtotal USD 1,275.00, freight per usual terms
|
|
91
|
+
|
|
92
|
+
Email drafted to Ray's rep, three sentences, asking whether the filter price still holds and confirming the Thursday delivery. Held for Ray's approval before sending.
|
package/content/small-business/skills/small-business-inventory-planner/reference/seasonality.md
ADDED
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
# Seasonality
|
|
2
|
+
|
|
3
|
+
When to adjust for the season, when to ask instead, and how to say which you did.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## The threshold
|
|
8
|
+
|
|
9
|
+
**Adjust only with at least 400 days of history.** That gives a full year plus enough overlap to compare the same weeks year over year.
|
|
10
|
+
|
|
11
|
+
With less than that, do not compute a multiplier. Ask the owner.
|
|
12
|
+
|
|
13
|
+
The reason is simple: a seasonal factor derived from nine months of data is arithmetic performed on an assumption. It comes out looking like a real number — "1.6x for June" — and it will be used to buy real stock. The owner already knows their season better than that number does, and asking takes one line.
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## With a year or more
|
|
18
|
+
|
|
19
|
+
Compare the upcoming planning window against the same calendar window last year, per item or per category.
|
|
20
|
+
|
|
21
|
+
```
|
|
22
|
+
seasonal_factor = units_sold(same window, last year) ÷ units_sold(trailing 28d, last year)
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
Apply the factor to the sizing velocity (the 28-day rate), and to the stockout velocity when projecting into the season. Cap it — anything above 3x or below 0.3x gets shown to the owner rather than applied silently, because factors that extreme usually mean a promotion, a stockout, or a one-time event in last year's data rather than a real season.
|
|
26
|
+
|
|
27
|
+
Prefer **category-level factors** for items with thin individual history. A single SKU's year-ago numbers are noisy; the category's are not.
|
|
28
|
+
|
|
29
|
+
**Check for a stockout in last year's comparison window.** If the item was out of stock last June, last June's units understate demand, and the factor built from them will under-order this June. Say so instead of applying it.
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
## Without a year
|
|
34
|
+
|
|
35
|
+
Say what you have and ask one question:
|
|
36
|
+
|
|
37
|
+
> I have 120 days of history, so I cannot see your season in the data. You are heading into summer — do filters and capacitors move differently for you then? Give me a rough multiple and I will size the order to it. Otherwise I will plan on the current rate and we adjust as it moves.
|
|
38
|
+
|
|
39
|
+
Then use whatever they say and **label the buy list with where the number came from**:
|
|
40
|
+
|
|
41
|
+
> Sized at 1.8x current velocity per your estimate, not from history.
|
|
42
|
+
|
|
43
|
+
That label is what lets the owner recalibrate next quarter. An unlabeled adjusted number is indistinguishable from a computed one six weeks later.
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
## When the owner names an end to the season
|
|
48
|
+
|
|
49
|
+
A season has two dates and the second one does the damage. Sizing 60 days of stock at the busy rate, six weeks before the busy period ends, buys a month of stock for a month that will not happen — and it stays on the shelf until next year at the old cost.
|
|
50
|
+
|
|
51
|
+
**When the owner names an end date, cap the order at the days left in the season.** Do not cap silently:
|
|
52
|
+
|
|
53
|
+
```
|
|
54
|
+
days_left = season_end_date − expected_arrival_date
|
|
55
|
+
target_uncapped = (60 + lead_time_days) × sizing_velocity
|
|
56
|
+
target_capped = days_left × sizing_velocity
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
Show both numbers and say which one is being ordered:
|
|
60
|
+
|
|
61
|
+
> Ray says the AC season winds down at the end of August — 47 days after this
|
|
62
|
+
> order lands, not 60. At 7.0/day with 20 on hand, that's 309 units, so 8 cases:
|
|
63
|
+
> USD 1,184. The uncapped number would have been 11 cases at USD 1,628 — the extra
|
|
64
|
+
> three cases would sit until next May.
|
|
65
|
+
|
|
66
|
+
The owner overrides this whenever they want to. Some items are worth carrying over — a filter keeps fine and the price only goes up. Others do not, and a slow tail into the off-season is exactly where the cash gets stuck. **Their call, made with both numbers in front of them.**
|
|
67
|
+
|
|
68
|
+
Carrying a few days of tail past the end date is fine when the owner asks for it — say the sentence, do not add it silently.
|
|
69
|
+
|
|
70
|
+
Where the season ends before the stock could even land, do not order at all. Say so plainly and put the item on the watch list for next season with the decide-by date already on it.
|
|
71
|
+
|
|
72
|
+
---
|
|
73
|
+
|
|
74
|
+
## Known-event adjustments
|
|
75
|
+
|
|
76
|
+
Seasonality is not only the calendar. Ask about, and record:
|
|
77
|
+
|
|
78
|
+
- A big job, contract, or event coming up that will draw down stock
|
|
79
|
+
- A promotion or sale planned
|
|
80
|
+
- A vendor price increase announced, which sometimes justifies buying early
|
|
81
|
+
- A vendor shutdown — many suppliers close for a stretch and lead times double around it
|
|
82
|
+
|
|
83
|
+
These are one-time adjustments, applied to specific items, and always labeled as owner-supplied rather than computed.
|
|
84
|
+
|
|
85
|
+
---
|
|
86
|
+
|
|
87
|
+
## Reporting the adjustment
|
|
88
|
+
|
|
89
|
+
Every seasonally adjusted line shows both numbers:
|
|
90
|
+
|
|
91
|
+
```
|
|
92
|
+
Compressor, 3-ton SKU CMP-3T
|
|
93
|
+
Current velocity 0.4/day (28d)
|
|
94
|
+
Seasonal 1.9x — June ran 1.9x the spring rate last year
|
|
95
|
+
Sizing at 0.76/day
|
|
96
|
+
On hand 11 units, 14 days of cover at the seasonal rate
|
|
97
|
+
Status ORDER NOW
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
Showing the unadjusted rate next to the adjusted one is what makes the adjustment reviewable. An owner who thinks 1.9x is too hot can say so before the PO goes out.
|
|
101
|
+
|
|
102
|
+
---
|
|
103
|
+
|
|
104
|
+
## Worked example
|
|
105
|
+
|
|
106
|
+
Ray's shop, planning into June.
|
|
107
|
+
|
|
108
|
+
- 120 days of history only. No computed factors.
|
|
109
|
+
- Asked Ray directly. His answer: "Filters and capacitors go crazy the first hot week. Compressors maybe double. Everything else is the same."
|
|
110
|
+
- Applied 2.0x to filters, capacitors, and compressors on Ray's estimate. Everything else planned at the current 28-day rate.
|
|
111
|
+
- Buy list labeled: three categories sized on Ray's seasonal estimate, the rest on trailing velocity.
|
|
112
|
+
- Noted for next year: with a full year of history by next spring, these factors can be computed and checked against what he guessed.
|