Guide: Accessing & Using Internal Packages

Purpose

Enable developers to discover, authenticate, install, and safely use internal packages (shared libraries, SDKs, UI kits) across projects—without security or versioning issues.

Scope

  • Applies to all projects using private registries or internal repos.
  • Covers discovery → access/auth → install → update → troubleshooting → deprecation/migration.
  • Tech-agnostic with examples for Node (npm/yarn/pnpm), Python (pip/Poetry), Java (Maven/Gradle), iOS (CocoaPods/SPM), Flutter (pub).

Objectives

  • Standardize how internal packages are consumed.
  • Ensure secure access (tokens, least-privilege).
  • Reduce breakage via semantic versioning & pinning.
  • Create a clear path for updates and deprecations.

Step-by-Step Usage

Step 1 — Discover the right package

  1. Open the Internal Package Catalog (Notion/Confluence page or Nexus/Artifactory index).
  2. Filter by language → capability → status (stable/experimental/deprecated).
  3. Read the README & CHANGELOG for install instructions and breaking changes.
  4. Confirm compatibility matrix (runtime versions, platform, frameworks).

If the package is missing, submit a New Package Request (template at the end).

Step 2 — Get access (one-time)

A. Obtain credentials

  • Request scoped access via “Access Request & Tool Provisioning Workflow” (EPIC 1 – Doc 7).
  • Receive token via the secrets manager (never via chat/email).

B. Configure your client

Node (npm/yarn/pnpm)

Create/update ~/.npmrc (user-level) or use project-level .npmrc:

# Example for GitHub Packages
@our-scope:registry=https://npm.pkg.github.com
//npm.pkg.github.com/:_authToken=${NPM_TOKEN}always-auth=true

Python (pip/Poetry)

Create/update ~/.pip/pip.conf (Windows: %APPDATA%\pip\pip.ini) or project pip.conf:

[global]index-url = https://<user>:${PIP_TOKEN}@pypi.our-internal.com/simple

Poetry:

# pyproject.toml[[tool.poetry.source]]name = "internal"url = "https://pypi.our-internal.com/simple"priority = "primary"

Java (Maven/Gradle)

Maven ~/.m2/settings.xml:

<servers>
  <server>
    <id>internal</id>
    <username>${env.ART_USER}</username>
    <password>${env.ART_TOKEN}</password>
  </server>
</servers>

pom.xml:

<repositories>
  <repository>
    <id>internal</id>
    <url>https://maven.our-internal.com/repository/releases</url>
  </repository>
</repositories>

iOS (CocoaPods / SPM)

CocoaPods ~/.netrc or keychain credentials; Podfile:

source 'https://github.com/CocoaPods/Specs.git'
source 'https://git.our-internal.com/ios-specs.git'

SPM: Add internal Git URL in Xcode → Package Dependencies (use SSH).

Flutter (pub)

pubspec.yaml with Git source or internal pub server:





dependencies:our_sdk:hosted:name: our_sdkurl: Our-internalpub.our-internal.com

version: ^1.2.0

Security: Store tokens in env vars (e.g., NPM_TOKEN, ART_TOKEN) injected by your shell/profile or direnv—never commit to VCS.

Step 3 — Install & pin versions

Node

npm i @our-scope/feature-lib@^2.3.0
# or
yarn add @our-scope/feature-lib@~2.3.4
  • Use ^ to accept minor & patch updates, ~ for patch-only, or exact for strict pinning (critical paths).

Python

pip install our-sdk==1.4.2
# Poetry
poetry add our-sdk@^1.4

Java

<dependency>
  <groupId>com.our</groupId>
  <artifactId>core-sdk</artifactId>
  <version>1.5.3</version>
</dependency>

iOS

pod 'OurSDK', '~> 1.4'# or SPM exact/range in Xcode UI

Flutter

our_sdk: ^1.4.0

Rule of Thumb

App code: Prefer ~ (patch) or exact for critical modules.

Libraries/SDK consumers: Prefer ^ (minor & patch) with a lockfile.

Step 4 — Verify usage

  1. Import the package in a small spike file/module and compile.
  2. Run unit tests (or quick scaffold tests) to ensure types & APIs are correct.
  3. Check runtime by starting your app and hitting a simple code path.
  4. If the package includes post-install scripts (e.g., linking native deps), verify they ran.

Step 5 — Update safely

  1. Read the CHANGELOG (look for BREAKING).
  2. Update one minor version at a time; never jump across majors blindly.
  3. Run local tests, then CI on your feature branch.
  4. If migration notes exist, follow them; otherwise log gaps for maintainers.
  5. Tag the PR with deps:internal for visibility.

Step 6 — Report issues & contribute fixes

Open an issue in the package repo using the Bug/Feature template.

  • Attach repro steps, versions, logs, and environment.
  • For urgent fixes, coordinate with maintainers (Dev Lead) and open a PR against develop with tests.

Governance & Standards

Versioning & Stability

  • All internal packages must use SemVer: MAJOR.MINOR.PATCH.
  • Breaking changes → bump MAJOR and provide migration notes.
  • Consumers should pin (~) or lock (lockfile) for deterministic builds.

Security & Access

  • Tokens are scoped (read-only for consumers).
  • Tokens live in vault and are injected via CI or local secrets; no plaintext in repos.
  • Remove access when a developer rolls off the project (EPIC 7 – Security).

Quality Signals (before adoption)

  • Package must have: README, CHANGELOG, LICENSE (internal), tests ≥ 70% cov, CI status badge, semantic-release or documented release process.

Deprecation Policy

  • Mark as Deprecated in Catalog with EOL date and migration path.
  • Provide a compat layer or codemod where feasible.
  • Communicate via release notes + #dev-announcements.

Troubleshooting (Quick Reference)

SymptomLikely CauseFix
401/403 when installingToken missing/wrong scopeRe-auth; check .npmrc/pip.conf scopes; refresh token
Package not foundWrong registry or scopeVerify registry URL & package scope; check Catalog
Build fails on native stepMissing toolchain (Pods/NDK)Run platform setup (Doc 3/4); re-run pod install/NDK
Runtime import errorVersion mismatch or tree shakingMatch peer deps; check bundler config; restart dev server
API break after updateMajor change without migrationRollback via lockfile; read CHANGELOG; follow migration guide

Templates & Snippets

1) .npmrc (projectlevel)

@our-scope:registry=https://npm.pkg.github.com
//npm.pkg.github.com/:_authToken=${NPM_TOKEN}always-auth=true

2) pip.conf (project-level)

[global]index-url = https://<user>:${PIP_TOKEN}@pypi.our-internal.com/simple
timeout = 60

3) CHANGELOG format (keepachangelog style)

## [2.3.0] - 2025-08-01### Added- New AuthClient.refreshToken()

### Fixed- Retry logic for 429

### Breaking- Removed deprecated `AuthClient.legacyLogin()`  - Migrate to `AuthClient.login(email, otp)`

4) Deprecation Notice (maintainer → consumers)

**Package**: @our-scope/logger
**Status**: DEPRECATED
**EOL**: 2025-12-31
**Replacement**: @our-scope/telemetry
**Migration**:
1) Replace imports
2) Update config key `logger.level` → `telemetry.logLevel`
3) Remove manual batching; built-in exporter enabled by default

5) New Package Request (submit in portal)

FieldEntry
Problem to solve 
Proposed name/scope 
Language/Runtime 
Expected consumers 
Security/PII considerations 
Owner/Maintainer 
ETA & release plan 

Do’s & Don’ts

Do’s

  • Use scoped tokens and project-level config where possible.
  • Pin or lock versions for deterministic builds.
  • Read CHANGELOG before updates; test migrations on a branch.
  • Log issues with repro, logs, and env.

Don’ts

  • Don’t commit tokens or .env to VCS.
  • Don’t auto-upgrade majors in CI.
  • Don’t publish internal code to public registries.
  • Don’t fork & drift—contribute upstream to the internal package.

Guide: Local Dev Setup (Mobile App Stack)

Purpose

To provide a standardized guide for setting up local mobile app environments, ensuring developers can build, run, and debug apps consistently across machines (iOS + Android).


Scope

  • Applies to all mobile projects (React Native, Flutter, Native Android/iOS).
  • Used by Mobile Developers, Full-Stack Developers, and QA Mobile Testers.
  • Covers toolchain setup, project configuration, and environment verification.

Objectives

  • Ensure developers can run the app locally on emulator/device within Day 1–2.
  • Standardize tooling, SDK versions, and configurations.
  • Minimize “it works on my machine” issues.

Step-by-Step Setup Process

Step 1 – Prerequisites

  • Install base tools:
    • Git + SSH key setup
    • Node.js (for React Native) or Dart SDK (for Flutter)
    • Java JDK (11 or required version)
    • Android Studio (with SDK + Emulator)
    • Xcode (for iOS) + Command Line Tools
    • CocoaPods (for iOS RN projects) → sudo gem install cocoapods
    • Device drivers (if testing on physical devices)

Step 2 – Repo & Branch Setup

  • Clone repo:
  • git clone git@github.com:org/mobile-app.git
  • cd mobile-app
  • Checkout development branch:
  • git checkout develop

Step 3 – Dependency Installation

  • For React Native:
  • npm install
  • cd ios && pod install && cd ..
  • For Flutter:
  • flutter pub get

Step 4 – Environment Variables

  • Copy sample env:
  • cp .env.example .env
  • Fill values:
    • API base URL (staging/dev)
    • Auth keys (Firebase, AWS Cognito, etc.)
    • Third-party SDK tokens (Google Maps, Stripe test keys)
  • Store .env in secure vault → never commit to repo.

Step 5 – Run App (Android)

  • Start Android Emulator via Android Studio.
  • For React Native:
  • npm run android
  • For Flutter:
  • flutter run

Step 6 – Run App (iOS)

  • Open .xcworkspace in Xcode (React Native) OR run via Flutter:
  • npm run ios
  • # OR
  • flutter run
  • Ensure proper simulator selected (e.g., iPhone 14).

Step 7 – Verify Setup

  • Confirm app builds without errors.
  • Test login with default dev account.
  • Confirm API call works (via staging backend).
  • Submit test commit + PR to validate repo access & CI/CD integration.

Best Practices

  • Use NVM (for RN) or FVM (Flutter Version Manager) to lock SDK versions.
  • Run lint + format before every commit.
  • Use emulators for consistency, but also test on at least one real device per sprint.
  • Document any new dependencies added for future devs.

Do’s & Don’ts

Do’s

  • Keep Android/iOS SDK versions aligned with project config.
  • Use sample .env.example → never create random env keys.
  • Regularly clean build folders if facing errors (npx react-native-clean-project, flutter clean).

Don’ts

  • Don’t install multiple conflicting SDK versions.
  • Don’t commit .env, Pods/, or node_modules/.
  • Don’t skip pod install on iOS RN projects (causes build failures).

Outcome

  • Developers can set up and run mobile projects locally in 1–2 days.
  • Standardized builds across devices and OS.
  • Directly supports EPIC 1 – Doc 1 (Onboarding SOP) and Doc 2 (Onboarding Kit).

Guide: Local Dev Setup (ERN Stack)

Purpose

To provide a standardized local development setup guide for web projects, ensuring all developers work in a consistent, reproducible environment across frontend and backend stacks.


Scope

  • Applies to all web development projects (frontend, backend, full-stack).
  • Used by Developers, Tech Leads, and DevOps Engineers.
  • Covers environment setup, package installation, configuration, and verification.

Objectives

  • Ensure new devs can spin up projects locally within a day.
  • Standardize tools, configurations, and dependencies.
  • Avoid “works on my machine” issues.

Step-by-Step Setup Process

Step 1 – Prerequisites

  • Install the following (versions to be specified in each project’s README):
    • Node.js + NVM (LTS version, e.g., v18.x).
    • Package Manager: npm or yarn (consistent per project).
    • Git (with SSH key configured).
    • Docker Desktop (for DB and services, if project uses containers).
    • Database Client (e.g., PgAdmin, TablePlus, or MySQL Workbench).
    • IDE: VS Code (with extensions from checklist).

Step 2 – Repo & Branch Setup

  • Clone project repo:
  • git clone git@github.com:org/project-name.git
  • cd project-name
  • Checkout appropriate branch:
  • git checkout develop
  • Pull latest updates:
  • git pull origin develop

Step 3 – Dependency Installation

  • Install dependencies:
  • npm install
  • # or
  • yarn install
  • Verify no peer dependency conflicts.
  • If project uses monorepo (Nx, Lerna, Turborepo), run workspace install.

Step 4 – Environment Variables

  • Copy sample env file:
  • cp .env.example .env
  • Fill with:
    • API URLs (staging/dev).
    • Database credentials (read-only for dev).
    • Third-party service keys (e.g., Firebase, Stripe test keys).
  • Store secrets securely (never commit .env to repo).

Step 5 – Database Setup

  • Start database (if containerized):
  • docker-compose up -d
  • Run migrations:
  • npm run migrate
  • Seed dev database if required:
  • npm run seed

Step 6 – Run Local Build

Step 7 – Verification

  • Confirm:
    • Builds without errors.
    • Connects to staging DB or mock DB.
    • Default test user can log in.
  • Submit a test commit + PR (to confirm repo access + CI triggers).

Best Practices

  • Always use NVM for Node version control.
  • Keep dependencies updated monthly.
  • Use Dockerized services for consistency across machines.
  • Add pre-commit hooks (lint + format) to avoid code style drift.

Do’s & Don’ts

Do’s

  • Follow the .env.example strictly — don’t improvise keys.
  • Document any new setup step you discover.
  • Use aliases in terminal (e.g., npm run db:migrate).

Don’ts

  • Don’t hardcode credentials in config files.
  • Don’t install global dependencies unless mandated.
  • Don’t skip initial migrations (causes inconsistent states).

Outcome

  • Every dev can set up a local environment within 1 day.
  • Consistent, reproducible builds across all dev machines.
  • Directly supports EPIC 1 – Doc 1 (Onboarding SOP) and Doc 2 (Onboarding Kit).

Template: Developer Onboarding Kit

Purpose

To provide a standardized onboarding kit template for new developers joining a project.

It ensures every developer receives all essential project info, setup guides, and access references in one place.


Structure

Section 1 – Project Overview

FieldExample (B2B SaaS Project)Example (B2C App Project)
Project NameSaaS Onboarding AutomationEcoClean Home Services App
Client/Business ContextSaaS platform reducing churn via onboarding automationMobile app for booking verified eco-friendly cleaners
Tech StackReact, Node.js, PostgreSQL, AWSFlutter, Firebase, GCP
Current Sprint GoalDeliver reporting dashboardLaunch recurring booking feature
Documentation HubConfluence: /SaaS-OnboardingNotion: /EcoClean-App

Section 2 – Access & Credentials

ToolAccess LinkRole/PermissionNotes
Git Repositorygithub.com/org/saas-onboardingWriteBranching strategy: feature/*
Project Mgmt Tooljira.com/project/saasDeveloperSprint board link provided
CI/CD Pipelinecircleci.com/saas-onboardingRead + DeployDeploy only to staging
Staging Environmentstaging.saasapp.comQA + Dev AccessCredentials in password vault
Design Filesfigma.com/file/saas-uiViewerUse Dev mode for specs

Section 3 – Environment Setup

StepDescriptionExample
1. Clone RepoGit clone with SSH keygit clone git@github.com:org/saas-onboarding.git
2. Install DependenciesUse package managernpm install or yarn install
3. Setup Env VariablesCopy sample .env.example.envAdd DB credentials, API keys
4. Run Local BuildStart server/appnpm run dev
5. Verify ConnectionConfirm local connects to staging DB (read-only)Login with test account

Section 4 – Team & Contacts

RoleNameContactNotes
Project LeadShekharshekhar@company.comApproves access, first task
Tech BuddyVinayvinay@company.comSetup & first sprint support
DevOps ContactAbhayabhay@company.comCI/CD, staging, infra issues
QA LeadSuryanshsuryansh@company.comHandoff support

Section 5 – Policies & Guidelines

  • Tool Access & Security Policy (EPIC 1 – Doc 8)
  • Git Branching & Merge Strategy (EPIC 3)
  • Coding Standards Framework (EPIC 3)
  • Dev–QA Handoff Protocol (EPIC 3)

Section 6 – First Task Checklist

TaskStatus
Setup local environment
Verify build runs locally
Submit test commit + PR
Join project channels
Attend first sprint standup

Blank Reusable Template

Project Overview

FieldEntry
Project Name 
Client/Business Context 
Tech Stack 
Current Sprint Goal 
Documentation Hub 

Access & Credentials

ToolAccess LinkRole/PermissionNotes
    
    

Environment Setup

StepDescriptionExample
   
   

Team & Contacts

RoleNameContactNotes
    
    

Policies & Guidelines

Policy/GuideLink/LocationNotes
   
   

First Task Checklist

TaskStatus
 
 
 

Outcome

  • Every new developer receives a single source of truth.
  • Reduces onboarding time from days → hours.
  • Directly supports Doc 1 (Onboarding SOP) and ensures readiness for Doc 3 & 4 (Local Dev Setup Guides).

SOP: Developer Onboarding to a New Project

Purpose

To provide a standardized onboarding workflow for developers joining a new project, ensuring they gain quick context, secure access, and technical setup without delays.

This avoids wasted cycles, missed dependencies, and knowledge silos.


Scope

  • Applies to all developers (Frontend, Backend, Mobile, Full-stack) joining any new or existing project.
  • Used by Project Leads, Developers, and DevOps/Infra team members.
  • Covers knowledge orientation, environment setup, and access provisioning.

Objectives

  • Ensure developers get project context within Day 1–3.
  • Provide secure access to repositories, tools, and communication channels.
  • Establish a ready-to-code environment by the end of the onboarding cycle.
  • Reduce dependency on ad-hoc lead explanations.

Step-by-Step Process

Step 1 – Pre-Onboarding Prep (By Lead/PM)

  • Share Project Onboarding Kit (Doc 2 – Template).
  • Assign a tech buddy/mentor for the first sprint.
  • Confirm developer is added to:
    • Git repo (read + write as per role).
    • Project management tool (Jira/ClickUp/Linear).
    • Slack/Teams channels.
    • Documentation hub (Confluence/Notion/MIC).

Step 2 – Project Orientation (Day 1)

  • Intro session covering:
    • Project goals & client context.
    • System architecture overview (Doc 2 of Architecture Epic).
    • Current sprint & backlog priorities.
  • Share Dev Starter Repo README (Doc 10).
  • Provide access to Designs (Figma/Zeplin) and API contracts if available.

Step 3 – Environment Setup (Day 1–2)

  • Developer sets up:
    • Local environment using Setup Guide (Doc 3/4 depending on stack).
    • IDE extensions & linting configs.
    • Access to dev/staging databases & APIs (with read-only first).
  • Run sample build to confirm setup works.

Step 4 – Access & Security Alignment

  • Access provided via Access Request Workflow (Doc 7).
  • 2FA enabled on all critical tools.
  • Developer acknowledges Tool Access Policy (Doc 8).
  • Lead verifies access in Access Log Tracker (Doc 12).

Step 5 – First Task Assignment (Day 2–3)

  • Assign low-risk starter task:
    • Bug fix, documentation update, or small feature enhancement.
  • Tech buddy reviews PR → ensure familiarity with Branching & Merge Strategy (EPIC 3).
  • Feedback loop: Document challenges faced in setup → update Project Setup Readiness Checklist (Doc 9).

Step 6 – Integration into Team Rituals

  • Developer joins:
    • Standups, sprint planning, retros.
    • Squad syncs with lead.
  • Developer starts logging time/effort via project tool.

Roles & Responsibilities

RoleResponsibility
Project LeadProvides context, approves access, assigns first task
Tech BuddyGuides developer through setup, first sprint
DeveloperCompletes setup, acknowledges policies, executes starter task
DevOps/InfraGrants repo, CI/CD, staging access
PM/HR OpsEnsures onboarding kit & documentation delivery

Governance

  • Onboarding SLA: All new devs must be project-ready within 3 working days.
  • Access Logs: Every tool access must be logged in tracker.
  • Feedback Loop: Challenges faced → fed into onboarding kit updates quarterly.
  • Escalation: If setup blocked >24 hrs → escalate to Project Lead & Infra Team.

Template: Conversion & Feedback Tracker

Purpose

To provide a single, consolidated view of conversion outcomes + customer feedback.

This ensures insights from campaigns, objections, and customer experiences are logged systematically and looped back into marketing.


Structure

Section 1 – Conversion Tracking

CampaignPersonaFunnel StageLeadsMQLsSQLsOpportunitiesClosed-WonConversion RateCPLCAC
LinkedIn Demo AdsCTOBOFU3001509050206.6%$40$500
Google Search – PricingProduct ManagerBOFU2001208045189%$35$420
Facebook CarouselBusy Working MomMOFU25014090603514%$22$150

Section 2 – Objection & Feedback Logging

Funnel StagePersonaObjection/FeedbackSourceAction Taken
TOFUCTO“Don’t understand product yet”LinkedIn Ad CommentsAdded explainer video
MOFUProduct Manager“Competitor offers cheaper option”Sales CallReleased ROI comparison guide
BOFUBusy Mom“Not sure about safety”Post-booking SurveyAdded verification badge + trust banner

Section 3 – Customer Sentiment (NPS / CSAT)

MetricValue (B2B SaaS Example)Value (B2C Service Example)
NPS (Quarterly)42 (Promoters: 60%, Detractors: 18%)55 (Promoters: 70%, Detractors: 15%)
CSAT (Post-Support)4.5 / 54.7 / 5
Churn Reasons“Implementation effort too high”“Cheaper alternatives available”
Delight Factors“Onboarding under 2 weeks”“Verified & insured staff”

Blank Reusable Template

Conversion Tracking

CampaignPersonaFunnel StageLeadsMQLsSQLsOpportunitiesClosed-WonConversion RateCPLCAC
           
           

Objection & Feedback Logging

Funnel StagePersonaObjection/FeedbackSourceAction Taken
     
     

Customer Sentiment

MetricValue
NPS (Quarterly) 
CSAT (Post-Support) 
Churn Reasons 
Delight Factors 

Guide: Testimonial & Case Study Creation

Purpose

To provide a structured process for collecting, producing, and publishing testimonials and case studies.

This ensures social proof is consistently generated and integrated into marketing campaigns for higher trust and conversions.


Scope

  • Applies to B2B SaaS and B2C service clients.
  • Used by Customer Success, Sales, and Marketing Teams.
  • Covers testimonial requests, case study creation, approval, and publishing.

Objectives

  • Systematically capture customer success stories.
  • Build short-form testimonials (snippets, reviews, ratings) and long-form case studies.
  • Repurpose proof content into ads, landing pages, nurture emails, and PR.

Step 1 – Identify Success Candidates

  • Trigger points:
    • Closed-Won deal (after onboarding).
    • Positive feedback from surveys (Doc 6).
    • High NPS (>8) customers.
    • “Champion users” who actively advocate.

Step 2 – Testimonial Collection Process

  1. Request Format:
    • Email/CRM automation: “Would you be open to sharing a quick testimonial?”
    • Incentives (if B2C): discount on next booking.
  2. Capture Options:
    • Text (email/quote).
    • Video (Zoom snippet, mobile recording).
    • Review platforms (G2, Google Reviews).
  3. Approval:
    • Send draft version to customer for confirmation.

Example Outputs:

  • B2B SaaS: “Our churn dropped 30% within 3 months thanks to [Tool].”
  • B2C Service: “I finally feel safe booking cleaners – verified and reliable!”

Step 3 – Case Study Creation Workflow

Case Study Template

SectionWhat to CaptureExample (B2B SaaS)Example (B2C Service)
Client ProfileWho they are (ICP context)Mid-size SaaS, ARR $10M, 150 employeesFamily in urban city, dual-income
ChallengePain points before solutionHigh churn, poor onboardingLack of safe/verified cleaners
SolutionWhat was implementedAI onboarding automationVerified, eco-friendly cleaning
ImplementationSteps taken2-week setup, integrated with CRMEasy online booking + background checks
ResultsQuantifiable outcomesChurn ↓30%, adoption ↑40%200+ families trust service, time saved
Customer QuoteDirect testimonial“This tool saved us 10x in retention”“Finally, I can book with peace of mind”
Call-to-ActionFunnel-aligned CTA“Book a demo today”“Book your first clean now”

Step 4 – Repurposing Proof Content

  • Ads: Use testimonial quotes in creatives.
  • Landing Pages: Add case studies under CTAs.
  • Emails: Insert customer quotes in nurture flows.
  • PR/Media: Use long-form case studies for credibility pitching.
  • Social Media: Create reels/carousels with customer stories.

Step 5 – Maintenance

  • Maintain a Proof Library (folder/CRM repository).
  • Tag content by Persona, Funnel Stage, and ICP segment.
  • Refresh with new stories every quarter.

Do’s & Don’ts

Do’s

  • Always get written approval before publishing.
  • Highlight metrics + emotions (proof + human touch).
  • Keep tone authentic, not overly polished.

Don’ts

  • Don’t invent or exaggerate results.
  • Don’t publish without consent.
  • Don’t overuse one testimonial everywhere → rotate stories.

Framework: Win/Loss Analysis

Purpose

To provide a structured framework for analyzing why deals are won or lost, so marketing and sales can refine ICP targeting, messaging, objection handling, and offers.


Scope

  • Applies to all closed deals (Won + Lost).
  • Used by Sales, Marketing, and Customer Success teams.
  • Feeds into:
    • ICP Refinement (EPIC 1 – Doc 2).
    • Objection Handling Playbook (Doc 4).
    • Feedback Repository (Doc 6).

Objectives

  • Identify patterns in wins and losses (ICP fit, pricing, timing, competitor influence).
  • Improve messaging pillars, campaigns, and landing page CRO.
  • Enable data-driven sales enablement.

Framework: Win/Loss Analysis Matrix

DimensionWhat to CaptureExample (B2B SaaS)Example (B2C Service)
ICP FitWas the lead aligned with ICP? (Yes/No + Why)Yes – SaaS, ARR $5M+No – One-time cleaning, not recurring
Deal SourceChannel/entry pointLinkedIn AdFacebook Carousel
PersonaDecision-maker or influencer involvedCTO + PMBusy Mom (28–40)
Key Drivers (Win)Why we won?ROI proof, 2-week onboardingSafety guarantee, eco-friendly cleaning
Key Barriers (Loss)Why we lost?Price too high, competitor integrationChose cheaper local cleaner
Objections RaisedSales/marketing objections logged“Implementation too complex”“Not worth extra cost”
Decision TimingWas timing a factor?Postponed to next quarter“Too busy now”
Competitor MentionedDirect competitor named?Yes – Tool XYes – Local agency
Next ActionWhat we can improve?Simplify integration messageBundle first cleaning offer

Step-by-Step Process

  1. Data Collection
    • After every Closed-Won or Closed-Lost deal → Sales logs outcome in CRM.
    • Marketing ensures campaigns tagged (UTM + CRM field).
  2. Categorization
    • Tag deal as: Win – ICP Fit / Loss – Pricing / Loss – Competitor etc.
    • Use standard tags for consistency.
  3. Monthly Analysis
    • Marketing + Sales review top 3 Win Drivers and Loss Reasons.
    • Update messaging/campaigns accordingly.
  4. Feedback Loop
    • Wins → create case studies/testimonials (Doc 8).
    • Losses → update Objection Playbook (Doc 4).

Governance

  • Mandatory Logging: Every closed deal must have win/loss reason logged.
  • Monthly Review: Marketing + Sales sync → update ICP, messaging, campaigns.
  • Quarterly ICP Audit: Refine ICP and persona if consistent loss pattern emerges.
  • Escalation: High-value losses (>50% of target deal size) flagged to leadership for deep review.

SOP: Customer Feedback Collection & Looping Back into Marketing

Purpose

To define a standardized process for collecting, analyzing, and integrating customer feedback into marketing and sales strategies.

This ensures marketing messaging, content, and campaigns reflect real customer needs, objections, and experiences.


Scope

  • Applies to all customer touchpoints (post-purchase, onboarding, support, churn).
  • Used by Customer Success, Sales, Marketing, and Product teams.
  • Covers surveys, interviews, NPS, reviews, and structured data loops.

Objectives

  • Collect feedback systematically across customer lifecycle stages.
  • Identify patterns in objections, wins, and customer language.
  • Feed insights back into:
    • Messaging pillars (EPIC 1 – Doc 3).
    • Objection handling playbook (Doc 4).
    • Win/Loss analysis (Doc 7).

Step-by-Step Process

Step 1 – Define Feedback Collection Points

Lifecycle StageFeedback MethodExample (B2B SaaS)Example (B2C Service)
OnboardingShort survey (email/in-app)“How easy was setup (1–5)?”“Was booking process smooth?”
Active UsageQuarterly NPS survey“How likely to recommend us (0–10)?”“Would you book us again?”
Support InteractionPost-ticket CSAT survey“Was your issue resolved?”“Did cleaner meet your expectations?”
Post-ConversionInterview/testimonial request“Why did you choose us?”“What made you pick us vs others?”
Churn/ExitExit interview“What made you cancel?”“Why did you stop booking?”

Step 2 – Feedback Collection Methods

  • Surveys (NPS, CSAT, CES, custom forms).
  • One-to-One Interviews (sales/customer success led).
  • Review Platforms (G2, Capterra, Google Reviews, TrustPilot).
  • Behavior Analytics (heatmaps, session recordings, churn tracking).

Step 3 – Centralize Feedback

  • Store all responses in a Feedback Repository (CRM or Sheets).
  • Tag feedback by:
    • Persona (from EPIC 1 – Doc 2).
    • Funnel stage (TOFU/MOFU/BOFU).
    • Category (Price, Trust, Usability, Timing, Competitor).

Step 4 – Analyze & Prioritize

  • Monthly Review: Marketing + Sales + Customer Success.
  • Identify top 3 recurring objections and 3 recurring strengths.
  • Translate into:
    • Ad messaging (EPIC 4 – Doc 3).
    • Landing page FAQs (EPIC 5 – Doc 1).
    • Sales rebuttals (Doc 4).

Step 5 – Loop Back into Marketing

  1. Update messaging pillars with customer-validated language.
  2. Create customer-backed content: case studies, testimonials, FAQ blog posts.
  3. Feed churn insights into product/offer improvements.
  4. Use positive feedback in promotional campaigns.

Roles & Responsibilities

RoleResponsibility
Customer Success ManagerCollects feedback via surveys & calls
Sales ManagerLogs objections from lost deals
Marketing StrategistTranslates insights into campaigns
CRM SpecialistManages repository, tagging, and reporting
Client POC (if agency)Reviews shared insights & approves messaging changes

Governance

  • Survey Cadence: NPS quarterly, CSAT after every major interaction.
  • Feedback Repository: Updated weekly.
  • Review Meetings: Monthly cross-team sync.
  • Escalation: Severe feedback (security, safety, legal) flagged within 24 hrs.

Template: Conversion Reporting Dashboard

Purpose

To standardize reporting on lead conversions, funnel performance, and revenue attribution, ensuring clarity on how marketing activities translate into sales outcomes.


Structure

Section 1 – Funnel Overview

MetricDefinitionExample (B2B SaaS)Example (B2C Service)
Leads CapturedRaw leads from all channels1,200850
MQLsLeads scoring ≥ 60 (qualified by marketing)400300
SQLsSales-validated leads220180
OpportunitiesLeads with open deals/pipeline120100
Closed-WonConverted customers4060
Closed-LostDeals rejected/lost8040
MQL → SQL Conversion RateSQL ÷ MQL55%60%
SQL → Win RateClosed-Won ÷ SQL18%33%
Overall Funnel ConversionClosed-Won ÷ Leads3.3%7%

Section 2 – Conversion by Channel

ChannelLeadsMQLsSQLsOpportunitiesClosed-WonCPLCACROAS
Google Search4001801005520$35$4203.8x
LinkedIn Ads250120704012$50$6003.1x
SEO (Organic)3007030155$15$2004.2x
Referrals250120906025$0$1206.0x
Facebook/Instagram350160906035$22$1504.5x

Section 3 – Objections & Drop-Off Reasons

Funnel StageCommon Objection/Drop-Off ReasonAction
TOFU“Not sure what you do”Added explainer video + carousel
MOFU“Competitor cheaper”Case study email + ROI comparison ad
BOFU“Timing not right”Added “Book demo later” option / Retargeting nurture

Section 4 – Revenue Attribution

MetricValue (B2B SaaS Example)Value (B2C Service Example)
Total Revenue (Period)$120,000$30,000
Attributed to Paid Ads$80,000 (67%)$18,000 (60%)
Attributed to Organic$25,000 (21%)$7,500 (25%)
Attributed to Referrals/Other$15,000 (12%)$4,500 (15%)
CAC Payback Period3.5 months1.2 months

Blank Reusable Template

Funnel Overview

MetricValue
Leads Captured 
MQLs 
SQLs 
Opportunities 
Closed-Won 
Closed-Lost 
MQL → SQL Conversion Rate 
SQL → Win Rate 
Overall Funnel Conversion 

Conversion by Channel

ChannelLeadsMQLsSQLsOpportunitiesClosed-WonCPLCACROAS
         
         
         

Objections & Drop-Off Reasons

Funnel StageCommon Objection/Drop-Off ReasonAction
   
   
   

Revenue Attribution

MetricValue
Total Revenue (Period) 
Attributed to Paid Ads 
Attributed to Organic 
Attributed to Referrals/Other 
CAC Payback Period