A business operating system, built inside Claude Code.
The single-operator system that runs Lennart's ERP and AI consulting business across three entities.
84 skills, 7 subagents, deep integration with Close CRM, Jira, Moco, Qonto,
Microsoft 365, Apollo, and Hedy. Watch it in motion below.
84Skills
12Daily drivers
7Subagents
13Orchestrators
8Data sources
26Recurring ops
9Integrations
36Context files
119Decisions logged
1
What this is
This is the Executive Assistant that runs Lennart Hector's ERP and AI consulting business — a single-operator system built inside Claude Code that handles sales, delivery, finance, people, marketing, and strategy across three legal entities.
BLCG International LLC — U.S. operating entity for North American engagements
H2W Labs — AI products on AWS Bedrock, cloud migrations, managed services. AWS Partner.
Business mix: roughly 90% ERP consulting, 10% AI/cloud/innovation, with the innovation share growing.
Active clients include MeisterWerke, Trojan Technologies, Tsurumi, W. Neudorff, Containex, Calanbau, OTT Hydromet, IMA Schelling, EMG Automation, AMS Technologies, ERMCO-ECI, and others across industrial manufacturing.
Current Q2 priorities: Redeploy three consultants coming off a large engagement ending in June. Close two H2W Labs PoCs. Land the first AWS reference. Drive Moco time tracking adoption past 80%. All tracked in goals.md and scored weekly.
Why this exists
Most of the work of running a consulting business is repetition at scale. Prep a meeting. Follow up on a quote. Score a deal. Draft a reply. Generate a dashboard. Chase an invoice. Prepare a 1:1. Write a status report. Publish a LinkedIn post. Review a PM's draft. Refresh a customer profile.
The traditional answer is to hire more people. The answer this project makes is different: formalize every repeating workflow as a reusable skill, wire up the tools the skill needs, and run the whole thing through one agentic interface. The result is a single operator running at the throughput of a small team.
This site documents every piece: 80+ formalized skills, 7 specialized subagents, 6 behavioral rules, 36+ context files, 35 integration scripts, 8 MCP servers, and a growing library of hand-written workflow playbooks. Everything is plain text in a git repository. You can read the source of every skill, every rule, every context file.
How to read this site
By the numbers — live counts, pulled from git and from the source files on every build
Architecture — how context, rules, skills, subagents, and scripts fit together
Skill catalog — all 80 skills, searchable and filterable. Daily drivers pinned at the top. Click any card for the full body.
Gallery — real PDF artifacts this project has produced in the last few weeks
Recent activity — what the EA actually did this week, pulled from daily logs
Decision log — the append-only record of how the project has evolved
Timeline — git history of when skills were added
The order is intentional: counts, then structure, then the catalog, then the proof it's alive.
2
By the numbers
84
Skills
7
Subagents
6
Rules
9
Integrations
37
Scripts
36
Context files
13
References
20
Categories
119
Decisions logged
17
Daily logs
33
Generated reports
114
Commits (30d)
Last commit 2026-04-10. 54 commits in the last 7 days, 114 in the last 30. 139 total commits since project start.
3
How it fits together
Lennart's request"Monday sequence" · "Check my deals" · "Write follow-up"
"Quick business alert scan using local files only (no API calls). Use at session start or when Lennart says check alerts, what needs atte...
"Check alerts", "any red flags?", "what needs attention?"
content-engine
Content production orchestrator. Checks queue health, drafts LinkedIn posts and blog articles in batch, manages the 3-day approved buffer...
"Fill the queue", "draft posts", "queue status"
daily-calendar-scan
Cross-functional daily business scan. Use when Lennart says what is on my calendar, anything new, what should I know, daily scan, or at s...
"What's on my calendar", "daily scan", "calendar check"
deal-pulse
Sales execution loop that monitors email and calendar for deal signals, flags overdue follow-ups, and surfaces deals needing action. Use...
"Deal pulse", "check my deals", "follow-up check"
draft-tracker
"Check for unsent email drafts and remind about stale ones. Use when Lennart says check drafts, pending drafts, draft status, unsent emai...
"Check drafts", "pending drafts", "unsent emails"
inbox-drafts
"Scan inbox for emails needing replies, draft responses for all of them. Runs as part of daily-calendar-scan or standalone. Use when Lenn...
"Inbox drafts", "draft my replies", "what needs a reply"
log-time
"Log daily time entries to Moco based on calendar events and manual input. Use when Lennart says log time, Zeiterfassung, log my hours, t...
"Log time", "Zeiterfassung", "log my hours". Interactive version with approval gate. Closeout skill handles autonomous posting.
meeting-workflow
Full meeting lifecycle -- preparation, notes processing, and follow-up drafting. Use when Lennart mentions meeting prep, meeting notes, m...
"Meeting prep", "process meeting notes"
monday-sequence
Run the full Monday morning report sequence in one command. Chains context-refresh, c-suite-dashboard, monday-briefing, and weekly-snapsh...
"Monday sequence", "run the Monday reports"
sales-discovery-debrief
Process a sales discovery meeting into actionable CRM updates, deal qualification, and follow-up emails. Pulls the Hedy transcript, extra...
"Debrief the call", "process the meeting"
session-closeout
"DEPRECATED -- use /closeout instead. Redirects to the closeout skill."
ab-testing
Marketing
A/B testing for email sequences and content. Design hypotheses, set up email split tests in Close CRM, design content experiments for LinkedIn and blog, analyze results. Use when Lennart says A/B test, split test, tes...
Standardized account management meeting framework. Generates internal prep brief (PDF) and customer-facing deck (PPTX) for monthly account reviews. Use when Lennart says account review, account management meeting, pre...
Triggers: "Account meeting prep [client]", "customer review for [client]"
account-status-report
Delivery
Triggers: "Account status report", "customer report for [client]"
•action-item-tracker
Operations
"Aggregate open action items across Hedy meetings, Jira, M365 Tasks, and Close CRM. Surface overdue items, group by owner, flag items open 7+ days. Use when Lennart asks what's overdue, open action items, who owes wha...
"Quick business alert scan using local files only (no API calls). Use at session start or when Lennart says check alerts, what needs attention, any red flags, or business pulse."
Triggers: "Check alerts", "any red flags?", "what needs attention?"
blog-writer
Marketing
SEO-targeted blog article production with bilingual output, meta descriptions, and keyword targeting. Use when Lennart says write a blog post, draft an article, blog about [topic], SEO article, or create blog content.
Triggers: "Write blog article", "blog on [topic]"
c-suite-dashboard
Orchestration
Run all C-level analysis dashboards and produce a combined executive report. Chains CFO, CRO, CHRO, CSO, and CMO weekly dashboards into individual PDFs plus one combined C-suite dashboard PDF. Use when Lennart says C-...
Rolling 13-week cash flow forecast combining Qonto bank data, Moco invoices, Close CRM pipeline, and known fixed costs. Use when Lennart asks about cash flow, cash runway, when we run out of money, upcoming payments,...
Triggers: "Cash flow forecast", "cash runway"
cfo-analysis
Finance
CFO-level financial analysis with weekly dashboard, scenario modeling, deal economics, and investment decisions. Use when Lennart asks about margins, profitability, pricing, deal economics, revenue scenarios, cost ana...
"Check Claude usage limits via Playwright and cache the result. Use at session start, before heavy work, or when approaching limits. Also triggers auto-switch to OpenRouter if limits are critical."
chro-analysis
People
CHRO-level people strategy with weekly dashboard, retention risk assessment, succession planning, comp benchmarking, and org design. Use when Lennart asks about team health, retention risks, bench cost, redeployment,...
Create, update, or deploy password-protected client microsites. Use when Lennart says create a client website, build a site for [company], positioning website, proposal site, workshop results site, QBR site, update th...
closeout
Session
"Autonomous end-of-day closeout: git commit, Moco time logging, CRM sync, daily log, session briefing, self-validation. Use when Lennart says closeout, wrap up, end session, done for now, save state. Replaces session-...
CMO-level marketing analysis with weekly dashboard, content ROI, channel effectiveness, and brand health. Use when Lennart asks about marketing performance, content output, lead attribution, brand visibility, content...
Content performance tracking, weekly and monthly analytics reports, and pipeline attribution. Use when Lennart says content analytics, content performance, what's working, weekly content report, or attribution report.
Content production orchestrator. Checks queue health, drafts LinkedIn posts and blog articles in batch, manages the 3-day approved buffer, and stages content for review. Use when Lennart says content engine, fill the...
Triggers: "Fill the queue", "draft posts", "queue status"
content-review
Marketing
Batch content review workflow. Presents drafted LinkedIn posts and blog articles for Lennart's review, tracks edits for voice calibration, and moves approved content to the publishing queue. Use when Lennart says revi...
Refresh context files with live data from Moco, Close CRM, and Qonto. Run weekly (before Monday reports) or on demand to keep context files current. Use when Lennart says refresh context, update context, sync data, pu...
Run CRM and Moco data quality validation. Use when Lennart says validate CRM, check data quality, run CRM audit, or after any Close/Moco write operation.
cro-analysis
Revenue
CRO-level revenue analysis with weekly dashboard, deal intelligence, revenue forecasting, and sales performance. Use when Lennart asks about pipeline health, revenue forecast, sales velocity, deal prioritization, conv...
CSO-level strategic analysis with weekly dashboard, competitive intelligence, strategic decision support, and market positioning review. Use when Lennart asks about strategic bets, risk register, competitive moves, ma...
Build deep, comprehensive customer profiles by pulling from all systems (Close CRM, Jira, Moco, Hedy, Apollo.io, web). Use when Lennart asks to understand a customer deeply, build a customer profile, analyze customer...
Triggers: "Customer profile", "stakeholder map"
•daily-calendar-scan
Meetings
Cross-functional daily business scan. Use when Lennart says what is on my calendar, anything new, what should I know, daily scan, or at session start. Covers all 6 business areas (sales, delivery, people, finance, ope...
Triggers: "What's on my calendar", "daily scan", "calendar check"
daily-log
Session
"Create a daily log entry summarizing EA project activity and company business events. Use when Lennart says daily log, log today, what happened today, end of day, or automatically via evening cron."
Score all qualified pipeline opportunities (Interested but need time through Verge of closing) on a 0-100 health scale and tier them Green/Yellow/Red/Stalled. Use when Lennart asks to score deals, check deal health, f...
•deal-pulse
Sales
Sales execution loop that monitors email and calendar for deal signals, flags overdue follow-ups, and surfaces deals needing action. Use when Lennart says deal pulse, check my deals, any replies, follow-up check, what...
Triggers: "Deal pulse", "check my deals", "follow-up check"
•draft-tracker
Email
"Check for unsent email drafts and remind about stale ones. Use when Lennart says check drafts, pending drafts, draft status, unsent emails, what drafts are waiting, or did I send that email."
CRM contact enrichment procedures, custom field IDs, and email drafting checklists. Auto-loads when creating/updating contacts, drafting emails, or doing CRM enrichment work.
email-sequence-design
Sales
Design and build email sequences for Close CRM. Sales follow-up, nurture, re-engagement, workshop invitations, Labs product intros, and multi-touch campaigns. Use when Lennart says build a sequence, design email caden...
Triggers: "Build a sequence", "design email cadence", "drip campaign"
evaluation-cycle
People
"Run the full employee evaluation cycle: prep, agenda, and post-meeting record update. Use when Lennart says evaluation for [name], run evaluation cycle, performance review for [name], or after completing an evaluatio...
Triggers: "Evaluation for [name]", "performance review for [name]"
h2w-labs-playbook
Sales
Run the H2W Labs sales conversion playbook for a specific deal. Generates Opportunity Briefs, demo prep, proposals, and follow-up cadences based on deal stage. Use when Lennart asks to move a Labs deal forward, genera...
Triggers: "Run the playbook for [company]"
hedy-session-tagger
Hedy/Automation
Auto-tag Hedy sessions to topics and update the local session index. Called by daily-calendar-scan at end of each run. No manual involvement. Use when sessions need tagging, index needs updating, or as part of daily/c...
Triggers: Auto-tags sessions to topics, updates index. Called by daily-calendar-scan and context-refresh.
•inbox-drafts
Email
"Scan inbox for emails needing replies, draft responses for all of them. Runs as part of daily-calendar-scan or standalone. Use when Lennart asks to check inbox, draft replies, process emails, clear inbox, what needs...
Triggers: "Inbox drafts", "draft my replies", "what needs a reply"
intercompany-billing
Finance
"Track intercompany billing between BLC UG and H2W GmbH. Reconcile invoices against bank transfers, flag missing payments, detect entity confusion. Use when Lennart asks about intercompany status, BLC to H2W transfers...
Triggers: "Intercompany status", "BLC to H2W transfers"
invoice-aging
Finance
Invoice aging report from Moco and Qonto. Shows outstanding receivables by customer and age bucket, overdue invoices, collection risk, and payment patterns. Use when Lennart asks about outstanding invoices, overdue pa...
Triggers: "Outstanding invoices", "who owes us"
issue-tracker
Operations
"Track issues, tasks, and topics with internal and external people and companies. Use when Lennart says add issue, track this, open issues, issue list, prep for meeting with X, issue dashboard, update issue, close iss...
"Prepare and structure H2W Labs demo and PoC deliveries. Generates demo scripts, environment checklists, success criteria, and post-demo follow-up. Use when Lennart asks to prep a demo, build a demo script, PoC delive...
Triggers: "Prep demo for [company]", "PoC delivery plan"
labs-launch-strategy
Product
Build and execute go-to-market launch plans for H2W Labs products. Positioning, messaging, reference cases, launch sequences, channel coordination. Use when Lennart says launch strategy, go-to-market, GTM plan, produc...
"Log daily time entries to Moco based on calendar events and manual input. Use when Lennart says log time, Zeiterfassung, log my hours, time tracking, update Moco time, or as part of session-closeout."
Triggers: "Log time", "Zeiterfassung", "log my hours". Interactive version with approval gate. Closeout skill handles autonomous posting.
market-sizing
Strategy
Size markets, analyze segments, and assess expansion opportunities for ERP consulting and AI products. Use when Lennart says market size, TAM SAM SOM, market analysis, addressable market, market opportunity, how big i...
Triggers: "Market size", "TAM SAM SOM", "addressable market"
marketing-content-pipeline
Marketing
Turn project experiences, customer conversations, and operational insights into content across multiple formats and channels. Use when Lennart asks to write a LinkedIn post, create a case study, draft an article, gene...
Triggers: "Write LinkedIn post", "create case study"
meeting-briefing-notes
Meetings
Parallel meeting prep engine. Spawns 4 subagents (Close CRM, Jira, Moco, vault+web) simultaneously, merges outputs, computes relationship health score, and produces an extended briefing note as markdown and one-page P...
Triggers: "Prep for [client]", "research [company]", "meeting prep"
•meeting-workflow
Meetings
Full meeting lifecycle -- preparation, notes processing, and follow-up drafting. Use when Lennart mentions meeting prep, meeting notes, meeting transcript, follow-up emails, post-meeting actions, or asks to prepare fo...
Triggers: "Meeting prep", "process meeting notes"
moco-crm-sync
Operations
Cross-check Moco projects/deals against Close CRM opportunities. Flag misalignments, missing entries, and value discrepancies.
Generate the Monday morning BD-PMO weekly update call briefing. Pulls from Close CRM, Jira, Hedy, Moco, and Slack to prepare agenda talking points. Use when Lennart says Monday briefing, prep the Monday meeting, BD-PM...
Triggers: "Monday briefing", "prep the Monday meeting"
•monday-sequence
Orchestration
Run the full Monday morning report sequence in one command. Chains context-refresh, c-suite-dashboard, monday-briefing, and weekly-snapshot in the correct order with consistent data. The c-suite-dashboard replaces the...
Triggers: "Monday sequence", "run the Monday reports"
newsletter-assembler
Marketing
Monthly bilingual newsletter compilation from published content. Curates top pieces, creates Close CRM email templates and workflows for sending. Use when Lennart says assemble newsletter, monthly newsletter, prepare...
"Prepare lightweight briefings for recurring 1:1 meetings with team members. Pulls last meeting notes, recent Jira activity, Moco hours, and open action items. Use when Lennart asks to prep for a 1:1 with Uli, Richard...
Triggers: "Prep for 1:1 with [person]", "catch me up on [person]"
operations-health
Operations
Operational health monitoring across utilization, delivery, pipeline, and finance. Use when Lennart asks for an ops dashboard, weekly ops check, KPI review, how the business is running, delivery health, or wants a cro...
Triggers: "Ops dashboard", "KPI review"
people-prep
People
"Pull a comprehensive briefing on any team member by combining their people record with fresh Moco, email, Jira, and Hedy data. Use when Lennart says prep for [name], catch me up on [name], what's [name] working on, o...
Triggers: "Prep for [name]", "catch me up on [name]"
pipeline-velocity
Sales
Weekly pipeline velocity report from Close CRM. Shows deals by stage, age in stage, stalled deals, conversion rates, weighted revenue, and win/loss analysis. Use when Lennart asks about pipeline velocity, deal flow, s...
Triggers: "Pipeline velocity", "stalled deals"
pptx-from-layouts
Presentations
Generate and edit PowerPoint presentations from templates. Use when user needs to create slides from outlines, modify existing decks, profile custom templates, or validate presentation quality.
Triggers: Engine: outline to PPTX, edit decks, validate, profile templates
pptx-generator
Presentations
Create on-brand PPTX presentations for any topic. Use when user asks to create a presentation, slide deck, pitch deck, or PPTX file.
Triggers: "Create a deck", "pitch deck", "slide deck", "PPTX"
pptx-polish
Presentations
Validate, repair, and audit PowerPoint presentations. Use when polishing a generated deck, checking an existing PPTX for quality issues, or running QA before delivery.
Triggers: QA: audit, repair, validate any PPTX. Text overflow, ghosts, fonts, hyperlinks, ZIP fixes
programmatic-seo
Marketing
Scaled content strategy design for programmatic SEO. Evaluates feasibility, designs template-based page strategies, and generates keyword x topic matrices for batch production. Use when Lennart says programmatic SEO,...
Regenerate and deploy the password-gated EA project showcase website at webapp/showcase/. Use when Lennart says regenerate showcase, update showcase, rebuild the showcase site, deploy showcase, project showcase, or sh...
project-status-reporting
Delivery
Generate weekly project status reports in client-facing and internal versions. Use when Lennart asks to write a status report, prepare a project update, review a PM's status report draft, or summarize project status f...
Triggers: "Status report for [client]"
proposal-sow-generation
Documents
Generate consulting proposals and statements of work for ERP consulting and H2W Labs engagements. Use when Lennart asks to draft a proposal, write a SOW, put together an offer, create a quote, or prepare commercial do...
Triggers: "Draft a proposal", "write a SOW"
prospecting-engine
Sales
Build and manage target account lists for systematic outbound prospecting. Uses Apollo.io to find ICP-matching companies, enriches with contact data, and stages outreach in Close CRM. Use when Lennart asks to build a...
Scrape web sources, qualify companies against ICP, enrich via Apollo, and push to Close CRM with follow-up tasks. Use when Lennart says scrape and prospect, intake from URL, prospect from [source], run intake on, pros...
qbr-client-review
Delivery
"Prepare quarterly business reviews with key clients. Generates QBR agenda, delivery summary, financials, expansion opportunities, and follow-up actions. Use when Lennart asks to prepare a QBR, quarterly review with a...
Triggers: "Prepare QBR for [client]", "quarterly review with [client]"
relationship-pulse
People
> Relationship intelligence dashboard. Monitors interaction frequency with key contacts and alerts when relationships need attention. Use when Lennart says relationship pulse, check my relationships, who needs attenti...
Triggers: "Relationship pulse", "who needs attention", "check my relationships"
•sales-discovery-debrief
Sales
Process a sales discovery meeting into actionable CRM updates, deal qualification, and follow-up emails. Pulls the Hedy transcript, extracts qualifying information (pain points, budget, timeline, decision makers, tech...
Triggers: "Debrief the call", "process the meeting"
sales-intelligence
Sales
Sales cockpit that pulls data from Close CRM, cross-references with Jira delivery, enriches with Apollo.io and web research. Use when Lennart asks about the pipeline, deals needing attention, a specific deal or compan...
Triggers: "Pipeline review", "deal intelligence"
sales-outreach
Sales
Draft outreach messages for sales scenarios across email and LinkedIn. Use when Lennart asks to write an outreach email, draft a LinkedIn message, follow up with a contact, re-engage a dormant lead, respond to an inbo...
Triggers: "Write outreach email", "follow up with..."
seo-content-audit
Marketing
SEO auditing for h2w-consulting.com. Site health, content scoring, keyword strategy, and competitor SEO analysis. Use when Lennart says SEO audit, content audit, keyword review, SEO health, competitor SEO, or ranking...
"DEPRECATED -- use /closeout instead. Redirects to the closeout skill."
skill-optimization
Meta
Optimize the prompts, structure, and efficiency of existing skills and agents. Use when Lennart says optimize skill, improve skill, skill quality, prompt optimization, reduce token usage, skill review, make this skill...
Analyze recent conversations, meetings, and workflows to detect recurring patterns that should become formalized skills. Use when Lennart asks to find skill gaps, review what should be automated, identify missing skil...
Triggers: "What skills am I missing?"
strategic-review
Strategy
Quarterly strategy review and strategic decision support. Use when Lennart asks for a quarterly review, strategy assessment, market positioning analysis, strategic decision, or wants to update the growth thesis. Conne...
"Switch between model profiles (Claude direct, OpenRouter free/paid/turbo). Use when hitting rate limits, when Lennart says switch models, use free models, use cheaper models, go faster, or go back to Claude."
top-management-report
Reporting
"[DEPRECATED] Replaced by c-suite-dashboard. Use c-suite-dashboard for the weekly executive report. The CFO dashboard mode covers all financial analysis from this report. Archived copy in archives/skills/top-managemen...
Triggers: "MD report", "cash position"
utilization-report
Operations
Consultant and team utilization reporting from Moco. Shows billable ratios, capacity gaps, bench risk, and resource forecast. Use when Lennart asks about utilization, billable hours, team capacity, who is available, b...
Triggers: "Utilization", "billable hours"
vault-curator
Meta
Self-improvement loop for the Obsidian vault. Detects new entities in daily logs and transcripts, backfills missing Dataview inline fields on opportunities, refreshes MOCs, validates wiki-aliases, and proposes structu...
Generate a comprehensive weekly review report for Friday leadership meetings. Pulls from Hedy, Close CRM, Jira, and Slack to synthesize the week into an actionable briefing. Use when Lennart says weekly review, Friday...
Triggers: "Weekly review", "Friday briefing"
weekly-snapshot
Data
Capture weekly business metrics snapshot for trend analysis. Run after Monday reports to save key numbers (cash, pipeline, utilization, delivery, Labs) to reports/internal/snapshots/. Use when Lennart says save the sn...
Triggers: "Save the snapshot", "capture this week's numbers"
workforce-planning
Operations
Workforce planning, team capacity analysis, and people decisions. Use when Lennart asks about staffing, hiring, team redeployment, skill gaps, bench risk, Neudorff impact on team, who to assign to new projects, or wor...
Triggers: "Staffing", "[[w-neudorff
workshop-preparation
Delivery
Prepare agendas, materials, checklists, and follow-up documents for customer workshops. Use when Lennart asks to prepare a workshop, draft a workshop agenda, write up workshop results, create a workshop proposal, or b...
Triggers: "Prepare workshop for [company]"
No skills match your filters.
Click any skill card to see its full body.
ab-testing
Marketing
A/B testing for email sequences and content. Design hypotheses, set up email split tests in Close CRM, design content experiments for LinkedIn and blog, analyze results. Use when Lennart says A/B test, split test, test this subject line, which version works better, email test, or content experiment.
Designs, executes, and analyzes A/B tests for email sequences (Close CRM) and content (LinkedIn posts, blog articles). Provides structured hypothesis design, sample size guidance calibrated for B2B consulting volumes, and statistical rigor appropriate for small audiences.
This skill DESIGNS tests and ANALYZES results. email-sequence-design builds the sequences. content-engine produces the content variants. content-analytics tracks performance data.
Trigger
Use this skill when Lennart says:
"A/B test" / "Split test" / "Test this subject line"
"Which version works better?" / "Should I use A or B?"
"Email test" / "Content experiment"
"Test send times" / "Test email length"
"What subject line format works best?"
"Run an experiment on [content type]"
Also proactively suggest:
After content-analytics flags inconsistent open rates across sequences
After email-sequence-design builds a new sequence (suggest testing subject lines)
When content-engine produces similar content in different formats (natural test opportunity)
After 30+ days of LinkedIn posting (enough data for format testing)
context/icp.md -- Buyer personas, industry segments
Read on demand:
context/win-loss.md -- What messaging resonates and what falls flat
context/seo-keywords.md -- Keyword performance for blog test design
data/content-queue/published/ -- Published content with performance data
Sample Size Reality Check
B2B ERP consulting operates with small audiences. Tests must be designed accordingly.
Minimum Sample Sizes by Channel
Channel
Minimum per Variant
Why
Practical Implication
Email (subject line)
200 contacts
Need detectable open rate difference of 5+ percentage points
Split large sends; may take 2-4 sends to accumulate
Email (body/CTA)
200 contacts
Click and reply rates are lower, need more data
Same send pooling as above
Email (send time)
100 contacts
Comparing same content at different times
Run over 2-4 weeks on the same segment
...
Source: .claude/skills/ab-testing/SKILL.md
account-management-meeting
Meetings
Standardized account management meeting framework. Generates internal prep brief (PDF) and customer-facing deck (PPTX) for monthly account reviews. Use when Lennart says account review, account management meeting, prep for [customer] review, customer deck, or account meeting for [customer].
Triggers: "Account meeting prep [client]", "customer review for [client]"
Data sources: Close, Moco, Jira, Hedy, M365
Account Management Meeting
Standardized framework for monthly account management meetings with key customers. Produces two outputs:
1. Internal prep brief (PDF) -- comprehensive data-driven briefing for Lennart and the lead PM
2. Customer-facing deck (PPTX) -- professional presentation for the meeting itself
Trigger
Use this skill when Lennart says:
"Account management meeting for [customer]"
"Prep account review for [customer]"
"Generate account deck for [customer]"
"Account meeting prep [customer]"
"Customer review for [customer]"
"/account-management-meeting [customer]"
Modes
Mode
Command
Output
both (default)
/account-management-meeting [customer]
PDF brief + PPTX deck
prep
/account-management-meeting [customer] --prep
PDF brief only
deck
/account-management-meeting [customer] --deck
PPTX deck only
followup
/account-management-meeting [customer] --followup
Delegates to meeting-workflow skill
Execution
Step 0: Identify Customer
1. Match the customer name against context/clients.md
2. Extract: tier, entity, lead PM, key contacts, audience_level, account_review_cadence
3. Determine brand: H2W for DACH customers, BLCG for U.S. customers (check entity field)
4. Determine language: "de" for DACH, "en" for U.S./UK customers
Step 1: Gather Data (Parallel Subagents)
Launch these 5 subagents in parallel to gather live data. Pass the customer name to each.
1a: Close CRM Agent
Subagent: close-crm-agent
Task: Pull all data for [customer]:
- Lead record (search by company name)
- All contacts on the lead
- Active opportunities (find_opportunities with lead_id filter)
- Won opportunities (last 12 months)
- Activity history (last 90 days): emails, calls, meetings, notes
- Activity count and frequency
1b: Moco Data Agent
Subagent: moco-data-agent
Task: Pull project and financial data for [customer]:
- All active projects (filter by customer name)
- Budget and hours consumed per project
- Team assignments per project
- Recent time entries (last 30 days)
- Invoices (last 6 months): amounts, status, payment dates
- Any active offers/quotes
1c: Jira Agent
Subagent: jira-agent
Task: Pull delivery data for [customer]:
- cloudId: 0ee5c601-cc7e-4022-ba05-749fee885399
...
Triggers: "Account status report", "customer report for [client]"
Data sources: Close, Jira, Moco
Account Status Report
Generate a branded PDF account status report for any customer account. Pulls live data from Close CRM, Jira, and Moco, then renders a structured PDF using the report engine.
Trigger
Use when Lennart asks for an account report, account status, account overview PDF, customer report, or wants to share an account summary with the team responsible for that account.
Data Gathering Process
Run these three subagents in parallel to collect account data:
1. Close CRM Agent (close-crm-agent)
Search for the lead by company name
Fetch all opportunities (active, won, lost)
Pull recent activity (emails, calls, notes) from the last 30 days
Extract key contacts with roles
2. Jira Agent (jira-agent)
Search project = {PROJECT_KEY} ORDER BY updated DESC (find project key from projects/ folder or ask)
Search project = PKL AND summary ~ "{company}" ORDER BY updated DESC
2. Active Delivery -- Workstreams with budgets and RAG status
3. Pipeline -- Open opportunities with stage, value, owner, confidence
4. Recent Activity -- Last 30 days of significant emails, meetings, calls
5. Jira Delivery Status -- Open issues with status and assignee
6. Risks and Actions -- Open risks (with severity badges) and required actions (with owners and due dates)
7. Team -- All team members assigned to the account
Plus:
KPI cards at the top (workstreams, pipeline deals, budget, team size)
Alert box for key dates or urgent items
Data source footnote
PDF Generation
import sys, os
sys.path.insert(0, os.path.join(os.path.dirname(__file__), "..", ".."))
from reports.account_status_report.generate import generate_account_report
data = {
"account_name": "Company Name",
"date": "YYYY-MM-DD",
"entity": "Contracting entity",
"pmo": "PMO Lead Name",
"status": "Active", # Active / At Risk / Inactive
"icp_priority": "A", # A / B / C
...
"Aggregate open action items across Hedy meetings, Jira, M365 Tasks, and Close CRM. Surface overdue items, group by owner, flag items open 7+ days. Use when Lennart asks what's overdue, open action items, who owes what, outstanding tasks, action item review, or wants a cross-system task view."
"Quick business alert scan using local files only (no API calls). Use at session start or when Lennart says check alerts, what needs attention, any red flags, or business pulse."
Triggers: "Check alerts", "any red flags?", "what needs attention?"
Data sources: Snapshots, context files, data/issues/
Alert Check
Fast business alert scan. Reads local files only (no API calls). Surfaces what needs immediate attention.
Trigger
Use when Lennart says:
"Check alerts" / "Any red flags?" / "What needs attention?"
"Business pulse" / "Quick status"
Automatically as part of daily-calendar-scan Step 0 (new sessions)
Execution
Step 1: Read data sources (parallel)
Read these local files. Do NOT make API calls -- this skill must be fast.
1. Latest snapshot: most recent file in reports/internal/snapshots/ (skip README.md)
2. Pipeline:context/pipeline.md (check "Last updated" date + deal data)
6. Draft log:data/draft-log.md (check for stale unsent drafts)
Step 2: Run checks
Check
Source
RED
YELLOW
H2W GmbH cash
Snapshot
< EUR 80K
< EUR 120K
Group cash
Snapshot
< EUR 150K
< EUR 200K
Pipeline coverage
Snapshot/pipeline
< 1.0x monthly revenue
< 2.0x
Data staleness
"Last updated" in pipeline.md, projects.md, team-assignments.md
> 14 days
> 7 days
Deal aging
pipeline.md proposals
Any proposal > 21 days no activity
> 14 days
Overdue issues
data/issues/ frontmatter
Any past due_date with status open/in-progress
Due within 3 days
Contract expiry
contracts.md
Expiring < 14 days
Expiring < 30 days
Neudorff countdown
Calculate from today to June 30, 2026
< 8 weeks + EUR 0 replacement
< 16 weeks
Stale drafts
data/draft-log.md
Any draft past RED threshold for its urgency tier
Any draft past YELLOW threshold
Step 3: Output
Compact alert block. RED items first, then YELLOW.
ALERTS ([count] active)
RED [icon-free label]: [metric] -- [suggested action or skill]
RED [label]: [metric] -- [action]
YELLOW [label]: [metric] -- [action]
No alerts: all clear.
Examples:
ALERTS (3 active)
RED Cash: H2W EUR 18K (threshold EUR 80K) -- /invoice-aging or /cfo-analysis
RED Pipeline: 0.4x coverage, J.P. Sauer proposal 14 days aging -- /deal-pulse
YELLOW Data: pipeline.md 8 days stale -- /context-refresh
...
Source: .claude/skills/alert-check/SKILL.md
blog-writer
Marketing
SEO-targeted blog article production with bilingual output, meta descriptions, and keyword targeting. Use when Lennart says write a blog post, draft an article, blog about [topic], SEO article, or create blog content.
Triggers: "Write blog article", "blog on [topic]"
Data sources: SEO keywords, context files
Blog Writer
Produces SEO-targeted blog articles for the H2W website. Each article targets one keyword from the SEO strategy, follows the weekly publishing schedule, and includes all metadata needed for CMS publishing.
Trigger
Use this skill when Lennart says:
"Write a blog post" / "Draft an article" / "Blog about [topic]"
"SEO article on [keyword]" / "Create blog content"
"Write today's article" / "Next blog post"
Also triggered by content-engine Mode 2 for scheduled blog production.
Context Files
Always read before writing:
context/seo-keywords.md -- Target keywords and ranking status
context/offerings.md -- Product/service details for accuracy
context/icp.md -- Buyer personas (write for these readers)
context/strategy.md -- Current strategic focus
Weekly Blog Schedule
Day
Language
Article Type
Focus
Mon
DE
SEO article
Infor LN keyword targeting
Tue
EN
Thought leadership
Industry insight, long-form opinion
Wed
DE
How-to / practical guide
Step-by-step, actionable
Thu
EN
Case study or use case
Real project experience (anonymized)
Fri
DE
Industry trend / opinion
Manufacturing industry direction
Sat
EN
AI in manufacturing
H2W Labs topics, practical AI
Sun
DE
Evergreen / pillar content
Foundational topics that rank long-term
Article Structure
Every article must include:
Frontmatter (for CMS and queue tracking):
---
title: [Article title -- include target keyword naturally]
meta_description: [150-160 characters, include target keyword, compelling to click]
target_keyword: [Primary keyword from seo-keywords.md]
secondary_keywords: [2-3 related terms to include naturally]
language: EN|DE
article_type: seo|thought-leadership|how-to|case-study|trend|ai-manufacturing|pillar
pillar: [Content pillar from marketing.md]
icp: ICP1|ICP2|Both
author: Lennart Hector
status: drafted
created: YYYY-MM-DD
word_count: [actual count]
---
Article body (800-1500 words):
1. Opening (100-150 words): Start with the problem or question the reader has. No generic intros. Get to the point.
2. Context (100-200 words): Why this matters now. Connect to industry trends or regulatory changes.
...
Source: .claude/skills/blog-writer/SKILL.md
c-suite-dashboard
Orchestration
Run all C-level analysis dashboards and produce a combined executive report. Chains CFO, CRO, CHRO, CSO, and CMO weekly dashboards into individual PDFs plus one combined C-suite dashboard PDF. Use when Lennart says C-suite dashboard, executive dashboard, full leadership view, run all C-level reports, or as Step 2 in the Monday sequence.
Rolling 13-week cash flow forecast combining Qonto bank data, Moco invoices, Close CRM pipeline, and known fixed costs. Use when Lennart asks about cash flow, cash runway, when we run out of money, upcoming payments, receivables, or wants to see the forward cash position.
Triggers: "Cash flow forecast", "cash runway"
Data sources: Qonto, Moco, Close
Cash Flow Forecast
Builds a rolling 13-week (3-month) cash flow forecast by combining actual bank data with known obligations and expected revenue. This is the forward-looking companion to the top-management-report's cash position snapshot.
CFO-level financial analysis with weekly dashboard, scenario modeling, deal economics, and investment decisions. Use when Lennart asks about margins, profitability, pricing, deal economics, revenue scenarios, cost analysis, investment decisions, financial health, CFO dashboard, weekly financial review, or wants a CFO perspective on any business decision.
Acts as a virtual CFO for Lennart. Goes beyond the top-management-report (which shows current position) to provide forward-looking financial analysis, scenario modeling, and decision support.
"What are the economics on this deal?" / "Is this deal profitable?"
"Model the revenue scenario" / "What happens if we lose [customer]?"
"Should we invest in [X]?" / "Can we afford to hire?"
"What's our margin on [customer/product]?"
"CFO view on this" / "Give me a CFO perspective"
"Pricing analysis" / "Should we raise rates?"
"What does the financial picture look like for Q2/Q3?"
"Help me think through the financials on this"
Context Files
Always read before analysis:
context/finance.md -- Entity economics, cost structure, billing rates, margin targets, unit economics. Includes actual rate realization data (EUR 148/hr blended, 87% at 145-155) and internal cost ratio trend.
context/current-priorities.md -- What's strategically important right now
context/goals.md -- Quarterly targets
data/octaved-flow-export/ANALYSIS.md -- Historical baselines (Oct 2022 - Feb 2026): actual rates by customer, project profitability, utilization by person. Use for benchmarking deal economics against real data, not assumptions.
context/clients.md -- Customer lifetime value table with historical hours, avg rates, and engagement duration per customer
Modes
Mode 0: Weekly CFO Dashboard
Produces a standalone PDF summarizing the financial state of the business. Designed to run weekly as part of the C-suite dashboard sequence.
Trigger: "CFO dashboard", "CFO weekly", or invoked by c-suite-dashboard orchestrator.
Data sources:
Qonto API: balances for H2W GmbH (QONTO_H2W_AUTH) + BLC UG (QONTO_BLC_AUTH) via GET /organization
Qonto API: transactions for current month via GET /transactions?iban={iban}&settled_at_from={first_of_month}
Moco Report API (use FIRST, pre-calculated):
GET /report/cashflow?from={date}&to={date} -- pre-aggregated cashflow data
GET /report/finance?from={date}&to={date} -- financial records (net amounts, types)
...
Source: .claude/skills/cfo-analysis/SKILL.md
check-usage
Meta
"Check Claude usage limits via Playwright and cache the result. Use at session start, before heavy work, or when approaching limits. Also triggers auto-switch to OpenRouter if limits are critical."
Triggers: n/a
Data sources: n/a
Check Claude Usage
Fetches real-time Claude usage data from claude.ai/settings/usage via Playwright, caches it locally, and triggers auto-switching if limits are critical.
Trigger
Use when:
Starting a new session (before heavy work)
Lennart asks: "check usage", "how much Claude left", "am I near limits"
Before a large task that will consume significant tokens
Periodically during long sessions (every ~30 min)
After the startup hook reports stale or missing usage data
Execution
Step 1: Navigate to usage page
Use Playwright to navigate to https://claude.ai/settings/usage.
If redirected to login, tell Lennart: "Please log in to claude.ai in the Playwright browser window, then ask me to check usage again."
Step 2: Fetch usage data via API
Use Playwright evaluate to call the API directly (faster than scraping):
Latency will be degraded. Top up at openrouter.ai. Switched to free (zero cost).
Source: .claude/skills/check-usage/SKILL.md
chro-analysis
People
CHRO-level people strategy with weekly dashboard, retention risk assessment, succession planning, comp benchmarking, and org design. Use when Lennart asks about team health, retention risks, bench cost, redeployment, key-person dependencies, hiring decisions, org structure, comp analysis, or wants a people leadership perspective.
Data sources: Moco, Jira, Hedy, Apollo, data/people/
CHRO Analysis
Acts as a virtual Chief People Officer for Lennart. Owns team health, retention, capacity planning, development, and organizational design. Complements workforce-planning (which focuses on staffing scenarios) and evaluation-cycle (which is per-person) with a strategic people portfolio view.
Create, update, or deploy password-protected client microsites. Use when Lennart says create a client website, build a site for [company], positioning website, proposal site, workshop results site, QBR site, update the [client] website, deploy the [client] site, or client microsite.
Triggers: n/a
Data sources: n/a
Client Website Generator
Create branded, password-protected HTML microsites for prospects and customers. Single-file output, self-contained, deployed to {client-slug}.blconsultingservice.com.
Modes
Mode
Trigger
Action
create
"create a client website for [company]"
Full workflow: brand scrape, content, generate, deploy
update
"update the [client] website"
Modify existing generator, regenerate, redeploy
deploy
"deploy the [client] site"
Run generator + push to Netlify
Site Types
Type
When
Sections
positioning
Late-stage prospect evaluation
Summary, Analysis, Solutions, Zielbild, Roadmap, Business Case, Why H2W, References, Options, Next Step + Offer CTA
The canonical pattern is the MeisterWerke positioning site: reports/client-facing/positioning/meisterwerke-schulte/website/generate_site.py
Every new site follows this architecture. Read it before generating any new site.
Create Workflow
Step 1: Identify Client
1. Ask for company name (or infer from conversation context)
2. Look up in Close CRM (lead_search) and Moco (companies API)
3. Determine:
- Entity: H2W Consulting GmbH (DACH) / BLCG International (US) / H2W Labs
- Language: de (DACH/EU) / en (US/UK/international)
- Client slug: lowercase-hyphenated (e.g., "ott-hydromet")
4. Check if site already exists: reports/client-facing/{type}/{client-slug}/website/
Step 2: Select Site Type
Ask Lennart which type: positioning / proposal / workshop / qbr. Default to positioning for prospects, qbr for existing customers.
Step 3: Brand Integration
1. Check brand/customer-logos/{client-slug}.png -- use if exists
2. If no logo: scrape client website homepage for logo URL, download to brand/customer-logos/
3. Scrape client website for:
- Primary brand color (for --c-accent CSS variable)
- Hero-quality lifestyle/product image (for hero background)
...
Source: .claude/skills/client-website/SKILL.md
closeout
Session
"Autonomous end-of-day closeout: git commit, Moco time logging, CRM sync, daily log, session briefing, self-validation. Use when Lennart says closeout, wrap up, end session, done for now, save state. Replaces session-closeout."
Data sources: M365, Moco, Close, git, data/session-briefing.md, data/daily-log/, data/closeout-audit/
Autonomous Closeout
Single-command end-of-day closeout. Runs 8 steps autonomously without prompting. Every step produces a confirmation line. No step may be silently skipped.
Proactively offer after 20+ tool calls or when meaningful work was done
Modes
Flag
Steps
API writes
Asks questions
(none)
1-8
Moco, Close, git
No (fully autonomous)
--quick
1-3
git only
No
--dry-run
1-8
None (shows what would happen)
No
Parse mode from Lennart's message. Examples: "closeout --dry-run", "quick closeout", "wrap up dry run".
Error Isolation
Each step runs independently. A failure in one step does NOT abort the sequence. Failures are logged to the audit file and surfaced in Step 8 validation. In --dry-run mode, all API calls become "WOULD POST: [payload]" entries.
Step 1: Git Checkpoint
1. Run git status (never use -uall).
2. Run git diff to see staged and unstaged changes.
3. If there are changes:
a. Stage relevant files by name (never git add -A; exclude .env, credentials, .obsidian/workspace.json). b. Draft a descriptive commit message from session activity. c. Commit. If pre-commit hook fails, fix and create a NEW commit (never amend).
Open loops (carry forward unresolved from previous briefing + new)
2. Read data/session-briefing.md and update:
Last updated: today's date + time descriptor (morning/afternoon/evening/late/very late)
Updated by: one-line session description
Open Loops: replace with current (max 10, prioritize by urgency, reference data/issues/ IDs)
Last Session: replace (cascade previous to Earlier Session)
Data Freshness: update dates for refreshed context files
3. Session briefing is a living document. Replace content, do not append endlessly.
Output:[2] Session briefing: updated, {N} open loops
Step 3: Time-Split Entry
...
Source: .claude/skills/closeout/SKILL.md
cmo-analysis
Marketing
CMO-level marketing analysis with weekly dashboard, content ROI, channel effectiveness, and brand health. Use when Lennart asks about marketing performance, content output, lead attribution, brand visibility, content ROI, channel effectiveness, or wants a marketing leadership perspective.
Acts as a virtual Chief Marketing Officer for Lennart. Owns content performance, lead attribution, channel effectiveness, and brand health. Complements marketing-content-pipeline (which creates content) with a strategic marketing performance view.
context/current-priorities.md -- Strategic context (Neudorff case study deadline)
context/goals.md -- Quarterly targets
context/pipeline.md -- Pipeline for lead source attribution
data/content-queue/queue.md -- Content production queue state and buffer health
data/content-queue/published/ -- Published content with performance data
context/seo-keywords.md -- SEO keyword targets and ranking tracking
Modes
Mode 0: Weekly CMO Dashboard
Produces a standalone PDF summarizing marketing performance. Designed to run weekly as part of the C-suite dashboard sequence. Has a practical core (measurable today) and an aspirational roadmap (what to measure next).
Trigger: "CMO dashboard", "CMO weekly", or invoked by c-suite-dashboard orchestrator.
Data sources:
data/content-queue/queue.md: buffer health, production metrics
data/content-queue/published/: published content this week with performance data
context/seo-keywords.md: keyword targets and ranking progress
Close CRM: lead_search for new leads this week (check for source tags), find_opportunities for inbound-attributed deals
Weekly snapshots: reports/snapshots/ for trend data
Execution:
1. Read data/content-queue/queue.md for production metrics and buffer health
2. Read data/content-queue/published/ for this week's published content
3. Launch close-crm-agent (new leads this week with source attribution, new deals with source)
...
Source: .claude/skills/cmo-analysis/SKILL.md
competitive-intelligence
Strategy
Competitive landscape mapping, deal battle cards, win/loss pattern analysis, and comparison content generation. Use when Lennart says competitor analysis, battle card, competitive matrix, win/loss analysis, comparison page, who are we up against, competitive landscape, or differentiation strategy.
Systematic competitive intelligence gathering, analysis, and activation. Tracks competitors across the Infor LN consulting and AI/manufacturing markets, feeds battle cards into sales execution, analyzes win/loss patterns from CRM, and produces comparison content for marketing.
Trigger
Use this skill when Lennart says:
"Competitor analysis on [company]" / "Competitive landscape for [offering]"
"Battle card for [deal]" / "Who are we up against?"
"Win/loss analysis" / "Why do we win?" / "Why do we lose?"
"Write a comparison page" / "Us vs. [competitor type]"
Content performance tracking, weekly and monthly analytics reports, and pipeline attribution. Use when Lennart says content analytics, content performance, what's working, weekly content report, or attribution report.
Tracks content performance across LinkedIn, blog, and newsletter. Produces weekly and monthly reports. Maps content to pipeline attribution when possible.
Trigger: "Weekly content report", "How did content perform this week?"
Data collection:
1. Read all items published this week from data/content-queue/published/
2. If Lennart provides LinkedIn analytics data (impressions, engagement per post), incorporate it
3. Count production metrics: drafted, reviewed, approved, published, rejected
4. Calculate consistency: did we hit 3 posts/day LinkedIn and 1 article/day blog?
Output:
WEEKLY CONTENT REPORT -- Week of [Date]
PRODUCTION
- LinkedIn posts published: [X] / 21 target ([X]%)
- Blog articles published: [X] / 7 target ([X]%)
- Buffer health: LinkedIn [X] approved, Blog [X] approved
PERFORMANCE (if data available)
| Post | Date | Type | Language | Impressions | Engagement | Pillar |
|------|------|------|----------|-------------|------------|--------|
| [title] | [date] | LinkedIn | EN | [X] | [X]% | ERP |
Top performer: [title] -- [why it worked]
Underperformer: [title] -- [hypothesis for low performance]
CONTENT MIX
- By pillar: ERP [X], AI [X], Operations [X], Culture [X]
- By language: EN [X], DE [X]
- By slot: Morning [X], Midday [X], Afternoon [X]
VOICE CALIBRATION (weeks 1-4)
- Posts approved as-is: [X]
- Posts edited: [X]
- Posts rejected: [X]
- Key patterns: [summary from calibration log]
RECOMMENDATIONS
- [1-2 specific actions based on this week's data]
Mode 1: Monthly Analytics Report
...
Source: .claude/skills/content-analytics/SKILL.md
content-engine
Marketing
Content production orchestrator. Checks queue health, drafts LinkedIn posts and blog articles in batch, manages the 3-day approved buffer, and stages content for review. Use when Lennart says content engine, fill the queue, draft posts, batch content, what needs drafting, or queue status.
Triggers: "Fill the queue", "draft posts", "queue status"
Data sources: Content queue, context files
Content Engine
Daily content production orchestrator. Checks the queue, identifies what needs drafting, produces batches of LinkedIn posts and blog articles, and stages everything for review via content-review.
This is the production workhorse. Where marketing-content-pipeline handles individual content requests, content-engine runs the system: checking buffer health, maintaining posting rhythm, and ensuring Lennart always has content ready to publish.
Trigger
Use this skill when Lennart says:
"Content engine" / "Fill the queue" / "Draft posts"
5. Flag if daily posting schedule has gaps in the next 3 days
Output:
CONTENT QUEUE STATUS -- [Date]
Buffer Health:
- LinkedIn: [X] approved posts ready ([GREEN/YELLOW/RED], target: 9)
- Blog: [X] approved articles ready ([GREEN/YELLOW/RED], target: 3)
Queue Summary:
- Raw inputs waiting: [X]
- Drafts awaiting review: [X]
- Approved and ready: [X]
- Published this week: [X]
[Alert if buffer is YELLOW or RED with recommended action]
Mode 1: LinkedIn Batch Draft
...
Source: .claude/skills/content-engine/SKILL.md
content-review
Marketing
Batch content review workflow. Presents drafted LinkedIn posts and blog articles for Lennart's review, tracks edits for voice calibration, and moves approved content to the publishing queue. Use when Lennart says review content, check drafts, approve posts, content review, or what's ready to review.
Presents batched content drafts for Lennart's review. Tracks his edits and rejections to calibrate voice over time. Moves approved content to the publishing queue and rejected content back with feedback.
This is Lennart's daily touchpoint with the content system. Designed for his ~30-minute morning review session.
2. Log the edit in queue.md Voice Calibration Log:
...
Source: .claude/skills/content-review/SKILL.md
context-refresh
Data
Refresh context files with live data from Moco, Close CRM, and Qonto. Run weekly (before Monday reports) or on demand to keep context files current. Use when Lennart says refresh context, update context, sync data, pull latest numbers, or before generating reports that depend on current data.
Pulls live data from connected systems and updates the context files that all other skills depend on. Without regular refreshes, skills operate on stale data.
Before Monday reports (if context is more than 7 days old)
"When was context last updated?"
Modes
Mode 1: Full Refresh (default)
Updates all context files from all sources. Takes 2-3 minutes.
Mode 2: Financial Only
Updates pipeline.md and checks cash position. Use before financial reports.
Mode 3: Projects and Team Only
Updates projects.md and team-assignments.md from Moco. Use before staffing discussions.
Source of Truth: context/index.md
Which files to refresh is driven by context/index.md. Every entry has YAML frontmatter with auto_refresh and (when true) source and refresh_interval_days.
Step 0 (always): Read context/index.md. Build the refresh list: every entry where auto_refresh: true AND file age > refresh_interval_days. Files with auto_refresh: false are manually curated — NEVER overwrite them.
Current auto-refreshable files (for reference, but always re-derive from index.md so new files are picked up automatically):
Flag as "manual update needed" — do not auto-write
Additional Moco endpoints consumed live by downstream skills (not written to context files): /report/utilization, /report/absences, /account/hourly_rates, /account/internal_hourly_rates. Qonto cash position feeds the weekly snapshot, not context.
When adding a new auto-refreshed context file: add the entry to context/index.md with auto_refresh: true + source + refresh_interval_days, then add a handler step below if the source is new.
Execution Model
Step 1: Check staleness
For each entry in context/index.md with auto_refresh: true:
Check file mtime OR the "Last updated" line in the file
...
Source: .claude/skills/context-refresh/SKILL.md
conversion-copywriting
Marketing
[triggers: improve copy, review this draft, make this more compelling, copy review, sharpen the messaging, proposal copy, landing page copy]
Improve the quality, clarity, and persuasiveness of all outbound copy. Applies to proposals, outreach emails, one-pagers, LinkedIn posts, landing pages, and any text that needs to move a manufacturing executive toward a decision.
Trigger
Use this skill when Lennart says:
"Improve this copy"
"Review this draft"
"Make this more compelling"
"Sharpen the messaging"
"Write copy for [landing page / one-pager / LinkedIn post]"
"Help me with the proposal copy for [customer]"
"Give me headline variants for [topic]"
"How do I address the [objection] in this [email / proposal]?"
Modes
1. Copy Brief
Before writing any new copy, build a brief. This is a hard gate: the brief must be confirmed by Lennart before writing begins.
Copy Brief Template:
Field
Description
Purpose
What this piece needs to accomplish (e.g., get a discovery call booked, move from proposal to signed SOW)
Audience
Specific persona and seniority (e.g., CIO at a mid-market packaging manufacturer)
Core Problem
The operational pain this audience feels in their own words
Differentiation
Why us, not a competitor or doing nothing. What makes this engagement different.
Proof Available
Case studies, metrics, named references, certifications we can cite. No fabrication.
CTA
The single next step we want the reader to take
Context
Related materials: meeting notes, existing proposals, prior emails, one-pagers in brand/one-pagers/
Language
German (Sie/Du) or English. For German, check Du/Sie per email-drafting rules.
Every feature is connected to a benefit and an outcome
The reader knows why this matters to THEM, not to us
No self-congratulatory language ("we are proud to...", "our world-class team...")
Specific to their industry and operations, not generic consulting-speak
...
Source: .claude/skills/copy-editing/SKILL.md
crm-validation
Uncategorized
Run CRM and Moco data quality validation. Use when Lennart says validate CRM, check data quality, run CRM audit, or after any Close/Moco write operation.
Triggers: n/a
Data sources: n/a
CRM Validation and Self-Healing
Validates CRM and Moco data quality, auto-corrects where possible, alerts for manual intervention.
Trigger
Use when:
Lennart says "validate CRM", "check data quality", "run CRM audit"
After any Close CRM or Moco write operation (opportunity create/update, contact update, quote creation)
As part of deal-pulse or monday-sequence quality checks
Validators
1. Pipeline Stage -- Rejects invented stages, fuzzy-matches to canonical list
2. Moco Duplicate -- Checks for duplicate deals by client name + project code
3. Opportunity Count -- Cross-references Close vs local pipeline.md counts
from scripts.crm_validators import validate_pipeline_stage, validate_contact_enrichment
result = validate_pipeline_stage(opp_data)
if result.needs_attention:
# Present to Lennart
Output
Results saved to data/crm-validation/YYYY-MM-DD.json (or -dry.json for dry runs).
Rules
Auto-heal is attempted first for pipeline stage fuzzy matches and Moco duplicates
Contact enrichment and quote issues always require manual review
All heal actions are logged before execution
Never fabricate contact data to pass validation
Source: .claude/skills/crm-validation/SKILL.md
cro-analysis
Revenue
CRO-level revenue analysis with weekly dashboard, deal intelligence, revenue forecasting, and sales performance. Use when Lennart asks about pipeline health, revenue forecast, sales velocity, deal prioritization, conversion rates, CRO dashboard, or wants a revenue leadership perspective on pipeline and sales execution.
Acts as a virtual Chief Revenue Officer for Lennart. Owns pipeline health, sales execution, conversion analytics, and revenue forecasting. Complements sales-intelligence (which is deal-level tactical) with a strategic revenue leadership view.
CSO-level strategic analysis with weekly dashboard, competitive intelligence, strategic decision support, and market positioning review. Use when Lennart asks about strategic bets, risk register, competitive moves, market positioning, strategic decisions, quarterly goal tracking, or wants a strategy leadership perspective.
Acts as a virtual Chief Strategy Officer for Lennart. Owns strategic monitoring, competitive intelligence, initiative tracking, and long-term positioning. Complements strategic-review (which is quarterly deep-dive) with a weekly pulse on strategic health.
2. Strategic Bets Status (table: bet name, target, current status, movement this week, status color)
Bet 1: Replace Neudorff Revenue (target: EUR 25K/month by May, current: EUR 0)
...
Source: .claude/skills/cso-analysis/SKILL.md
customer-intelligence
Sales
Build deep, comprehensive customer profiles by pulling from all systems (Close CRM, Jira, Moco, Hedy, Apollo.io, web). Use when Lennart asks to understand a customer deeply, build a customer profile, analyze customer health, map stakeholders, find expansion opportunities, or review the full customer portfolio.
Triggers: "Customer profile", "stakeholder map"
Data sources: Close, Jira, Moco, Hedy, Apollo
Customer Intelligence
Build and maintain deep customer understanding by pulling data from every available system, synthesizing it into a comprehensive profile, and identifying strategic opportunities and risks.
This goes beyond meeting prep or deal status. It builds a living, 360-degree view of each customer relationship.
Trigger
Use this skill when Lennart says:
"Build me a full profile on [customer]"
"How well do we really know [customer]?"
"Map out our relationship with [customer]"
"What's the full picture with [customer]?"
"Customer health check for [customer]"
"Where can we grow with [customer]?"
"Review our top customers" / "Customer portfolio review"
"Who are the key people at [customer]?"
"What's our history with [customer]?"
Tool Integration
Close CRM (relationship and sales history)
lead_search / search / fetch_lead -- full lead record, contacts, custom fields
find_opportunities / fetch_opportunity -- all deals (open, won, lost)
activity_search -- full activity history (emails, calls, meetings, notes)
aggregation -- activity volume, deal metrics
Atlassian / Jira (delivery history)
searchJiraIssuesUsingJql -- all issues by customer (cloudId: 0ee5c601-cc7e-4022-ba05-749fee885399)
Cross-functional daily business scan. Use when Lennart says what is on my calendar, anything new, what should I know, daily scan, or at session start. Covers all 6 business areas (sales, delivery, people, finance, operations, product).
Triggers: "What's on my calendar", "daily scan", "calendar check"
Data sources: M365, Close, Hedy
Daily Business Scan
Cross-functional scan across all business areas. Pulls live data from M365, Close CRM, Moco, and Jira, then presents a unified "what needs attention" view organized by business function.
Trigger
Use this skill when Lennart says:
"What's on my calendar?" / "What do I have today/tomorrow?"
"Calendar check" / "Daily scan" / "What meetings do I have?"
"Prep me for tomorrow" / "What's coming up this week?"
"Anything new?" / "What should I know?" / "What's going on?"
At the start of any session (proactively)
At the start of any evening session (proactively offer a tomorrow preview)
Execution
Step 0: Gather Data (Parallel Where Possible)
Pull live data from all sources BEFORE reading local files.
0a: Email (M365) -- run in sequence (token conflicts)
"Create a daily log entry summarizing EA project activity and company business events. Use when Lennart says daily log, log today, what happened today, end of day, or automatically via evening cron."
Triggers: n/a
Data sources: n/a
Daily Log
Capture what happened today across both the EA project (tooling, skills, infrastructure) and the business (sales, finance, operations, delivery, team).
Trigger
Lennart says: "daily log", "log today", "what happened today", "end of day log"
Cron reminder at 18:00 ET (if not already run today)
Proactively suggest during session-closeout if no log exists for today
Data Sources
Pull from all available sources to build a complete picture:
Design, review, and optimize PDF dashboard reports generated via reports/report_engine.py.
Modes
1. Dashboard Layout
Design the layout for a new PDF dashboard. Select KPIs, arrange sections, choose visualization types.
Process:
1. Identify the audience (executive, department lead, client)
2. Define the report purpose and key questions it answers
3. Apply the dashboard hierarchy (see template below)
4. Select 5-7 headline KPIs from context/kpis.md
5. Choose visualization types for each data element (KPI cards, tables, alert boxes, countdown bars)
6. Specify section order, column layout, and page flow
7. Output a layout specification ready for report_engine.py implementation
Output: Section-by-section layout spec with method calls, data sources, and column definitions.
2. KPI Selection
For a given audience and purpose, recommend which KPIs to display.
Process:
1. Read context/kpis.md for the full KPI catalog across 6 categories (Financial, Utilization, Sales, Delivery, Customer, Labs)
2. Apply the SMART filter: every KPI shown must be Specific, Measurable, Actionable, Relevant to the audience, and Time-bound
3. Limit to 5-7 KPIs per view (cognitive load ceiling)
4. For each KPI, specify: value, target, threshold (yellow/red), trend period, data source, calculation method
5. Group KPIs by priority: headline (top cards) vs. supporting (table rows)
Output: KPI specification table with data sources and RAG thresholds.
3. Report Review
Review an existing PDF report for design quality and recommend improvements.
Checklist:
Information hierarchy: Does executive summary appear first? Are headline KPIs in cards at the top?
Visual clarity: Can the reader grasp the status in under 10 seconds?
Data density: Is there enough context without clutter? Max 4 KPI cards per row, max 8 table columns.
Alert visibility: Are critical items in red alert boxes? Do RED statuses stand out?
Brand compliance: Colors, fonts, logo per references/report-design-standards.md
Readability: Font sizes per standard (9pt body, 8pt tables, 7pt footnotes). Sufficient whitespace.
Page flow: Logical section ordering. No orphaned headers. Tables do not split awkwardly.
Accessibility: Color is never the only encoding (text labels accompany status colors).
...
Source: .claude/skills/dashboard-design/SKILL.md
deal-health-scoring
Sales
Score all qualified pipeline opportunities (Interested but need time through Verge of closing) on a 0-100 health scale and tier them Green/Yellow/Red/Stalled. Use when Lennart asks to score deals, check deal health, find stuck or at-risk opportunities, or run the weekly pipeline health review. Writes results to Close custom fields for Smart View filtering.
Triggers: n/a
Data sources: n/a
Deal Health Scoring
Rule-based scoring for the qualified sales funnel. Signal-driven, stage-aware, idempotent.
Scope
Scores all active opportunities in these stages (~90 opps across Infor LN + Development pipelines):
Interested but need time
Discovery (Erstgespraech)
Qualification (Zweitgespraech)
Technical Discovery / Requirements (Scoping)
Proposal Stage (Angebotsphase)
Proposal prepared (internal approval)
Proposal Sent (awaiting customer)
Verge of closing (Negotiation & Decision)
Explicitly excluded: Diverse conversation, Potential for Discussion, and all Closed Won/Lost. Those belong to lead scoring (separate skill).
Scoring Model
Score starts at 100. Penalties subtract for missing/stale signals. See scripts/deal_health_score_config.py for the full weights table. Signals:
Shared: activity staleness (>14d/>30d), stage age vs. benchmark, open next-step task, value set, contact assigned, close date set
Tier A (Interested/Discovery/Qualification): second meeting scheduled, decision maker identified
Tier B (Scoping): scope document/Moco quote referenced, timeline agreed
Tier C (Proposal stages): Moco offer exists, days since proposal sent, customer response received
Tier D (Verge of closing): legal/procurement contact, close date pushed, days in stage
Tiers:
Green: 75-100
Yellow: 50-74
Red: 0-49
Stalled: any opp with last activity >21 days (overrides score)
Commands
Dry run (no writes)
python scripts/deal_health_score.py --dry-run
Prints sorted table to stdout, writes JSON summary to data/deal-health/YYYY-MM-DD-dry.json. Use this to preview before any CRM updates.
Sales execution loop that monitors email and calendar for deal signals, flags overdue follow-ups, and surfaces deals needing action. Use when Lennart says deal pulse, check my deals, any replies, follow-up check, what needs attention in the pipeline, or sales check-in.
Triggers: "Deal pulse", "check my deals", "follow-up check"
Data sources: M365, Close
Deal Pulse
Monitors email, calendar, and CRM to surface deals that need attention right now. Combines email signal detection, overdue follow-up tracking, and calendar-to-pipeline cross-referencing into one actionable view.
This is the daily sales execution companion. Where sales-intelligence gives you the full pipeline picture, deal-pulse tells you "what do I need to do today to keep deals moving?"
Trigger
Use this skill when Lennart says:
"Deal pulse" / "Check my deals" / "What needs attention?"
"What emails came in from prospects?" / "Did anyone reply?"
"What's overdue in the pipeline?"
Also proactively suggest this skill:
After daily-calendar-scan shows upcoming sales meetings
At the start of any session if active deals exist in pipeline
After sales-discovery-debrief to confirm follow-up was sent
Execution
Step 0: Load Deal Health Scores
Check data/deal-health/ for today's scoring JSON. If missing or >24h old, run:
python scripts/deal_health_score.py
Use the tier/score/reason from the JSON to prioritize. Red + Stalled deals get scanned first, Yellow second, Green only if time permits or user explicitly asks. The tier/reason replaces the old "overdue follow-up" heuristic.
Step 1: Get Active Pipeline
Pull active opportunities from Close CRM:
find_opportunities with status_type "active"
org_users to map user IDs to names
Build a list of active deal company names and contact emails for email matching
Merge Deal Health Tier/Score/Reason from the scoring JSON (match by opp id)
Step 2: Scan Email for Deal Signals
For each active deal (or top 10 by value if many), search email:
MANDATORY: Always scan BOTH mailboxes (h2w AND blc) for every deal. Never default to h2w only. BLC-contracted deals (US clients, Trojan, AMS, OTT, Calanbau, Containex signature workflows via Docusign) route critical correspondence through the BLC account. A single-mailbox scan produces misleading follow-up drafts because you miss: contract/DocuSign status, warm-call summaries, real customer contacts, delivery bounces. Before drafting any follow-up, both searches must have been run and their results merged.
...
Source: .claude/skills/deal-pulse/SKILL.md
draft-tracker
Email
"Check for unsent email drafts and remind about stale ones. Use when Lennart says check drafts, pending drafts, draft status, unsent emails, what drafts are waiting, or did I send that email."
Sort by status: RED first, then YELLOW, then GREEN.
"Stale" count = YELLOW + RED drafts.
...
Source: .claude/skills/draft-tracker/SKILL.md
email-drafting-rules
Email
CRM contact enrichment procedures, custom field IDs, and email drafting checklists. Auto-loads when creating/updating contacts, drafting emails, or doing CRM enrichment work.
Triggers: n/a
Data sources: n/a
CRM Contact Enrichment
When creating or updating a contact in Close CRM, always populate all available fields before saving.
Data sourcing (in order, Apollo-free by default)
1. M365 email signatures -- search for emails from/to the person, parse signature for title, phone, address, company
2. Parent lead in Close CRM -- copy company-level fields already on the lead (country, industry, address)
3. Moco -- check quotes/projects for company address and contact role context
4. Inference -- gender from first name, language from email domain/country (.de=Deutsch, .fr=French), Anredeform from language (external DACH/FR = Formal)
5. LinkedIn via Playwright -- if LinkedIn URL known but title/seniority still missing, scrape public profile
6. Apollo.io (last resort) -- only if critical fields still missing after steps 1-5. Consumes credits, ask before using.
Update procedure (ALWAYS do both steps)
Every contact create or update must include both standard fields and custom fields in a single operation. Never do one without the other.
Step 1: Standard fields (via MCP create_contact / update_contact or REST API):
Field
Required
Notes
name
Always
Full name
email
Always
Primary email
title
Always
Job title (not company name)
phones
If available
From email signature or Apollo
urls
If available
LinkedIn URL as {"type": "url", "url": "..."}
Step 2: Custom fields (via REST API, MCP tools do NOT support these):
Design and build email sequences for Close CRM. Sales follow-up, nurture, re-engagement, workshop invitations, Labs product intros, and multi-touch campaigns. Use when Lennart says build a sequence, design email cadence, create a drip campaign, audit my sequences, or campaign builder.
Triggers: "Build a sequence", "design email cadence", "drip campaign"
Data sources: Close, context files
Email Sequence Design
Designs, builds, and audits email sequences in Close CRM for sales follow-up, lead nurturing, re-engagement, and marketing campaigns. Produces bilingual (German + English) sequences with timing rules aligned to the sales playbook cadences.
This skill DESIGNS and BUILDS sequences. deal-pulse detects signals that trigger sequences. sales-outreach drafts individual messages. This skill creates the automated multi-touch cadences that run in Close CRM.
Trigger
Use this skill when Lennart says:
"Build a sequence" / "Design email cadence" / "Create a drip campaign"
"Set up a follow-up sequence for [deal/segment]"
"Audit my sequences" / "Review the [name] sequence"
"Campaign builder" / "Build an email campaign for [topic]"
"Run the full employee evaluation cycle: prep, agenda, and post-meeting record update. Use when Lennart says evaluation for [name], run evaluation cycle, performance review for [name], or after completing an evaluation meeting."
Triggers: "Evaluation for [name]", "performance review for [name]"
Data sources: Moco, M365, Jira, Hedy, data/people/
Evaluation Cycle
Full employee evaluation lifecycle: preparation, agenda generation, and post-meeting record update.
Trigger
Use this skill when Lennart says:
"Evaluation for [name]" / "Performance review for [name]"
"Run evaluation cycle for [name]"
"Update [name]'s record after evaluation"
"Generate evaluation agenda for [name]"
Phases
Phase 1: Prep (default)
Runs people-prep skill for the person, then adds evaluation-specific context:
1. Run people-prep for the target person (full data pull)
2. Read evaluation history from their people record -- what was discussed last time?
3. Check development goals -- were any set? Progress?
4. Pull comparative data:
Their billable ratio vs team average (use GET /report/utilization for pre-calculated data)
Their annual performance: GET /users/{moco_id}/performance_report?year=YYYY for target vs tracked vs billable with monthly breakdown
Their communication volume vs role peers
Account health for their managed accounts (any client escalations, late payments, deal risks?)
5. Cross-reference with Neudorff redeployment plan (if applicable -- read plans/neudorff-redeployment.md)
Output: Full evaluation prep briefing (as shown in people-prep, plus comparative context and suggested agenda).
Phase 2: Agenda
Generate a structured meeting agenda based on the prep:
EVALUATION AGENDA: [Name]
Date: [Scheduled date]
Duration: 45-60 minutes
1. OPENING (5 min)
- How are you feeling about your role?
- What's going well? What's frustrating?
2. ACCOUNT REVIEW (15-20 min)
[For each account they manage:]
- [Account]: [1-2 specific questions based on prep data]
3. PERFORMANCE DISCUSSION (10 min)
[If incidents exist:]
- [Incident]: What happened? What did you learn? What changed?
[If no incidents:]
- General feedback on strengths and areas to develop
4. DEVELOPMENT (10 min)
- Career goals: Where do you want to be in 12 months?
- Skills: What do you want to learn?
- Support: What do you need from [manager] and from Lennart?
5. OPERATIONAL (5 min)
- Moco time tracking: Explain project-level logging expectation
- [Any other process topics]
6. OPEN FLOOR (5 min)
- Anything else you want to raise?
NOTES FOR LENNART:
- [Sensitive point to handle carefully]
- [Context to keep in mind but not say directly]
...
Source: .claude/skills/evaluation-cycle/SKILL.md
h2w-labs-playbook
Sales
Run the H2W Labs sales conversion playbook for a specific deal. Generates Opportunity Briefs, demo prep, proposals, and follow-up cadences based on deal stage. Use when Lennart asks to move a Labs deal forward, generate an Opportunity Brief, prep a demo, or run the playbook for a specific company.
Triggers: "Run the playbook for [company]"
Data sources: Close, context files
H2W Labs Sales Conversion Playbook
Orchestrates the 30-day stage-gate sales process for H2W Labs deals (KnowKit, Product Assistant, EasyShare, e-invoicing, Edge Apps).
Scope: H2W Labs deals only. ERP consulting deals through BLCG / H2W Consulting follow a separate process.
Trigger
Use this skill when Lennart says:
"Run the playbook for [company]"
"Generate an Opportunity Brief for [company]"
"Prep the demo for [company]"
"Move [company] forward"
"What's the next step for [company] Labs deal?"
"Draft follow-up cadence for [company]"
Stage-Gate Process
Four stages targeting 30 days from first meeting to signed deal.
Stage 1: Capture (Day 0-2 after first meeting)
Goal: Send a personalized Opportunity Brief within 48 hours.
Execution:
1. Gather context:
Check Hedy for recent meeting transcripts with the company (GetSessions, GetSessionDetails -- use the raw transcript, not Hedy's recap)
Check Close CRM for lead data, contacts, past activity (lead_search, fetch_lead, activity_search)
Check Jira for any existing project relationship (searchJiraIssuesUsingJql with cloudId 0ee5c601-cc7e-4022-ba05-749fee885399)
Enrich with Apollo.io (apollo_organizations_enrich) and web research
2. Load template from templates/h2w-labs-opportunity-brief.md
3. Fill in all sections using gathered data
4. Present draft to Lennart for review
5. Suggest: update Close CRM opportunity stage to "Opportunity Brief Sent"
Output: Completed Opportunity Brief ready to send.
If no response in 5 days: Draft a follow-up email using the sales-outreach skill (Scenario 5: Follow-Up After Discovery Call).
Stage 2: Prove (Day 3-14)
Two paths based on deal value:
Path A: Tailored Demo (deals under EUR 10K)
1. Load template from templates/h2w-labs-demo-prep.md
2. Research prospect's publicly available data:
Product catalog from their website (scraper.py or WebFetch)
Company profile from Apollo.io (apollo_organizations_enrich)
Industry context from web research
3. Fill in demo storyline with their specific data and talking points
4. Present demo prep doc to Lennart/Yvonne
5. Suggest: update Close CRM opportunity stage to "Demo Scheduled"
Path B: Scoping Workshop (deals EUR 10K+)
1. Use the workshop-preparation skill with workshop type "AI Discovery and Opportunity Workshop"
...
Source: .claude/skills/h2w-labs-playbook/SKILL.md
hedy-session-tagger
Hedy/Automation
Auto-tag Hedy sessions to topics and update the local session index. Called by daily-calendar-scan at end of each run. No manual involvement. Use when sessions need tagging, index needs updating, or as part of daily/context-refresh workflows.
Triggers: Auto-tags sessions to topics, updates index. Called by daily-calendar-scan and context-refresh.
Data sources: Hedy MCP/REST, M365 calendar, Close CRM, data/hedy-*.json
Hedy Session Tagger
Tags new Hedy sessions to the correct customer/internal topic and updates the local session index. Fully automated, no manual input.
Trigger
Called automatically by:
daily-calendar-scan (end of each run, evening mode)
"Scan inbox for emails needing replies, draft responses for all of them. Runs as part of daily-calendar-scan or standalone. Use when Lennart asks to check inbox, draft replies, process emails, clear inbox, what needs a reply, or inbox drafts."
Triggers: "Inbox drafts", "draft my replies", "what needs a reply"
Data sources: M365, Close, context
Inbox Drafts
Scan both H2W and BLC inboxes for emails that need a reply. Draft a response for each one in Outlook drafts. Lennart reviews and sends or deletes.
Trigger
Use this skill when Lennart says:
"Inbox drafts" / "Draft my replies" / "Process my inbox"
"What needs a reply?" / "Check my inbox"
"Clear my inbox" / "Help me with email"
Also runs as part of daily-calendar-scan (offer after calendar review)
Rules
What needs a reply
An email needs a reply if ALL of these are true:
1. It is addressed TO Lennart (not just CC'd)
2. It is from a real person (not automated: newsletters, notifications, calendar invites, system emails, marketing)
3. It asks a question, requests action, or expects a response
4. Lennart has NOT already replied (check the thread -- if Lennart's reply is newer than the incoming email, skip it)
Internal team (Heiko, Diego, Richard, Uli, Lucia, Carlos, etc.)
German or English (match their email)
Casual, direct
Partners / freelancers
Match their language
Professional but collegial
Personal contacts
Match their language
Casual
Draft style
Keep drafts short: 3-5 sentences max unless the topic clearly needs more
Match Lennart's writing style: direct, no filler, action-oriented
Reference specific points from the incoming email
Include clear next steps or answers
No emojis, no em dashes, no buzzwords
Ambiguity handling
If you lack context to write a good reply (technical question you can't answer, decision that needs Lennart's input, sensitive topic):
Flag the email as "NEEDS YOUR INPUT" in the summary
Draft a placeholder that acknowledges receipt and buys time:
DE: "Vielen Dank fuer Ihre Nachricht. Ich schaue mir das an und melde mich kurzfristig."
...
Source: .claude/skills/inbox-drafts/SKILL.md
intercompany-billing
Finance
"Track intercompany billing between BLC UG and H2W GmbH. Reconcile invoices against bank transfers, flag missing payments, detect entity confusion. Use when Lennart asks about intercompany status, BLC to H2W transfers, intercompany reconciliation, entity billing, or when cash position needs investigation."
Triggers: "Intercompany status", "BLC to H2W transfers"
Data sources: Qonto, Moco
Intercompany Billing Tracker
Track BLC-to-H2W intercompany invoices, flag missing transfers, reconcile against Qonto transactions, and catch entity confusion. Critical for cash flow visibility given H2W GmbH cash position.
Invoice aging report from Moco and Qonto. Shows outstanding receivables by customer and age bucket, overdue invoices, collection risk, and payment patterns. Use when Lennart asks about outstanding invoices, overdue payments, receivables, collections, who owes us money, or payment status.
Triggers: "Outstanding invoices", "who owes us"
Data sources: Moco, Qonto
Invoice Aging Report
Tracks outstanding receivables by age and customer to protect cash position. Combines Moco invoice data (what was sent) with Qonto transaction data (what was paid) to identify collection gaps and payment patterns.
Triggered by: "invoice aging", "outstanding invoices", "receivables", "AR report" Shows: All open invoices grouped by age bucket (current, 30, 60, 90+ days) with customer totals.
Mode 2: Customer Payment Check
Triggered by: "have they paid", "did [customer] pay", "payment status for [customer]" Shows: One customer's invoice and payment history.
Mode 3: Collection Priority List
Triggered by: "what's overdue", "who owes us", "collection report" Shows: Overdue invoices ranked by amount, with suggested collection actions.
Tool Integration
Moco (invoice data)
REST API via curl (credentials in .env: MOCO_API_KEY)
Base URL: https://h2wconsultinggmbh.mocoapp.com/api/v1
"Track issues, tasks, and topics with internal and external people and companies. Use when Lennart says add issue, track this, open issues, issue list, prep for meeting with X, issue dashboard, update issue, close issue, what am I tracking, or any variant of managing cross-functional tasks."
Lightweight issue tracking for cross-functional topics, operational requests, relationship items, and meeting follow-ups. Covers everything that does not belong in Jira (delivery) or Close CRM (deals).
Trigger
Use this skill when Lennart says:
"Add issue" / "Track this" / "Create a task for..."
"Open issues" / "Issue list" / "What am I tracking?"
"Prep for [company/person]" / "What's open with [company]?"
"Issue dashboard" / "How many things am I carrying?"
"Update ISS-XXX" / "Close ISS-XXX"
After a meeting: "Log that we need to..." / "Track the follow-up on..."
Commands
Parse the user's intent into one of these commands. The argument format shown is for reference -- users will speak naturally, not use exact syntax.
add
Create a new issue. Gather these fields interactively (ask if not provided):
Field
Required
Default
title
yes
--
company
yes
--
contacts
no
[]
priority
no
medium
type
no
task
assignee
no
Lennart Hector
due_date
no
none
tags
no
[]
related
no
[]
description
yes
--
Execution:
1. Read data/issues/.counter to get the next ID number
2. Format ID as ISS-XXX (zero-padded to 3 digits)
3. Slugify the title (lowercase, hyphens, max 40 chars)
4. Create file data/issues/ISS-XXX-slug.md with YAML frontmatter and body:
6. Confirm creation with ID, title, and key fields
update [ID]
Update an existing issue. User may want to:
Add a note to the Updates section
Change status (open, in-progress, waiting, closed)
Change priority
Change assignee
Update due date
Add tags or related items
Add or remove contacts
Execution:
1. Find the file matching the ID in data/issues/
2. Read the file
3. Apply the requested changes to YAML frontmatter
4. Append note to Updates section: - [today]: [note]
5. Set updated to today's date
6. Write the file back
7. Confirm what changed
...
Source: .claude/skills/issue-tracker/SKILL.md
labs-demo-delivery
Delivery
"Prepare and structure H2W Labs demo and PoC deliveries. Generates demo scripts, environment checklists, success criteria, and post-demo follow-up. Use when Lennart asks to prep a demo, build a demo script, PoC delivery plan, demo checklist, or prepare a Labs product demonstration for any client. Maps to planned SOP-014."
Triggers: "Prep demo for [company]", "PoC delivery plan"
Data sources: Close, Hedy, context
H2W Labs Demo and PoC Delivery
Structure the delivery of H2W Labs demos and proof-of-concept projects. This skill covers the delivery side -- h2w-labs-playbook covers the sales side.
Trigger
Use this skill when Lennart says:
"Prep demo for [company]"
"Demo script for [company]"
"PoC delivery plan for [company]"
"Demo checklist for [company]"
"What do we need for the [company] demo?"
Modes
Mode 1: Demo Prep (default)
Trigger: "Prep demo for [company]", "demo script" Full demo preparation package: script, environment checklist, success criteria, risk mitigation.
Mode 2: PoC Plan
Trigger: "PoC delivery plan", "PoC scope for [company]" Structured PoC delivery plan: scope, timeline, resources, acceptance criteria, handoff to production.
Mode 3: Post-Demo
Trigger: "Demo follow-up for [company]", "debrief the demo" Process demo outcomes: what worked, what didn't, next steps, proposal trigger.
Data Sources
Close CRM (deal context)
lead_search / fetch_lead -- company record, contacts
find_opportunities -- Labs deal stage, history
activity_search -- recent communications
Hedy (meeting context)
GetSessions -- find discovery/scoping meetings with this client
GetSessionDetails -- get full transcript (transcript or cleaned_transcript). Extract use cases, pain points, and requirements from the raw conversation. Do not rely on Hedy's recap or meeting_minutes.
Build and execute go-to-market launch plans for H2W Labs products. Positioning, messaging, reference cases, launch sequences, channel coordination. Use when Lennart says launch strategy, go-to-market, GTM plan, product launch, reference case, or product positioning for a Labs product.
Structured go-to-market playbook for launching H2W Labs products into the market. Where h2w-labs-playbook handles converting individual deals (1:1 sales), this skill handles market-level launches: positioning a product, building reference cases, coordinating multi-channel campaigns, and driving pipeline at scale.
Scope: H2W Labs products only (KnowKit, Product Assistant, EasyShare, Factory Track, E-Invoice Integration, future Edge Apps). ERP consulting services use separate sales processes.
Trigger
Use this skill when Lennart says:
"Launch strategy for [product]" / "GTM plan for [product]"
"Go-to-market for [product]" / "How do we launch [product]?"
"Log daily time entries to Moco based on calendar events and manual input. Use when Lennart says log time, Zeiterfassung, log my hours, time tracking, update Moco time, or as part of session-closeout."
Triggers: "Log time", "Zeiterfassung", "log my hours". Interactive version with approval gate. Closeout skill handles autonomous posting.
Data sources: M365 calendar, Moco activities API, data/moco-time-mapping.json
Log Time to Moco
Calendar-based daily time tracking. Pulls calendar events, maps them to Moco projects/tasks, fills gaps with manual input, and posts after approval.
Trigger
Use when Lennart says:
"Log time" / "Log my hours" / "Zeiterfassung"
"Update Moco time" / "Time tracking"
"Log time for yesterday" / "Log time for last week"
Parse events for: subject, start time, end time, attendees (check for external domains), isAllDay. Skip all-day events (reminders, not time entries).
Step 3: Categorize events
For each calendar event:
1. Match subject against calendar_patterns in the mapping config (regex, case-insensitive). First match wins.
2. If no pattern match, apply attendee rules:
Has external attendees + sales/pipeline context in subject = sales_meetings
...
Source: .claude/skills/log-time/SKILL.md
market-sizing
Strategy
Size markets, analyze segments, and assess expansion opportunities for ERP consulting and AI products. Use when Lennart says market size, TAM SAM SOM, market analysis, addressable market, market opportunity, how big is the market, segment analysis, should we enter [market], or when a proposal or strategic review needs market context.
Triggers: "Market size", "TAM SAM SOM", "addressable market"
Data sources: Apollo, Web, context files
Market Sizing
Calculates TAM/SAM/SOM for specific market segments, analyzes customer segments in depth, and assesses the commercial viability of entering new markets. Designed for a consulting business (not SaaS), so all sizing is based on services spend, not license revenue.
This skill feeds into strategic-review, cso-analysis, labs-launch-strategy, and proposal-sow-generation. It can also produce a standalone one-page market sizing summary for inclusion in proposals or board-level documents.
When to Use
Lennart asks "how big is the market for X?"
Strategic review needs market context for a growth thesis
CSO analysis needs segment sizing to prioritize bets
Proposal needs a "market context" section showing the client their industry spend
Labs business case needs TAM/SAM/SOM for a product opportunity
Evaluating expansion into a new segment (SAP-adjacent, new geography, new vertical)
Modes
Mode 1: Market Sizing
Full TAM/SAM/SOM calculation for a specific market segment.
Examples: ERP consulting in DACH, AI applications for manufacturing in Germany, Infor LN services globally.
Method: Triple triangulation
1. Top-down: Start with total market spend (industry reports, analyst estimates), then narrow by geography, segment, and service type.
2. Bottom-up: Count potential customers (Apollo.io company search, industry directories), multiply by average deal size and annual spend per customer.
3. Value-based: Estimate the value created for clients (efficiency gains, cost savings), take a percentage as willingness to pay for consulting.
The final estimate is the range where at least two of the three methods overlap.
TAM/SAM/SOM definitions (consulting-adapted):
Level
Definition
Example
TAM
Total annual spend on this service category in the broadest relevant market
All ERP consulting spend in DACH: EUR 4-6B
SAM
The slice we could realistically serve given our platform focus, geography, and ICP
Infor LN consulting for mid-market manufacturers in DACH: EUR 200-400M
SOM
What we can realistically capture in 3 years given team size, brand, and pipeline
EUR 2-6M (0.5-2% of SAM, typical for a 15-person firm)
...
Source: .claude/skills/market-sizing/SKILL.md
marketing-content-pipeline
Marketing
Turn project experiences, customer conversations, and operational insights into content across multiple formats and channels. Use when Lennart asks to write a LinkedIn post, create a case study, draft an article, generate content ideas, repurpose content, write a video script, or produce any marketing or thought leadership content.
Triggers: "Write LinkedIn post", "create case study"
Data sources: Context files, content queue
Marketing Content Pipeline
Turn project experiences, customer conversations, and operational insights into content across multiple formats and channels.
Trigger
Use this skill when Lennart says:
"Turn this into a LinkedIn post"
"Write a post about [topic]"
"Create a case study from [project]"
"Draft an article on [topic]"
"I need content ideas for this week"
"Repurpose this into [format]"
"Write a video script about [topic]"
Content Types
LinkedIn Posts (Primary channel)
Target: 5 per week
Length: 150-300 words (sweet spot for engagement)
Structure options:
Problem/insight/takeaway: Open with a real problem, share what we learned, end with a practical takeaway
Story format: Short narrative from a real project, ending with a lesson
List format: "5 things we learned from [X]" or "3 mistakes in [X]"
Contrarian take: Challenge a common assumption in the industry
Always end with a clear closing thought or question. No "What do you think?" filler.
First line must hook. This is the only line visible before "see more."
Instagram Posts
Adapt LinkedIn content for visual format
Shorter text, punchier statements
Focus on quotable lines, stats, or simple frameworks
Pair with a suggested visual concept or carousel structure
Case Studies
Create when projects conclude or reach a significant milestone
Structure:
Customer context: Industry, size, challenge (anonymize if needed)
Problem: What was broken or missing
Approach: What we did (keep it practical, not generic)
Results: Measurable outcomes where possible
Key insight: One transferable lesson
Length: 500-800 words
Tone: factual and credible, not promotional
Articles / Thought Leadership
Longer form: 800-1500 words
Published on company websites or LinkedIn articles
Based on patterns across multiple projects or strong opinions on industry direction
Structure: clear thesis, supporting evidence from real work, practical conclusion
Write for CIOs, IT Directors, and operations leaders at manufacturing companies
Video Concepts / Scripts
Short format: 60-90 seconds for LinkedIn/Instagram
Parallel meeting prep engine. Spawns 4 subagents (Close CRM, Jira, Moco, vault+web) simultaneously, merges outputs, computes relationship health score, and produces an extended briefing note as markdown and one-page PDF. Use when Lennart asks to research a company, prep for a meeting, or gather background on a prospect/client.
Triggers: "Prep for [client]", "research [company]", "meeting prep"
Data sources: Close, Jira, Moco, M365, Hedy, Web
Meeting Briefing Notes -- Parallel Prep Engine
Parallel data-gathering system for pre-meeting intelligence. Spawns 4 subagents simultaneously, merges results, scores relationship health, and outputs both markdown and PDF.
Trigger
Use this skill when Lennart says:
"Prep me for [meeting/client]"
"Prep for [meeting/client]"
"Research [company] before my meeting"
"What do we know about [company/person]?"
"Pull together a briefing on [company]"
"I have a meeting with [person at company], get me up to speed"
Step 0: Identify the Client
Before launching agents, determine:
1. Client name -- from Lennart's request or calendar event
If the meeting is today or tomorrow, pull calendar context first:
bash scripts/m365.sh calendar 7
Use --account blc if the meeting is on the BLC calendar.
Step 1: Launch 4 Parallel Subagents
Launch ALL FOUR agents in a single message using the Agent tool. Each agent gets a targeted research brief.
Agent 1: Close CRM (close-crm-agent)
Research brief for [CLIENT NAME]:
1. lead_search for "[client name]" -- find the lead
2. fetch_lead for the lead ID -- full details (contacts, custom fields, tags, notes)
3. find_opportunities for this lead -- ALL statuses (active, won, lost)
4. activity_search for this lead -- last 90 days, all activity types
5. For each contact on the lead: note name, title, email, last activity date
Return: lead details, all contacts with titles, all opportunities with stage/value/confidence/owner, last 5 activities with dates and summaries, days since last activity.
Agent 2: Jira Delivery (jira-agent)
Research brief for [CLIENT NAME]:
Using cloudId "0ee5c601-cc7e-4022-ba05-749fee885399":
1. searchJiraIssuesUsingJql: summary ~ "[client name]" OR labels = "[client name]" AND status != Done ORDER BY updated DESC (max 20 results)
2. searchJiraIssuesUsingJql: summary ~ "[client name]" AND (status = Blocked OR status = "On Hold") ORDER BY priority DESC
3. searchJiraIssuesUsingJql: summary ~ "[client name]" AND due <= now() AND status != Done ORDER BY due ASC
...
Full meeting lifecycle -- preparation, notes processing, and follow-up drafting. Use when Lennart mentions meeting prep, meeting notes, meeting transcript, follow-up emails, post-meeting actions, or asks to prepare for or debrief after any meeting.
Triggers: "Meeting prep", "process meeting notes"
Data sources: Hedy, context files
Meeting Workflow
Full meeting lifecycle: preparation, notes processing, and follow-up drafting.
Trigger
Use this skill when Lennart says:
"Prep me for a meeting with [company/person]"
"Here are my meeting notes / transcript"
"Write the follow-up for [meeting]"
Tool Integration
Microsoft 365 (email and calendar)
bash scripts/m365.sh calendar 7 -- pull upcoming meetings for context
bash scripts/m365.sh mail-search "[company or person name]" -- find recent email threads with the contact
bash scripts/m365.sh mail-draft -- create follow-up email as Outlook draft (Phase 3)
Use --account blc for BLC entity correspondence
Close CRM
lead_search or search -- relationship history, open opportunities
activity_search -- recent CRM activity with the contact
Hedy
GetSessions -- find past meetings with this contact
GetSessionDetails -- get full transcript (transcript or cleaned_transcript). Always use the raw transcript as primary input, not Hedy's recap or meeting_minutes.
Phase 1: Meeting Preparation
When asked to prepare for a meeting, delegate to the meeting-briefing-notes skill.
That skill runs 4 parallel subagents (Close CRM, Jira, Moco, vault+web), merges their outputs, computes a relationship health score, and produces both a markdown briefing and a one-page PDF.
What meeting-briefing-notes produces:
Company overview and participants
Relationship history (from CRM activity)
Delivery status (from Jira: issues, blockers, overdue)
Budget and commercial status (from Moco: budget burn, invoicing, project health)
Relationship health score (3-factor: engagement, delivery, commercial)
Open issues (from data/issues/)
Recommended talking points and suggested agenda
Data gaps (sources that failed or returned empty)
PDF saved to reports/internal/meeting-prep/YYYY-MM-DD-{client-slug}.pdf
When to use meeting-briefing-notes directly vs meeting-workflow:
meeting-briefing-notes: Research and prep only. Use when Lennart just needs background.
meeting-workflow: Full lifecycle. Use when Lennart needs prep AND will later provide meeting notes for processing, follow-up drafting, and CRM sync (Phases 2-4).
If invoked as part of meeting-workflow, proceed to Phase 2 after the meeting happens.
Phase 2: Meeting Notes Processing
...
Source: .claude/skills/meeting-workflow/SKILL.md
moco-crm-sync
Operations
Cross-check Moco projects/deals against Close CRM opportunities. Flag misalignments, missing entries, and value discrepancies.
Automated alignment check between Moco (system of record for projects) and Close CRM (system of record for pipeline).
When to Run
Weekly as part of monday-sequence (after context-refresh)
On demand when Lennart asks to check sync status
After bulk CRM or Moco updates
Triggers
moco crm sync, check alignment, sync check, deal alignment, project alignment, are moco and crm in sync
Process
Step 1: Gather Data (parallel agents)
Launch two agents in parallel:
Moco agent:
export $(grep MOCO_API_TOKEN .env)
# All active projects with deals
curl -s -H "Authorization: Token token=$MOCO_API_TOKEN" \
"https://h2wconsultinggmbh.mocoapp.com/api/v1/projects" | \
python -c "import sys,json; data=json.load(sys.stdin); [print(json.dumps({'id':p['id'],'name':p['name'],'customer':p['customer']['name'],'active':p['active'],'budget':p.get('budget',0),'deal_id':p.get('deal_id')})) for p in data]"
# All deals
curl -s -H "Authorization: Token token=$MOCO_API_TOKEN" \
"https://h2wconsultinggmbh.mocoapp.com/api/v1/deals" | \
python -c "import sys,json; data=json.load(sys.stdin); [print(json.dumps({'id':d['id'],'name':d['name'],'company':d.get('company',{}).get('name',''),'status':d['status'],'value':d.get('value',0),'currency':d.get('currency','')})) for d in data]"
CRM agent: Use find_opportunities (paginate through all) to get: opportunity ID, name, value, status, lead name, stage.
Step 2: Cross-Reference
Check for these misalignment categories:
A. Moco Projects Without CRM Opportunities
Active Moco project with no linked deal, OR
Active Moco project with a deal but no matching CRM opportunity
Exception: Projects under umbrella CRM opps (ARI, IMA, Neudorff W-xx). Check if parent customer has an umbrella opp covering the project.
B. Won CRM Opportunities Without Moco Projects
CRM opp in "Closed Won" status but no active Moco project for that customer/scope
C. Value Discrepancies
CRM opp value differs from Moco deal value by >10%
Note: CRM stores in cents, Moco in EUR/USD. Convert before comparing.
D. Status Mismatches
CRM opp "Active" but Moco deal "won" (project already running)
CRM opp "Closed Won" but Moco deal "lost" or "pending"
Moco deal "won" but no CRM opp moved to Won status
E. Stale Active Opportunities
...
Source: .claude/skills/moco-crm-sync/SKILL.md
monday-briefing
Reporting
Generate the Monday morning BD-PMO weekly update call briefing. Pulls from Close CRM, Jira, Hedy, Moco, and Slack to prepare agenda talking points. Use when Lennart says Monday briefing, prep the Monday meeting, BD-PMO call, weekly update call, or Monday morning report.
Triggers: "Monday briefing", "prep the Monday meeting"
Data sources: Close, Jira, Moco, Hedy, Slack
Monday Briefing
Generates the pre-meeting briefing report for the Monday morning Business Development and PMO weekly update call (7 AM EST). Pulls data from Close CRM, Jira, Hedy, Moco, and Slack, then organizes it into the meeting's agenda structure so each presenter has their numbers and talking points ready.
Use this skill whenever Lennart mentions the Monday meeting, BD-PMO call, Monday briefing, weekly update call, Monday morning report, or asks to prep the Monday meeting. Also trigger when he asks about marketing KPIs, sales KPIs, PMO KPIs, or utilization rates in the context of a meeting prep.
bash scripts/m365.sh calendar 7 -- upcoming meetings this week (both H2W and BLC accounts)
bash scripts/m365.sh inbox 10 -- recent emails for context
Use --account blc to also pull the BLC calendar
...
Source: .claude/skills/monday-briefing/SKILL.md
monday-sequence
Orchestration
Run the full Monday morning report sequence in one command. Chains context-refresh, c-suite-dashboard, monday-briefing, and weekly-snapshot in the correct order with consistent data. The c-suite-dashboard replaces the former top-management-report with a full C-level executive review. Use when Lennart says Monday sequence, run the Monday reports, full Monday, Monday morning, or start the week.
Triggers: "Monday sequence", "run the Monday reports"
Data sources: All
Monday Sequence Orchestrator
Runs the complete Monday morning report pipeline in one pass. Each step builds on the previous one so numbers are consistent across all reports.
Trigger
Use this skill when Lennart says:
"Monday sequence" / "Run the Monday reports" / "Full Monday"
"Monday morning" / "Start the week" / "Run everything"
"Run SOP-011" / "Monday report sequence"
Sequence
Step 0: Context Refresh (if stale)
Check the "Last updated" dates in context/pipeline.md and context/projects.md.
If older than 5 days: run the context-refresh skill (Financial + Pipeline mode) first.
If current (< 5 days): skip and proceed.
This ensures all downstream reports pull from fresh context.
Step 0.5: Deal Health Scoring
Run the deal-health-scoring skill. Scores all ~90 qualified-funnel opps and writes Tier + Score back to Close.
python scripts/deal_health_score.py
Reads the generated data/deal-health/YYYY-MM-DD.json and captures the Red/Stalled/Yellow counts for the Monday briefing. If the JSON already exists for today (previous run in the same session), skip re-scoring.
Step 1: C-Suite Dashboard
Run the c-suite-dashboard skill.
This replaces the former top-management-report. The C-suite dashboard pulls all data (Qonto, Close CRM, Moco, Jira, Hedy, M365) in parallel via subagents and generates:
5 standalone role PDFs (CFO, CRO, CHRO, CSO, CMO)
1 combined executive dashboard PDF
Output: Combined C-suite dashboard + individual role reports.
Important: Capture the key numbers from the dashboard (cash balances, pipeline totals, utilization %, team alerts, strategic status) in working memory. The monday-briefing must reference these exact numbers for consistency.
Step 2: Monday Briefing
Run the monday-briefing skill.
Key rule: Reference the numbers from the C-suite dashboard (Step 1) rather than re-pulling Qonto and Close CRM. This guarantees consistency between the executive dashboard and the company briefing. The monday-briefing summarizes C-suite dashboard highlights into BD-PMO call talking points.
Additional data pulled:
Microsoft 365: calendar for both H2W and BLC accounts (next 7 days) for Week Ahead section
Hedy: all meetings from last 7 days (not just strategic ones)
Jira: delivery status, blockers, resolved issues
Moco: additional activity detail
Slack: recent key discussions
...
Source: .claude/skills/monday-sequence/SKILL.md
newsletter-assembler
Marketing
Monthly bilingual newsletter compilation from published content. Curates top pieces, creates Close CRM email templates and workflows for sending. Use when Lennart says assemble newsletter, monthly newsletter, prepare the newsletter, or newsletter draft.
Compiles the monthly newsletter from the best-performing published content. Produces separate German (DACH) and English (international) editions. Sent via Close CRM workflows, following the existing VIP pattern (separate workflows per gender variant for German, single workflow for English).
Trigger
Use this skill when Lennart says:
"Assemble newsletter" / "Monthly newsletter" / "Prepare the newsletter"
"Newsletter draft" / "What goes in this month's newsletter?"
"Time for the newsletter" / "Newsletter for [month]"
Also proactively suggest:
On the 25th of each month (or first session after): "Monthly newsletter is due. Run /newsletter-assembler?"
Context Files
Always read before assembly:
data/content-queue/published/ -- Published content with performance data
data/content-queue/queue.md -- Queue for any newsletter-specific items
"Prepare lightweight briefings for recurring 1:1 meetings with team members. Pulls last meeting notes, recent Jira activity, Moco hours, and open action items. Use when Lennart asks to prep for a 1:1 with Uli, Richard, Lucia, Heiko, Diego, or any team member, or says 1:1 prep, catch me up on [person], or what did we discuss last time."
Triggers: "Prep for 1:1 with [person]", "catch me up on [person]"
Data sources: Hedy, Jira, Moco
1:1 Meeting Prep
Lightweight briefing for recurring internal 1:1 meetings. Unlike meeting-briefing-notes (designed for external company research with Apollo enrichment), this skill focuses on continuity: what happened since last time, what's on their plate, and what to discuss.
Trigger
Use this skill when Lennart says:
"Prep for my 1:1 with [person]"
"What did we discuss last time with [person]?"
"Catch me up on [person]"
"1:1 prep [person]"
"What's [person] working on?"
Key 1:1s (from calendar.md)
Person
Frequency
Focus Areas
Uli Schneider
Weekly
Project updates, Neudorff status, redeployment
Richard
As needed
Strategy, operations, technical decisions
Lucia Morandini
Daily
HR, admin, onboarding, office management
Heiko
Via BD-PMO Monday
PM coordination, delivery, resource allocation
Diego
Via BD-PMO Monday
PM coordination, project status
Data Sources
Hedy (last meeting context)
GetSessions -- find last 1:1 with this person
GetSessionDetails -- get full transcript (transcript or cleaned_transcript), then extract action items, decisions, and discussion topics from the raw conversation. Do not rely on Hedy's recap or meeting_minutes.
Jira (what they're working on)
searchJiraIssuesUsingJql -- issues assigned to or updated by this person (last 14 days)
CloudId: 0ee5c601-cc7e-4022-ba05-749fee885399
Moco (hours and projects)
GET /activities?user_id={id}&from=YYYY-MM-DD -- recent time entries
GET /planning_entries?user_id={id} -- upcoming assignments
Auth: Authorization: Token token=$MOCO_API_KEY
Context Files
context/team.md -- role, responsibilities
context/team-assignments.md -- current project assignments
Execution
Phase 1: Context
1. Read context/team.md to identify the person's role and responsibilities
2. Read context/team-assignments.md for their current project assignments
Phase 2: Data Gathering (parallel)
Hedy (main conversation):
1. GetSessions with limit 10 -- scan titles for this person's name
2. GetSessionDetails for the most recent match -- get full transcript and extract action items, decisions, key topics from the raw conversation
Jira (jira-agent or direct):
1. Search for issues assigned to or updated by this person in the last 14 days
...
Source: .claude/skills/one-on-one-prep/SKILL.md
operations-health
Operations
Operational health monitoring across utilization, delivery, pipeline, and finance. Use when Lennart asks for an ops dashboard, weekly ops check, KPI review, how the business is running, delivery health, or wants a cross-functional status view. Pulls from Moco, Jira, Close CRM, and Qonto to give one unified operational picture.
Triggers: "Ops dashboard", "KPI review"
Data sources: Moco, Jira, Close, Qonto
Operations Health
Cross-functional operations dashboard that pulls from all systems to give a unified view of how the business is actually running. Goes beyond individual skill reports (utilization, pipeline velocity, cash position) by connecting the dots across functions and flagging where one area's problem affects another.
Trigger
Use this skill when Lennart says:
"How's the business running?" / "Operations check" / "Ops dashboard"
"KPI review" / "KPIs" / "How are we tracking?"
"What needs my attention?" / "Where are we off track?"
"Monday morning briefing with ops focus"
"Delivery health" / "Project health across the board"
"Quarterly operations review"
Context Files
Always read before analysis:
context/kpis.md -- KPI targets and thresholds (GREEN/YELLOW/RED). Includes internal cost ratio KPI (target <30%, historical: 53% in 2025).
context/finance.md -- Cost structure, billing rates, margin targets, actual rate realization, internal cost ratio trend
context/team-capabilities.md -- Team capacity, key-person risks, historical utilization baselines per person
When scoring operational health, include internal cost ratio as a KPI:
GREEN: <30% internal hours
YELLOW: 30-40% internal hours
RED: >40% internal hours (current baseline from Octaved: 47-53%)
Tool Integration
Moco (utilization and delivery economics)
REST API via curl (credentials in .env)
Report endpoints (use FIRST, pre-calculated):
GET /report/utilization?from=&to= -- daily billable/unbillable per user WITH target hours. Eliminates manual ratio math.
GET /report/planned_vs_tracked?from=&to= -- planned vs actual hours by user+project with delta
GET /report/absences?year=YYYY&active=true -- vacation/sick days per user
GET /projects/{id}/report -- budget, hours, costs, profitability per project (single call)
GET /account/fixed_costs?year=YYYY -- monthly fixed costs by category
Raw data endpoints:
GET /users -- team roster
GET /activities?from=YYYY-MM-DD&to=YYYY-MM-DD -- time entries (use for project-level breakdown)
GET /projects?include_archived=false -- active projects, budgets, timelines
GET /invoices -- invoicing data
...
Source: .claude/skills/operations-health/SKILL.md
people-prep
People
"Pull a comprehensive briefing on any team member by combining their people record with fresh Moco, email, Jira, and Hedy data. Use when Lennart says prep for [name], catch me up on [name], what's [name] working on, or before any 1:1 or evaluation meeting."
Triggers: "Prep for [name]", "catch me up on [name]"
Data sources: Moco, M365, Jira, Hedy, data/people/
People Prep
Pull a comprehensive briefing on a team member by combining their persistent people record (data/people/) with fresh data from Moco, M365, Jira, and Hedy.
Trigger
Use this skill when Lennart says:
"Prep for [name]" / "Catch me up on [name]"
"What's [name] working on?" / "How is [name] doing?"
"1:1 prep [name]" / "Evaluation prep [name]"
Before any meeting where a team member's performance, workload, or status is discussed
Execution
Step 1: Load People Record
1. Glob data/people/*.md and find the file matching the person's name (case-insensitive partial match on filename)
2. Read the full file -- this is the baseline (role, accounts, evaluation history, incidents, goals)
3. Extract moco_id from YAML frontmatter for API calls
Step 2: Fresh Data Gathering (parallel)
Moco (performance data, pre-calculated):
export $(grep MOCO_API_KEY .env)
# Use performance_report for pre-calculated annual+monthly breakdown
curl -s -H "Authorization: Token token=$MOCO_API_KEY" \
"https://h2wconsultinggmbh.mocoapp.com/api/v1/users/{moco_id}/performance_report?year=2026"
# Returns: target_hours, hours_tracked_total, hours_billable_total, variation per month
# For project-level detail, also pull activities
curl -s -H "Authorization: Token token=$MOCO_API_KEY" \
"https://h2wconsultinggmbh.mocoapp.com/api/v1/activities?user_id={moco_id}&from={30_days_ago}&to={today}"
Parse: performance_report for target vs actual (pre-calculated), activities for project-level breakdown.
Parse: recent email subjects, who they're communicating with, any client-facing threads.
Jira (assigned issues): Use searchJiraIssuesUsingJql:
assignee = "{name}" ORDER BY updated DESC (last 20)
CloudId: 0ee5c601-cc7e-4022-ba05-749fee885399
Hedy (recent meetings with this person): Use GetSessions limit 20, scan titles for person's name or company names from their accounts. For matches, GetSessionDetails to get the full transcript (transcript or cleaned_transcript). Extract action items and discussion topics from the raw conversation, not from Hedy's recap or summary.
Issue Tracker (open issues involving this person):
...
Source: .claude/skills/people-prep/SKILL.md
pipeline-velocity
Sales
Weekly pipeline velocity report from Close CRM. Shows deals by stage, age in stage, stalled deals, conversion rates, weighted revenue, and win/loss analysis. Use when Lennart asks about pipeline velocity, deal flow, stalled deals, conversion rates, win/loss, or how fast deals are moving.
Triggers: "Pipeline velocity", "stalled deals"
Data sources: Close
Pipeline Velocity Report
Measures how fast deals move through the pipeline, where they stall, what converts, and what falls out. Uses Close CRM as the single data source. This is the sales rhythm report that drives weekly pipeline reviews.
Trigger
Use this skill when Lennart says:
"Pipeline velocity" / "Deal flow" / "How fast are deals moving?"
"Stalled deals" / "What's stuck?" / "Dead deals"
"Conversion rates" / "Win rate" / "Close rate"
"Win/loss analysis" / "What did we win?" / "What did we lose?"
"Pipeline health" / "Pipeline review"
"Proposal tracker" / "What proposals are out?"
Modes
Mode 1: Weekly Pipeline Velocity (default)
Triggered by: "pipeline velocity", "pipeline review", "deal flow" Shows: Full pipeline snapshot with movement, aging, and velocity metrics.
Mode 2: Stalled Deal Alert
Triggered by: "stalled deals", "what's stuck", "dead deals" Shows: Deals that haven't moved stages or had activity in 14+ days, ranked by value.
Mode 3: Win/Loss Analysis
Triggered by: "win/loss", "what did we win", "conversion rates" Shows: Deals won and lost in the last 30/60/90 days with reasons, cycle times, and patterns.
Mode 4: Proposal Tracker
Triggered by: "proposal tracker", "what proposals are out", "pending proposals" Shows: Deals in proposal/negotiation stage with age, value, and follow-up status.
Tool Integration
Close CRM (all modes)
find_opportunities -- deals by status_type (active, won, lost), with filters
find_pipelines_and_opportunity_statuses -- pipeline structure and stage definitions
activity_search -- recent activity on deals (emails, calls, notes)
aggregation -- activity counts grouped by type/user
org_users -- map user IDs to names
search / lead_search -- lead details for deal context
Execution Model
Mode 1: Weekly Pipeline Velocity
Phase 1: Pipeline Data (research-agent)
Launch via Agent tool with subagent_type: "research-agent". Brief:
find_pipelines_and_opportunity_statuses -- get all pipeline stages with IDs
find_opportunities with status_type "active" -- full active pipeline
find_opportunities with status_type "won" and date_updated >= 7 days ago
find_opportunities with status_type "lost" and date_updated >= 7 days ago
org_users -- map user IDs to names
...
Source: .claude/skills/pipeline-velocity/SKILL.md
pptx-from-layouts
Presentations
Generate and edit PowerPoint presentations from templates. Use when user needs to create slides from outlines, modify existing decks, profile custom templates, or validate presentation quality.
Triggers: Engine: outline to PPTX, edit decks, validate, profile templates
Data sources: Brand template, config
PPTX Presentation System
Generate consultant-ready PowerPoint presentations from markdown outlines.
Use on slide 2 of every client-facing proposal/positioning deck:
Disclaimer
Copyright (c) {year} H2W Consulting GmbH, BL Consulting Group LLC,
BL Consulting UG (haftungsbeschraenkt) und verbundene Unternehmen.
Alle Rechte vorbehalten.
Diese Praesentation und ihr Inhalt sind geistiges Eigentum der
H2W Consulting GmbH und der BL Consulting Group. Die Weitergabe,
Vervielfaeltigung oder Verwendung, auch auszugsweise, ist ohne
vorherige schriftliche Genehmigung nicht gestattet.
Die in dieser Praesentation enthaltenen Informationen sind vertraulich
...
Source: .claude/skills/pptx-generator/SKILL.md
pptx-polish
Presentations
Validate, repair, and audit PowerPoint presentations. Use when polishing a generated deck, checking an existing PPTX for quality issues, or running QA before delivery.
Triggers: QA: audit, repair, validate any PPTX. Text overflow, ghosts, fonts, hyperlinks, ZIP fixes
Data sources: python-pptx
PPTX Polish
Post-generation QA for any PowerPoint file. Validates, repairs, and produces a slide-by-slide audit report.
Quick Start
# Full pipeline: audit -> repair -> validate -> report
python .claude/skills/pptx-polish/scripts/polish.py deck.pptx
# Audit only (no fixes)
python .claude/skills/pptx-polish/scripts/polish.py deck.pptx --audit-only
# Fix only (no report)
python .claude/skills/pptx-polish/scripts/polish.py deck.pptx --fix-only
# Individual scripts
python .claude/skills/pptx-polish/scripts/audit.py deck.pptx
python .claude/skills/pptx-polish/scripts/repair.py deck.pptx
python .claude/skills/pptx-polish/scripts/validate.py deck.pptx
What It Checks
Check
Severity
Threshold
Text overflow (chars)
warning
>800 per shape
Text overflow (paragraphs)
warning
>15 per shape
Text overflow (line length)
warning
>120 chars per line
Ghost placeholders
warning
Empty with default text
Font consistency
warning
Mixed fonts per slide
Unresolved theme tokens
info
+mn-ea, +mj-lt in fonts
Empty slides
warning
No visible text content
Malformed hyperlinks
warning
Empty or invalid URLs
Bare URLs in text
info
URL without hyperlink
Missing title
info
No title shape
What It Fixes
Repair
Description
ZIP dedup
Remove duplicate ZIP entries (LAST-wins)
SVG content type
Add missing image/svg+xml to Content_Types
Ghost placeholders
Remove empty placeholders with default text
Hyperlink linkification
Add hyperlinks to bare URLs in text
Dead hyperlink cleanup
Remove hyperlinks with empty targets
Output
Console: summary table with pass/warn/fail
Markdown: {name}-audit.md with slide-by-slide findings and before/after comparison
Scaled content strategy design for programmatic SEO. Evaluates feasibility, designs template-based page strategies, and generates keyword x topic matrices for batch production. Use when Lennart says programmatic SEO, scaled content, content at scale, location pages, topic variants, keyword matrix, or template pages.
Designs and evaluates template-based content strategies that produce many pages from structured patterns. Where blog-writer handles individual articles and content-engine handles batch scheduling, this skill handles the strategic layer: deciding which page patterns to pursue, scoring their viability, and generating the content matrices that feed production.
0-5: No evidence. 6-10: Sporadic. 11-15: Consistent volume across variants. 16-20: High volume, clear pattern.
Unique Value Per Page
25
Can each page offer genuinely different content?
0-8: Same content with swapped nouns. 9-16: Moderate differentiation. 17-25: Each page has unique insights, data, or recommendations.
Data Quality
20
Do we have proprietary or differentiated data to populate pages?
0-7: Public data only. 8-14: Unique analysis of public data. 15-20: Proprietary experience, project data, client patterns.
...
Source: .claude/skills/programmatic-seo/SKILL.md
project-showcase
Uncategorized
Regenerate and deploy the password-gated EA project showcase website at webapp/showcase/. Use when Lennart says regenerate showcase, update showcase, rebuild the showcase site, deploy showcase, project showcase, or showcase site.
Triggers: n/a
Data sources: n/a
Project Showcase
Password-gated single-file website at webapp/showcase/ that documents every skill, subagent, rule, integration, workflow, recent activity, decision log excerpt, and gallery artifact in the EA project. Used as Lennart's personal memory aid and as a demo.
Daily drivers strip shows 12 pinned cards at top of skill catalog
Skill search + category filter work
Clicking a skill card opens a modal with the full body excerpt
Gallery section shows recent PDFs from reports/
Recent activity shows last ~8 daily log entries with bullets
Decision log shows last 12 entries from decisions/log.md
Mobile sidebar collapses to hamburger at <960px
Deploy workflow
cd webapp/showcase
python generate_site.py
npx netlify deploy --prod --dir=.
...
Source: .claude/skills/project-showcase/SKILL.md
project-status-reporting
Delivery
Generate weekly project status reports in client-facing and internal versions. Use when Lennart asks to write a status report, prepare a project update, review a PM's status report draft, or summarize project status for any stakeholder.
Triggers: "Status report for [client]"
Data sources: Jira, Moco
Project Status Reporting
Generate weekly project status reports in two versions: client-facing and internal.
Trigger
Use this skill when Lennart says:
"Write a status report for [project]"
"Prepare the weekly update for [customer]"
"Review this status report" (review and improve a PM's draft)
"Summarize project status for [stakeholder]"
Report Cadence
Weekly for active projects (standard)
Biweekly for smaller engagements or stable phases
Weekly is mandatory for large ERP transformations
Output: Two Versions Per Report
Version A: Client Status Report
Audience: Project sponsor, IT lead, project stakeholders
Template:
PROJECT STATUS REPORT
Project: [Name]
Client: [Company]
Report date: [Date]
Reporting period: [From -- To]
OVERALL STATUS: [GREEN / YELLOW / RED]
KEY PROGRESS THIS PERIOD
- [Accomplishment 1]
- [Accomplishment 2]
- [Accomplishment 3]
UPCOMING MILESTONES
| Milestone | Target date | Status |
|-----------|------------|--------|
| [Name] | [Date] | [On track / At risk / Delayed] |
RISKS AND BLOCKERS
| Risk | Impact | Mitigation | Owner |
|------|--------|------------|-------|
| [Description] | [High/Med/Low] | [Action] | [Person] |
ACTIONS REQUIRED FROM CUSTOMER
- [Specific action needed, with deadline]
NEXT STEPS
- [What happens next period]
Client report rules:
Executive-friendly language. No internal jargon.
Status must be honest. Do not default to green if there are real issues.
Keep to one page equivalent. If the project is on track, the report should be short.
Every risk must have a mitigation and an owner.
Customer actions must be specific with deadlines, not vague requests.
Version B: Internal Status Report
Audience: Project manager, consulting team, Richard, Heiko, Lennart
Template:
INTERNAL PROJECT STATUS
Project: [Name]
Client: [Company]
Report date: [Date]
PM: [Name]
OVERALL STATUS: [GREEN / YELLOW / RED]
BUDGET VS. ACTUAL
| Phase / Stream | Planned effort | Actual effort | Remaining | Variance |
|---------------|---------------|--------------|-----------|----------|
| [Phase] | [X days] | [X days] | [X days] | [+/- X] |
| TOTAL | [X days] | [X days] | [X days] | [+/- X] |
RESOURCE ALLOCATION
| Consultant | Role | Planned days | Actual days | Next period |
...
Generate consulting proposals and statements of work for ERP consulting and H2W Labs engagements. Use when Lennart asks to draft a proposal, write a SOW, put together an offer, create a quote, or prepare commercial documents for any client engagement.
Triggers: "Draft a proposal", "write a SOW"
Data sources: Context files
Proposal and SOW Generation
Generate consulting proposals and statements of work for ERP consulting and H2W Labs engagements.
Build and manage target account lists for systematic outbound prospecting. Uses Apollo.io to find ICP-matching companies, enriches with contact data, and stages outreach in Close CRM. Use when Lennart asks to build a prospect list, find target accounts, research potential clients, set up outbound campaigns, or identify companies that match our ICP.
Scrape web sources, qualify companies against ICP, enrich via Apollo, and push to Close CRM with follow-up tasks. Use when Lennart says scrape and prospect, intake from URL, prospect from [source], run intake on, prospecting intake, or provides a URL to scrape for leads.
Triggers: n/a
Data sources: n/a
Prospecting Intake
Reusable pipeline: scrape a web source, ICP-qualify companies, get approval, enrich, push to Close CRM, create tasks.
Trigger
Use when Lennart says:
"Scrape and prospect [URL]"
"Intake from [URL]"
"Prospect from [source]"
"Run intake on [URL]"
"Prospecting intake"
Provides a URL and asks to find leads/prospects from it
Context Files
Read before executing:
context/icp.md -- ICP definitions, fit scoring, disqualification criteria
context/pipeline.md -- Existing pipeline to avoid duplicates
context/clients.md -- Existing clients to avoid targeting
Pipeline
Stage 1: SCRAPE
1. Determine source type:
Check if a preset exists in scripts/scraper_presets.json that matches the URL
If yes, use the preset: python scripts/scraper.py extract <url> --preset <name>
If no preset, inspect the page structure and use manual CSS/fields or fetch mode
2. If the source is a single listing page (not a list), use fetch mode first to understand the page, then determine how to get the full list
{
"source": "<url>",
"source_type": "<preset or custom>",
"scraped_at": "<ISO datetime>",
"pipeline_status": "stage_1_scraped",
"companies": [
{
"name": "<company name>",
"signal": "<job title or other signal>",
"location": "<city/country>",
"source_url": "<link to specific listing>",
"icp_score": null,
"icp_match": [],
"icp_reject": [],
"status": "pending",
"approved": null,
"enrichment": {"company": null, "contacts": []},
"crm_lead_id": null,
"crm_contact_ids": [],
"crm_task_id": null
}
]
}
Deduplication at scrape time: When multiple records share the same company name, group them. Store the first signal (job title) and note the count. One company entry per unique company, not per job posting.
Stage 2: ICP SCORE
For each company, score against context/icp.md:
Scoring heuristics (based on company name + signal + location, before enrichment):
Manufacturing company name patterns (+30): GmbH, AG, KG with industrial-sounding names (Technik, Werke, Metall, Maschinen, Fertigung, Produktion)
"Prepare quarterly business reviews with key clients. Generates QBR agenda, delivery summary, financials, expansion opportunities, and follow-up actions. Use when Lennart asks to prepare a QBR, quarterly review with a client, client business review, or review a customer relationship formally."
Triggers: "Prepare QBR for [client]", "quarterly review with [client]"
Data sources: Close, Jira, Moco, Hedy
QBR / Client Business Review
Prepare and run quarterly business reviews with key clients. Pulls delivery data, surfaces contract dates, expansion opportunities, and relationship health. Generates a structured QBR package or client-facing PDF.
Trigger
Use this skill when Lennart says:
"Prepare QBR for [client]" / "Quarterly review with [client]"
"Client business review for [client]"
"QBR deck for [client]" / "QBR follow-up for [client]"
"Review our engagement with [client] formally"
Modes
Mode 1: Prep (default)
Trigger: "Prepare QBR for [client]", "quarterly review with [client]" Generate full QBR prep package: agenda, delivery summary, financial overview, expansion analysis, risk assessment, talking points.
Mode 2: Deck
Trigger: "QBR deck for [client]", "QBR report for [client]" Generate a client-facing QBR summary document as PDF via report engine.
Mode 3: Follow-up
Trigger: "QBR follow-up for [client]", "process QBR notes for [client]" Process QBR meeting notes from Hedy and generate follow-up actions, CRM updates, and next-steps email.
Tool Integration
Jira (delivery status)
searchJiraIssuesUsingJql -- issues by project/customer (cloudId: 0ee5c601-cc7e-4022-ba05-749fee885399)
getJiraIssue -- issue details for key items
Moco (hours, budgets, invoices)
GET /projects -- filter by customer identifier
GET /activities -- hours logged by project
GET /invoices -- invoicing history
Auth: Authorization: Token token=$MOCO_API_KEY
Base URL: https://h2wconsultinggmbh.mocoapp.com/api/v1
GetSessions -- find recent meetings with this client
GetSessionDetails -- get full transcript (transcript or cleaned_transcript). Extract decisions, action items, and discussion themes from the raw conversation. Do not rely on Hedy's recap or meeting_minutes.
Context Files
context/clients.md -- client profile, tier, lifetime value
> Relationship intelligence dashboard. Monitors interaction frequency with key contacts and alerts when relationships need attention. Use when Lennart says relationship pulse, check my relationships, who needs attention, relationship dashboard, track a contact, or relationship detail.
Triggers: "Relationship pulse", "who needs attention", "check my relationships"
Data sources: M365, Close, Hedy, data/relationships/
Relationship Pulse
Monitors interaction frequency with key contacts against their configured cadence targets and alerts when relationships are going cold. Combines M365 email, Close CRM activity, calendar, and Hedy meeting data into one prioritized view.
The registry lives in data/relationships/*.md. Each file defines who to track, at what cadence, and what role they play. This skill reads those files, scans live data sources, and reports who needs attention today.
Trigger
Use this skill when Lennart says:
"Relationship pulse" / "Check my relationships" / "Who needs attention?"
"Relationship dashboard" / "Track a contact" / "Relationship detail"
"Which contacts are going cold?" / "Who haven't I talked to?"
"Add contact to relationship tracker" / "Remove contact from tracker"
"List my tracked contacts"
Also proactively suggest this skill:
At the start of any account review or QBR prep
When deal-pulse surfaces a champion or decision-maker with no recent activity
During monday-sequence if the relationship registry has not been checked this week
Modes
Parse the mode from the user message:
Mode
Trigger phrases
Default
scan
"pulse", "who needs attention", "dashboard", no qualifier
Process a sales discovery meeting into actionable CRM updates, deal qualification, and follow-up emails. Pulls the Hedy transcript, extracts qualifying information (pain points, budget, timeline, decision makers, tech environment), updates Close CRM, recommends pipeline stage, and drafts the follow-up email. Use when Lennart says "debrief the call", "process the meeting with [company]", "update CRM from the [company] call", "what came out of the meeting", "debrief [company]", "post-meeting update", or after any sales discovery conversation. This skill bridges the gap between a meeting happening and the pipeline being updated -- it turns a conversation into structured deal intelligence and next actions.
Triggers: "Debrief the call", "process the meeting"
Data sources: Hedy, Close
Sales Discovery Debrief
Turns a sales discovery meeting transcript into structured deal intelligence, CRM updates, and a follow-up email. This is the bridge between "we had a meeting" and "the pipeline reflects reality."
Without this skill, post-meeting processing is manual: Lennart has to recall what was discussed, open Close CRM, update fields, figure out the right stage, draft a follow-up, and update internal tracking. This skill does all of that in one pass.
When to Use
After any sales-relevant meeting -- discovery calls, scoping sessions, introductory conversations, product demos, or qualification calls. Works for both ERP consulting prospects and H2W Labs/AI prospects.
Typical triggers:
"Debrief the Lenze call"
"Process the meeting with MeisterWerke"
"Update CRM from today's call with Atmos"
"What came out of the Containex meeting?"
"Post-meeting update for the Liebherr call"
Execution
Step 1: Find the Meeting
If Lennart specifies a company name or session, use that. Otherwise, use index-first lookup:
1. Read data/hedy-sessions-index.json and filter by customer name (fuzzy match) and recent date range
2. If matches found: use session IDs directly with GetSessionDetails
3. If customer has a topic in data/hedy-topics-map.json: try GetTopicSessions(topicId) as alternative
4. If no index matches: fall back to GetSessions with limit 10, present list, ask which to process
5. Once confirmed, call GetSessionDetails with the session ID
Key fields to extract from the Hedy response:
transcript or cleaned_transcript (the raw conversation -- often in German)
meeting_minutes (structured summary with action items)
recap (concise summary with key points)
user_todos (action items assigned to Lennart)
The transcript is the richest source. The recap and meeting minutes are useful cross-references but may miss nuance. When in doubt, go to the transcript.
Step 2: Extract Deal Intelligence
Parse the meeting content and extract these fields. Transcripts are often in German -- extract the information and present it in whatever language matches the client relationship (German for DACH clients, English for international).
Sales cockpit that pulls data from Close CRM, cross-references with Jira delivery, enriches with Apollo.io and web research. Use when Lennart asks about the pipeline, deals needing attention, a specific deal or company status, weekly sales briefing, prospecting research, revenue outlook, or any sales-related analysis.
Triggers: "Pipeline review", "deal intelligence"
Data sources: Close, Jira, Apollo, Web
Sales Intelligence
Comprehensive sales cockpit that pulls data from Close CRM, cross-references with Jira project delivery, enriches with Apollo.io and web research, and delivers actionable intelligence with specific next-step recommendations.
This skill understands the business context (priorities, projects, goals) and connects the dots between sales pipeline, delivery status, and market intelligence.
Trigger
Use this skill when Lennart says:
"How's my pipeline?" / "Pipeline review" / "What deals need attention?"
"Brief me on [deal/company]" / "What's happening with [company]?"
"Weekly sales briefing" / "Give me my weekly briefing"
"Research [company] as a potential lead" / "Is [company] a good fit?"
"Revenue outlook" / "Revenue forecast" / "What do I need to close?"
Tool Integration
All tools are connected via MCP through Claude.ai. No API keys needed.
Close CRM (pipeline and sales activity)
search / lead_search / paginate_search -- find leads and contacts
find_opportunities / fetch_opportunity -- pipeline and deal data
fetch_lead -- lead details, contacts, custom fields
Draft outreach messages for sales scenarios across email and LinkedIn. Use when Lennart asks to write an outreach email, draft a LinkedIn message, follow up with a contact, re-engage a dormant lead, respond to an inbound inquiry, or craft any sales-related communication.
Triggers: "Write outreach email", "follow up with..."
Data sources: Context files
Sales Outreach
Draft outreach messages for different sales scenarios across email and LinkedIn.
Trigger
Use this skill when Lennart says:
"Write an outreach email to [company/person]"
"Draft a LinkedIn message for [person]"
"Follow up with [contact] after [event/meeting]"
"Re-engage [dormant contact]"
"Respond to this inbound inquiry"
Target Audience
Typical personas at mid-sized industrial manufacturing companies:
CIO
IT Director
Head of ERP
VP Operations
COO
CFO (occasionally)
All messaging should resonate with operational leaders who care about efficiency, reliability, and measurable results. Avoid generic tech/SaaS language.
Outreach Scenarios
1. Cold Outreach to Target Account
Purpose: Introduce BLCG / H2W Consulting / H2W Labs to a company that fits our ideal customer profile.
Email structure:
Subject line: specific to their industry or situation (never generic)
Opening: reference something specific about their company (recent news, industry trend, operational challenge)
Value statement: one sentence on what we do and why it matters to them
Proof point: brief reference to a similar engagement or result (if available)
Ask: suggest a specific next step (15-min call, share a case study, etc.)
Follow-up message after connection: similar to email but shorter, 50-80 words
2. Follow-Up After Event or Referral
Purpose: Continue a conversation started at a conference, webinar, or through a referral.
Structure:
Reference the specific event or person who referred
Recall what was discussed (if known)
Suggest a concrete next step
Length: 60-100 words
3. Re-Engaging Dormant Contacts
Purpose: Restart a conversation with a former customer or cold lead.
Structure:
Acknowledge the gap since last contact (briefly, no apologies)
Share something new and relevant (new capability, case study, industry development)
Low-pressure ask (share an update, offer a quick call)
Length: 60-100 words
4. Responding to Inbound Inquiry
Purpose: Reply to someone who reached out to us.
Structure:
Acknowledge their inquiry and what they asked about
...
Source: .claude/skills/sales-outreach/SKILL.md
seo-content-audit
Marketing
SEO auditing for h2w-consulting.com. Site health, content scoring, keyword strategy, and competitor SEO analysis. Use when Lennart says SEO audit, content audit, keyword review, SEO health, competitor SEO, or ranking check.
Audits h2w-consulting.com for technical SEO health, content effectiveness, keyword strategy, and competitive positioning. Produces actionable reports with prioritized recommendations.
Trigger
Use this skill when Lennart says:
"SEO audit" / "Site audit" / "SEO health check"
"Content audit" / "How are our blog posts performing for SEO?"
80-100: Strong foundation. Focus on content growth and authority building.
60-79: Solid but gaps exist. Address high-impact improvements.
40-59: Significant issues. Prioritize critical blockers before content investment.
Below 40: Foundational problems. Fix technical issues before any content SEO work.
Content Scorecard
Per-article scoring template (0-100):
Factor
Weight
Criteria
Keyword Targeting
25%
Primary keyword in title, H1, first 100 words, meta description, URL slug
...
Source: .claude/skills/seo-content-audit/SKILL.md
session-closeout
Uncategorized
"DEPRECATED -- use /closeout instead. Redirects to the closeout skill."
Triggers: n/a
Data sources: n/a
Session Closeout (DEPRECATED)
This skill has been replaced by /closeout, which enforces hard-sequenced steps with a completion checklist.
Run /closeout instead.
Source: .claude/skills/session-closeout/SKILL.md
skill-optimization
Meta
Optimize the prompts, structure, and efficiency of existing skills and agents. Use when Lennart says optimize skill, improve skill, skill quality, prompt optimization, reduce token usage, skill review, make this skill better, audit skills, tune agent, or fix skill output.
Meta-skill that reviews and improves existing skills and agent definitions for quality, clarity, efficiency, and output consistency. Where skill-pattern-detector finds gaps and recommends new skills, this skill fixes and improves the ones that already exist.
Analyze recent conversations, meetings, and workflows to detect recurring patterns that should become formalized skills. Use when Lennart asks to find skill gaps, review what should be automated, identify missing skills, audit the skill library, check for patterns that need skills, or says things like "what am I doing repeatedly that we should automate" or "what skills am I missing". Also trigger proactively during weekly reviews or when the same type of request appears multiple times in a session.
Triggers: "What skills am I missing?"
Data sources: Hedy, Close, memory
Skill Pattern Detector
Scans recent activity across Hedy meetings, Close CRM, memory files, context files, and the existing skill library to identify recurring workflows that should be turned into formalized skills. The goal is to make the EA smarter over time by catching patterns before Lennart has to ask twice.
How It Works
The detector looks for three types of gaps:
1. Repeated request patterns -- the same type of ask showing up across multiple conversations or meetings (e.g., "research this company before the call" appearing 5 times before meeting-briefing-notes was built)
2. Process gaps -- workflows defined in context/processes.md or context/calendar.md that have no matching skill
3. Workflow fragments -- multi-step tasks that Lennart keeps doing manually where a skill could chain the steps together
Data Sources
Hedy (conversation and meeting patterns)
GetSessions -- list recent meetings (past 2-4 weeks)
GetSessionDetails -- get full transcript (transcript or cleaned_transcript). Extract topics, action items, and recurring themes from the raw conversation. Do not rely on Hedy's recap or meeting_minutes.
GetHighlights -- can be used as cross-reference but transcript is primary
GetToDos -- outstanding tasks that might indicate repeated workflows (fallback: extract from transcripts)
Memory Files
Read MEMORY.md and any topic-specific memory files
Look for patterns noted but not yet turned into skills
Check for "recurring" or "repeated" mentions
Existing Skills Inventory
Scan .claude/skills/*/SKILL.md frontmatter for name and description
Build a map of what is already covered
Identify trigger gaps (situations where a skill exists but its triggers miss common phrasings)
Context Files
context/processes.md -- formalized processes that may lack automation
context/calendar.md -- recurring cadences that could be skill-driven
context/current-priorities.md -- priority areas where skills would have the most impact
Close CRM Activity (optional, for sales pattern detection)
activity_search -- recent activity types and frequency
Look for repeated manual steps in the sales workflow
Execution Steps
Step 1: Inventory existing skills
Read all SKILL.md files in .claude/skills/ and build a coverage map:
Quarterly strategy review and strategic decision support. Use when Lennart asks for a quarterly review, strategy assessment, market positioning analysis, strategic decision, or wants to update the growth thesis. Connects KPI trends, pipeline shifts, win/loss patterns, competitive signals, and market changes into strategic recommendations.
Connects operational data with strategic context to support quarterly reviews and strategic decisions. Goes beyond the operations-health dashboard (which shows how the business is running today) to answer "are we pointed in the right direction and should we change course?"
Trigger
Use this skill when Lennart says:
"Quarterly review" / "Q1 review" / "How did the quarter go?"
"Strategy review" / "Strategic assessment" / "Are we on track?"
"Should we change direction?" / "Rethink our approach to [X]"
"Market positioning" / "Where should we focus?"
"Update the growth thesis" / "Revisit our strategy"
WebSearch -- industry trends, competitor news, market developments
Execution Model
Delegate data gathering to parallel agents and curl calls.
Pattern:
1. Launch 3 parallel research-agent instances:
Agent 1: Close CRM -- pipeline trends (deals won/lost last 90 days, pipeline evolution, activity trends, win/loss reasons)
...
Source: .claude/skills/strategic-review/SKILL.md
switch-models
Meta
"Switch between model profiles (Claude direct, OpenRouter free/paid/turbo). Use when hitting rate limits, when Lennart says switch models, use free models, use cheaper models, go faster, or go back to Claude."
Triggers: n/a
Data sources: n/a
Switch Models
Manages which AI model profile the EA uses.
Profiles
Profile
Main Model
Subagents
Cost
Best For
claude
Claude direct (subscription)
Claude
Subscription
Best quality, complex EA tasks
paid
Claude Sonnet (via OpenRouter)
Qwen 3.6 free
~$0.003/1K tok
Good quality, Claude limits hit
turbo
Claude Sonnet :nitro (via OpenRouter)
Qwen 3.6 free
~$0.005/1K tok
Speed-critical work
free
Qwen 3.6 Plus
Nemotron 120B
$0
Emergency fallback
Model suffixes (OpenRouter best practice)
:nitro — routes to fastest provider (used in turbo profile)
:floor — routes to cheapest provider
:free — free tier models
Trigger
Use when:
You encounter a rate limit error (429) or usage limit message
Lennart says: "switch models", "use free models", "go cheaper", "go faster", "back to Claude"
/check-usage reports critical usage levels
Proactively when you detect the session is approaching limits
Execution
Step 1: Check current status
cd "g:/My Drive/Lennart/Claude Projects/1-LHE Executive Assisant (EA)" && python scripts/model_manager.py status
Reports: current profile, Claude usage %, OpenRouter balance + warnings.
Step 2: Determine target
If Lennart specified a profile: use that directly.
If auto-selecting: run auto command which uses cached Claude usage data:
cd "g:/My Drive/Lennart/Claude Projects/1-LHE Executive Assisant (EA)" && python scripts/model_manager.py auto
The auto logic:
Session >= 95% or Weekly >= 90% -> switch to paid (or free if OR balance < $2)
Session < 95% and on OpenRouter -> switch back to claude
OR balance < $5 -> warn about latency degradation
OR balance < $2 -> block paid/turbo profiles, force free
"Switched to {profile}. Restart the session to apply."
If there's urgent work in progress, offer to save context to data/session-briefing.md before restart.
OpenRouter Presets (Optional Enhancement)
...
Source: .claude/skills/switch-models/SKILL.md
top-management-report
Reporting
"[DEPRECATED] Replaced by c-suite-dashboard. Use c-suite-dashboard for the weekly executive report. The CFO dashboard mode covers all financial analysis from this report. Archived copy in archives/skills/top-management-report/."
Triggers: "MD report", "cash position"
Data sources: Qonto, Close, Moco, Hedy
Top Management Report [DEPRECATED]
This skill has been replaced by the c-suite-dashboard orchestrator and the individual C-level analysis skills (cfo-analysis, cro-analysis, chro-analysis, cso-analysis, cmo-analysis).
Use instead:
For the full executive report: c-suite-dashboard
For financial analysis only: cfo-analysis (Mode 0: Weekly CFO Dashboard)
For pipeline and revenue: cro-analysis (Mode 0: Weekly CRO Dashboard)
Consultant and team utilization reporting from Moco. Shows billable ratios, capacity gaps, bench risk, and resource forecast. Use when Lennart asks about utilization, billable hours, team capacity, who is available, bench, resource planning, or consultant workload.
Triggers: "Utilization", "billable hours"
Data sources: Moco
Utilization Report
Pulls time tracking and resource data from Moco to show how the consulting team's capacity is being used. Moco is the source of truth for hours logged, project assignments, and planned effort.
Use this skill when Lennart asks about utilization, billable hours, team capacity, who is available, who is on the bench, resource utilization, consultant workload, capacity planning, or anything related to how team time is being spent.
Triggered by: "how busy is [person]", "what is [person] working on", "[person]'s utilization" Shows: One consultant's hours breakdown by project, billable ratio, trend, upcoming schedule.
Triggered by: "who has capacity", "who is available", "resource forecast", "staffing", "bench" Shows: Forward-looking view of planned hours vs. available capacity per consultant.
Tool Integration
Moco (primary data source)
REST API via curl (credentials in .env: MOCO_API_KEY)
Base URL: https://h2wconsultinggmbh.mocoapp.com/api/v1
GET /report/utilization?from=YYYY-MM-DD&to=YYYY-MM-DD -- daily billable/unbillable hours per user WITH target hours. Eliminates manual ratio calculation.
Self-improvement loop for the Obsidian vault. Detects new entities in daily logs and transcripts, backfills missing Dataview inline fields on opportunities, refreshes MOCs, validates wiki-aliases, and proposes structural improvements. Use when Lennart says curate vault, vault hygiene, refresh mocs, learn from vault, vault audit, or weekly automatically via cron/closeout.
Triggers: n/a
Data sources: n/a
Vault Curator
Purpose: make the vault measurably better every week without Lennart doing it by hand. Every run produces (1) automatic fixes and (2) a short proposals list for human review.
When this runs
1. Weekly cron (Sundays 18:00 ET) — full pass
2. Session-closeout step 8 — quick pass on files touched this session
3. On demand — Lennart says "curate vault" or "vault audit"
What the curator does
Pass 1: Entity discovery (auto-write)
Grep data/daily-log/ and data/hedy-transcripts/ for capitalized name patterns and company-suffix patterns (GmbH, AG, Inc, LLC, Ltd, KG)
For each candidate, check references/wiki-aliases.yaml
If unknown AND mentioned 3+ times across 2+ files: propose a new entity file (do not create silently)
If known under a variant not yet in aliases:: append the variant to that file's frontmatter automatically and rebuild aliases via python scripts/wiki.py build-aliases
Pass 2a: HealthTier enrichment from Close CRM (auto-write)
Before backfilling, pull current HealthTier values from Close CRM via the deal-health-scoring skill output (or the Close custom field cf_HealthTier if cached). Map by opportunity lead name. Only writes to empty HealthTier:: fields — never overwrites.
Exclusion list for entity discovery (Pass 1) — do not flag as unknown:
1. Decide which template to use (auto-select or command-specific)
2. Build the content dict with the required placeholders for that template
3. Choose aesthetic: --client forces h2w-brand, otherwise use --aesthetic flag or default to blueprint
4. Call the engine:
from visualizations.engine import VisualEngine
engine = VisualEngine(
title="Page Title",
subtitle="Optional subtitle or date",
aesthetic="blueprint", # or editorial, paper, monochrome, h2w-brand
)
engine.render(
template="mermaid-diagram", # template name without .html
content={
"mermaid_code": "flowchart TD\n A-->B",
"sections": "", # additional HTML sections below the main content
},
...
Source: .claude/skills/visual-explainer/SKILL.md
weekly-review
Reporting
Generate a comprehensive weekly review report for Friday leadership meetings. Pulls from Hedy, Close CRM, Jira, and Slack to synthesize the week into an actionable briefing. Use when Lennart says weekly review, Friday briefing, what happened this week, weekly report, or week in review.
Triggers: "Weekly review", "Friday briefing"
Data sources: Hedy, Close, Jira, Slack
Weekly Review
Comprehensive weekly review report for Friday morning leadership meetings. Pulls from all connected data sources (Hedy meetings, Close CRM, Jira, Slack) and synthesizes the week's activity into a single actionable briefing.
This skill connects the dots across meetings, sales, delivery, and team activity to surface what matters most and what needs attention going into the next week.
Trigger
Use this skill when Lennart says:
"Weekly review" / "Week in review" / "What happened this week?"
"Friday briefing" / "Friday report" / "Prep the Friday meeting"
"Weekly report" / "Generate the weekly report"
"Summarize this week" / "Give me the week's highlights"
Tool Integration
All tools are connected via MCP through Claude.ai. No API keys needed.
Hedy (meetings and decisions)
GetSessions -- list meetings in a date range
GetSessionDetails -- full transcript, recap, highlights, action items per meeting
GetToDos -- all outstanding to-dos across sessions
GetSessionHighlights -- highlights from a specific session
GetSessionToDos -- to-dos from a specific session
Close CRM (sales activity and pipeline)
find_opportunities -- all active opportunities
activity_search -- emails, calls, tasks, meetings, notes (filter by date)
aggregation -- activity counts by type, user, time bucket
searchJiraIssuesUsingJql -- issues updated/created/resolved this week
getJiraIssue -- issue details
getVisibleJiraProjects -- active projects
Slack (team communications)
slack_search_public_and_private -- search for key topics discussed this week
slack_read_channel -- read recent messages from key channels
Execution Model
Delegate all data gathering to subagents launched in parallel. The main conversation handles synthesis, analysis, cross-referencing, and report generation.
Phase 1: Data Gathering (parallel)
Launch three research tasks simultaneously:
Agent 1: Meetings (Hedy) Use Hedy tools directly (not the research-agent, since it does not have Hedy tool access).
GetSessions with limit 20 to get all meetings from the past 7 days
...
Source: .claude/skills/weekly-review/SKILL.md
weekly-snapshot
Data
Capture weekly business metrics snapshot for trend analysis. Run after Monday reports to save key numbers (cash, pipeline, utilization, delivery, Labs) to reports/internal/snapshots/. Use when Lennart says save the snapshot, capture this week's numbers, weekly snapshot, save metrics, or after generating Monday reports.
Triggers: "Save the snapshot", "capture this week's numbers"
Data sources: Qonto, Close, Moco, Jira
Weekly Snapshot
Captures a structured snapshot of key business metrics and saves it to reports/internal/snapshots/YYYY-MM-DD.md. This creates a time series that all other reports can reference for trend analysis, week-over-week comparisons, and quarterly reviews.
Run this after the Monday reports (top-management-report + monday-briefing) to persist the numbers that were pulled. Without snapshots, each report starts from zero with no historical context.
Trigger
Use this skill when Lennart says:
"Save the snapshot" / "Capture this week's numbers"
"Weekly snapshot" / "Save metrics"
After generating Monday reports: "Now save the snapshot"
"Update the trend data"
Also trigger automatically when both Monday reports have been generated in the same session.
Context Files
Read before pulling data:
context/kpis.md -- KPI definitions and thresholds (GREEN/YELLOW/RED)
GET /report/utilization?from={monday}&to={friday} -- pre-calculated billable/unbillable per user WITH target hours (use instead of raw activities for utilization metrics)
GET /activities?from={monday}&to={friday} -- raw hours (use for project-level breakdown if needed)
GET /projects?include_archived=false -- active project count and budgets
GET /users -- team member count
GET /report/absences?year=YYYY&active=true -- vacation/sick data for capacity context
Qonto: GET /organization for both H2W GmbH and BLC UG balances
...
Source: .claude/skills/weekly-snapshot/SKILL.md
workforce-planning
Operations
Workforce planning, team capacity analysis, and people decisions. Use when Lennart asks about staffing, hiring, team redeployment, skill gaps, bench risk, Neudorff impact on team, who to assign to new projects, or workforce scenarios. Goes beyond utilization-report (which shows current hours) to answer forward-looking people questions.
Triggers: "Staffing", "[[w-neudorff
Data sources: Moco, Close
Workforce Planning
Acts as a virtual Head of People Operations for Lennart. Goes beyond the utilization-report (which shows current-state hours) to provide forward-looking workforce analysis, redeployment planning, and hiring/reduction decisions.
Trigger
Use this skill when Lennart says:
"What happens to the team when Neudorff ends?"
"Who should I put on this new project?" / "Who has the right skills for [X]?"
"Should we hire?" / "Do we need to reduce?"
"Bench risk" / "Who's going to be idle?"
"Skill gap analysis" / "What capabilities are we missing?"
"Team scenario" / "What if we lose [person]?"
"Redeployment plan" / "How do I reassign [person]?"
"Workforce review" / "Team health"
Context Files
Always read before analysis:
context/team-capabilities.md -- Skills matrix, capacity profile, exposure analysis, key-person dependencies. Includes Historical Utilization Baselines section with per-person annual hours, external %, customer concentration, and vacation/sick patterns from Octaved (Oct 2022 - Feb 2026). Use these instead of generic assumptions.
context/team.md -- Team structure and key people
context/team-assignments.md -- Current project assignments (from Moco)
context/finance.md -- Internal rates, cost structure, actual rate realization, internal cost ratio trend
context/kpis.md -- Utilization targets and thresholds
Prepare agendas, materials, checklists, and follow-up documents for customer workshops. Use when Lennart asks to prepare a workshop, draft a workshop agenda, write up workshop results, create a workshop proposal, or build a prep checklist for any AI discovery, ERP, or transformation workshop.
Triggers: "Prepare workshop for [company]"
Data sources: Context files
Workshop Preparation
Prepare agendas, materials, and follow-up documents for customer workshops.
Trigger
Use this skill when Lennart says:
"Prepare a workshop for [customer/topic]"
"Draft an agenda for [workshop type]"
"Write up the workshop results"
"Create a workshop proposal for [customer]"
"I need a prep checklist for [workshop]"
Workshop Types
AI Discovery and Opportunity Workshop
Purpose: Identify practical AI use cases tied to real business processes
Typical format: Half day to full day, remote or onsite
Key output: Prioritized list of AI use cases with feasibility and business impact assessment
ERP Process Assessment Workshop
Purpose: Analyze current processes, identify inefficiencies, define improvement opportunities
Typical format: Half day to full day
Key output: Process assessment findings, improvement opportunities, recommended actions
ERP Transformation and Roadmap Workshop
Purpose: Define future system architecture, migration strategy, implementation roadmap
Typical format: 1-3 days, typically onsite
Key output: Target architecture, transformation roadmap, phased implementation plan
Enterprise Structure Workshop (ERP)
Purpose: Design company structure, sites, warehouses, and intercompany models in ERP
Typical format: Full day to multi-day, onsite preferred
Key output: Defined enterprise structure, site model, intercompany flows
Process Mapping Workshop
Purpose: Create BPMN-style process maps to identify automation and application opportunities
Typical format: Half day to full day per process area
Key output: Process maps, automation candidates, application opportunities
Standard Agenda Structure
Adapt per customer and workshop type, but follow this flow:
1. Context and objectives (15-30 min)
- Why we are here, what we aim to achieve
- Confirm scope and expected outcomes
2. Current situation and challenges (30-60 min)
- System landscape overview
- Current processes and pain points
- What has been tried, what worked, what did not
3. Process walkthrough (60-120 min)
- Walk through relevant processes in detail
- Identify gaps, manual steps, workarounds
- Capture dependencies and integration points
4. Identification of opportunities (30-60 min)
...
Gathers pipeline, deal, contact, and activity data from Close CRM. Use for pipeline snapshots, deal research, sales activity metrics, and lead intelligence. Returns structured raw data without analysis.
Gathers financial data from Qonto bank API and Moco invoices. Use for cash position, transaction analysis, invoice tracking, and receivables. Returns structured raw data without analysis.
4 tools: Read, Grep, Glob, Bash
hedy-agent
haiku
Gathers meeting data from Hedy. Use for meeting transcripts, action items, decisions, highlights, and session summaries. Returns structured raw data without analysis.
Gathers project delivery data from Jira. Use for issue tracking, delivery status, sprint progress, blockers, and workload analysis. Returns structured raw data without analysis.
Gathers email, calendar, contacts, and task data from Microsoft 365 via Graph REST API. Use for inbox scanning, calendar lookups, email search, and task retrieval. Returns structured raw data without analysis.
4 tools: Read, Grep, Glob, Bash
moco-data-agent
haiku
Gathers project, resource, and time tracking data from Moco API. Use for utilization analysis, project budgets, team assignments, and resource planning. Returns structured raw data without analysis.
4 tools: Read, Grep, Glob, Bash
research-agent
haiku
Gathers data from Close CRM, Jira, Apollo.io, and web sources. Use when researching companies, deals, pipeline data, or market intelligence. Returns structured raw findings without analysis or recommendations.
34 tools: Read, Grep, Glob, WebSearch ...
8
Behavioral rules (6)
Business Context Rules
- Our clients are industrial manufacturing companies
.claude/rules/business-context.md
Communication Style
- Lead with the answer or recommendation
.claude/rules/communication-style.md
Email Drafting
- Never send emails without Lennart's explicit approval. Always create as draft.
.claude/rules/email-drafting.md
Report Generation
All PDF reports must follow `references/report-design-standards.md`. Read that file before generating any PDF.
.claude/rules/report-generation.md
Sales and Proposals
- Always structure proposals with clear scope, deliverables, timeline, and commercial terms
.claude/rules/sales-and-proposals.md
Wiki Linking
The vault is an Obsidian-browsable knowledge graph. Its usefulness depends on entity files being linked to each other, so backlinks and graph view reveal relationships. These rules govern how to reference entities when writing or editing files.
Opportunity custom fields: 10 business fields set (Products, Business Area, Country, Language, NDA, Quote, Contract Partner, Work Type, Technologies, Project Name)
2026-04-09Thursday
IMA Schelling H2W Labs Themen meeting prep: compiled full briefing from M365 email, Close CRM, Hedy Apr 2 transcript, Jira project IS. Key context: Lukas Reiss accepted, Michael Lau declined. Cloud migration is their ...
2026-04-08Wednesday
Internal sales update meeting — Pulled live pipeline snapshot from Close CRM for the walk-in prep. Top 10 opps by value, 7-day stage moves, Stalled tier flags, critical-focus deal list.
Deal pulse run (evening) — Scored pipeline: 92 opps (1 Red, 23 Stalled, 35 Yellow, 33 Green). Scanned both H2W and BLC mailboxes for top 7 attention deals. Drafted 6 emails, sent 5: Sauer (KI-Workshop mid-April nu...
Key discovery — First deal-pulse pass only scanned H2W mailbox and missed critical BLC-side context (Containex DocuSign status, OTT warm 03-17 Roland call with next-steps follow-up, Calanbau contact Darina Derndor...
2026-04-07Tuesday
Macquarie Group: Florian Christ replied to Apr 6 WhatsApp, asked for version without Personal Assistant track to share with 2-3 Regional Tech Leads. Built second site variant from same generator (`macquarie-automa...
Macquarie CRM cleanup: Deleted Moco duplicate deal #1001312 ($140K combined phantom) — account now correctly reflects Track 1 EA Build $15K + Track 2 5-Company Automation Pilot $125K, matching Close.
Trojan/Aquafides LN Cloud Overview: Luciano confirmed CSIE budget covers it, handed scheduling + agenda to Richard, follow-up email to Martin Mayr sent (cc Richard, Luciano).
Uhlmann Pac-Systeme: 3-phase Predictive Maintenance project sketch (EN + DE) sent internally to Heiko/Yvonne (cc Richard). Awaiting internal feedback before opening contact.
2026-04-06Monday
NEW: Macquarie Group -- two opportunities created. Track 1: Executive Assistant for Florian Christ ($15K, 40% confidence). Track 2: AI automation pilot across 5 portfolio companies ($125K, 30%). Both Discovery stage. ...
EUR 401K in Moco offers awaiting response. Largest: OTT Hydromet EUR 205,920 (19 days out), MeisterWerke EUR 85,800 (6 days out).
Trojan: LN Training for Austria call with Luciano Barros and Martin Mayr (10:00 ET, 25 min). Scope for Austrian team LN overview.
Trojan: CloudSuite Admin Enablement Training (Abdulai Kanu) quoted. 34h at USD 195/hr = USD 6,630. Moco offer Q-TRO-26-034, CRM opp created. Awaiting Mahendra scope confirmation.
Trojan: Dev Training quote updated with 20% PM. USD 15,600 to USD 18,720. New Moco offer Q-TRO-26-033, old Q-TRO-26-022 deleted. Email sent to Valerie for confirmation.
tsurumi: AI Agent POC presentation to Weippert, Schmidt, Conraths, Clevenhaus (10:30 ET, 60 min). Nachbesprechung with Richard and Heiko (11:30 ET, 30 min).
2026-03-31Tuesday
Trojan Training deal advancing. Valerie Rosekat sent attendee list for LN Development Training: Val Rosekat, Philip Plommer, Jamie Betteridge, Nishal Lanjekar. Deal moving toward close (EUR 15.6K, 75% confidence).
MeisterWerke vendor evaluation deadline was end of March (today). No confirmation of outcome received yet.
Trovarit "ERP in der Praxis" study launched with 400+ participants. Potential intelligence source for market positioning.
12
Decision log (last 12 of 119)
Date
Tag
Decision
2026-04-08
TOOLING
Obsidian wiki-linking Phase 2: scripts/wiki.py CLI (lint-schema / build-aliases / dedupe-people / gap-report / link-backfill), references/wiki-schema.md (entity types + frontmatter), .claude/rules/wiki-linking.md (first-mention wikilinks in wiki layer, relative markdown in config layer). Obsidian config flipped to useMarkdownLinks: false, newLinkFormat: "shortest". Applied lint-schema defaults to 113 files, manually enriched aliases for 17 top entities, built 211-entry alias registry, backfilled 1193 first-mention wikilinks across 167 files. Inbound link density now dense around trojan-technologies (76), w-neudorff (74), tsurumi (71), knowkit (63), meisterwerke-schulte (44). Two bugs caught and fixed during apply: every-mention-linking and self-linking. Commit eb8269e.
2026-04-08
TOOLING
Untrack Obsidian runtime state (.obsidian/workspace.json, graph.json) and raw Hedy API dumps (data/hedy-transcripts/*.json) — these produce constant phantom diffs and pollute history. Processed .md files stay tracked. Commit 531567b.
context/index.md is the single source of truth for context files. YAML frontmatter (auto_refresh, refresh_interval_days, source) drives staleness hook, write-protection hook, and context-refresh skill. CLAUDE.md slimmed 191→81 lines. Adding/moving/renaming a context file now requires touching only the index.
2026-04-07
STRATEGY
Q2 2026 goals locked: (1) replace [[w-neudorff
2026-04-07
FINANCE
Datev is the source of truth for invoicing and AR aging, NOT Moco. Moco invoice list is downstream and not authoritative. Future scans must pull AR from Datev. Saved as permanent memory.
2026-04-07
TOOLING
Deal Health Scoring system: rule-based stage-aware scoring for ~90 qualified-funnel opps (Interested but need time through Verge of closing). 4 Close custom fields, 3 Smart Views, wired into monday-sequence + deal-pulse + cro-analysis. Lead scoring for early stages (Diverse conversation, Potential for Discussion) deferred.
2026-04-06
TOOLING
Session-start timezone check: use PowerShell TimeZoneInfo (not bash TZ=), shows ET always + detects travel. Saved to memory.
20% PM overhead standard on all project quotes. Applied retroactively to Trojan Dev Training (USD 15,600 to USD 18,720).
2026-04-02
TOOLING
Close Reporting API integrated into 3 skills (cro-analysis, sales-intelligence, c-suite-dashboard). Native funnel, status transition, and activity metrics replace manual computation. Org/pipeline IDs hardcoded.
13
Context files (36)
calendar
Standing meetings and recurring events
channels
Communication channels across systems
clients
Customer list and relationship status
communication-preferences
Per-contact communication preferences
competitors
Competitive landscape
contracts
Contract templates and standing agreements
current-priorities
What Lennart is focused on right now
deal-patterns
Recurring deal structures and pricing
finance
Cash position, budgets, P&L structure
financial-planning
Forecast and scenario models
goals
Quarterly goals and milestones
icp
Ideal customer profile
index
Index of all context files with frontmatter metadata
kpis
Tracked metrics and thresholds
marketing
Marketing channels and activity
me
Context file
offerings
Service catalog and packages
partners
Partner ecosystem (Infor, AWS, etc.)
pipeline
Active deals and stage
processes
Internal operating processes
profile
Who Lennart is, entities, revenue streams, tools
projects
Active delivery projects
relationship-history
Interaction history with key contacts
revenue-transitions
Planned revenue ramps and cliffs
risks
Risk register
sales-playbook
Sales process and qualification criteria
seo-keywords
Target SEO terms for content
stakeholder-map
Key external decision-makers
strategy
Strategic bets and positioning
team-assignments
Who is staffed on which project
team-capabilities
Skills matrix across consultants
team-history
Team changes and tenure
team
Current team roster
vendor-landscape
Context file
win-loss
Why deals were won or lost
work
Current work in flight
14
Skills timeline (git history)
2026-04-09feat(crm-validation): CRM validation and self-healing system
2026-04-09chore: meeting-workflow updates + IMA Schelling briefing PDF + skill catalog refresh
2026-03-31feat(pptx-polish): add PPTX QA skill with audit, repair, validate, and orchestrator
2026-03-30feat(visual-explainer): add SKILL.md and update CLAUDE.md skill catalog
15
Persistent memory
Memory persists across Claude Code sessions. Stored in the per-project memory directory outside the repo.
H2W Labs PoC production roles- Richard is primary PoC producer; Johannes takes over after Neudorff (June 2026)project_labs_poc_roles.md
Scalable structures by default- All file/data/process structures must be designed for scale from day onefeedback_scalable_structures.md
Use superpowers skills proactively- Invoke brainstorming, writing-plans, verification-before-completion for multi-step tasksfeedback_superpowers_proactive.md
Daily log is mandatory- Every closeout MUST create or update today's daily-log. Never defer.feedback_daily_log_mandatory.md
No Close Field Enrichment- Close charges for AI enrichment. Use our own pipeline.feedback_no_close_field_enrichment.md
Moco deal category field name- Use `deal_category_id` (not `category_id`). `category_id` silently fails.feedback_moco_deal_category.md
Search all Moco company types- ALWAYS search type=customer AND type=organization WITH `term=` parameterfeedback_moco_company_search_all_types.md
Moco company type classification- Prospects/leads = type=organization (Andere Firma). Only signed clients = type=customer.feedback_moco_company_type.md
Evaluation and goals rollout- All employees need evaluation history and development goals. Flag gaps proactively.project_evaluation_goals_rollout.md
Lucas Rocha departed- Left late March 2026. Marketing has no dedicated owner.project_lucas_departed.md
Web EA Project- Browser-based EA at webapp/, Chainlit + Gemini backend, Phase 1 completeproject_web_ea.md
PPTX generator needs visual quality work- Engine works but output quality needs improvementproject_pptx_generator.md
Cloudflare account and deployment strategy- Pages Direct Upload for HTML and future websitesreference_cloudflare_account.md
Custom domain swap requires dashboard removal- API blocks after first set; remove old domain in dashboard firstreference_netlify_custom_domain_swap.md
Client website quality standards- UTF-8 umlauts, Mermaid/Chart.js, team photos, logo wallsfeedback_client_website_quality.md
Client website production pipeline- MeisterWerke as template, Python generators, Netlify/Cloudflareproject_client_websites.md
DNS automation needed- Migrate blconsultingservice.com DNS from GoDaddy to Cloudflareproject_dns_automation.md
Hedy REST API access- REST API at api.hedy.bot with HEDY_API_KEY in .envreference_hedy_api.md
Hedy indexing: trust calendar over keywords- Calendar attendee domains are primary signalfeedback_hedy_indexing_trust_calendar.md
Dual-machine portability- All config must work on tower AND travel laptopfeedback_dual_machine_portability.md
Weekly insights report- Run /insights every Fridayfeedback_weekly_insights.md
Close custom field prefix for new opps- Use `custom.cf_` prefix (not bare `cf_`) when writing custom fields via REST API PUT. Safe default for all opps.feedback_close_custom_fields_prefix.md
Meeting workflow skill improvements- Validate participants via M365 invite list, prompt for customer micropage, attach slide decks to follow-up emailsfeedback_meeting_workflow_improvements.md
Read SKILL.md directly when Skill tool is disabled- On refusal, Read the SKILL.md literallyfeedback_disabled_skill_read_directly.md
Business partner question framing- Ask about THEIR entity, not oursfeedback_business_partner_question_framing.md
Time-aware greetings- Don't assume time of day. Lennart is in ET.feedback_time_aware_greetings.md
German text quality- Scan output for en/em dashes before savingfeedback_german_text_quality.md
16
Workflow: Monday morning
Every Monday morning, Lennart runs a single command: "Monday sequence". What happens next is a chain of 20+ skills executing in rough priority order, producing one combined executive brief he reads over coffee before the 7 AM BD-PMO call.
The chain
1. context-refresh pulls fresh data from Moco, Close, and Qonto into local snapshot files.
2. weekly-snapshot captures this week's numbers as a timestamped artifact so trends stay comparable across weeks.
3. deal-health-scoring re-scores all 90+ qualified opportunities on a 0-100 scale, tiers them Green/Yellow/Red/Stalled, and updates Close smart views.
4. deal-pulse watches the last 7 days of email for deal signals and flags overdue follow-ups.
5. relationship-pulse checks interaction frequency with key contacts and raises alerts for relationships going cold.
6. alert-check does a quick scan of local files for red flags (stale drafts, missing MSAs, overdue tasks).
7. c-suite-dashboard chains five C-level analysis skills in parallel:
cmo-analysis — marketing performance, content output, brand health
Each produces a standalone PDF, then one combined C-suite dashboard PDF
8. monday-briefing stitches it all together into one structured report with the top 3-5 actions for the week.
9. inbox-drafts triages the inbox and drafts replies to anything needing a response.
What Lennart sees
One PDF open on the left monitor, an inbox of pre-drafted replies on the right. He spends 10 minutes reviewing the brief, approves or edits the drafts, and walks into the 7 AM BD-PMO call with a complete picture of pipeline, delivery, cash, people, and content — across three entities.
What the EA replaces
Without this sequence, the same prep would take 2-3 hours of pulling reports from Close, Moco, Qonto, Jira, and email. And it would happen inconsistently, because nobody wants to do 2-3 hours of manual report-stitching every Monday at 6 AM.
The Monday sequence is the canonical example of why formalizing workflows as skills matters: the effort to build it once is large, but the weekly payoff is compounding.
17
Workflow: Closing a deal
A sales deal in the EA project moves through six formalized stages, each with its own skill. The EA handles the data work, the research, the drafting, and the tracking. Lennart handles the conversations and the decisions.
Stage 1: Prospect
prospecting-engine builds target account lists from Apollo.io filtered against the ICP in context/icp.md. It enriches with contact data and stages companies for outreach in Close CRM.
meeting-briefing-notes researches any prospect before a first conversation — Apollo enrichment, web scraping, historical CRM activity, past meeting transcripts if any.
Stage 2: Discovery
sales-discovery-debrief runs after every discovery call. It reads the Hedy transcript, extracts pain points, budget signals, timeline, decision-makers, and writes back to Close CRM. It drafts the follow-up email in the right language and tone.
customer-intelligence builds a deep stakeholder map and profile by pulling from Close, Jira, Moco, Hedy, and Apollo.
Stage 3: Proposal
proposal-sow-generation drafts a full proposal or SOW using templates from references/proposal-creation-guide.md. It reads the deal context from Close, the existing scope notes, and the ICP file, and produces a structured document with commercial terms.
client-website (optional) generates a password-protected microsite at {client-slug}.blconsultingservice.com with the positioning story, references, and an inline CTA to the Moco customer approval link.
Stage 4: Follow-up and negotiation
deal-pulse monitors email and calendar for replies. If a deal goes silent, it surfaces the need for a follow-up.
sales-outreach drafts re-engagement emails, follow-ups, or check-in messages tailored to deal stage and recipient relationship.
deal-health-scoring tiers every qualified deal. Red and Stalled deals get flagged in the Monday briefing.
Stage 5: Close
h2w-labs-playbook runs the H2W Labs conversion playbook for innovation/AI deals — opportunity brief, demo prep, proposal, follow-up cadence.
Close CRM write-back happens through MCP tools. Opportunity status updates, custom fields, pipeline moves.
Stage 6: Post-close
moco-crm-sync links the closed Close opportunity to a new Moco project.
labs-demo-delivery or delivery skills take over for execution.
qbr-client-review runs quarterly for existing customers.
What makes this work
Every skill in the chain reads from and writes to the same source of truth. Close is the system of record for pipeline. Moco is the system of record for active project tracking. Hedy is the source of truth for meeting transcripts. The EA never duplicates data — it enriches the authoritative system and moves on.
The result: a deal's full history lives in Close, not in a pile of scattered emails, documents, and notes. And when Lennart asks "where are we with Trojan?" the EA can answer in seconds by reading Close, cross-referencing Jira for delivery status, and checking Moco for any active project work.
18
Workflow: Publishing content
The EA runs a complete marketing content operation — from topic generation through drafting, review, scheduling, analytics, and newsletter assembly. Every piece of published content flows through the same pipeline.
The pipeline
Ideation
marketing-content-pipeline turns project experiences, customer conversations, and operational insights into content topics. It mines Hedy transcripts, daily logs, and decision logs for stories worth telling — always anonymized, always with business-value framing.
Drafting
content-engine is the orchestrator. It checks queue health, drafts in batch, and maintains a rolling 3-day approved buffer so publishing never runs dry.
blog-writer produces SEO-targeted blog articles in German and English with meta descriptions and keyword targeting.
content-review presents drafted posts in batch for Lennart's approval. It tracks edits for voice calibration — so the next batch drafts closer to how he actually writes.
Publishing
Approved content moves to data/content-queue/approved/. A lightweight LinkedIn publishing workflow picks up posts by date.
Analytics
content-analytics tracks what's working — engagement per post, which topics land, weekly and monthly reports with pipeline attribution.
cmo-analysis rolls this into the weekly CMO dashboard so content ROI stays visible at the executive level.
Newsletter
newsletter-assembler once a month curates the best published pieces, assembles a bilingual newsletter, and creates the Close CRM email templates and workflows for sending.
Voice calibration
The trickiest part of content generation isn't writing — it's sounding like Lennart. The EA handles this in three ways:
1. Rules in .claude/rules/communication-style.md enforce the hard constraints (no emojis, no em dashes, no buzzwords, Eastern Time for all times, proper umlauts).
2. Context files (context/profile.md, context/strategy.md, context/icp.md) keep the EA aware of positioning and audience.
3. Edit tracking from content-review captures what Lennart changed in past drafts and feeds it back into the next generation cycle.
Over time, the gap between first draft and publish narrows. That's the feedback loop working.
What this replaces
A typical manufacturing consulting firm has either (a) a full-time marketing hire or (b) zero content output. The EA lets a single operator run a credible two-track content program (LinkedIn daily, blog weekly, newsletter monthly) as a side effort to actual client work.
19
Philosophy and principles
A few principles hold this whole project together. They aren't written in the rules files because they're more fundamental than that — they shape why the project exists the way it does.
Formalize what you repeat
If you do something twice, write it down. If you do it three times, make it a skill. Every skill in this project started as a manual workflow Lennart ran often enough to be annoyed by. Formalization is the unit of automation.
Trust authoritative systems
Close is the system of record for pipeline. Moco for projects. Datev for invoices. Jira for delivery. Hedy for meeting transcripts. The EA reads from and writes to these systems directly. It does not build parallel databases. It does not cache state that goes stale. If the data lives somewhere authoritative, that's where it stays.
Never send; always draft
Emails, Close updates, Moco entries — the EA creates drafts. Lennart approves. This is a hard rule, not a suggestion. It's the difference between an assistant that speeds you up and an assistant you can't trust.
Context over cleverness
Most of what makes the EA useful is not the skills or the prompts. It's the 36+ context files describing who Lennart is, what the business is, who the clients are, who the team is, what the goals are, what's currently on fire. A clever prompt against a thin context produces generic output. A simple prompt against a rich context produces output that reads like it came from someone who actually knows the business.
Favor plain text
Everything is markdown. Files in a git repository. Wiki-linked for Obsidian browsing. Grep-able, diff-able, versionable. When you look at this project you can see every line of every rule and every skill. No black boxes.
Write memories deliberately
Claude Code has persistent memory across conversations. But memory is not a log — it's a curated set of facts about Lennart, the project, and the work. Saving too much makes it noisy. Saving too little means the assistant re-learns the same things every session. The memory/ directory is a hand-curated index.
Budget for review, not for generation
The EA is fast at generation. That's the easy part. The actual constraint is Lennart's attention for review. So the skills that matter most are the ones that collapse many small decisions into a few big ones — the Monday brief, the inbox drafts, the content review batch. Each one trades dozens of small context switches for one focused review session.
Be honest about limits
The EA is not autonomous. It does not close deals, run meetings, or make strategic decisions. It gathers data, drafts artifacts, and flags things that need attention. That's the right scope. The moment a tool claims to do more than it actually does, trust in it collapses — and the project grinds to a halt.
The goal isn't to replace judgment. The goal is to load as little friction as possible around the parts of the work that require judgment.