Skip to content

feat: scaffold BizDeedz Signal Engine MVP#12

Open
fowler128 wants to merge 4 commits into
mainfrom
claude/bizdeedz-signal-engine-cEe8S
Open

feat: scaffold BizDeedz Signal Engine MVP#12
fowler128 wants to merge 4 commits into
mainfrom
claude/bizdeedz-signal-engine-cEe8S

Conversation

@fowler128

Copy link
Copy Markdown
Owner

Full production-minded project scaffold for a daily market intelligence
system serving BizDeedz (legal ops consultancy) and Turea Simpson
(legal ops leadership personal brand).

Includes:

  • config/: editable keyword bank, RSS feeds, model routing, scoring
    thresholds, and source settings for Reddit + RSS V1 scope
  • scripts/: helper modules for content normalization, keyword matching,
    SHA256 deduplication, rule-based pre-filter scoring, and digest formatting
  • prompts/: classifier prompt (cheap model, strict JSON output), daily
    digest synthesis prompt (premium model, batch call), and scaffolded
    weekly report prompt for Phase 2
  • n8n/: three importable workflow JSON files — daily collector (7:00 AM
    Central), daily digest emailer (7:20 AM Central), and weekly report
    scaffold (Phase 2, inactive)
  • docs/: system overview, setup guide, Google Sheets schema reference,
    prompt library, and phased roadmap
  • .env.example, README.md, CLAUDE.md

Design priorities: high signal quality, low token cost, low complexity,
fast deployment, easy maintenance, future expandability.

https://claude.ai/code/session_017SxFetPG4y78gpqvkF17Yo

Full production-minded project scaffold for a daily market intelligence
system serving BizDeedz (legal ops consultancy) and Turea Simpson
(legal ops leadership personal brand).

Includes:
- config/: editable keyword bank, RSS feeds, model routing, scoring
  thresholds, and source settings for Reddit + RSS V1 scope
- scripts/: helper modules for content normalization, keyword matching,
  SHA256 deduplication, rule-based pre-filter scoring, and digest formatting
- prompts/: classifier prompt (cheap model, strict JSON output), daily
  digest synthesis prompt (premium model, batch call), and scaffolded
  weekly report prompt for Phase 2
- n8n/: three importable workflow JSON files — daily collector (7:00 AM
  Central), daily digest emailer (7:20 AM Central), and weekly report
  scaffold (Phase 2, inactive)
- docs/: system overview, setup guide, Google Sheets schema reference,
  prompt library, and phased roadmap
- .env.example, README.md, CLAUDE.md

Design priorities: high signal quality, low token cost, low complexity,
fast deployment, easy maintenance, future expandability.

https://claude.ai/code/session_017SxFetPG4y78gpqvkF17Yo
@vercel

vercel Bot commented Mar 11, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
claude-code-practice Ready Ready Preview, Comment Mar 11, 2026 6:33pm

Tightened keyword clusters, scoring, and prompts to favor high-intent
practitioner signals and filter low-quality content more aggressively.

keywords.json:
- Removed broad/generic terms (legal ops, legal operations, change
  management, women in leadership, capacity management) that matched
  vendor blogs and academic content indiscriminately
- Replaced with practitioner-voice phrases that only appear when
  someone is describing a real operational problem (e.g. "nobody uses
  the system", "attorneys won't follow the process", "case fell through
  the cracks", "lawyers won't use it")
- Added bankruptcy cluster specificity (341 meeting prep, means test,
  creditor matrix, petition preparation)
- Added pain phrases that reflect natural Reddit/forum language
- Added negative_keywords list (bar exam, law school, personal injury,
  vendor announcements, press releases, off-topic financial topics)
  for hard pre-filter disqualification

scoring.json:
- Raised min_rule_score from 3 to 4 — a single broad keyword match
  plus RSS source no longer passes (was 2+1=3)
- Added dual_match_bonus (+1): brand keyword AND pain phrase together
  is the highest-quality signal type; strongly rewarded
- Added specificity_bonus (+1): intake_handoff, bankruptcy_operations,
  legal_ops_leadership, career_elevation clusters only appear in
  practitioner content, not vendor or academic writing
- Added min_content_length_chars (80) floor for hard disqualification

ruleScore.js:
- Added checkNegativeKeywords(): immediate fail before scoring if any
  negative keyword present — zero AI cost for obvious junk
- Added meetsMinLength(): immediate fail for link-only or title-only posts
- Added dual_match_bonus scoring logic
- Added hasHighSpecificityCluster() for specificity_bonus
- Attached disqualified and disqualify_reason fields for auditability

classify_signal.md:
- Added explicit downgrade rule: vendor press release / product
  announcement / academic content → score 1-2
- Tightened score 5 definition: requires a specific practitioner
  describing a concrete failure, not just topic discussion
- Removed markdown code block wrapper from output format example
  (was causing some models to wrap output in backticks)
- Compacted output to single-line JSON for more reliable parsing

summarize_daily_digest.md:
- BizDeedz signals now include: who is struggling + what offer it validates
- Turea signals now include: who is speaking + what content angle it opens
- Content ideas now require: specific audience + core tension + actual
  opening line of the post (not just a topic)
- Added Consulting/Opportunity signals action step (DM / post / pitch)
- Recommended post angle now requires the actual first line written out
- Added rule: be specific about who is struggling (not just "law firms")

https://claude.ai/code/session_017SxFetPG4y78gpqvkF17Yo
…ment

daily_collector.workflow.json:
- Rewrote Keyword Match + Rule Score node inline code to match the
  updated config/keywords.json: new keyword lists, removed low-intent
  terms, added negative keyword hard disqualifier, added min content
  length (80 chars) hard disqualifier
- Updated scoring to match config/scoring.json v1.1: threshold 4
  (was 3), +1 dual_match_bonus when brand keyword + pain phrase both
  match, +1 specificity_bonus for intake_handoff/bankruptcy_operations/
  legal_ops_leadership/career_elevation clusters
- Attached disqualify_reason field for auditability
- Updated classifier inline prompt to include vendor-blog downgrade
  rule (score 1-2 for press releases/announcements/academic content)
  and added rule_score to classifier context
- Added rule_score column to Prepare Sheet Row output for audit
  visibility in Google Sheets

daily_digest.workflow.json:
- Changed cron from 7:20 AM to 7:30 AM — wider buffer against slow
  Apify runs that could cause digest to read incomplete signal data
- Updated Filter Today's Signals to sort by score descending so
  digest model sees strongest signals first
- Added score field to Build Digest Input formatted lines
- Updated Premium Digest inline prompt to match revised
  prompts/summarize_daily_digest.md: now requires who-is-struggling
  identification, consulting offer validation per BizDeedz signal,
  specific audience + core tension + opening line for content ideas,
  and action step for opportunity signals

weekly_report.workflow.json:
- Added IF — Signals Exist This Week guard node after
  Filter + Format Week Signals. If zero signals in window, synthesis
  is skipped entirely — prevents LLM from generating hallucinated
  output against an empty input. False branch terminates cleanly.

https://claude.ai/code/session_017SxFetPG4y78gpqvkF17Yo
config/offer-map.json (new):
- Maps keyword clusters to consulting offers
- Primary offer: AI Readiness Audit for Law Firms
- Trigger clusters: knowledge_management, adoption, intake_handoff,
  law_firm_operations, bankruptcy_operations
- Trigger signal types: buyer pain, workflow gap, adoption barrier
- Includes Lead_Radar sheet schema scaffold for Phase 2

daily_collector.workflow.json:
- Added Lead Radar — Tag Offer node between Parse Classification
  and IF — Score >= 4 (Keep)
- Evaluates four criteria: score>=4, lane=BizDeedz/Both,
  signal_type in trigger set, keyword_cluster overlaps trigger list
- Sets lead_radar=true and recommended_offer='AI Readiness Audit
  for Law Firms' when all criteria are met
- Updated Prepare Sheet Row to include lead_radar and
  recommended_offer columns in Google Sheets output
- Renamed Google Sheets append node for clarity

https://claude.ai/code/session_017SxFetPG4y78gpqvkF17Yo
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants