bmad-plus 0.4.0 → 0.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. package/CHANGELOG.md +29 -0
  2. package/README.md +13 -56
  3. package/osint-agent-package/skills/bmad-osint-investigate/osint/SKILL.md +452 -452
  4. package/osint-agent-package/skills/bmad-osint-investigate/osint/assets/dossier-template.md +116 -116
  5. package/osint-agent-package/skills/bmad-osint-investigate/osint/references/content-extraction.md +100 -100
  6. package/osint-agent-package/skills/bmad-osint-investigate/osint/references/platforms.md +130 -130
  7. package/osint-agent-package/skills/bmad-osint-investigate/osint/references/psychoprofile.md +69 -69
  8. package/osint-agent-package/skills/bmad-osint-investigate/osint/references/tools.md +281 -281
  9. package/osint-agent-package/skills/bmad-osint-investigate/osint/scripts/mcp-client.py +136 -136
  10. package/package.json +1 -1
  11. package/readme-international/README.de.md +1 -1
  12. package/readme-international/README.es.md +1 -1
  13. package/readme-international/README.fr.md +1 -1
  14. package/tools/cli/commands/install.js +88 -59
  15. package/tools/cli/i18n.js +501 -0
  16. package/oveanet-pack/animated-website/DEPLOYMENT.md +0 -104
  17. package/oveanet-pack/animated-website/README.md +0 -63
  18. package/oveanet-pack/animated-website/agent.yaml +0 -63
  19. package/oveanet-pack/seo-audit-360/DEPLOYMENT.md +0 -115
  20. package/oveanet-pack/seo-audit-360/README.md +0 -66
  21. package/oveanet-pack/seo-audit-360/agent.yaml +0 -70
  22. package/oveanet-pack/seo-audit-360/extensions/google-analytics/EXTENSION.md +0 -79
  23. package/oveanet-pack/seo-audit-360/extensions/google-analytics/ga4_client.py +0 -200
  24. package/oveanet-pack/seo-audit-360/extensions/google-analytics/requirements.txt +0 -4
  25. package/oveanet-pack/seo-audit-360/extensions/google-search-console/EXTENSION.md +0 -109
  26. package/oveanet-pack/seo-audit-360/extensions/google-search-console/gsc_client.py +0 -186
  27. package/oveanet-pack/seo-audit-360/extensions/google-search-console/requirements.txt +0 -4
  28. package/oveanet-pack/seo-audit-360/hooks/seo-check.sh +0 -95
  29. package/oveanet-pack/seo-audit-360/requirements.txt +0 -14
  30. package/oveanet-pack/seo-audit-360/scripts/__pycache__/seo_crawl.cpython-314.pyc +0 -0
  31. package/oveanet-pack/seo-audit-360/scripts/__pycache__/seo_parse.cpython-314.pyc +0 -0
  32. package/oveanet-pack/seo-audit-360/scripts/install.ps1 +0 -53
  33. package/oveanet-pack/seo-audit-360/scripts/install.sh +0 -48
  34. package/oveanet-pack/seo-audit-360/scripts/seo_apis.py +0 -464
  35. package/oveanet-pack/seo-audit-360/scripts/seo_crawl.py +0 -282
  36. package/oveanet-pack/seo-audit-360/scripts/seo_fetch.py +0 -231
  37. package/oveanet-pack/seo-audit-360/scripts/seo_parse.py +0 -255
  38. package/oveanet-pack/seo-audit-360/scripts/seo_report.py +0 -403
  39. package/oveanet-pack/seo-audit-360/scripts/seo_screenshot.py +0 -202
  40. package/oveanet-pack/seo-audit-360/tests/__pycache__/test_crawl.cpython-314-pytest-9.0.2.pyc +0 -0
  41. package/oveanet-pack/seo-audit-360/tests/__pycache__/test_parse.cpython-314-pytest-9.0.2.pyc +0 -0
  42. package/oveanet-pack/seo-audit-360/tests/fixtures/sample_page.html +0 -62
  43. package/oveanet-pack/seo-audit-360/tests/test_apis.py +0 -75
  44. package/oveanet-pack/seo-audit-360/tests/test_crawl.py +0 -121
  45. package/oveanet-pack/seo-audit-360/tests/test_fetch.py +0 -70
  46. package/oveanet-pack/seo-audit-360/tests/test_parse.py +0 -184
  47. package/oveanet-pack/universal-backup/DEPLOYMENT.md +0 -80
  48. package/oveanet-pack/universal-backup/README.md +0 -58
  49. package/oveanet-pack/universal-backup/agent.yaml +0 -45
  50. /package/{oveanet-pack/animated-website/agent → src/bmad-plus/agents/pack-animated}/animated-website-agent.md +0 -0
  51. /package/{oveanet-pack/animated-website → src/bmad-plus/agents/pack-animated}/templates/animated-website-workflow.md +0 -0
  52. /package/{oveanet-pack/universal-backup/agent → src/bmad-plus/agents/pack-backup}/backup-agent.md +0 -0
  53. /package/{oveanet-pack/universal-backup → src/bmad-plus/agents/pack-backup}/templates/backup-workflow.md +0 -0
  54. /package/{oveanet-pack/seo-audit-360 → src/bmad-plus/agents/pack-seo}/SKILL.md +0 -0
  55. /package/{oveanet-pack/seo-audit-360 → src/bmad-plus/agents/pack-seo}/checklist.md +0 -0
  56. /package/{oveanet-pack/seo-audit-360 → src/bmad-plus/agents/pack-seo}/pagespeed-playbook.md +0 -0
  57. /package/{oveanet-pack/seo-audit-360 → src/bmad-plus/agents/pack-seo}/ref/audit-schema.json +0 -0
  58. /package/{oveanet-pack/seo-audit-360 → src/bmad-plus/agents/pack-seo}/ref/cwv-thresholds.md +0 -0
  59. /package/{oveanet-pack/seo-audit-360 → src/bmad-plus/agents/pack-seo}/ref/eeat-criteria.md +0 -0
  60. /package/{oveanet-pack/seo-audit-360 → src/bmad-plus/agents/pack-seo}/ref/geo-signals.md +0 -0
  61. /package/{oveanet-pack/seo-audit-360 → src/bmad-plus/agents/pack-seo}/ref/hreflang-rules.md +0 -0
  62. /package/{oveanet-pack/seo-audit-360 → src/bmad-plus/agents/pack-seo}/ref/quality-gates.md +0 -0
  63. /package/{oveanet-pack/seo-audit-360 → src/bmad-plus/agents/pack-seo}/ref/schema-catalog.md +0 -0
  64. /package/{oveanet-pack/seo-audit-360 → src/bmad-plus/agents/pack-seo}/ref/schema-templates.json +0 -0
  65. /package/{oveanet-pack/seo-audit-360/agent → src/bmad-plus/agents/pack-seo}/seo-chief.md +0 -0
  66. /package/{oveanet-pack/seo-audit-360/agent → src/bmad-plus/agents/pack-seo}/seo-judge.md +0 -0
  67. /package/{oveanet-pack/seo-audit-360/agent → src/bmad-plus/agents/pack-seo}/seo-scout.md +0 -0
  68. /package/{oveanet-pack/seo-audit-360 → src/bmad-plus/agents/pack-seo}/templates/seo-audit-workflow.md +0 -0
@@ -1,130 +1,130 @@
1
- # Platform-Specific Extraction Guide
2
-
3
- ## LinkedIn
4
-
5
- **Extract:** headline, positions (title, company, duration, description), education, summary, skills, location, pronouns, follower/connection count.
6
-
7
- **Finding profiles - URL patterns to try:**
8
- - /in/firstnamelastname
9
- - /in/firstname-lastname
10
- - /in/flastname
11
- - /in/lastname (if unique enough)
12
-
13
- **Search patterns:**
14
- - Brave: `site:linkedin.com "First Last" company`
15
- - Parallel: `"First Last" LinkedIn profile company city`
16
-
17
- **Key signals:**
18
- - Gaps between positions = career breaks
19
- - "Co-founder" vs "Founder" vs "Partner" = different ownership levels
20
- - Location changes between roles = relocation history
21
- - Short tenures (<1yr) = fired, bad fit, or stepping stone
22
-
23
- ## Instagram
24
-
25
- **Extract:** bio, follower/following ratio, post count/frequency, captions, hashtags, engagement, highlights count.
26
-
27
- **Engagement rate:** (avg likes + comments) / followers * 100
28
- - >6% = close friends/niche, 3-6% = good, 1-3% = average, <1% = bots
29
-
30
- **Style signals:**
31
- - Minimal captions = private personality
32
- - Film photography hashtags = aesthetic sensibility
33
- - No selfies = introverted
34
- - High highlights count + low posts = active stories user
35
-
36
- ## Facebook
37
-
38
- **Extract (via Bright Data only):** name, bio/intro, follower count, location, workplace, education, linked Instagram, website, recent public posts.
39
-
40
- **URL patterns:**
41
- - facebook.com/{username}
42
- - facebook.com/share/{id} (mobile share links - resolve to profile)
43
- - facebook.com/profile.php?id={numeric_id}
44
-
45
- ## Telegram
46
-
47
- **Extract:** profile bio/title (t.me/{user}), channel posts (t.me/s/{channel}).
48
-
49
- **Writing analysis goldmine:**
50
- - Posts usually unedited = authentic voice
51
- - Posting times = timezone/work patterns
52
- - Emoji patterns = personality markers
53
- - Topic clusters = real vs performative interests
54
- - Forwarded from = what they read/follow
55
-
56
- ## YouTube
57
-
58
- **Extract:** channel name, handle, subscriber count, video count, upload frequency, about/description, top videos by views, playlist structure.
59
-
60
- **Finding channels:**
61
- - Brave: `site:youtube.com "<Name>" channel`
62
- - Exa: `exa.sh search "<Name> youtube"`
63
- - Check LinkedIn/Instagram bios for YouTube links
64
-
65
- **Key signals:**
66
- - Upload frequency = discipline, commitment to topic
67
- - Subscriber/view ratio = audience quality
68
- - Comment engagement = community building skills
69
- - Video titles style = marketing/clickbait vs informative
70
- - Playlist structure = how they organize knowledge
71
- - Collaborations = social graph in their niche
72
-
73
- **Transcript extraction = HIGHEST PRIORITY.**
74
- See `references/content-extraction.md`. 3-5 transcripts minimum when channel found.
75
-
76
- ## Podcasts / Audio
77
-
78
- **Finding appearances:**
79
- - Brave: `"<Name>" podcast interview guest`
80
- - Exa: `exa.sh search "<Name> podcast episode"`
81
-
82
- **Key signals:**
83
- - Personal questions from host → origin story, failures, mentors
84
- - Cross-reference claims in podcast vs LinkedIn (people exaggerate on podcasts too, but differently)
85
- - Guest on niche podcasts = real expertise; guest on general podcasts = self-promotion
86
-
87
- ## TikTok
88
-
89
- **Extract:** username, bio, follower/following count, total likes, video count, top videos by views, hashtags used, engagement rate.
90
-
91
- **Finding accounts:**
92
- - Brave: `site:tiktok.com "@username" OR "Name"`
93
- - Apify: `clockworks/tiktok-user-search-scraper` with keywords
94
- - Check Instagram/YouTube bios for TikTok links
95
-
96
- **URL patterns:**
97
- - tiktok.com/@username
98
- - tiktok.com/@username/video/{id}
99
-
100
- **Key signals:**
101
- - Short-form video = unfiltered personality (harder to fake than LinkedIn)
102
- - Duets/stitches = who they interact with (social graph)
103
- - Sound choices = cultural references, generation markers
104
- - Comment replies = engagement style, how they handle criticism
105
- - Posting frequency = discipline, content strategy vs impulse
106
-
107
- **Style analysis:**
108
- - Face-to-camera = confident, extroverted
109
- - Voiceover only = introverted or analytical
110
- - Trending sounds = follower mentality
111
- - Original audio = thought leader / creator
112
- - High production = professional content, possible team
113
-
114
- ## Google Maps / Business Listings
115
-
116
- **Extract:** business name, address, phone, website, hours, reviews, rating, owner responses.
117
-
118
- **OSINT value:**
119
- - Owner responses to reviews = writing style, conflict resolution patterns
120
- - Business address = physical location confirmation
121
- - Multiple businesses at same address = related entities
122
- - Review timeline = business lifecycle
123
-
124
- ## Industry Sources (Russian market)
125
- - AdIndex.ru - ad industry news, appointments, interviews
126
- - Sostav.ru - marketing industry portal
127
- - GlobMSK.ru - Moscow business directory with bios
128
- - Kommersant.ru - business newspaper, rankings
129
- - Forbes.ru - profiles, lists
130
- - ConferenceCast.tv - speaker profiles with video
1
+ # Platform-Specific Extraction Guide
2
+
3
+ ## LinkedIn
4
+
5
+ **Extract:** headline, positions (title, company, duration, description), education, summary, skills, location, pronouns, follower/connection count.
6
+
7
+ **Finding profiles - URL patterns to try:**
8
+ - /in/firstnamelastname
9
+ - /in/firstname-lastname
10
+ - /in/flastname
11
+ - /in/lastname (if unique enough)
12
+
13
+ **Search patterns:**
14
+ - Brave: `site:linkedin.com "First Last" company`
15
+ - Parallel: `"First Last" LinkedIn profile company city`
16
+
17
+ **Key signals:**
18
+ - Gaps between positions = career breaks
19
+ - "Co-founder" vs "Founder" vs "Partner" = different ownership levels
20
+ - Location changes between roles = relocation history
21
+ - Short tenures (<1yr) = fired, bad fit, or stepping stone
22
+
23
+ ## Instagram
24
+
25
+ **Extract:** bio, follower/following ratio, post count/frequency, captions, hashtags, engagement, highlights count.
26
+
27
+ **Engagement rate:** (avg likes + comments) / followers * 100
28
+ - >6% = close friends/niche, 3-6% = good, 1-3% = average, <1% = bots
29
+
30
+ **Style signals:**
31
+ - Minimal captions = private personality
32
+ - Film photography hashtags = aesthetic sensibility
33
+ - No selfies = introverted
34
+ - High highlights count + low posts = active stories user
35
+
36
+ ## Facebook
37
+
38
+ **Extract (via Bright Data only):** name, bio/intro, follower count, location, workplace, education, linked Instagram, website, recent public posts.
39
+
40
+ **URL patterns:**
41
+ - facebook.com/{username}
42
+ - facebook.com/share/{id} (mobile share links - resolve to profile)
43
+ - facebook.com/profile.php?id={numeric_id}
44
+
45
+ ## Telegram
46
+
47
+ **Extract:** profile bio/title (t.me/{user}), channel posts (t.me/s/{channel}).
48
+
49
+ **Writing analysis goldmine:**
50
+ - Posts usually unedited = authentic voice
51
+ - Posting times = timezone/work patterns
52
+ - Emoji patterns = personality markers
53
+ - Topic clusters = real vs performative interests
54
+ - Forwarded from = what they read/follow
55
+
56
+ ## YouTube
57
+
58
+ **Extract:** channel name, handle, subscriber count, video count, upload frequency, about/description, top videos by views, playlist structure.
59
+
60
+ **Finding channels:**
61
+ - Brave: `site:youtube.com "<Name>" channel`
62
+ - Exa: `exa.sh search "<Name> youtube"`
63
+ - Check LinkedIn/Instagram bios for YouTube links
64
+
65
+ **Key signals:**
66
+ - Upload frequency = discipline, commitment to topic
67
+ - Subscriber/view ratio = audience quality
68
+ - Comment engagement = community building skills
69
+ - Video titles style = marketing/clickbait vs informative
70
+ - Playlist structure = how they organize knowledge
71
+ - Collaborations = social graph in their niche
72
+
73
+ **Transcript extraction = HIGHEST PRIORITY.**
74
+ See `references/content-extraction.md`. 3-5 transcripts minimum when channel found.
75
+
76
+ ## Podcasts / Audio
77
+
78
+ **Finding appearances:**
79
+ - Brave: `"<Name>" podcast interview guest`
80
+ - Exa: `exa.sh search "<Name> podcast episode"`
81
+
82
+ **Key signals:**
83
+ - Personal questions from host → origin story, failures, mentors
84
+ - Cross-reference claims in podcast vs LinkedIn (people exaggerate on podcasts too, but differently)
85
+ - Guest on niche podcasts = real expertise; guest on general podcasts = self-promotion
86
+
87
+ ## TikTok
88
+
89
+ **Extract:** username, bio, follower/following count, total likes, video count, top videos by views, hashtags used, engagement rate.
90
+
91
+ **Finding accounts:**
92
+ - Brave: `site:tiktok.com "@username" OR "Name"`
93
+ - Apify: `clockworks/tiktok-user-search-scraper` with keywords
94
+ - Check Instagram/YouTube bios for TikTok links
95
+
96
+ **URL patterns:**
97
+ - tiktok.com/@username
98
+ - tiktok.com/@username/video/{id}
99
+
100
+ **Key signals:**
101
+ - Short-form video = unfiltered personality (harder to fake than LinkedIn)
102
+ - Duets/stitches = who they interact with (social graph)
103
+ - Sound choices = cultural references, generation markers
104
+ - Comment replies = engagement style, how they handle criticism
105
+ - Posting frequency = discipline, content strategy vs impulse
106
+
107
+ **Style analysis:**
108
+ - Face-to-camera = confident, extroverted
109
+ - Voiceover only = introverted or analytical
110
+ - Trending sounds = follower mentality
111
+ - Original audio = thought leader / creator
112
+ - High production = professional content, possible team
113
+
114
+ ## Google Maps / Business Listings
115
+
116
+ **Extract:** business name, address, phone, website, hours, reviews, rating, owner responses.
117
+
118
+ **OSINT value:**
119
+ - Owner responses to reviews = writing style, conflict resolution patterns
120
+ - Business address = physical location confirmation
121
+ - Multiple businesses at same address = related entities
122
+ - Review timeline = business lifecycle
123
+
124
+ ## Industry Sources (Russian market)
125
+ - AdIndex.ru - ad industry news, appointments, interviews
126
+ - Sostav.ru - marketing industry portal
127
+ - GlobMSK.ru - Moscow business directory with bios
128
+ - Kommersant.ru - business newspaper, rankings
129
+ - Forbes.ru - profiles, lists
130
+ - ConferenceCast.tv - speaker profiles with video
@@ -1,69 +1,69 @@
1
- # Psychoprofile Construction
2
-
3
- ## Core Principle
4
- Deduce from BEHAVIOR, never assume. Every trait needs cited evidence.
5
-
6
- ## MBTI Assessment
7
-
8
- ### E vs I (Extraversion / Introversion)
9
- E markers: high posting frequency, "we/let's/together", conferences, large audience
10
- I markers: low posting, "I noticed/I tried", few appearances, small engaged audience
11
-
12
- ### S vs N (Sensing / Intuition)
13
- S markers: concrete examples, numbers, step-by-step, linear career, photos of things
14
- N markers: cross-domain connections, trend predictions, metaphors, career pivots
15
-
16
- ### T vs F (Thinking / Feeling)
17
- T markers: "metrics/ROI/optimization", impersonal analysis, low emoji
18
- F markers: "I understand/that's hard", vulnerability, warm emoji (❤️ 🤗 ✨)
19
-
20
- ### J vs P (Judging / Perceiving)
21
- J markers: regular schedule, structured content, long tenures, goals
22
- P markers: irregular posting, spontaneous content, frequent changes, process-oriented
23
-
24
- ### Confidence Levels
25
- - High: 10+ data points across 3+ sources
26
- - Medium: 5-10 data points across 2+ sources
27
- - Low: <5 data points or single source
28
-
29
- ## Big Five Alternative (OCEAN)
30
- - Openness: career diversity, travel, arts, experimental content
31
- - Conscientiousness: posting regularity, career progression, structured writing
32
- - Extraversion: social media activity, public speaking, collaboration
33
- - Agreeableness: language warmth, conflict avoidance, community focus
34
- - Neuroticism: hedging, anxiety markers, perfectionism
35
-
36
- ## Source Priority for Psychoprofile
37
-
38
- Ranked by signal quality (best → worst):
39
- 1. **YouTube transcripts / podcast interviews** — unscripted, long-form, authentic voice
40
- 2. **Telegram messages** — unfiltered daily communication
41
- 3. **Blog posts / articles** — edited but personal voice
42
- 4. **Instagram captions** — curated but with personality leaks
43
- 5. **LinkedIn posts** — performative, lowest signal-to-noise
44
- 6. **Conference talks** — scripted but body language cues in descriptions
45
-
46
- If YouTube channel exists with 5+ videos — it is the PRIMARY psychoprofile source.
47
- Extract 3-5 transcripts before attempting MBTI assessment.
48
-
49
- ## Writing Style Quantification
50
- - Average sentence length (short <10, medium 10-20, long 20+)
51
- - Emoji density (per 100 words)
52
- - Self-reference rate (I/me per 100 words)
53
- - Hedge word frequency (maybe, perhaps, possibly)
54
- - Language switching patterns (bilingual profiles)
55
- - What they DON'T write about = privacy boundaries
56
-
57
- ## Values Deduction (from actions, not words)
58
- - What they create → what they value
59
- - What they share/forward → community identity
60
- - Career trajectory → money vs impact vs status vs freedom
61
- - Platform choices → privacy tolerance, tech savviness
62
- - What they avoid → boundaries
63
-
64
- ## Personal Data Rules
65
- - Zodiac: ONLY if birth date CONFIRMED (never guess)
66
- - Family: only CONFIRMED info (photos, bios mentioning kids)
67
- - Pets: usually visible in Instagram stories
68
- - Relationship: only if explicitly stated
69
- - Never speculate on family structure
1
+ # Psychoprofile Construction
2
+
3
+ ## Core Principle
4
+ Deduce from BEHAVIOR, never assume. Every trait needs cited evidence.
5
+
6
+ ## MBTI Assessment
7
+
8
+ ### E vs I (Extraversion / Introversion)
9
+ E markers: high posting frequency, "we/let's/together", conferences, large audience
10
+ I markers: low posting, "I noticed/I tried", few appearances, small engaged audience
11
+
12
+ ### S vs N (Sensing / Intuition)
13
+ S markers: concrete examples, numbers, step-by-step, linear career, photos of things
14
+ N markers: cross-domain connections, trend predictions, metaphors, career pivots
15
+
16
+ ### T vs F (Thinking / Feeling)
17
+ T markers: "metrics/ROI/optimization", impersonal analysis, low emoji
18
+ F markers: "I understand/that's hard", vulnerability, warm emoji (❤️ 🤗 ✨)
19
+
20
+ ### J vs P (Judging / Perceiving)
21
+ J markers: regular schedule, structured content, long tenures, goals
22
+ P markers: irregular posting, spontaneous content, frequent changes, process-oriented
23
+
24
+ ### Confidence Levels
25
+ - High: 10+ data points across 3+ sources
26
+ - Medium: 5-10 data points across 2+ sources
27
+ - Low: <5 data points or single source
28
+
29
+ ## Big Five Alternative (OCEAN)
30
+ - Openness: career diversity, travel, arts, experimental content
31
+ - Conscientiousness: posting regularity, career progression, structured writing
32
+ - Extraversion: social media activity, public speaking, collaboration
33
+ - Agreeableness: language warmth, conflict avoidance, community focus
34
+ - Neuroticism: hedging, anxiety markers, perfectionism
35
+
36
+ ## Source Priority for Psychoprofile
37
+
38
+ Ranked by signal quality (best → worst):
39
+ 1. **YouTube transcripts / podcast interviews** — unscripted, long-form, authentic voice
40
+ 2. **Telegram messages** — unfiltered daily communication
41
+ 3. **Blog posts / articles** — edited but personal voice
42
+ 4. **Instagram captions** — curated but with personality leaks
43
+ 5. **LinkedIn posts** — performative, lowest signal-to-noise
44
+ 6. **Conference talks** — scripted but body language cues in descriptions
45
+
46
+ If YouTube channel exists with 5+ videos — it is the PRIMARY psychoprofile source.
47
+ Extract 3-5 transcripts before attempting MBTI assessment.
48
+
49
+ ## Writing Style Quantification
50
+ - Average sentence length (short <10, medium 10-20, long 20+)
51
+ - Emoji density (per 100 words)
52
+ - Self-reference rate (I/me per 100 words)
53
+ - Hedge word frequency (maybe, perhaps, possibly)
54
+ - Language switching patterns (bilingual profiles)
55
+ - What they DON'T write about = privacy boundaries
56
+
57
+ ## Values Deduction (from actions, not words)
58
+ - What they create → what they value
59
+ - What they share/forward → community identity
60
+ - Career trajectory → money vs impact vs status vs freedom
61
+ - Platform choices → privacy tolerance, tech savviness
62
+ - What they avoid → boundaries
63
+
64
+ ## Personal Data Rules
65
+ - Zodiac: ONLY if birth date CONFIRMED (never guess)
66
+ - Family: only CONFIRMED info (photos, bios mentioning kids)
67
+ - Pets: usually visible in Instagram stories
68
+ - Relationship: only if explicitly stated
69
+ - Never speculate on family structure