Migrate all repos into monorepo context folders

Bahn: aisupport, Analyse-O2C-C2S, awesome-bahn-mcp-servers, beam-mcp,
      Confluence_Bot, db-planet-mcp-server, O2C-Harness, project-audit,
      Projekt-KIQ-HP, teamlandkarte-mcp
Dhive: Jury-Voting
Privat: CV, NoteGraph (NOTE: NoteGraph needs complete redo after consolidation)
Shared: AI-Orchestrator, OrgMyLife, power_skills_and_more
Shared/references: symphony (read-only)

Bahn repos remain available as independent remotes - this monorepo
pulls them in via subtree, the originals are untouched.
This commit is contained in:
2026-06-30 20:39:52 +02:00
parent 2f2b295531
commit a5f8fb49ab
1717 changed files with 447332 additions and 0 deletions
+2
View File
@@ -0,0 +1,2 @@
node_modules/
.vscode/
@@ -0,0 +1,13 @@
{
"enabled": true,
"name": "End-of-Day SPEC Review",
"description": "Triggers a review of SPEC.md to ensure it reflects the current state of the project after a day of work together. Click to run at the end of a session.",
"version": "1",
"when": {
"type": "userTriggered"
},
"then": {
"type": "askAgent",
"prompt": "Read SPEC.md and compare it against the actual current state of the project (check which files exist, what's implemented, what's pending). Update the 'Current State' section to accurately reflect reality. If any conventions, rules, or architectural decisions changed during today's session, update those sections too. Present a brief summary of what changed."
}
}
@@ -0,0 +1,140 @@
---
name: consultant-profile
description: Generates tailored consultant profiles (one-pager) from knowledge base data, matched against a specific RFP or project description.
activation: manual
---
# consultant-profile
Generates consultant/personnel profiles tailored to a specific RFP (Request for Proposal) or project description. Produces an HTML one-pager optimized for A4 landscape PDF export, using the d-hive Corporate Design (white background, black accents, neon green highlights). Outputs to `output/profiles/`.
## Activation
Activated by user request with an RFP or project context. Example triggers:
- "create a consultant profile for this RFP"
- "I need a personnel profile for an offer"
- "generate a Berater-Profil for [project]"
- "write a one-pager for [client]"
## Inputs
- **RFP / Leistungsbeschreibung** (required): The requirements document or project description to match against. Used to select relevant skills, projects, and experience.
- **Person ID** (optional): Which profile to generate for. Defaults to the primary profile.
- **Output filename** (optional): Custom filename. Defaults to `<person-id>-berater-profil`.
- **Role in project** (optional): The specific role the person will fill (e.g., "Projektleitung, KI-Beratung & Entwicklung, Workshop-Moderation").
## Workflow
### 1. Load person profile
- Read the target person profile from `kb/profiles/<person-id>.yaml`
- Read `kb/graph-index.yaml` to discover related entities
- Load all referenced entities: skills, experiences, projects, certifications, organizations
### 2. Analyze RFP requirements
- Extract required competencies from the RFP (fachliche, methodische, sonstige)
- Identify required references/project experience
- Note any specific constraints (availability, location, certifications)
### 3. Match and prioritize
- Map person's skills to RFP requirements — highlight direct matches
- Select the most relevant project experiences (max 5) that demonstrate required competencies
- Prioritize: direct match to RFP context > recent > high-impact
- Flag gaps where the person may not fully match (for user review)
### 4. Generate HTML one-pager
Structure (A4 landscape, 3-column layout):
**Header:**
- Profile photo (circular, from project root)
- Name + Job title ("Mensch-Maschine-Moderator")
- Contact meta (location, website, LinkedIn, email)
- d-hive logo (same height as photo)
**Kurzprofil:**
- 2-3 sentence summary emphasizing relevance to the RFP
**Column 1 — Kompetenzen:**
- Fachliche Kompetenzen (skill tags, highlighted = direct RFP match)
- Methodische Kompetenzen (skill tags)
- Zertifizierungen (checklist)
**Column 2 — Projekterfahrung:**
- Up to 5 reference boxes (most relevant first, "featured" styling for top matches)
- Publikationen section below
**Column 3 — Werdegang & Company:**
- Beruflicher Werdegang & Ausbildung (2-column sub-grid)
- Publikationen (if not in column 2)
- Data Hive Cassel company box (green top-border)
**Stats Bar (footer):**
- Key numbers in neon green on black background
### 5. Apply Corporate Design
- **Background:** White (#ffffff)
- **Text:** Near-black (#1a1a1a)
- **Accent/Highlights:** Neon green (#39ff14 / #2bcc0f)
- **Cards:** Light gray (#f6f6f6) with subtle border
- **Featured elements:** Green left-border (3px)
- **Section titles:** Neon green, uppercase, small
- **Stats bar:** Black background, neon green numbers (only large dark element)
- **Skill tags highlighted:** White background, green border
- **Logo:** `assets/d-Hive_logo_darkText_transparent_crop.png` (for white background)
- **Photo:** `assets/230823_Einfachbahn_Andre-brillenlos-hochformat.png` (circular crop)
### 6. Write outputs
- Write HTML to `output/profiles/<filename>.html`
- Optionally write a Markdown summary to `output/profiles/<filename>.md`
- Present to user for review
## Output
- HTML one-pager: `output/profiles/<filename>.html` — print as PDF via browser (Ctrl+P, landscape, no margins)
- Optional Markdown: `output/profiles/<filename>.md` — quick-reference version
## Corporate Design Reference
The d-hive CD uses:
- **Colors:** Black (#0a0a0a) + Neon Green (#39ff14)
- **On white backgrounds:** Use black for structure, neon green for highlights/accents
- **On dark backgrounds:** Use neon green for text highlights
- **Logo variants:** `assets/d-Hive_logo_darkText_transparent_crop.png` (light bg), `assets/d-Hive_logo_transparent_crop.png` (dark bg)
- **Typography:** Inter (Google Fonts), clean and modern
- **Principle:** Neon green = signal/focus, black = structure/anchor, white = breathing room
## Key Facts (for stats bar)
- 50+ Projekte
- 15+ Kunden
- 13+ Jahre KI-Erfahrung (erste ML-Publikation 2012)
- 60+ wissenschaftliche Veröffentlichungen, 2.000+ Zitationen
- 6 Live Use Cases (Projekt KIQ)
- 100% DSGVO & AI-Act konform
## Shared Modules
- `src/schemas/validate.ts` — Entity validation
- `src/schemas/types.ts` — TypeScript type definitions
- `src/io/yaml-utils.ts` — YAML serialization/deserialization
- `src/io/entity-files.ts` — Entity file read management
- `src/cv/relevance-selection.ts` — Relevance matching logic
## Rules and Constraints
1. **No fabrication** — only include information present in the knowledge base
2. **RFP-driven** — prioritize skills and experience that match the RFP requirements
3. **One page** — HTML must fit on a single A4 landscape page when printed
4. **CD compliance** — follow d-hive Corporate Design (black + neon green on white)
5. **Photo required** — always include the profile photo
6. **Logo required** — always include the d-hive logo at same height as photo
7. **No team stats** — profile is personal; don't include team-level metrics (e.g., "30+ Jahre Erfahrung im Team")
8. **Featured projects** — mark the 1-2 most relevant projects with green left-border
9. **Google Scholar link** — always link to the scholar profile in publications
10. **Print-optimized** — use @page CSS for clean PDF export, no overflow
+102
View File
@@ -0,0 +1,102 @@
---
name: cv-generate
description: Generates tailored CVs from knowledge base data, matched against a specific job posting.
activation: manual
---
# cv-generate
Generates tailored CVs from knowledge base data, matched against a specific job posting. Supports individual CVs and combined tandem CVs for job sharing applications. Outputs Markdown files to `output/cvs/`.
## Activation
Activated by user request with a job posting as input. Example triggers:
- "generate a CV for this job posting"
- "create a CV for [job title]"
- "apply to this position"
- "generate tandem CV for this role"
## Inputs
- **Job posting** (required): The job posting text or a file path to the posting. Used to determine which skills, experiences, and qualifications to emphasize.
- **Person ID** (optional): Which profile to generate a CV for. Defaults to the primary profile if only one exists.
- **Tandem ID** (optional): If provided, generates a full tandem application set (combined tandem CV + individual CVs for each partner).
- **Output filename prefix** (optional): Custom prefix for output files. Defaults to `<person-id>-<date>`.
## Workflow
### 1. Parse job posting
- Extract key requirements from the job posting: required skills, desired experience areas, qualifications, responsibilities, and keywords
- Identify the role title, organization, and domain for context
### 2. Load knowledge base data
- Read the target person profile from `kb/profiles/<person-id>.yaml`
- Read `kb/graph-index.yaml` to discover related entities
- Load all referenced experiences from `kb/experiences/`
- Load all referenced skills from `kb/skills/`
- Load all referenced projects from `kb/projects/`
- Load all referenced certifications from `kb/certifications/`
- Load referenced organizations from `kb/organizations/`
### 3. Select relevant content
- Use relevance selection logic (`src/cv/relevance-selection.ts`) to score and rank experiences, skills, and projects against the job posting requirements
- Select entries with non-empty intersection with posting requirements
- Order selected items by relevance: matching items appear before non-matching items
- Retain a minimal set of non-matching items for completeness where appropriate
### 4. Generate individual CV
- Apply the individual CV template (`templates/cv-individual.md`)
- Structure the CV with sections ordered by relevance to the posting
- Emphasize matching skills and experiences in descriptions
- Include only information present in the knowledge base — never fabricate content
- Write output to `output/cvs/<prefix>-individual.md`
### 5. Generate tandem CV (if tandem application)
- Load tandem entity from `kb/tandems/<tandem-id>.yaml`
- Load both partner profiles and their related entities
- Use tandem generation logic (`src/cv/tandem-generator.ts`) to produce the combined CV
- Show complementary qualifications, shared vision, and collaboration model
- Apply the tandem CV template (`templates/cv-tandem.md`)
- Write combined tandem CV to `output/cvs/<prefix>-tandem.md`
- Generate individual CVs for each partner tailored to the same posting
- Write partner CVs to `output/cvs/<prefix>-<partner-id>-individual.md`
### 6. Review and present output
- List all generated files with a brief summary of what each contains
- Highlight which skills and experiences were emphasized
- Note any gaps where the knowledge base lacked information relevant to the posting
## Output
- Individual CV: `output/cvs/<prefix>-individual.md`
- Tandem CV (if applicable): `output/cvs/<prefix>-tandem.md`
- Partner individual CVs (if tandem): `output/cvs/<prefix>-<partner-id>-individual.md`
## Rules and Constraints
1. **No fabrication** — only include information present in the knowledge base; never invent skills, experiences, or qualifications
2. **Relevance-driven ordering** — matching items always appear before non-matching items
3. **Tandem produces 3 documents** — a tandem application always generates exactly one combined tandem CV and one individual CV per partner
4. **Markdown output** — all CVs are output as Markdown suitable for conversion to PDF or DOCX
5. **Template-based** — use templates from `templates/` for consistent formatting
6. **Schema-validated sources** — only read from validated entity files in `kb/`
7. **Kebab-case output naming** — output file names use kebab-case
## Shared Modules
This skill depends on the following shared validation and utility modules:
- `src/schemas/validate.ts` — Entity validation (validate sources before generation)
- `src/schemas/types.ts` — TypeScript type definitions for all entity types
- `src/io/yaml-utils.ts` — YAML serialization/deserialization
- `src/io/entity-files.ts` — Entity file read management
## References
- `references/cv-formatting-guide.md` — formatting conventions for CV output
@@ -0,0 +1,135 @@
# CV Formatting Guide
Reference document for consistent CV formatting in generated output.
## Section Structure and Ordering
### Individual CV Sections
1. **Header** — Name, contact details, professional summary
2. **Professional Summary** — 24 sentence overview tailored to the target role
3. **Key Skills** — Grouped by category, most relevant to the posting listed first
4. **Professional Experience** — Reverse chronological, relevant roles expanded with achievements
5. **Projects** — Selected projects demonstrating relevant competencies
6. **Education** — Degrees and institutions
7. **Certifications** — Relevant certifications with issuer and date
8. **Languages** — Language proficiency levels
9. **Publications** — If applicable and relevant
### Tandem CV Sections
1. **Header** — Both partner names, "Job Sharing Tandem" label
2. **Tandem Introduction** — Shared vision and collaboration model
3. **Complementary Skills Overview** — How the partners' skills complement each other
4. **Joint Competencies** — Competencies the tandem brings together
5. **Partner A Profile** — Condensed individual profile (summary, key skills, top experiences)
6. **Partner B Profile** — Condensed individual profile (summary, key skills, top experiences)
7. **Combined Experience Timeline** — Merged chronological view of both partners' relevant experience
8. **Education & Certifications** — Combined list from both partners
## Formatting Conventions
### Dates
- Format: `MM/YYYY` (e.g., `04/2023`)
- Current/ongoing roles: `MM/YYYY present`
- Date ranges: `MM/YYYY MM/YYYY`
- Education with only years: `YYYY YYYY`
### Skills
- Group by category: Programming Languages, Frameworks, Methodologies, Soft Skills, Domain Knowledge
- Within each category, list most relevant to the posting first
- Use the skill name exactly as stored in the knowledge base
- Include skill level only when it adds value (e.g., "Python (expert)")
### Experiences
- Format: **Role Title** | Organization | Date Range
- Follow with 24 bullet points highlighting achievements and responsibilities
- Prioritize achievements that match the job posting requirements
- Use action verbs at the start of each bullet point
### Achievements
- Start with an action verb (Led, Developed, Implemented, Designed, Managed)
- Include quantifiable results where available
- Keep each bullet to one or two sentences
### Projects
- Format: **Project Name** — Brief description
- Include technologies used and outcome/impact
- Only include projects relevant to the target posting
### Certifications
- Format: **Certification Name** — Issuer, Date
- Include expiry date if applicable: `(expires MM/YYYY)`
### Languages
- Format: Language — Level (e.g., "German — Native", "English — Fluent")
## Tandem-Specific Formatting
### Tandem Header
```markdown
# [Partner A Name] & [Partner B Name]
## Job Sharing Tandem Application
### [Target Role Title]
```
### Complementary Skills Presentation
Present as a two-column comparison or paired list showing how skills complement:
```markdown
| Area | Partner A | Partner B |
|------|-----------|-----------|
| Technical Leadership | Cloud architecture, AI/ML | Data engineering, DevOps |
| Management | Strategic planning | Operational execution |
```
### Collaboration Model
Describe the working arrangement in 23 sentences covering:
- How responsibilities are divided
- Communication and handoff approach
- Availability model (e.g., split days, alternating weeks)
## Markdown Output Guidelines
### Document Structure
- Use `#` for the CV title (person name or tandem names)
- Use `##` for major sections (Professional Experience, Skills, etc.)
- Use `###` for subsections (individual roles, project entries)
- Use `---` horizontal rules to separate major sections visually
### Text Formatting
- **Bold** for role titles, company names, and section emphasis
- *Italic* for dates and supplementary context
- Unordered lists (`-`) for achievements and skill lists
- Tables for structured comparisons (tandem skills, language levels)
### Whitespace
- One blank line between sections
- No trailing whitespace
- End file with a single newline
### Metadata Block
Include a YAML front matter block at the top of each generated CV:
```markdown
---
generated: YYYY-MM-DD
person: <person-id>
posting: <brief posting identifier>
type: individual | tandem
---
```
@@ -0,0 +1,94 @@
---
name: interview-collect
description: Conducts focused interview sessions to collect and update knowledge in the personal knowledge base.
activation: manual
---
# interview-collect
Conducts focused interview sessions to collect and update knowledge in the personal knowledge base. Each session targets one topic area and asks up to 10 questions, writing collected data as YAML entity files.
## Activation
Activated by user request. Example triggers:
- "interview me"
- "collect knowledge"
- "let's do an interview session"
- "fill gaps in my profile"
## Inputs
- **Person ID** (optional): Which profile to interview for. Defaults to the primary profile if only one exists.
- **Topic area** (optional): A specific topic to focus on (e.g., a role, project, skill cluster). If not provided, the skill uses gap detection to choose the most valuable topic.
## Workflow
### 1. Load current state
- Read the target person profile from `kb/profiles/<person-id>.yaml`
- Read `kb/graph-index.yaml` to understand existing entities and relationships
- Read related entity files as needed for context
### 2. Detect gaps
- Use gap detection logic (`src/interview/gap-detection.ts`) to identify missing or incomplete attributes in the profile
- Prioritize gaps by importance: required fields first, then optional fields that improve completeness
- If the user specified a topic, scope gap detection to that topic area
### 3. Select session topic
- Choose ONE topic area for this session (e.g., a single role, a single project, a single skill cluster)
- Inform the user which topic area the session will cover and why
### 4. Conduct interview
- Ask focused questions one at a time, covering the selected topic area
- Maximum 10 questions per session — stop after 10 regardless of remaining gaps
- Adapt follow-up questions based on previous answers
- Accept "skip" or "I don't know" as valid responses — move to the next question
### 5. Detect conflicts
- Before persisting, use conflict detection logic (`src/interview/conflict-detection.ts`) to compare collected answers against existing data
- If conflicts are found: present both the existing value and the new value, ask the user which to keep
- Do not overwrite existing data without explicit user confirmation
### 6. Persist collected data
- Write new or updated entity files to the appropriate `kb/` subdirectory
- Use kebab-case file naming: `<entity-id>.yaml`
- Validate entities against schema before writing
- Update `kb/graph-index.yaml` with any new entities or relationships
### 7. Session summary
- Present a summary of what was collected and persisted
- List any remaining gaps that could be addressed in a future session
- Suggest the next topic area for a follow-up session
## Output
- New or updated YAML entity files in `kb/`
- Updated `kb/graph-index.yaml`
- Session summary with next-steps suggestion
## Shared Modules
This skill depends on the following shared validation and utility modules:
- `src/schemas/validate.ts` — Entity validation (validate before writing)
- `src/schemas/types.ts` — TypeScript type definitions for all entity types
- `src/io/yaml-utils.ts` — YAML serialization/deserialization
- `src/io/entity-files.ts` — Entity file read/write management
- `src/graph/index-manager.ts` — Graph index read/write and rebuild
## Rules and Constraints
1. **One topic per session** — do not mix unrelated topic areas in a single session
2. **Maximum 10 questions** — end the session after 10 questions even if gaps remain
3. **No fabrication** — only persist information explicitly provided by the user
4. **Conflict resolution required** — never silently overwrite existing data
5. **Schema validation** — validate all entities before writing to disk
6. **Kebab-case naming** — all entity file names use kebab-case
7. **Graph index sync** — update graph-index.yaml after every entity change
8. **Graceful interruption** — if the user stops early, persist whatever was collected so far
+95
View File
@@ -0,0 +1,95 @@
---
name: kb-review
description: Provides iterative knowledge base enhancement sessions with completeness scoring and prioritization.
activation: manual
---
# kb-review
Provides iterative knowledge base enhancement sessions. Calculates completeness scores per profile, identifies stale information, presents a prioritized review summary, and suggests areas for the next interview session and relationship additions for graph consistency.
## Activation
Activated by user request. Example triggers:
- "review my knowledge base"
- "what needs updating?"
- "run a KB review session"
- "check completeness of my profiles"
- "what's stale in my knowledge base?"
## Inputs
- **Person ID** (optional): Focus the review on a specific profile. If not provided, reviews all profiles.
- **Staleness threshold** (optional): Number of days since last modification to consider an entity stale. Defaults to 90 days.
## Workflow
### 1. Load all profiles and graph index
- Read all person profiles from `kb/profiles/`
- Read `kb/graph-index.yaml` to discover all entities and relationships
- Read entity files referenced by each profile (experiences, skills, organizations, projects, certifications, tandems)
### 2. Calculate completeness scores
- Use completeness scoring logic (`src/review/completeness-score.ts`) to compute a score per profile
- Score equals the ratio of filled attributes to total defined attributes, including relationship coverage
- A fully complete profile scores 1.0; an empty profile scores close to 0.0
### 3. Identify stale information
- Check the `modified` date on each entity file
- Flag entities where the time since last modification exceeds the staleness threshold
- Group stale entities by type and owning profile
### 4. Prioritize review areas
- Use prioritization logic (`src/review/prioritization.ts`) to rank entities
- Entities with lower completeness scores and older modification dates rank higher
- Required fields missing rank higher than optional fields missing
### 5. Present review summary
- Show per-profile completeness scores
- List stale entities grouped by profile
- Present the prioritized list of areas needing updates
- Highlight any broken references or graph inconsistencies found during loading
### 6. Suggest next interview topics
- Based on the prioritized list, recommend 1-3 topic areas for the next interview session
- Explain why each topic was selected (gap type, staleness, importance)
### 7. Recommend relationship additions
- Identify entities that exist but lack expected relationships in the graph index
- Suggest relationship additions that would improve graph consistency (e.g., a skill referenced in an experience but not linked to the person profile)
- Use valid relationship types: `has_skill`, `worked_at`, `collaborated_with`, `applied_for`, `partners_with`
## Output
- Review summary presented to the user (not written to a file)
- Prioritized list of areas needing updates
- Suggested interview topics for next session
- Recommended relationship additions
## Shared Modules
This skill depends on the following shared validation and utility modules:
- `src/schemas/validate.ts` — Entity validation (validate sources during review)
- `src/schemas/types.ts` — TypeScript type definitions for all entity types
- `src/io/yaml-utils.ts` — YAML serialization/deserialization
- `src/io/entity-files.ts` — Entity file read management
- `src/graph/index-manager.ts` — Graph index read and consistency checks
## Rules and Constraints
1. **Read-only** — this skill does not modify any entity files or the graph index; it only reads and reports
2. **No fabrication** — only report information derived from actual entity data
3. **Completeness formula** — score = filled attributes / total defined attributes (including relationship coverage)
4. **Staleness threshold** — default 90 days; configurable per invocation
5. **Prioritization** — lower completeness + older modification date = higher priority
6. **Valid relationship types only** — only suggest relationships from the defined set
7. **Schema-validated sources** — only read from validated entity files in `kb/`
8. **Actionable output** — every suggestion should be specific enough to act on in an interview session
@@ -0,0 +1,167 @@
---
name: linkedin-profile
description: Generates optimized LinkedIn profile content, content strategy, and performance tracking from the personal knowledge base.
activation: manual
---
# linkedin-profile
Generates optimized LinkedIn profile content from the knowledge base. Produces headline variants, About section, experience descriptions, a quarterly content strategy, and performance tracking reports. Outputs Markdown files to `output/linkedin/`.
## Activation
Activated by user request for LinkedIn profile optimization, content strategy, or tracking. Example triggers:
- "optimize my LinkedIn profile"
- "generate LinkedIn headline variants"
- "create a content strategy for Q3"
- "update my LinkedIn tracking"
- "write my LinkedIn About section"
- "generate experience descriptions for LinkedIn"
## Inputs
- **personId** (required): Reference to a Person entity ID in `kb/profiles/`. Defaults to the primary profile if only one exists.
- **emphasis** (optional): Direction for headline generation — `dual-role`, `ai-expert`, or `leadership`. Defaults to `dual-role`.
- **tone** (optional): Tone for the About section — `nahbar`, `fachlich`, or `inspirierend`. Defaults to `nahbar`.
- **includeStats** (optional): Whether to include concrete numbers in the About section. Defaults to `true`.
- **quarter** (optional): Target quarter for content strategy, e.g. `2026-Q3`. Required for content strategy workflow.
- **existingFormats** (optional): Existing content formats to integrate (e.g. `podcast`, `column`). Used in content strategy generation.
- **experienceIds** (optional): Specific experience IDs to generate descriptions for. If omitted, generates for all experiences.
- **keywords** (optional): SEO keywords to include in experience descriptions.
- **variants** (optional): Number of headline variants to generate. Defaults to `3`.
## Workflows
### 1. Profile Generation
Generates optimized texts for Headline, About section, and Experience descriptions.
#### 1.1 Load person profile
- Read the target person profile from `kb/profiles/<personId>.yaml`
- Read `kb/graph-index.yaml` to discover related entities
- Load referenced experiences from `kb/experiences/`
- Load referenced skills from `kb/skills/`
- Load referenced projects from `kb/projects/`
#### 1.2 Generate Headline
- Use headline generation logic (`src/linkedin/headline-generator.ts`)
- Generate multiple variants (default: 3) with different emphasis
- Ensure both roles (DB InfraGO + Data Hive Cassel) are represented
- Validate against 220-character limit
- Include differentiating elements and relevant keywords
#### 1.3 Generate About Section
- Use About generation logic (`src/linkedin/about-generator.ts`)
- Structure into sections: Hook, Mission, Expertise, CTA
- Ensure hook is compelling in first 2 lines (before "mehr anzeigen")
- Include concrete stats (60+ publications, 13+ years AI, 50+ projects)
- Name three core themes (Innovation/Technology, People/Culture, Responsibility)
- Validate against 2,600-character limit
#### 1.4 Generate Experience Descriptions
- Use experience generation logic (`src/linkedin/experience-generator.ts`)
- Focus on results and impact, not task descriptions
- Include relevant keywords for LinkedIn search
- Highlight measurable achievements
- Position DB InfraGO as primary role, Data Hive with founder achievements
- Frame JobSharing experiment as leadership innovation
- Position academic career as AI expertise foundation
#### 1.5 Write Profile Output
- Combine all generated sections into `output/linkedin/profile-optimized.md`
- Include validation status and generation date
- Present variants to user for selection and refinement
### 2. Content Strategy
Generates a structured content plan for a given quarter.
#### 2.1 Analyze profile and themes
- Read person profile and identify core expertise areas
- Map expertise to content theme clusters
- Identify existing content formats (podcast, column) for integration
#### 2.2 Generate strategy
- Use content strategy logic (`src/linkedin/content-strategy.ts`)
- Define posting frequency (2 posts per week)
- Create theme clusters with weighting (Innovation 40%, People 35%, Responsibility 25%)
- Generate weekly posting plan with concrete time slots
- Define engagement routine (5+ comments/week on thought leaders)
- Specify format mix (text, carousel, video, newsletter)
- Integrate existing formats (Podcast "Almost Intelligent", Column "Kniepunkt")
#### 2.3 Write Strategy Output
- Write generated strategy to `output/linkedin/content-strategy.md`
- Structure as quarterly template that can be updated
### 3. Tracking
Records LinkedIn metrics and generates performance reports.
#### 3.1 Record metrics
- Use tracking logic (`src/linkedin/tracking-manager.ts`)
- Store tracking entries as YAML entities in `kb/tracking/`
- Record profile KPIs (views, search appearances, connection requests)
- Record post KPIs (impressions, engagement rate, comments, reposts)
#### 3.2 Generate reports
- Calculate weekly reports with week-over-week comparison
- Calculate monthly trend analysis with growth metrics
- Mark best-practice posts (above-average engagement rate)
- Derive data-driven recommendations for content optimization
#### 3.3 Write Tracking Output
- Write generated report to `output/linkedin/tracking-report.md`
- Include weekly and monthly summaries
- Highlight top-performing content and recommendations
## Outputs
- **Profile document**: `output/linkedin/profile-optimized.md` — Headline variants, About section, Experience descriptions with validation status
- **Content strategy**: `output/linkedin/content-strategy.md` — Quarterly posting plan, theme clusters, engagement routine, format mix
- **Tracking report**: `output/linkedin/tracking-report.md` — Weekly/monthly metrics, trends, best practices, recommendations
## Shared Modules
This skill depends on the following shared validation and utility modules:
- `src/schemas/validate.ts` — Entity validation (validate sources before generation)
- `src/schemas/types.ts` — TypeScript type definitions for all entity types
- `src/io/yaml-utils.ts` — YAML serialization/deserialization
- `src/io/entity-files.ts` — Entity file read management
## Source Modules
The skill orchestrates the following LinkedIn-specific modules:
- `src/linkedin/headline-generator.ts` — Headline variant generation with keyword extraction
- `src/linkedin/about-generator.ts` — About section generation with structured sections
- `src/linkedin/experience-generator.ts` — Experience description generation with achievement focus
- `src/linkedin/content-strategy.ts` — Content strategy and posting plan generation
- `src/linkedin/tracking-manager.ts` — Metrics tracking, reporting, and trend analysis
- `src/linkedin/constraints.ts` — LinkedIn-specific constraint validation (character limits)
- `src/linkedin/types.ts` — TypeScript interfaces for all LinkedIn modules
## Rules and Constraints
1. **KB as source of truth** — all profile content is generated exclusively from knowledge base entities; never invent credentials, achievements, or stats
2. **Character limits enforced** — Headline max 220 characters, About max 2,600 characters; validated programmatically at generation time
3. **Dual-role representation** — Headline and About must represent both roles (DB InfraGO + Data Hive Cassel)
4. **Results over tasks** — Experience descriptions focus on impact and measurable outcomes, not job duties
5. **No jargon** — Headline and About must be understandable for a broad business audience
6. **Three core themes** — Content must map to Innovation/Technology, People/Culture, or Responsibility
7. **Markdown output** — all outputs as Markdown suitable for direct use
8. **Schema-validated sources** — only read from validated entity files in `kb/`
9. **Tracking as YAML entities** — metrics stored in `kb/tracking/` following KB conventions (kebab-case keys, ISO dates)
10. **Iterative refinement** — present generated content to user for feedback and allow interactive adjustments
@@ -0,0 +1,90 @@
---
name: talk-intro
description: Generates speaker introductions for talks and events in three length variants.
activation: manual
---
# talk-intro
Generates speaker introductions for talks and events. Produces three length variants (short, medium, long) adapted to the event context. Outputs Markdown files to `output/intros/`.
## Activation
Activated by user request with a talk topic and event context. Example triggers:
- "write a speaker intro for my talk on [topic]"
- "generate an introduction for [event]"
- "I need a speaker bio for [conference]"
- "create a talk introduction"
## Inputs
- **Talk topic** (required): The subject of the talk or presentation.
- **Event context** (required): The type of event — technical conference, business meeting, or academic setting. Used to adapt tone and emphasis.
- **Person ID** (optional): Which profile to generate the introduction for. Defaults to the primary profile if only one exists.
- **Output filename prefix** (optional): Custom prefix for output files. Defaults to `<person-id>-<event-slug>-<date>`.
## Workflow
### 1. Load person profile
- Read the target person profile from `kb/profiles/<person-id>.yaml`
- Read `kb/graph-index.yaml` to discover related entities
- Load referenced skills from `kb/skills/`
- Load referenced experiences from `kb/experiences/`
- Load referenced projects from `kb/projects/`
### 2. Identify relevant expertise
- Use introduction generation logic (`src/intro/intro-generator.ts`) to select expertise relevant to the talk topic
- Match skills, experiences, and projects that relate to the talk subject
- Prioritize recent and high-level expertise
### 3. Determine tone
- Adapt tone based on event context:
- **Technical conference** — emphasize technical skills, open source contributions, hands-on experience, specific technologies
- **Business meeting** — emphasize leadership, strategic impact, organizational achievements, business outcomes
- **Academic setting** — emphasize research, publications, methodology, teaching, formal credentials
- Select vocabulary and sentence structure appropriate to the context
### 4. Generate length variants
- **Short** (2-3 sentences): Name, current role, and one key qualification relevant to the talk topic
- **Medium** (one paragraph): Expanded context including relevant experience, notable achievements, and connection to the talk topic
- **Long** (multiple paragraphs): Full professional narrative relevant to the talk, including career arc, specific projects, and expertise depth
### 5. Apply template
- Apply the speaker introduction template (`templates/intro-speaker.md`)
- Fill in all three length variants
- Include metadata (person, topic, event context, generation date)
### 6. Write output
- Write the generated introduction to `output/intros/<prefix>.md`
- Present all three variants to the user for selection
## Output
- Speaker introduction file: `output/intros/<prefix>.md`
- Contains short, medium, and long variants in a single file
## Shared Modules
This skill depends on the following shared validation and utility modules:
- `src/schemas/validate.ts` — Entity validation (validate sources before generation)
- `src/schemas/types.ts` — TypeScript type definitions for all entity types
- `src/io/yaml-utils.ts` — YAML serialization/deserialization
- `src/io/entity-files.ts` — Entity file read management
## Rules and Constraints
1. **No fabrication** — only include information present in the knowledge base; never invent credentials or achievements
2. **Three variants required** — always produce short, medium, and long variants
3. **Length ordering** — short < medium < long in character count
4. **Topic relevance** — emphasize expertise related to the talk topic
5. **Tone adaptation** — adjust language and emphasis to match event context
6. **Markdown output** — output as Markdown suitable for direct use
7. **Template-based** — use `templates/intro-speaker.md` for consistent formatting
8. **Schema-validated sources** — only read from validated entity files in `kb/`
@@ -0,0 +1 @@
{"specId": "2a1dd5ab-86c0-4f0f-b8fd-2c6e916fe712", "workflowType": "requirements-first", "specType": "feature"}
@@ -0,0 +1,414 @@
# Design Document: LinkedIn-Profil-Revamp
## Overview
Dieses Design beschreibt die technische Umsetzung eines neuen Kiro Skills `linkedin-profile` zur automatisierten Generierung und Optimierung von LinkedIn-Profilinhalten aus der bestehenden Knowledge Base. Der Skill erzeugt optimierte Texte für Headline, About-Section und Experience-Beschreibungen, generiert eine Content-Strategie und implementiert ein Tracking-System für LinkedIn-Metriken.
### Design-Entscheidungen
1. **Neuer Kiro Skill statt Standalone-Script** — Folgt dem etablierten Muster der bestehenden Skills (consultant-profile, cv-generate, talk-intro). Ermöglicht interaktive Nutzung und iterative Verfeinerung.
2. **KB als Single Source of Truth** — Alle LinkedIn-Inhalte werden aus den bestehenden YAML-Entities generiert. Keine Duplizierung von Daten.
3. **Tracking als YAML-Entity** — LinkedIn-Metriken werden als neue Entity-Kategorie `kb/tracking/` gespeichert, konsistent mit dem bestehenden Datenmodell.
4. **Markdown-Output mit strukturierten Sektionen** — Output-Dateien enthalten alle generierten Profilsektionen in einem einzigen Dokument, analog zum Talk-Intro-Skill.
5. **Constraint-Validierung zur Generierungszeit** — Zeichenlimits (220 für Headline, 2.600 für About) werden programmatisch validiert, nicht nur als Richtlinie.
6. **Content-Strategie als Template** — Die Content-Strategie wird als wiederverwendbares Template generiert, das quartalsweise aktualisiert werden kann.
## Architecture
```mermaid
graph TD
subgraph "Knowledge Base (kb/)"
Profile[profiles/andre-knie.yaml]
Experiences[experiences/*.yaml]
Skills[skills/*.yaml]
Projects[projects/*.yaml]
Orgs[organizations/*.yaml]
Tracking[tracking/*.yaml]
end
subgraph "Kiro Skill (.kiro/skills/linkedin-profile/)"
SkillMD[SKILL.md]
end
subgraph "Source Modules (src/linkedin/)"
HeadlineGen[headline-generator.ts]
AboutGen[about-generator.ts]
ExperienceGen[experience-generator.ts]
ContentStrategy[content-strategy.ts]
TrackingMgr[tracking-manager.ts]
Constraints[constraints.ts]
end
subgraph "Shared Modules (src/)"
Validate[schemas/validate.ts]
Types[schemas/types.ts]
YamlUtils[io/yaml-utils.ts]
EntityFiles[io/entity-files.ts]
end
subgraph "Output (output/linkedin/)"
ProfileDoc[profile-optimized.md]
StrategyDoc[content-strategy.md]
TrackingReport[tracking-report.md]
end
SkillMD -->|orchestrates| HeadlineGen
SkillMD -->|orchestrates| AboutGen
SkillMD -->|orchestrates| ExperienceGen
SkillMD -->|orchestrates| ContentStrategy
SkillMD -->|orchestrates| TrackingMgr
HeadlineGen -->|reads| Profile
HeadlineGen -->|reads| Experiences
AboutGen -->|reads| Profile
AboutGen -->|reads| Projects
ExperienceGen -->|reads| Experiences
ExperienceGen -->|reads| Skills
ExperienceGen -->|reads| Projects
ContentStrategy -->|reads| Profile
TrackingMgr -->|reads/writes| Tracking
HeadlineGen -->|validates| Constraints
AboutGen -->|validates| Constraints
ExperienceGen -->|validates| Constraints
HeadlineGen -->|uses| EntityFiles
AboutGen -->|uses| EntityFiles
ExperienceGen -->|uses| EntityFiles
TrackingMgr -->|uses| YamlUtils
HeadlineGen -->|writes| ProfileDoc
AboutGen -->|writes| ProfileDoc
ExperienceGen -->|writes| ProfileDoc
ContentStrategy -->|writes| StrategyDoc
TrackingMgr -->|writes| TrackingReport
```
### Komponenten-Interaktionsfluss
1. **Profil-Generierung**: User aktiviert Skill → Skill liest KB-Entities → generiert optimierte Texte → validiert Constraints → schreibt Output
2. **Content-Strategie**: User fordert Strategie an → Skill analysiert Profil und Themen → generiert Redaktionsplan → schreibt Template
3. **Tracking**: User gibt Metriken ein → Skill speichert als YAML → berechnet Trends → generiert Report
## Components and Interfaces
### 1. LinkedIn Profile Skill (`.kiro/skills/linkedin-profile/`)
Orchestriert die gesamte LinkedIn-Optimierung als Kiro Skill.
**Interface**: Manuell aktiviert durch User-Request.
**Verantwortlichkeiten**:
- Koordination der Generierungsmodule
- Interaktive Verfeinerung mit dem User
- Output-Management
### 2. Headline Generator (`src/linkedin/headline-generator.ts`)
Generiert optimierte LinkedIn-Headlines aus KB-Daten.
**Interface**:
```typescript
interface HeadlineOptions {
personId: string;
emphasis?: 'dual-role' | 'ai-expert' | 'leadership';
variants?: number; // default: 3
}
function generateHeadlines(options: HeadlineOptions): HeadlineResult;
interface HeadlineResult {
variants: HeadlineVariant[];
validation: ConstraintValidation;
}
interface HeadlineVariant {
text: string;
charCount: number;
keywords: string[];
roles: string[];
}
```
**Constraints**:
- Max 220 Zeichen
- Muss beide Rollen enthalten (DB InfraGO + Data Hive Cassel)
- Kein Fachjargon
- Mindestens ein differenzierendes Element
### 3. About Section Generator (`src/linkedin/about-generator.ts`)
Generiert die About-Section mit Hook, Story und CTA.
**Interface**:
```typescript
interface AboutOptions {
personId: string;
tone?: 'nahbar' | 'fachlich' | 'inspirierend';
includeStats?: boolean; // default: true
}
function generateAbout(options: AboutOptions): AboutResult;
interface AboutResult {
fullText: string;
charCount: number;
hookPreview: string; // erste 2 Zeilen (vor "mehr anzeigen")
sections: {
hook: string;
mission: string;
expertise: string;
cta: string;
};
validation: ConstraintValidation;
}
```
**Constraints**:
- Max 2.600 Zeichen
- Hook in ersten 2 Zeilen sichtbar
- Drei Kernthemen benannt
- Konkrete Belege enthalten
- CTA am Ende
### 4. Experience Generator (`src/linkedin/experience-generator.ts`)
Generiert wirkungsorientierte Experience-Beschreibungen.
**Interface**:
```typescript
interface ExperienceOptions {
personId: string;
experienceIds?: string[]; // specific experiences, or all if omitted
keywords?: string[]; // SEO keywords to include
}
function generateExperiences(options: ExperienceOptions): ExperienceResult[];
interface ExperienceResult {
experienceId: string;
title: string;
organization: string;
description: string;
keywords: string[];
achievements: string[];
validation: ConstraintValidation;
}
```
**Constraints**:
- Ergebnisse statt Aufgaben
- Relevante Keywords für LinkedIn-Suche
- Messbare Erfolge wo vorhanden
### 5. Content Strategy Generator (`src/linkedin/content-strategy.ts`)
Generiert einen strukturierten Content-Plan.
**Interface**:
```typescript
interface ContentStrategyOptions {
personId: string;
quarter: string; // e.g., "2026-Q3"
existingFormats?: string[]; // podcast, column, etc.
}
function generateContentStrategy(options: ContentStrategyOptions): ContentStrategy;
interface ContentStrategy {
postingFrequency: string;
themeCluster: ThemeCluster[];
weeklyPlan: WeeklySlot[];
engagementRoutine: EngagementRoutine;
formatMix: FormatMix;
}
```
### 6. Tracking Manager (`src/linkedin/tracking-manager.ts`)
Verwaltet LinkedIn-Metriken als YAML-Entities.
**Interface**:
```typescript
interface TrackingEntry {
id: string;
type: 'linkedin-tracking';
date: string; // ISO date
metrics: {
profileViews: number;
searchAppearances: number;
connectionRequests: number;
postImpressions?: number;
engagementRate?: number;
comments?: number;
reposts?: number;
};
posts?: PostMetric[];
}
interface PostMetric {
title: string;
date: string;
format: 'text' | 'carousel' | 'video' | 'newsletter';
impressions: number;
engagementRate: number;
comments: number;
reposts: number;
isBestPractice?: boolean;
}
function addTrackingEntry(entry: TrackingEntry): void;
function getWeeklyReport(weekOf: string): WeeklyReport;
function getMonthlyTrend(month: string): MonthlyTrend;
```
### 7. Constraint Validator (`src/linkedin/constraints.ts`)
Validiert LinkedIn-spezifische Constraints.
**Interface**:
```typescript
interface ConstraintValidation {
valid: boolean;
errors: ConstraintError[];
warnings: ConstraintWarning[];
}
interface ConstraintError {
field: string;
constraint: string;
actual: string | number;
limit: string | number;
}
function validateHeadline(text: string): ConstraintValidation;
function validateAbout(text: string): ConstraintValidation;
function validateExperience(text: string): ConstraintValidation;
```
## Data Models
### LinkedIn Tracking Entity (`kb/tracking/<date>.yaml`)
```yaml
id: linkedin-2026-w28
type: linkedin-tracking
created: 2026-07-13
modified: 2026-07-13
date: 2026-07-13
period: weekly
metrics:
profile-views: 142
search-appearances: 38
connection-requests: 12
post-impressions: 4500
engagement-rate: 4.2
comments: 23
reposts: 8
posts:
- title: "KI in der Bahn — was wirklich funktioniert"
date: 2026-07-10
format: text
impressions: 2100
engagement-rate: 5.1
comments: 14
reposts: 5
is-best-practice: true
- title: "Carousel: 5 Fehler bei der KI-Einführung"
date: 2026-07-12
format: carousel
impressions: 2400
engagement-rate: 3.8
comments: 9
reposts: 3
is-best-practice: false
```
### LinkedIn Profile Output (`output/linkedin/profile-optimized.md`)
```markdown
# LinkedIn-Profil — Dr. Andre Knie
Generated: 2026-07-13
## Headline (Variante 1)
[Generated headline text]
## Headline (Variante 2)
[Generated headline text]
## About Section
[Generated about text]
## Experience: Experte für Digitalisierung — DB InfraGO
[Generated experience description]
## Experience: Gründer & Geschäftsführer — Data Hive Cassel
[Generated experience description]
...
```
### Content Strategy Output (`output/linkedin/content-strategy.md`)
```markdown
# Content-Strategie LinkedIn — Q3 2026
Generated: 2026-07-13
## Posting-Frequenz
2 Beiträge pro Woche (Di + Do)
## Themen-Cluster
1. Innovation & Technologie (40%)
2. Mensch & Kultur (35%)
3. Verantwortung (25%)
## Wochenplan
...
## Engagement-Routine
...
## Format-Mix
...
```
### Erweiterung Graph Index
```yaml
# Neue Entity-Typen in graph-index.yaml
entities:
- id: linkedin-2026-w28
type: linkedin-tracking
name: LinkedIn Tracking KW28 2026
```
### Directory Structure (Erweiterungen)
```
project-root/
├── kb/
│ └── tracking/ # NEU: LinkedIn-Metriken
│ ├── linkedin-2026-w28.yaml
│ └── linkedin-2026-w29.yaml
├── src/
│ └── linkedin/ # NEU: LinkedIn-Module
│ ├── headline-generator.ts
│ ├── about-generator.ts
│ ├── experience-generator.ts
│ ├── content-strategy.ts
│ ├── tracking-manager.ts
│ ├── constraints.ts
│ └── linkedin.test.ts
├── output/
│ └── linkedin/ # NEU: LinkedIn-Outputs
│ ├── profile-optimized.md
│ ├── content-strategy.md
│ └── tracking-report.md
└── .kiro/
└── skills/
└── linkedin-profile/ # NEU: LinkedIn Skill
└── SKILL.md
```
@@ -0,0 +1,136 @@
# Requirements Document — LinkedIn-Profil-Revamp
## Einleitung
Dieses Dokument beschreibt die Anforderungen für die Überarbeitung des LinkedIn-Profils von Dr. Andre Knie. Ziel ist eine konsistente, professionelle und wirkungsvolle Präsenz, die seine Doppelrolle als Digitalisierungsexperte bei DB InfraGO und Gründer/Geschäftsführer von Data Hive Cassel widerspiegelt. Das Profil soll seine Expertise in KI, Change Management und Führung klar kommunizieren und ihn als Thought Leader im DACH-Raum positionieren.
## Glossar
- **Profil**: Das LinkedIn-Profil von Dr. Andre Knie (https://www.linkedin.com/in/knie)
- **Headline**: Die Überschrift direkt unter dem Namen auf LinkedIn (max. 220 Zeichen)
- **About_Section**: Der "Info"-Bereich des LinkedIn-Profils (max. 2.600 Zeichen)
- **Featured_Section**: Der "Im Fokus"-Bereich für angeheftete Inhalte
- **Experience_Section**: Der "Berufserfahrung"-Bereich mit Rollenbeschreibungen
- **Content_Strategie**: Der Plan für regelmäßige Beiträge und Interaktionen
- **Personal_Brand**: Die konsistente Außenwahrnehmung über alle Kanäle hinweg
- **Zielgruppe**: Die primären Adressaten der LinkedIn-Aktivitäten
- **Tracking_System**: Das System zur Erfassung und Auswertung von LinkedIn-Metriken
- **KPI**: Key Performance Indicator — eine messbare Kennzahl zur Erfolgsbewertung
## Requirements
### Requirement 1: Profil-Headline
**User Story:** Als LinkedIn-Nutzer möchte ich eine prägnante Headline haben, damit Besucher sofort verstehen, wofür ich stehe und welchen Mehrwert ich biete.
#### Acceptance Criteria
1. THE Headline SHALL kommunizieren, dass Dr. Andre Knie an der Schnittstelle von KI, Digitalisierung und Führung arbeitet
2. THE Headline SHALL beide Rollen (DB InfraGO und Data Hive Cassel) erkennbar machen
3. THE Headline SHALL maximal 220 Zeichen umfassen
4. THE Headline SHALL mindestens ein differenzierendes Element enthalten, das Neugier weckt
5. THE Headline SHALL ohne Fachjargon für ein breites Business-Publikum verständlich sein
### Requirement 2: About-Section
**User Story:** Als LinkedIn-Nutzer möchte ich eine überzeugende About-Section haben, damit Besucher meine Geschichte, Motivation und Expertise verstehen und zum Vernetzen motiviert werden.
#### Acceptance Criteria
1. THE About_Section SHALL mit einem aufmerksamkeitsstarken Einstieg beginnen, der in den ersten zwei Zeilen (vor "mehr anzeigen") sichtbar ist
2. THE About_Section SHALL die persönliche Mission kommunizieren: Angst vor Technologie und Veränderung überwinden und echten Mehrwert schaffen
3. THE About_Section SHALL die drei Kernthemen (Innovation/Technologie, Mensch/Kultur, Verantwortung) klar benennen
4. THE About_Section SHALL konkrete Belege für Expertise enthalten (60+ Publikationen, 13+ Jahre KI-Erfahrung, 50+ Projekte)
5. THE About_Section SHALL maximal 2.600 Zeichen umfassen
6. THE About_Section SHALL einen klaren Call-to-Action am Ende enthalten
7. THE About_Section SHALL in einem authentischen, nahbaren Ton verfasst sein
### Requirement 3: Experience-Beschreibungen
**User Story:** Als LinkedIn-Nutzer möchte ich aussagekräftige Beschreibungen meiner Berufserfahrungen haben, damit Besucher den Wert und die Wirkung meiner Arbeit nachvollziehen können.
#### Acceptance Criteria
1. WHEN eine Experience-Beschreibung erstellt wird, THE Experience_Section SHALL konkrete Ergebnisse und Wirkung statt Aufgabenbeschreibungen enthalten
2. WHEN eine Experience-Beschreibung erstellt wird, THE Experience_Section SHALL relevante Keywords für die LinkedIn-Suche enthalten
3. THE Experience_Section SHALL die aktuelle Rolle bei DB InfraGO als primäre Position darstellen
4. THE Experience_Section SHALL die Gründerrolle bei Data Hive Cassel mit messbaren Erfolgen beschreiben (50+ Projekte, 15+ Kunden, ROI über 2)
5. THE Experience_Section SHALL das JobSharing-Experiment bei DB Netz als Innovation in Führung hervorheben
6. THE Experience_Section SHALL die akademische Laufbahn (Promotion, Dozent) als Fundament für die KI-Expertise positionieren
### Requirement 4: Featured-Section-Strategie
**User Story:** Als LinkedIn-Nutzer möchte ich eine kuratierte Featured-Section haben, damit Besucher sofort meine besten Inhalte und Referenzen sehen.
#### Acceptance Criteria
1. THE Featured_Section SHALL maximal 5 Elemente enthalten, um Fokus zu gewährleisten
2. THE Featured_Section SHALL mindestens einen Inhalt pro Kernthema (KI/Technologie, Mensch/Kultur, Verantwortung) enthalten
3. THE Featured_Section SHALL regelmäßig (mindestens quartalsweise) aktualisiert werden
4. WHEN ein neuer hochperformanter Beitrag veröffentlicht wird, THE Featured_Section SHALL geprüft und bei Bedarf aktualisiert werden
5. THE Featured_Section SHALL eine Mischung aus Formaten enthalten (Beiträge, externe Links, Dokumente)
### Requirement 5: Content-Strategie
**User Story:** Als LinkedIn-Nutzer möchte ich eine konsistente Content-Strategie haben, damit ich regelmäßig Sichtbarkeit aufbaue und als Thought Leader wahrgenommen werde.
#### Acceptance Criteria
1. THE Content_Strategie SHALL eine Posting-Frequenz von mindestens 2 Beiträgen pro Woche vorsehen
2. THE Content_Strategie SHALL die drei Kernthemen (Innovation/Technologie, Mensch/Kultur, Verantwortung) abdecken
3. THE Content_Strategie SHALL bestehende Formate (Podcast "Almost Intelligent", Kolumne "Kniepunkt") als Content-Quellen einbinden
4. THE Content_Strategie SHALL eine Mischung aus Formaten vorsehen (Text, Carousel, Video, Newsletter)
5. THE Content_Strategie SHALL Interaktionszeiten und Engagement-Routinen definieren
6. WHEN ein Beitrag veröffentlicht wird, THE Content_Strategie SHALL sicherstellen, dass der Beitrag einen klaren Mehrwert für die Zielgruppe bietet
7. THE Content_Strategie SHALL Themen-Cluster definieren, die zur Personal_Brand passen
### Requirement 6: Skills und Endorsements
**User Story:** Als LinkedIn-Nutzer möchte ich eine optimierte Skills-Section haben, damit der LinkedIn-Algorithmus mein Profil für relevante Suchanfragen vorschlägt.
#### Acceptance Criteria
1. THE Profil SHALL maximal 50 Skills enthalten, priorisiert nach strategischer Relevanz
2. THE Profil SHALL die Top-5-Skills so wählen, dass sie die Kernpositionierung widerspiegeln (KI, Digitalisierung, Change Management, Führung, Innovation)
3. WHEN ein neuer Skill hinzugefügt wird, THE Profil SHALL sicherstellen, dass der Skill zur definierten Personal_Brand passt
4. THE Profil SHALL eine Strategie zur aktiven Einholung von Endorsements für die Top-Skills enthalten
### Requirement 7: Netzwerk-Strategie
**User Story:** Als LinkedIn-Nutzer möchte ich eine gezielte Netzwerk-Strategie haben, damit ich relevante Kontakte aufbaue und meine Reichweite in den Zielgruppen erhöhe.
#### Acceptance Criteria
1. THE Profil SHALL eine definierte Zielgruppe für Vernetzungsanfragen haben (Entscheider in Digitalisierung, KI-Community, Startup-Ökosystem, Bahn-Branche)
2. THE Profil SHALL personalisierte Vernetzungsnachrichten verwenden, die einen konkreten Anknüpfungspunkt benennen
3. THE Content_Strategie SHALL aktives Kommentieren bei relevanten Thought Leadern vorsehen (mindestens 5 Kommentare pro Woche)
4. WHEN eine Vernetzungsanfrage gesendet wird, THE Profil SHALL sicherstellen, dass die Anfrage einen Mehrwert oder gemeinsamen Kontext kommuniziert
5. THE Profil SHALL die bestehenden Netzwerke (KI-Peergroup Nordhessen, KI-Bundesverband, Science Park Kassel) aktiv auf LinkedIn abbilden
### Requirement 8: Traktion und Erfolgsmessung
**User Story:** Als LinkedIn-Nutzer möchte ich die Performance meiner Beiträge und meines Profils systematisch messen, damit ich datenbasiert entscheiden kann, welche Inhalte und Formate am besten funktionieren.
#### Acceptance Criteria
1. THE Tracking_System SHALL definierte KPIs für Beiträge erfassen (Impressionen, Engagement-Rate, Kommentare, Reposts, Klicks)
2. THE Tracking_System SHALL definierte KPIs für das Profil erfassen (Profilaufrufe, Suchergebnisse, Vernetzungsanfragen pro Woche)
3. THE Tracking_System SHALL eine wöchentliche Auswertung der Beitrags-Performance ermöglichen
4. THE Tracking_System SHALL eine monatliche Trendanalyse bereitstellen, die Wachstum und Top-Performer identifiziert
5. WHEN ein Beitrag eine überdurchschnittliche Engagement-Rate erzielt, THE Tracking_System SHALL diesen Beitrag als Best Practice markieren
6. THE Tracking_System SHALL die Daten in einem strukturierten Format speichern, das Vergleiche über Zeit ermöglicht
7. THE Tracking_System SHALL Empfehlungen für Content-Optimierung auf Basis der gemessenen Daten ableiten
### Requirement 9: Personal Branding und Konsistenz
**User Story:** Als LinkedIn-Nutzer möchte ich eine konsistente Personal Brand haben, damit meine Außenwahrnehmung über alle Kanäle einheitlich und wiedererkennbar ist.
#### Acceptance Criteria
1. THE Personal_Brand SHALL ein konsistentes visuelles Erscheinungsbild definieren (Profilfoto, Banner, Farbwelt)
2. THE Personal_Brand SHALL die Tonalität festlegen: nahbar, fachlich fundiert, inspirierend
3. THE Personal_Brand SHALL die Doppelrolle (Konzern + Startup) als Stärke und Alleinstellungsmerkmal positionieren
4. THE Personal_Brand SHALL mit der d-Hive Corporate Identity kompatibel sein (Schwarz/Neon-Grün als Akzente)
5. WHEN Inhalte auf LinkedIn veröffentlicht werden, THE Personal_Brand SHALL sicherstellen, dass die Inhalte zur definierten Positionierung passen
6. THE Personal_Brand SHALL einen wiedererkennbaren Claim oder Leitsatz enthalten
@@ -0,0 +1,199 @@
# Implementation Plan: LinkedIn-Profil-Revamp
## Overview
Implementierung eines neuen Kiro Skills `linkedin-profile` zur automatisierten Generierung und Optimierung von LinkedIn-Profilinhalten. Der Skill nutzt die bestehende Knowledge Base als Datenquelle und erzeugt optimierte Texte für Headline, About-Section, Experience-Beschreibungen, eine Content-Strategie sowie ein Tracking-System für LinkedIn-Metriken. Die Implementierung folgt den etablierten Mustern der bestehenden Skills (consultant-profile, cv-generate, talk-intro).
## Tasks
- [x] 1. Constraint-Validator und Typen erstellen
- [x] 1.1 LinkedIn-spezifische TypeScript-Interfaces in `src/linkedin/constraints.ts` definieren
- `ConstraintValidation`, `ConstraintError`, `ConstraintWarning` Interfaces
- Validierungsfunktionen: `validateHeadline(text)`, `validateAbout(text)`, `validateExperience(text)`
- Headline-Limit: 220 Zeichen, About-Limit: 2.600 Zeichen
- _Requirements: 1.3, 2.5_
- [x] 1.2 LinkedIn-Modul-Interfaces und Typen in `src/linkedin/types.ts` definieren
- `HeadlineOptions`, `HeadlineResult`, `HeadlineVariant`
- `AboutOptions`, `AboutResult`
- `ExperienceOptions`, `ExperienceResult`
- `ContentStrategyOptions`, `ContentStrategy`, `ThemeCluster`, `WeeklySlot`
- `TrackingEntry`, `PostMetric`, `WeeklyReport`, `MonthlyTrend`
- _Requirements: 1.11.5, 2.12.7, 3.13.6, 5.15.7, 8.18.7_
- [x] 1.3 Unit-Tests für Constraint-Validator schreiben
- Teste Headline-Validierung (unter/über 220 Zeichen)
- Teste About-Validierung (unter/über 2.600 Zeichen)
- Teste Experience-Validierung
- Teste Edge Cases (leere Strings, exakt am Limit)
- _Requirements: 1.3, 2.5_
- [x] 2. Headline Generator implementieren
- [x] 2.1 `src/linkedin/headline-generator.ts` erstellen
- Funktion `generateHeadlines(options: HeadlineOptions): HeadlineResult`
- KB-Entities lesen (Profile, Experiences) via `src/io/entity-files.ts`
- Mehrere Varianten generieren (default: 3)
- Beide Rollen (DB InfraGO + Data Hive Cassel) einbinden
- Constraint-Validierung via `constraints.ts` anwenden
- Keywords und differenzierende Elemente extrahieren
- _Requirements: 1.1, 1.2, 1.3, 1.4, 1.5_
- [x] 2.2 Unit-Tests für Headline Generator schreiben
- Teste korrekte Extraktion beider Rollen aus KB
- Teste Zeichenlimit-Einhaltung
- Teste Variantengenerierung
- _Requirements: 1.11.5_
- [x] 3. About Section Generator implementieren
- [x] 3.1 `src/linkedin/about-generator.ts` erstellen
- Funktion `generateAbout(options: AboutOptions): AboutResult`
- KB-Entities lesen (Profile, Projects) via `src/io/entity-files.ts`
- Strukturierte Sektionen: Hook, Mission, Expertise, CTA
- Hook-Preview (erste 2 Zeilen) separat bereitstellen
- Konkrete Belege einbinden (60+ Publikationen, 13+ Jahre KI, 50+ Projekte)
- Drei Kernthemen benennen (Innovation/Technologie, Mensch/Kultur, Verantwortung)
- Constraint-Validierung (max. 2.600 Zeichen)
- _Requirements: 2.1, 2.2, 2.3, 2.4, 2.5, 2.6, 2.7_
- [x] 3.2 Unit-Tests für About Generator schreiben
- Teste Zeichenlimit-Einhaltung
- Teste Vorhandensein aller Sektionen (hook, mission, expertise, cta)
- Teste Hook-Preview-Extraktion
- _Requirements: 2.12.7_
- [x] 4. Checkpoint — Kernmodule validieren
- Ensure all tests pass, ask the user if questions arise.
- [x] 5. Experience Generator implementieren
- [x] 5.1 `src/linkedin/experience-generator.ts` erstellen
- Funktion `generateExperiences(options: ExperienceOptions): ExperienceResult[]`
- KB-Entities lesen (Experiences, Skills, Projects) via `src/io/entity-files.ts`
- Ergebnisorientierte Beschreibungen statt Aufgabenlisten
- Keywords für LinkedIn-Suche einbinden
- Messbare Erfolge hervorheben (50+ Projekte, 15+ Kunden, ROI > 2)
- DB InfraGO als primäre Position, Data Hive mit Gründer-Achievements
- JobSharing-Experiment als Führungsinnovation positionieren
- Akademische Laufbahn als KI-Expertise-Fundament
- _Requirements: 3.1, 3.2, 3.3, 3.4, 3.5, 3.6_
- [x] 5.2 Unit-Tests für Experience Generator schreiben
- Teste korrekte Zuordnung von Experiences aus KB
- Teste Keyword-Einbindung
- Teste Ergebnis-Struktur (title, organization, description, achievements)
- _Requirements: 3.13.6_
- [x] 6. Content Strategy Generator implementieren
- [x] 6.1 `src/linkedin/content-strategy.ts` erstellen
- Funktion `generateContentStrategy(options: ContentStrategyOptions): ContentStrategy`
- Posting-Frequenz: 2 Beiträge/Woche
- Themen-Cluster mit Gewichtung (Innovation 40%, Mensch 35%, Verantwortung 25%)
- Wochenplan mit konkreten Slots
- Engagement-Routine (5+ Kommentare/Woche bei Thought Leadern)
- Format-Mix (Text, Carousel, Video, Newsletter)
- Bestehende Formate einbinden (Podcast "Almost Intelligent", Kolumne "Kniepunkt")
- _Requirements: 5.1, 5.2, 5.3, 5.4, 5.5, 5.6, 5.7_
- [x] 6.2 Unit-Tests für Content Strategy Generator schreiben
- Teste Struktur des generierten Plans
- Teste Themen-Cluster-Vollständigkeit
- Teste Format-Mix-Abdeckung
- _Requirements: 5.15.7_
- [ ] 7. Tracking Manager implementieren
- [x] 7.1 `src/linkedin/tracking-manager.ts` erstellen
- Funktion `addTrackingEntry(entry: TrackingEntry): void`
- Funktion `getWeeklyReport(weekOf: string): WeeklyReport`
- Funktion `getMonthlyTrend(month: string): MonthlyTrend`
- YAML-Entities in `kb/tracking/` lesen/schreiben via `src/io/yaml-utils.ts`
- Best-Practice-Markierung bei überdurchschnittlicher Engagement-Rate
- Trend-Berechnung über Zeiträume
- Empfehlungen für Content-Optimierung ableiten
- _Requirements: 8.1, 8.2, 8.3, 8.4, 8.5, 8.6, 8.7_
- [x] 7.2 KB-Verzeichnis `kb/tracking/` anlegen und Graph-Index erweitern
- Verzeichnis `kb/tracking/` mit `.gitkeep` erstellen
- Entity-Typ `linkedin-tracking` in `kb/graph-index.yaml` dokumentieren
- _Requirements: 8.6_
- [-] 7.3 Unit-Tests für Tracking Manager schreiben
- Teste YAML-Serialisierung/Deserialisierung von Tracking-Entries
- Teste Weekly-Report-Aggregation
- Teste Monthly-Trend-Berechnung
- Teste Best-Practice-Markierung
- _Requirements: 8.18.7_
- [x] 8. Checkpoint — Alle Module validieren
- Ensure all tests pass, ask the user if questions arise.
- [ ] 9. Kiro Skill erstellen und Module verdrahten
- [-] 9.1 `SKILL.md` für linkedin-profile Skill erstellen
- Datei: `.kiro/skills/linkedin-profile/SKILL.md`
- Skill-Metadaten (name, description, activation: manual)
- Workflow-Beschreibung: Profil-Generierung, Content-Strategie, Tracking
- Inputs dokumentieren (personId, emphasis, quarter, etc.)
- Outputs dokumentieren (profile-optimized.md, content-strategy.md, tracking-report.md)
- Shared Modules referenzieren
- Rules und Constraints definieren
- Muster von `talk-intro/SKILL.md` folgen
- _Requirements: 1.11.5, 2.12.7, 3.13.6, 4.14.5, 5.15.7, 9.19.6_
- [x] 9.2 Output-Verzeichnis `output/linkedin/` anlegen
- Verzeichnis mit `.gitkeep` erstellen
- _Requirements: 2.5, 5.7, 8.3_
- [x] 9.3 Profil-Output-Generierung verdrahten
- Headline, About und Experience Generatoren zu `output/linkedin/profile-optimized.md` zusammenführen
- Markdown-Template mit strukturierten Sektionen
- Generierungsdatum und Validierungsstatus einbinden
- _Requirements: 1.11.5, 2.12.7, 3.13.6_
- [x] 9.4 Content-Strategy-Output-Generierung verdrahten
- Content Strategy Generator zu `output/linkedin/content-strategy.md` zusammenführen
- Quartalsweise Template-Struktur
- _Requirements: 5.15.7_
- [x] 9.5 Tracking-Report-Output-Generierung verdrahten
- Tracking Manager zu `output/linkedin/tracking-report.md` zusammenführen
- Wöchentliche und monatliche Reports
- _Requirements: 8.18.7_
- [x] 10. Integration und Abschluss
- [x] 10.1 Export in `src/index.ts` ergänzen
- LinkedIn-Module exportieren
- _Requirements: alle_
- [x] 10.2 Integrationstests schreiben
- Teste End-to-End-Flow: KB lesen → Generierung → Output schreiben
- Teste Constraint-Validierung im Gesamtfluss
- Teste Tracking-Persistenz
- _Requirements: 1.11.5, 2.12.7, 3.13.6, 8.18.7_
- [x] 11. Final Checkpoint — Alle Tests und Integration validieren
- Ensure all tests pass, ask the user if questions arise.
## Notes
- Tasks marked with `*` are optional and can be skipped for faster MVP
- Each task references specific requirements for traceability
- Checkpoints ensure incremental validation
- Unit tests validate specific examples and edge cases
- The design has no Correctness Properties section, so no property-based tests are included
- All modules follow the existing project patterns (see `src/intro/`, `src/cv/`)
- YAML conventions from `.kiro/steering/kb-conventions.md` apply to tracking entities
## Task Dependency Graph
```json
{
"waves": [
{ "id": 0, "tasks": ["1.1", "1.2"] },
{ "id": 1, "tasks": ["1.3", "2.1", "7.2", "9.2"] },
{ "id": 2, "tasks": ["2.2", "3.1", "5.1", "6.1"] },
{ "id": 3, "tasks": ["3.2", "5.2", "6.2", "7.1"] },
{ "id": 4, "tasks": ["7.3", "9.1"] },
{ "id": 5, "tasks": ["9.3", "9.4", "9.5"] },
{ "id": 6, "tasks": ["10.1"] },
{ "id": 7, "tasks": ["10.2"] }
]
}
```
@@ -0,0 +1 @@
{"specId": "1dd1c6a8-8419-4bc6-870d-e2ca21b87d4c", "workflowType": "requirements-first", "specType": "feature"}
@@ -0,0 +1,238 @@
# Requirements Document
## Introduction
A personal homepage at andreknie.de for Dr. Andre Knie that serves as a central platform for trust-building, content access, speaking visibility, consulting positioning, and lead generation. The site presents the stakeholder's AI expertise in a calm, professional, hype-free manner while making content from the Kniepunkt column, Almost Intelligent podcast, talks, and consulting work persistently accessible. It reduces dependency on LinkedIn algorithms and creates a bridge between the personal brand and the Data Hive Cassel (dHive) company offering.
## Glossary
- **Homepage**: The personal website at andreknie.de serving as the stakeholder's central digital presence
- **Stakeholder**: Dr. Andre Knie — AI expert, consultant, speaker, content author, and Managing Director of dHive
- **dHive**: Data Hive Cassel — the company associated with the stakeholder, operating at d-hive.de
- **Kniepunkt**: A weekly AI column authored by the stakeholder, currently at 38+ issues
- **Almost_Intelligent**: A bi-weekly AI podcast bridging artificial and natural intelligence
- **Content_Archive**: The collection of all content objects accessible on the homepage
- **Content_Object**: A discrete piece of content — one of: Post, Resource, Talk, Consulting_Example, Newsletter_Issue, Podcast_Episode, or Event
- **Post**: Written content including articles and content originating from or related to LinkedIn posts
- **Resource**: Downloadable or otherwise useful material that supports visitors and generates leads
- **Talk**: A speaking topic, example, or event-related credibility item
- **Consulting_Example**: An example of advisory or consulting work presented without exposing confidential client details
- **Newsletter_Issue**: An edition or content item related to the Kniepunkt column or newsletter communication
- **Podcast_Episode**: An episode of Almost Intelligent
- **Event**: A relevant appearance, date, or time-bound activity
- **Lead_Data**: Basic visitor-provided contact information collected for resource downloads, newsletter sign-ups, or inquiries
- **Inquiry**: A visitor's contact request or talk request submitted through the homepage
- **Sales_Funnel**: The business process for turning visitor interest into qualified leads
- **Content_Filter**: A business-level classification that helps visitors find content by relevant criteria
- **Visitor**: A public user browsing the homepage
- **Email_Confirmation**: A verification step to reduce bot submissions and improve inquiry quality
## Requirements
### Requirement 1: Personal Profile Presentation
**User Story:** As a visitor, I want to see a clear and prominent personal profile of Dr. Andre Knie, so that I quickly understand who he is, what he stands for, and how he frames AI.
#### Acceptance Criteria
1. THE Homepage SHALL present the Stakeholder's personal profile in a dedicated section visible without scrolling on a standard desktop viewport (1280×720 or larger), including the Stakeholder's name, a professional photo, and a summary statement of no more than 150 words
2. THE Homepage SHALL communicate the Stakeholder's roles by explicitly naming all of the following: AI expert, consultant, speaker, content author, and Managing Director of dHive
3. THE Homepage SHALL present AI using factual, evidence-based language and SHALL NOT use superlatives (e.g., "revolutionary", "game-changing"), apocalyptic framing (e.g., "existential threat", "will replace all jobs"), or unsubstantiated predictions
4. THE Homepage SHALL explain the Stakeholder's perspective on sovereign AI from Germany by including a positioning statement that references at least data sovereignty, independence from non-European providers, and practical applicability for German organizations
5. THE Homepage SHALL make the relationship between the Stakeholder's personal offer and dHive understandable by presenting both the personal brand and dHive in the same viewport, with each having its own identifiable label or heading, and neither occupying more than 70% of the shared section's visual area
### Requirement 2: Target Audience Orientation
**User Story:** As a visitor from a mid-sized company, HR, OD, IT leadership, or event organization, I want the homepage to address my context, so that I can evaluate the stakeholder's relevance for my needs.
#### Acceptance Criteria
1. THE Homepage SHALL explicitly name mid-sized companies, HR and people development, organizational development, IT leaders, and managing directors as target audiences in visible page content so that each audience segment can identify itself within 1 scroll of the landing view
2. THE Homepage SHALL present at least 3 speaking examples including topic title, event name, and format (keynote, workshop, panel) to enable event organizers to evaluate the Stakeholder as a potential speaker
3. THE Homepage SHALL present AI-related content using factual statements, concrete project references, or verifiable data points rather than unsubstantiated superlatives or subjective claims
4. THE Homepage SHALL avoid superlative adjectives (e.g., "best", "leading", "unmatched"), unsubstantiated success claims without reference, and call-to-action language that urges immediate purchase or booking without prior context
### Requirement 3: Post and Article Access
**User Story:** As a visitor, I want to access posts and articles, so that I can read the stakeholder's written content on AI topics persistently without relying on LinkedIn.
#### Acceptance Criteria
1. THE Content_Archive SHALL provide access to Posts that were originally published on LinkedIn or authored independently, each containing at minimum a title, publication date, and body text
2. WHEN a Visitor selects a Post, THE Content_Archive SHALL display the post title, publication date, and full body text including any inline formatting and hyperlinks
3. THE Content_Archive SHALL present Posts in reverse chronological order by publication date, allowing a Visitor to browse through all available entries
4. IF a Visitor selects a Post that is unavailable or cannot be loaded, THEN THE Content_Archive SHALL display an error message indicating that the requested content could not be found
5. THE Content_Archive SHALL display a list of available Posts showing at minimum the title and publication date for each entry to support discovery
### Requirement 4: Resource Access and Lead Capture
**User Story:** As a visitor, I want to access downloadable resources, so that I can use practical AI-related materials, and as the stakeholder, I want lead capture on downloads to support the Sales Funnel.
#### Acceptance Criteria
1. THE Homepage SHALL display at least 1 downloadable Resource in a dedicated resource area, where each Resource shows a title, a short description (maximum 200 characters), and a download indicator
2. THE Homepage SHALL allow Resources designated as downloadable to be accessed by Visitors only after Lead_Data submission
3. WHEN a Visitor requests a Resource download, THE Homepage SHALL present a form requiring the following Lead_Data fields before granting access: name (maximum 100 characters), email address (validated as a correctly formatted email), and company name (maximum 150 characters)
4. IF a Visitor submits Lead_Data that fails validation, THEN THE Homepage SHALL display an error indication next to each invalid field and retain all previously entered valid data
5. WHEN Lead_Data is successfully collected through a Resource download, THE Homepage SHALL store the Lead_Data record associated with the downloaded Resource identifier and a timestamp, making it retrievable for Sales_Funnel development
6. THE Homepage SHALL display the list of required Lead_Data fields and their purpose to the Visitor before the Lead_Data form is submitted
### Requirement 5: Talk and Speaking Content
**User Story:** As an event organizer, I want to see examples of talks and speaking engagements, so that I can evaluate the stakeholder as a potential speaker for my event.
#### Acceptance Criteria
1. THE Content_Archive SHALL provide access to Talks as defined Content_Objects within the browsable content structure
2. WHEN a Visitor views Talk content, THE Homepage SHALL present for each Talk at minimum: a speaking topic title, a description of the talk content, and at least one past event or context where the talk was delivered
3. THE Homepage SHALL present Talks in a way that allows event organizers to assess the Stakeholder's speaking relevance by showing topic coverage, target audience fit, and evidence of prior speaking engagements
4. IF no Talks are available in the Content_Archive, THEN THE Homepage SHALL not display an empty Talk section to Visitors
### Requirement 6: Consulting Examples
**User Story:** As a potential client, I want to see examples of consulting work, so that I can assess the stakeholder's advisory relevance for my organization.
#### Acceptance Criteria
1. THE Content_Archive SHALL display a collection of at least 3 and at most 10 Consulting_Examples, each presenting a title, industry tag, organization-size category, problem domain, approach taken, and outcomes achieved
2. WHEN a Visitor views a Consulting_Example, THE Homepage SHALL present the problem domain, approach, and outcomes without exposing client organization names, specific revenue figures, or internal project identifiers
3. THE Homepage SHALL present each Consulting_Example with an industry tag and an organization-size category (505,000 employees) so that a Visitor can identify examples matching mid-sized organizations
4. IF no Consulting_Examples are available in the Content_Archive, THEN THE Homepage SHALL display an informational message indicating that examples are currently being prepared
### Requirement 7: Kniepunkt Column Home
**User Story:** As a reader of the Kniepunkt column, I want a dedicated home for the column on the homepage, so that I can access current and past issues without depending on LinkedIn or newsletter delivery.
#### Acceptance Criteria
1. THE Homepage SHALL display a distinct, labeled section dedicated to Kniepunkt content, visually separated from other Homepage content
2. THE Content_Archive SHALL display a list of all available Newsletter_Issues related to the Kniepunkt column, each showing at minimum the issue title and publication date
3. THE Content_Archive SHALL present Newsletter_Issues sorted by publication date in descending order (newest first)
4. WHEN a Visitor selects a Newsletter_Issue from the Content_Archive, THE Homepage SHALL display the full content of that issue
### Requirement 8: Almost Intelligent Podcast Home
**User Story:** As a podcast listener, I want a dedicated home for Almost Intelligent on the homepage, so that I can discover and access episodes.
#### Acceptance Criteria
1. THE Homepage SHALL display a visually distinct section for Almost_Intelligent that includes the podcast name, a brief description, and a link or entry point to the full episode listing
2. THE Content_Archive SHALL display Podcast_Episodes in reverse-chronological order, showing for each episode at minimum: title, publication date, and a short description or summary
3. WHEN a Visitor browses podcast content, THE Homepage SHALL present a maximum of 10 episodes per page with pagination controls to access older episodes
4. WHEN a Visitor selects a Podcast_Episode, THE Homepage SHALL provide a direct link to the episode audio on the hosting platform or an embedded player
5. IF no Podcast_Episodes are available, THEN THE Homepage SHALL display a message indicating that no episodes have been published yet
### Requirement 9: Events and Dates
**User Story:** As a visitor, I want to see relevant events and dates, so that I know where and when the stakeholder appears or is active.
#### Acceptance Criteria
1. THE Content_Archive SHALL store Events as entities with the following required attributes: title, date (ISO 8601), location, event type (talk, workshop, conference, appearance), and description (maximum 300 characters)
2. WHEN a Visitor views Events, THE Content_Archive SHALL present them in reverse-chronological order grouped by year, with upcoming events (date >= today) listed before past events
3. THE Content_Archive SHALL support a maximum of 200 stored Event entities
4. IF an Event entity is missing any required attribute (title, date, location, event type), THEN THE Content_Archive SHALL reject the entity with an error message indicating the missing fields
### Requirement 10: Newsletter Subscription
**User Story:** As a visitor interested in the stakeholder's AI perspective, I want to subscribe to the newsletter or column, so that I receive regular updates.
#### Acceptance Criteria
1. THE Homepage SHALL display a subscription form requiring the Visitor to provide an email address to subscribe to the newsletter or Kniepunkt-related communication
2. WHEN a Visitor submits the subscription form with a valid email address, THE Homepage SHALL create both a communication subscription and a Sales_Funnel entry
3. WHEN a Visitor submits the subscription form, THE Homepage SHALL send a confirmation email to the provided address requiring the Visitor to confirm the subscription before it becomes active (double opt-in)
4. IF the Visitor does not confirm the subscription within 48 hours, THEN THE Homepage SHALL discard the pending subscription and the Sales_Funnel entry
5. IF the submitted email address does not conform to a valid email format, THEN THE Homepage SHALL display an inline error message indicating the invalid format and SHALL NOT create a subscription or Sales_Funnel entry
6. IF the submitted email address is already associated with an active subscription, THEN THE Homepage SHALL inform the Visitor that the email is already subscribed and SHALL NOT create a duplicate entry
### Requirement 11: Contact Request
**User Story:** As a potential client or partner, I want to contact the stakeholder through the homepage, so that I can initiate a conversation without needing LinkedIn.
#### Acceptance Criteria
1. THE Homepage SHALL display a contact form requiring at minimum the Visitor's name, email address, and a message body (maximum 2000 characters)
2. WHEN a Visitor submits the contact form, THE Homepage SHALL send a confirmation email to the Visitor's provided email address containing a unique confirmation link that expires after 24 hours
3. WHEN the Visitor clicks the confirmation link within the expiration period, THE Homepage SHALL send an email notification containing the Visitor's name, email address, and message to the Stakeholder
4. IF the confirmation link is not clicked within 24 hours, THEN THE Homepage SHALL discard the contact request and not deliver the message to the Stakeholder
5. IF the contact form is submitted with any required field empty or with an invalid email format, THEN THE Homepage SHALL display a validation error indicating which fields need correction
### Requirement 12: Talk Request
**User Story:** As an event organizer, I want to request or inquire about a talk through the homepage, so that I can engage the stakeholder as a speaker.
#### Acceptance Criteria
1. THE Homepage SHALL allow Visitors to submit a talk request by providing at minimum: visitor name, visitor email address, event name, proposed topic or talk title, and a message field (maximum 2000 characters)
2. WHEN a Visitor submits a talk request, THE Homepage SHALL send an Email_Confirmation message to the visitor's provided email address, and the visitor must confirm within 48 hours for the request to be forwarded
3. WHEN a Visitor confirms their email within the confirmation period, THE Homepage SHALL send an email notification containing the talk request details to the Stakeholder
4. IF a Visitor does not confirm their email within 48 hours, THEN THE Homepage SHALL discard the talk request and not notify the Stakeholder
5. WHEN a Visitor submits a talk request, THE Homepage SHALL validate that all required fields are non-empty and that the email address matches a valid email format before initiating the Email_Confirmation step
### Requirement 13: Content Filtering and Browsing
**User Story:** As a visitor, I want to filter or group content by relevant criteria, so that I can find specific topics or content types efficiently.
#### Acceptance Criteria
1. THE Homepage SHALL allow Visitors to filter content by at least one tag-based criterion derived from content metadata (such as topic, content type, or skill area)
2. WHEN a Visitor selects a filter criterion, THE Homepage SHALL display only content items matching that criterion within 1 second of interaction
3. IF no content items match the selected filter criterion, THEN THE Homepage SHALL display a message indicating that no matching content is available
4. THE Homepage SHALL derive filter criteria dynamically from the existing content metadata so that adding new content with new tags automatically extends the available filter options without requiring code changes
5. THE Content_Filter criteria SHALL be stored as content metadata (tags or categories) on each content item rather than as a fixed enumerated list, supporting a maximum of 20 distinct filter values at any time
### Requirement 14: Content Management
**User Story:** As the stakeholder, I want to add new content to the homepage, so that the site stays current with my latest work and publications.
#### Acceptance Criteria
1. THE Homepage SHALL allow the Stakeholder to add new Content_Objects by creating a content file containing at minimum a title, a publication date, a content-area assignment, and a body
2. WHEN the Stakeholder adds a new Content_Object and assigns it to a content area (Posts, Resources, Talks, Consulting_Examples, Newsletter_Issues, Podcast_Episodes, or Events), THE Homepage SHALL display the Content_Object within that content area after the next deployment
3. THE content structure SHALL allow the Stakeholder to add, rename, or remove content areas without requiring changes to existing Content_Objects that belong to other areas
4. IF the Stakeholder adds a Content_Object with a content-area value that does not match any defined content area, THEN THE Homepage SHALL reject the Content_Object and indicate the invalid content-area value along with the list of valid content areas
5. WHEN multiple Content_Objects exist within the same content area, THE Homepage SHALL display them ordered by publication date descending (newest first)
### Requirement 15: Content Type Scope
**User Story:** As the stakeholder, I want the first version limited to confirmed content types, so that scope remains manageable and focused.
#### Acceptance Criteria
1. THE Homepage SHALL support the following Content_Object types in the first version: Post, Resource, Talk, Consulting_Example, Newsletter_Issue, Podcast_Episode, and Event
2. THE Homepage SHALL NOT introduce additional Content_Object types beyond the confirmed list in the first version
### Requirement 16: Cross-Reference to dHive
**User Story:** As a visitor, I want to understand the connection between the stakeholder and dHive, so that I can navigate to the company offering when relevant.
#### Acceptance Criteria
1. THE Homepage SHALL include at least one visible link to the dHive company website (d-hive.de) that identifies the stakeholder's role (e.g., Founder & CEO) at the company
2. THE Homepage SHALL present dHive references as secondary content, meaning dHive branding (logo, company name) occupies no more than 20% of any visible section's area and does not appear above or before the stakeholder's personal name and title
3. WHEN a visitor activates a dHive link, THE Homepage SHALL navigate to https://d-hive.de in a new browser tab
### Requirement 17: Tone and Communication Standards
**User Story:** As a visitor, I want the homepage to feel professional, calm, and trustworthy, so that I can engage with the content without feeling marketed to.
#### Acceptance Criteria
1. THE Homepage SHALL use factual, declarative language across all content elements (headings, body text, calls-to-action, and labels) without superlatives (e.g., "best", "unbelievable", "revolutionary"), urgency phrases (e.g., "act now", "limited time", "don't miss out"), or unsubstantiated comparative claims
2. THE Homepage SHALL NOT contain fearmongering language (predictions of negative consequences for inaction), countdown timers, animated promotional banners, or aggressive upselling patterns (e.g., repeated purchase prompts, pop-up offers)
3. THE Homepage SHALL present AI as a useful tool by stating at least one concrete limitation or regulatory consideration (e.g., AI Act compliance, data sovereignty) alongside any stated capability
4. THE Homepage SHALL NOT attribute capabilities, credentials, or results to the Stakeholder, dHive, or the offer that are not substantiated by verifiable facts present in the Knowledge_Base
5. WHEN describing services or expertise, THE Homepage SHALL use specific, quantifiable evidence from the Knowledge_Base (e.g., project count, years of experience, certifications held) rather than subjective qualifiers (e.g., "highly experienced", "leading expert", "world-class")
### Requirement 18: Scope Boundaries for First Version
**User Story:** As the stakeholder, I want clear scope boundaries for the first version, so that development stays focused on confirmed features.
#### Acceptance Criteria
1. THE Homepage first version SHALL NOT include appointment scheduling functionality such as booking forms, time slot selection, or availability calendars
2. THE Homepage first version SHALL NOT include a calendar displaying available time slots for any service or consultation
3. THE Homepage first version SHALL NOT include any login-protected or access-restricted section that provides additional features to registered or subscribed users
4. THE Homepage first version SHALL serve all content publicly without requiring user authentication or distinguishing between visitor types
5. THE Homepage first version SHALL NOT include user account creation, login, or subscription management functionality
@@ -0,0 +1 @@
{"specId": "9061ba61-554c-45b6-87f0-88e69adb2038", "workflowType": "requirements-first", "specType": "feature"}
@@ -0,0 +1,570 @@
# Design Document: Personal Knowledge Base
## Overview
This system implements a file-based personal knowledge graph stored entirely in human-readable formats (YAML for structured data, Markdown for prose content) within a Git repository. It provides Kiro skills for CV generation, interview-based knowledge collection, talk introductions, and iterative review workflows.
The architecture follows the "plain text files as database" pattern — entities and relationships are stored as individual YAML files in a well-defined directory structure. Kiro skills read and write these files directly, using the file system as the query layer. Git provides version history, collaboration, and deployment triggers.
### Design Decisions
1. **YAML over JSON for data files** — YAML supports comments, multi-line strings, and produces cleaner diffs. It's more natural for human editing while remaining machine-parseable.
2. **One file per entity** — Each person, experience, skill, etc. gets its own file. This keeps diffs focused and enables granular version history.
3. **Relationships stored inline and in a separate index** — Entity files reference related entities by ID. A central graph index provides a queryable overview.
4. **Kiro skills as the primary interface** — All automated operations (generation, interviews, reviews) are implemented as Kiro skills following the Agent Skills standard.
5. **No database or build step** — The file system IS the database. No compilation, indexing, or server required.
## Architecture
```mermaid
graph TD
subgraph "Git Repository"
subgraph "Knowledge Base (kb/)"
Profiles[profiles/]
Experiences[experiences/]
Skills[skills/]
Orgs[organizations/]
Projects[projects/]
Certs[certifications/]
Tandems[tandems/]
Graph[graph-index.yaml]
end
subgraph "Kiro Skills (.kiro/skills/)"
InterviewSkill[interview-collect/]
CVGenSkill[cv-generate/]
TalkIntroSkill[talk-intro/]
ReviewSkill[kb-review/]
end
subgraph "Templates (templates/)"
CVTemplate[cv-templates/]
IntroTemplate[intro-templates/]
end
subgraph "Output (output/)"
GeneratedCVs[cvs/]
GeneratedIntros[intros/]
end
end
InterviewSkill -->|reads/writes| Profiles
InterviewSkill -->|reads/writes| Experiences
CVGenSkill -->|reads| Profiles
CVGenSkill -->|reads| Experiences
CVGenSkill -->|reads| Skills
CVGenSkill -->|reads| Tandems
CVGenSkill -->|writes| GeneratedCVs
TalkIntroSkill -->|reads| Profiles
TalkIntroSkill -->|writes| GeneratedIntros
ReviewSkill -->|reads| Graph
ReviewSkill -->|identifies gaps| Profiles
```
### Component Interaction Flow
1. **Data Entry**: User runs interview skill → skill asks questions → writes YAML entity files → updates graph index
2. **Document Generation**: User provides job posting → CV skill reads relevant entities → applies template → writes Markdown output
3. **Review**: User runs review skill → skill reads graph index → calculates completeness → suggests interview topics
## Components and Interfaces
### 1. Knowledge Base Data Layer (`kb/`)
The core data store. All files are YAML with defined schemas.
**Interface**: File system read/write. Skills interact by reading and writing YAML files.
**Responsibilities**:
- Store entity data in schema-compliant YAML files
- Maintain referential integrity via the graph index
- Provide human-navigable directory structure
### 2. Graph Index (`kb/graph-index.yaml`)
A single file that lists all entities and their relationships, serving as a queryable overview of the entire knowledge graph.
**Interface**: Read by skills to discover entities; updated when entities are added/modified.
**Responsibilities**:
- List all entities with type, ID, and display name
- List all relationships between entities
- Enable quick lookups without scanning all files
### 3. Interview Collect Skill (`.kiro/skills/interview-collect/`)
A Kiro skill that conducts focused interview sessions to collect knowledge.
**Interface**: Conversational — activated by user request or slash command `/interview-collect`.
**Responsibilities**:
- Identify gaps in existing profiles
- Ask focused questions (max 10 per session)
- Write collected data to appropriate entity files
- Update graph index with new entities/relationships
- Detect and surface conflicts with existing data
### 4. CV Generate Skill (`.kiro/skills/cv-generate/`)
A Kiro skill that produces tailored CVs from knowledge base data.
**Interface**: Activated with a job posting as input. Outputs Markdown CV files.
**Responsibilities**:
- Parse job posting requirements
- Select relevant experiences, skills, projects from the knowledge base
- Generate individual CVs and tandem CVs
- Apply templates for consistent formatting
- Never fabricate content — only use data present in the knowledge base
### 5. Talk Intro Skill (`.kiro/skills/talk-intro/`)
A Kiro skill that generates speaker introductions.
**Interface**: Activated with talk topic and event context. Outputs Markdown intro files.
**Responsibilities**:
- Generate short (2-3 sentences), medium (paragraph), and long (multi-paragraph) variants
- Adapt tone to event context (technical, business, academic)
- Pull relevant expertise from person profile
### 6. KB Review Skill (`.kiro/skills/kb-review/`)
A Kiro skill for iterative knowledge base maintenance.
**Interface**: Activated by user request. Presents review summary and suggestions.
**Responsibilities**:
- Calculate completeness scores per profile
- Identify stale information (based on last-modified dates)
- Suggest areas for next interview session
- Recommend relationship additions for graph consistency
## Data Models
### Entity File Schemas
All entity files follow a common header pattern:
```yaml
# Common header for all entity files
id: <kebab-case-unique-id>
type: <entity-type>
created: <ISO-8601 date>
modified: <ISO-8601 date>
```
### Person Profile (`kb/profiles/<person-id>.yaml`)
```yaml
id: andre-knie
type: person
created: 2025-01-15
modified: 2025-09-01
name:
first: Andre
last: Knie
display: Andre Knie
contact:
email: # optional
linkedin: # optional
location: # optional
summary: |
Multi-line professional summary text.
languages:
- language: German
level: native
- language: English
level: fluent
education:
- institution: # name
degree: # degree title
field: # field of study
start: 2000-09
end: 2004-06
# References to other entities by ID
skills: [skill-id-1, skill-id-2]
experiences: [exp-id-1, exp-id-2]
certifications: [cert-id-1]
publications: []
```
### Experience (`kb/experiences/<experience-id>.yaml`)
```yaml
id: db-cargo-innovation-lead
type: experience
created: 2025-01-15
modified: 2025-09-01
title: Lead IT Innovation Development and AI
organization: db-cargo # reference to organization entity
start: 2023-04
end: null # null means current
description: |
Multi-line description of the role and responsibilities.
achievements:
- Achievement description one
- Achievement description two
skills-used: [python, machine-learning, team-leadership]
projects: [project-id-1]
```
### Skill (`kb/skills/<skill-id>.yaml`)
```yaml
id: python
type: skill
created: 2025-01-15
modified: 2025-01-15
name: Python
category: programming-language # programming-language | framework | methodology | soft-skill | domain
level: expert # beginner | intermediate | advanced | expert
years: 8
context: |
Optional notes on how/where this skill was developed.
```
### Organization (`kb/organizations/<org-id>.yaml`)
```yaml
id: db-cargo
type: organization
created: 2025-01-15
modified: 2025-01-15
name: DB Cargo AG
industry: logistics
parent: deutsche-bahn # optional reference to parent org
website: # optional
```
### Project (`kb/projects/<project-id>.yaml`)
```yaml
id: ai-platform-migration
type: project
created: 2025-01-15
modified: 2025-06-01
name: AI Platform Migration
description: |
Project description.
organization: db-cargo
start: 2024-01
end: 2024-12
skills-used: [python, aws, terraform]
persons: [andre-knie]
```
### Certification (`kb/certifications/<cert-id>.yaml`)
```yaml
id: aws-solutions-architect
type: certification
created: 2025-01-15
modified: 2025-01-15
name: AWS Solutions Architect Associate
issuer: Amazon Web Services
date: 2024-03
expires: 2027-03 # optional
person: andre-knie
```
### Job Sharing Tandem (`kb/tandems/<tandem-id>.yaml`)
```yaml
id: froldi-knie
type: tandem
created: 2025-01-15
modified: 2025-04-01
partners: [andre-knie, claudia-froldi]
shared-vision: |
Description of the tandem's shared professional vision.
complementary-skills: |
How the partners' skills complement each other.
collaboration-model: |
How the tandem divides and shares work.
combined-narrative: |
Joint professional narrative for applications.
joint-competencies:
- competency-description-1
- competency-description-2
```
### Graph Index (`kb/graph-index.yaml`)
```yaml
# Auto-maintained index of all entities and relationships
entities:
- id: andre-knie
type: person
name: Andre Knie
- id: claudia-froldi
type: person
name: Claudia Froldi
- id: db-cargo
type: organization
name: DB Cargo AG
# ... all entities listed
relationships:
- from: andre-knie
to: db-cargo
type: worked_at
context: db-cargo-innovation-lead # optional reference to experience
- from: andre-knie
to: claudia-froldi
type: partners_with
context: froldi-knie # reference to tandem
- from: andre-knie
to: python
type: has_skill
# ... all relationships listed
```
### Directory Structure
```
project-root/
├── .kiro/
│ ├── skills/
│ │ ├── interview-collect/
│ │ │ └── SKILL.md
│ │ ├── cv-generate/
│ │ │ ├── SKILL.md
│ │ │ └── references/
│ │ │ └── cv-formatting-guide.md
│ │ ├── talk-intro/
│ │ │ └── SKILL.md
│ │ └── kb-review/
│ │ └── SKILL.md
│ ├── steering/
│ │ └── kb-conventions.md
│ └── specs/
│ └── personal-knowledge-base/
├── kb/
│ ├── profiles/
│ │ ├── andre-knie.yaml
│ │ └── claudia-froldi.yaml
│ ├── experiences/
│ ├── skills/
│ ├── organizations/
│ ├── projects/
│ ├── certifications/
│ ├── tandems/
│ │ └── froldi-knie.yaml
│ └── graph-index.yaml
├── templates/
│ ├── cv-individual.md
│ ├── cv-tandem.md
│ └── intro-speaker.md
├── output/
│ ├── cvs/
│ └── intros/
├── sources/
│ └── (imported PDFs/DOCX for reference)
└── README.md
```
## Correctness Properties
*A property is a characteristic or behavior that should hold true across all valid executions of a system — essentially, a formal statement about what the system should do. Properties serve as the bridge between human-readable specifications and machine-verifiable correctness guarantees.*
### Property 1: Entity serialization round-trip
*For any* valid knowledge base entity (person, experience, skill, organization, project, certification, or tandem), serializing it to YAML and deserializing the result SHALL produce an equivalent entity with all attributes preserved.
**Validates: Requirements 2.1, 8.2**
### Property 2: Entity schema validation
*For any* entity with a declared type, the validation function SHALL accept the entity if and only if all required attributes for that type are present and correctly typed. Entities missing required fields SHALL be rejected with an error identifying the missing fields.
**Validates: Requirements 1.1, 1.3**
### Property 3: Temporal consistency
*For any* time-bound entity (experience, role, project, certification) where both start and end dates are present, the start date SHALL be less than or equal to the end date.
**Validates: Requirements 1.4**
### Property 4: Graph index consistency
*For any* set of entity files in the knowledge base, the graph index SHALL list exactly those entities (no missing, no extra). All relationships in the graph index SHALL reference entity IDs that exist in the entities list, and all relationship types SHALL be from the defined set.
**Validates: Requirements 1.2, 9.4**
### Property 5: Tandem entity integrity
*For any* tandem entity, it SHALL reference exactly two existing person profiles as partners, and SHALL contain all tandem-specific fields (shared vision, complementary skills, collaboration model).
**Validates: Requirements 2.3, 2.4**
### Property 6: Interview session question limit
*For any* interview session generated from any profile state and topic area, the number of questions SHALL not exceed 10.
**Validates: Requirements 4.2**
### Property 7: Gap detection completeness
*For any* person profile with missing optional or required attributes, the gap detection function SHALL identify all missing attributes. The set of detected gaps SHALL be a superset of the actually missing required fields.
**Validates: Requirements 4.4**
### Property 8: Conflict detection
*For any* existing entity and a proposed update that changes an existing attribute value, the conflict detection function SHALL flag the conflicting fields.
**Validates: Requirements 4.5**
### Property 9: CV relevance selection
*For any* job posting with specified skill requirements and any person profile, the CV generator SHALL select only experiences and skills that have non-empty intersection with the posting requirements. Selected items SHALL appear before non-matching items in the output.
**Validates: Requirements 5.1, 5.2**
### Property 10: Tandem application document set
*For any* tandem application to a job posting, the generator SHALL produce exactly 3 documents: one combined tandem CV referencing both partners, and one individual CV per partner. The tandem CV SHALL contain information from both partner profiles.
**Validates: Requirements 5.3, 5.4**
### Property 11: CV output validity and traceability
*For any* generated CV, the output SHALL be valid Markdown. Every skill name, organization name, job title, and date mentioned in the CV SHALL be traceable to an entity in the source knowledge base.
**Validates: Requirements 5.5, 5.6**
### Property 12: Introduction length variants
*For any* talk introduction generation request, the system SHALL produce exactly three variants where the character count satisfies: short < medium < long.
**Validates: Requirements 6.2**
### Property 13: Completeness score calculation
*For any* person profile, the completeness score SHALL equal the ratio of filled attributes to total defined attributes (including relationship coverage). A profile with all attributes filled SHALL score 1.0, and an empty profile SHALL score close to 0.0.
**Validates: Requirements 7.3**
### Property 14: Review prioritization ordering
*For any* set of entities with varying last-modified dates and completeness scores, the review prioritization SHALL rank entities with lower completeness scores and older modification dates higher than entities with higher completeness and recent modifications.
**Validates: Requirements 7.2**
### Property 15: File naming convention
*For any* entity ID in the knowledge base, the corresponding file name SHALL match the pattern `<entity-id>.yaml` where entity-id consists only of lowercase letters, numbers, and hyphens (kebab-case).
**Validates: Requirements 9.2**
## Error Handling
### File System Errors
| Error Condition | Handling Strategy |
|---|---|
| Entity file not found | Return descriptive error with entity ID and expected path |
| YAML parse error | Return error with file path, line number, and parse message |
| Schema validation failure | Return list of missing/invalid fields with expected types |
| Duplicate entity ID | Reject creation, report existing entity location |
| Broken relationship reference | Log warning, include in review skill's integrity report |
### Document Generation Errors
| Error Condition | Handling Strategy |
|---|---|
| Empty profile (no data to generate from) | Return error explaining minimum data requirements |
| Job posting cannot be parsed | Return error with guidance on expected posting format |
| Template not found | Fall back to built-in default template, log warning |
| Referenced entity missing during generation | Skip the reference, add note to output indicating gap |
### Interview Session Errors
| Error Condition | Handling Strategy |
|---|---|
| Conflicting data detected | Present both values to user, ask for resolution |
| Session interrupted (user stops early) | Persist any data collected so far, mark session incomplete |
| Invalid user input (wrong format) | Re-ask the question with format guidance |
### Source Document Ingestion Errors
| Error Condition | Handling Strategy |
|---|---|
| PDF cannot be read | Report parsing failure with file name and error details |
| DOCX cannot be read | Report parsing failure with file name and error details |
| Extracted data ambiguous | Present multiple interpretations to user for selection |
## Testing Strategy
### Property-Based Testing
**Library**: [fast-check](https://github.com/dubzzz/fast-check) (TypeScript/JavaScript) — chosen because Kiro skills execute in a Node.js environment and fast-check provides excellent arbitrary generators for structured data.
**Configuration**: Minimum 100 iterations per property test.
**Tag format**: Each test tagged with `Feature: personal-knowledge-base, Property {N}: {title}`
Property-based tests will cover:
- Entity serialization round-trips (Property 1)
- Schema validation logic (Property 2)
- Temporal consistency checks (Property 3)
- Graph index integrity (Property 4)
- Tandem entity validation (Property 5)
- Interview question limits (Property 6)
- Gap detection (Property 7)
- Conflict detection (Property 8)
- CV relevance selection (Property 9)
- Tandem document generation (Property 10)
- CV traceability (Property 11)
- Introduction length ordering (Property 12)
- Completeness scoring (Property 13)
- Review prioritization (Property 14)
- File naming validation (Property 15)
### Unit Tests (Example-Based)
Unit tests cover specific scenarios and edge cases not suited for PBT:
- Multiple profiles coexist without conflict (Req 1.5)
- Source document extraction with known sample files (Req 3.1, 3.2)
- Extraction presents confirmation before persisting (Req 3.3)
- Corrupted file produces descriptive error (Req 3.4)
- Interview session covers single topic (Req 4.1)
- Interview writes collected data to graph (Req 4.3)
- Talk intro references relevant expertise (Req 6.1)
- Tone adaptation for different contexts (Req 6.3)
- Relationship suggestions use valid types (Req 7.4)
### Integration Tests
- Git version control preserves profile history (Req 2.2)
- Deployment pipeline triggers on push (Req 8.3)
- End-to-end: import PDF → extract → confirm → persist → generate CV
### Smoke Tests
- Review skill activates and produces output (Req 7.1)
- All expected directories exist (Req 9.1)
- Skills are in .kiro/skills/ with valid SKILL.md (Req 9.3)
- README exists with required sections (Req 8.4)
- Git repository is valid (Req 8.1)
@@ -0,0 +1,121 @@
# Requirements Document
## Introduction
A personal knowledge base system that stores structured information about the user (Andre Knie) and job sharing partners (e.g., Claudia Froldi) in a knowledge graph. The system enables generation of tailored CVs for specific job openings, talk introductions, and other professional documents. It supports iterative knowledge collection through short interview sessions, provides Kiro skills for common tasks, and uses Git for version control and automatic deployment.
## Glossary
- **Knowledge_Base**: The structured data store containing all personal and professional information about registered persons, organized as a knowledge graph
- **Knowledge_Graph**: A graph-based data structure representing entities (persons, skills, experiences, organizations, roles) and their relationships
- **Person_Profile**: A complete record of a person's professional and personal information within the Knowledge_Base
- **Job_Sharing_Tandem**: A pair of persons who apply jointly for positions, sharing responsibilities and presenting combined qualifications
- **Kiro_Skill**: A reusable Kiro skill file (.md in .kiro/skills/) that automates a specific task such as CV generation or interview collection
- **Interview_Session**: A structured, short conversational interaction to collect or update information from the user
- **Document_Generator**: The component responsible for producing tailored output documents (CVs, introductions) from Knowledge_Base data
- **Source_Document**: An existing file (PDF, DOCX) containing information to be extracted and integrated into the Knowledge_Base
- **Deployment_Pipeline**: The Git-based mechanism that enables automatic deployment of the knowledge base and skills upon push
## Requirements
### Requirement 1: Knowledge Graph Data Model
**User Story:** As a user, I want my professional information stored in a structured knowledge graph, so that relationships between people, skills, experiences, and roles are explicitly represented and queryable.
#### Acceptance Criteria
1. THE Knowledge_Graph SHALL represent persons, skills, experiences, organizations, roles, projects, and certifications as distinct entity types
2. THE Knowledge_Graph SHALL represent relationships between entities including "has_skill", "worked_at", "collaborated_with", "applied_for", and "partners_with"
3. WHEN a new entity is added to the Knowledge_Graph, THE Knowledge_Base SHALL validate that required attributes for the entity type are present
4. THE Knowledge_Graph SHALL store temporal information (start date, end date) for time-bound entities such as experiences and roles
5. THE Knowledge_Graph SHALL support multiple Person_Profiles within a single Knowledge_Base instance
### Requirement 2: Person Profile Management
**User Story:** As a user, I want to maintain detailed profiles for myself and my job sharing partners, so that complete and accurate information is available for document generation.
#### Acceptance Criteria
1. THE Knowledge_Base SHALL store the following attributes for each Person_Profile: name, contact details, professional summary, education history, work experience, skills, certifications, languages, and publications
2. WHEN a Person_Profile is updated, THE Knowledge_Base SHALL preserve the full history of changes via Git version control
3. THE Knowledge_Base SHALL support linking two Person_Profiles as a Job_Sharing_Tandem with shared attributes such as joint competencies and combined experience narrative
4. WHEN a Job_Sharing_Tandem is defined, THE Knowledge_Base SHALL store tandem-specific information including shared vision, complementary skills, and collaboration model
### Requirement 3: Source Document Ingestion
**User Story:** As a user, I want to import information from existing CVs and documents, so that I do not have to re-enter information already available in files.
#### Acceptance Criteria
1. WHEN a Source_Document in PDF format is provided, THE Knowledge_Base SHALL extract text content and map it to Knowledge_Graph entities
2. WHEN a Source_Document in DOCX format is provided, THE Knowledge_Base SHALL extract text content and map it to Knowledge_Graph entities
3. WHEN information is extracted from a Source_Document, THE Knowledge_Base SHALL present the extracted entities to the user for confirmation before persisting
4. IF a Source_Document cannot be parsed, THEN THE Knowledge_Base SHALL report the parsing failure with a descriptive error message
### Requirement 4: Interview Skill for Knowledge Collection
**User Story:** As a user, I want a Kiro skill that conducts short interview sessions with me, so that I can iteratively add and refine information in my knowledge base through conversation.
#### Acceptance Criteria
1. THE Interview_Session Kiro_Skill SHALL ask focused questions covering one topic area per session (e.g., a single role, a single project, a single skill cluster)
2. THE Interview_Session Kiro_Skill SHALL limit each session to a maximum of 10 questions to keep interactions short
3. WHEN an Interview_Session is completed, THE Kiro_Skill SHALL update the Knowledge_Graph with the collected information
4. THE Interview_Session Kiro_Skill SHALL identify gaps in existing Person_Profiles and prioritize questions that fill those gaps
5. WHEN the user provides information that contradicts existing Knowledge_Graph data, THE Kiro_Skill SHALL highlight the conflict and ask the user to resolve it
### Requirement 5: CV Generation Skill
**User Story:** As a user, I want a Kiro skill that generates CVs tailored to specific job openings, so that my applications highlight the most relevant qualifications for each position.
#### Acceptance Criteria
1. WHEN a job posting is provided, THE Document_Generator Kiro_Skill SHALL analyze the posting requirements and select relevant entries from the Person_Profile
2. THE Document_Generator Kiro_Skill SHALL produce a CV that emphasizes skills and experiences matching the job posting requirements
3. WHERE a Job_Sharing_Tandem applies jointly, THE Document_Generator Kiro_Skill SHALL generate a combined tandem CV showing complementary qualifications
4. WHERE a Job_Sharing_Tandem applies jointly, THE Document_Generator Kiro_Skill SHALL also generate individual CVs for each partner tailored to the same posting
5. THE Document_Generator Kiro_Skill SHALL output CVs in Markdown format suitable for conversion to PDF or DOCX
6. WHEN generating a CV, THE Document_Generator Kiro_Skill SHALL include only information present in the Knowledge_Base without fabricating content
### Requirement 6: Talk Introduction Generation Skill
**User Story:** As a user, I want a Kiro skill that generates speaker introductions for talks and events, so that I have context-appropriate introductions ready.
#### Acceptance Criteria
1. WHEN a talk topic and event context are provided, THE Document_Generator Kiro_Skill SHALL generate a speaker introduction highlighting relevant expertise from the Person_Profile
2. THE Document_Generator Kiro_Skill SHALL produce introductions in three length variants: short (2-3 sentences), medium (one paragraph), and long (multiple paragraphs)
3. THE Document_Generator Kiro_Skill SHALL adapt the tone and emphasis based on the event context (technical conference, business meeting, academic setting)
### Requirement 7: Iterative Enhancement Workflow
**User Story:** As a user, I want a structured workflow for regular knowledge base enhancement sessions, so that my information stays current and grows over time.
#### Acceptance Criteria
1. THE Knowledge_Base SHALL provide a Kiro_Skill that initiates a review session summarizing recent changes and identifying stale or incomplete information
2. WHEN a review session is initiated, THE Kiro_Skill SHALL present a prioritized list of areas needing updates based on time since last review and completeness score
3. THE Knowledge_Base SHALL track a completeness score for each Person_Profile based on the proportion of filled attributes and relationship coverage
4. WHEN new skills or experiences are added, THE Kiro_Skill SHALL suggest related entities and relationships to maintain graph consistency
### Requirement 8: Git-Based Version Control and Deployment
**User Story:** As a user, I want all knowledge base data and skills stored in Git, so that changes are tracked and deployment happens automatically on push.
#### Acceptance Criteria
1. THE Knowledge_Base SHALL store all data files, skill files, and configuration in a Git-compatible directory structure
2. THE Knowledge_Base SHALL use human-readable file formats (Markdown, YAML, or JSON) for all stored data to enable meaningful Git diffs
3. WHEN changes are committed and pushed, THE Deployment_Pipeline SHALL make the updated knowledge base and skills available without manual intervention
4. THE Knowledge_Base SHALL include a README documenting the directory structure, available skills, and usage instructions
### Requirement 9: Knowledge Base File Organization
**User Story:** As a user, I want a clean and predictable file structure, so that I can navigate and manually edit the knowledge base when needed.
#### Acceptance Criteria
1. THE Knowledge_Base SHALL organize data into separate directories for profiles, graph relationships, skills, templates, and generated outputs
2. THE Knowledge_Base SHALL use consistent naming conventions across all files (kebab-case for file names, defined schema for data files)
3. WHEN a new Kiro_Skill is created, THE Knowledge_Base SHALL place it in the .kiro/skills/ directory following Kiro skill file conventions
4. THE Knowledge_Base SHALL maintain an index file listing all entities in the Knowledge_Graph for quick reference
@@ -0,0 +1,155 @@
# Implementation Plan: Personal Knowledge Base
## Overview
File-based personal knowledge graph with YAML entity storage, a graph index, and four Kiro skills. TypeScript for validation logic and property-based tests (fast-check). File system is the database — no build step or server required.
Source of truth: `SPEC.md`
## Tasks
- [x] 1. Set up project structure and core configuration
- [x] 1.1 Create directory structure for the knowledge base
- [x] 1.2 Initialize TypeScript project for validation and testing
- [x] 1.3 Create README.md documenting the project
- [x] 2. Implement entity schemas, validation, and property tests
- [x] 2.1 Define TypeScript interfaces for all entity types
- `src/schemas/types.ts`
- _Requirements: 1.1, 1.2, 2.1_
- [x] 2.2 Implement entity validation functions
- `src/schemas/validate.ts`
- _Requirements: 1.3, 1.4, 9.2_
- [x] 2.3 Write schema property tests (Properties 1, 2, 3, 15)
- Single test file: `src/schemas/validate.test.ts`
- Property 1: Entity serialization round-trip
- Property 2: Entity schema validation (accepts valid, rejects invalid)
- Property 3: Temporal consistency (start ≤ end)
- Property 15: File naming convention (kebab-case)
- _Requirements: 1.1, 1.3, 1.4, 2.1, 8.2, 9.2_
- [x] 3. Implement YAML serialization and file I/O layer
- [x] 3.1 Create YAML serialization/deserialization utilities
- `src/io/yaml-utils.ts`
- _Requirements: 8.2, 2.1_
- [x] 3.2 Create entity file management functions
- `src/io/entity-files.ts`
- _Requirements: 9.2, 1.5_
- [x] 4. Implement graph index management and property tests
- [x] 4.1 Create graph index read/write logic
- `src/graph/index-manager.ts`
- _Requirements: 1.2, 9.4_
- [x] 4.2 Implement graph index rebuild from entity files
- Scan entity directories, rebuild `kb/graph-index.yaml`, detect broken references
- _Requirements: 1.2, 9.4_
- [x] 4.3 Write graph property tests (Properties 4, 5)
- Single test file: `src/graph/index-manager.test.ts`
- Property 4: Graph index consistency
- Property 5: Tandem entity integrity
- _Requirements: 1.2, 2.3, 2.4, 9.4_
- [x] 5. Checkpoint — run all tests, verify green
- `npm test`
- [x] 6. Implement interview-collect Kiro skill
- [x] 6.1 Create interview-collect SKILL.md
- `.kiro/skills/interview-collect/SKILL.md`
- _Requirements: 4.1, 4.2, 4.3, 4.4, 4.5, 9.3_
- [x] 6.2 Implement gap detection and conflict detection logic
- `src/interview/gap-detection.ts`
- `src/interview/conflict-detection.ts`
- _Requirements: 4.4, 4.5_
- [x] 6.3 Write interview property tests (Properties 6, 7, 8)
- Single test file: `src/interview/interview.test.ts`
- Property 6: Interview session question limit (≤ 10)
- Property 7: Gap detection completeness
- Property 8: Conflict detection
- _Requirements: 4.2, 4.4, 4.5_
- [x] 7. Implement cv-generate Kiro skill
- [x] 7.1 Create cv-generate SKILL.md and formatting reference
- `.kiro/skills/cv-generate/SKILL.md`
- `.kiro/skills/cv-generate/references/cv-formatting-guide.md`
- _Requirements: 5.15.6, 9.3_
- [x] 7.2 Implement relevance selection and tandem generation logic
- `src/cv/relevance-selection.ts`
- `src/cv/tandem-generator.ts`
- _Requirements: 5.1, 5.2, 5.3, 5.4_
- [x] 7.3 Create CV templates
- `templates/cv-individual.md`
- `templates/cv-tandem.md`
- _Requirements: 5.5_
- [x] 7.4 Write CV property tests (Properties 9, 10, 11)
- Single test file: `src/cv/cv.test.ts`
- Property 9: CV relevance selection ordering
- Property 10: Tandem application document set (exactly 3 docs)
- Property 11: CV output validity and traceability
- _Requirements: 5.15.6_
- [x] 8. Implement talk-intro Kiro skill
- [x] 8.1 Create talk-intro SKILL.md and template
- `.kiro/skills/talk-intro/SKILL.md`
- `templates/intro-speaker.md`
- _Requirements: 6.1, 6.2, 6.3, 9.3_
- [x] 8.2 Implement introduction generation logic
- `src/intro/intro-generator.ts`
- _Requirements: 6.1, 6.2, 6.3_
- [x] 8.3 Write intro property test (Property 12)
- Single test file: `src/intro/intro.test.ts`
- Property 12: Introduction length variants (short < medium < long)
- _Requirements: 6.2_
- [x] 9. Implement kb-review Kiro skill
- [x] 9.1 Create kb-review SKILL.md
- `.kiro/skills/kb-review/SKILL.md`
- _Requirements: 7.1, 7.2, 7.3, 7.4, 9.3_
- [x] 9.2 Implement completeness scoring and prioritization logic
- `src/review/completeness-score.ts`
- `src/review/prioritization.ts`
- _Requirements: 7.2, 7.3_
- [x] 9.3 Write review property tests (Properties 13, 14)
- Single test file: `src/review/review.test.ts`
- Property 13: Completeness score calculation
- Property 14: Review prioritization ordering
- _Requirements: 7.2, 7.3_
- [x] 10. Checkpoint — run all tests, verify green
- `npm test`
- [x] 11. Wire everything together
- [x] 11.1 Create KB conventions steering file
- `.kiro/steering/kb-conventions.md`
- _Requirements: 9.2, 9.4_
- [x] 11.2 Create seed data (graph-index.yaml + profile stub)
- `kb/graph-index.yaml` (empty)
- `kb/profiles/andre-knie.yaml` (minimal valid profile)
- _Requirements: 1.5, 9.1_
- [x] 11.3 Wire skills to reference shared validation logic
- _Requirements: 9.3_
- [x] 12. Final checkpoint — run all tests, verify green
- `npm test`
## Notes
- Property tests consolidated into per-module test files (fewer files, same coverage)
- SPEC.md is the source of truth; README.md is user-facing documentation
- Seed data (11.2) runs after validation logic exists so it can be validated
- AGENTS.md git workflow (branch, PR) applies at commit time
@@ -0,0 +1,45 @@
# Knowledge Base Conventions
## File Naming
- All entity files: `<entity-id>.yaml`
- Entity IDs: lowercase letters, numbers, hyphens only (kebab-case)
- No leading/trailing hyphens, no double hyphens
- Pattern: `/^[a-z0-9]+(-[a-z0-9]+)*$/`
## Directory Structure
| Path | Contents |
|------|----------|
| `kb/profiles/` | Person entities |
| `kb/experiences/` | Experience entities |
| `kb/skills/` | Skill entities |
| `kb/organizations/` | Organization entities |
| `kb/projects/` | Project entities |
| `kb/certifications/` | Certification entities |
| `kb/tandems/` | Tandem entities |
| `kb/tracking/` | LinkedIn tracking entities |
| `kb/graph-index.yaml` | Central graph index |
## Graph Index Maintenance
- Always update `kb/graph-index.yaml` when entities are added or removed
- Valid relationship types: `has_skill`, `worked_at`, `collaborated_with`, `applied_for`, `partners_with`
- All relationships must reference existing entity IDs
- Rebuild with `src/graph/index-manager.ts` if index drifts out of sync
## Entity Schema Conventions
- Common header on every entity file: `id`, `type`, `created`, `modified`
- Dates in ISO format: `YYYY-MM-DD` or `YYYY-MM`
- Use `null` for open-ended dates (e.g., current role `end: null`)
- YAML files use kebab-case keys (e.g., `skills-used`, `shared-vision`)
- TypeScript uses camelCase (e.g., `skillsUsed`, `sharedVision`)
## Validation Rules
- Always validate entities before writing to disk
- Temporal consistency: start ≤ end (when both are present)
- Tandem entities must have exactly 2 partners
- All referenced entity IDs must exist in the knowledge base
- Use `src/schemas/validate.ts` for programmatic validation
+47
View File
@@ -0,0 +1,47 @@
---
inclusion: auto
---
# CV Project Standards
## Quality Gates (before every commit)
1. `gitleaks detect --source . --no-git` — no secrets in code
2. `npm run typecheck` — TypeScript passes
3. `npm test` — all vitest tests pass (252 tests, 80%+ coverage)
4. `npm audit` — 0 vulnerabilities
## Conventional Commits
```
feat(cv): add tandem CV template
fix(graph): handle circular references in index
test(interview): add property test for gap detection
docs(readme): update entity schema section
```
## Testing
- Vitest + fast-check for property-based testing
- 15 formal correctness properties defined in SPEC.md
- Given-When-Then structure
- 80% coverage minimum
## Autonomous Mode
- Never push directly to main — use feature branches
- Create PRs on GitHub targeting main
- If stuck after 3 attempts: stop and document
- Report: `PROGRESS: X%` / `HELP: description`
## Architecture
- File-based knowledge graph (YAML entities, one file per entity)
- TypeScript for validation and logic
- Kiro skills for workflows (interview, cv-generate, talk-intro, kb-review)
- No build step, no server — file system is the database
## File Naming
- Entity files: kebab-case (`andre-knie.yaml`, `db-cargo-innovation-lead.yaml`)
- All filenames OneDrive-safe (no brackets, no special chars)
+78
View File
@@ -0,0 +1,78 @@
---
inclusion: always
---
# Start — Projektübersicht & Steuerung
## Zweck
Dieses Projekt ist eine persönliche Knowledge Base mit automatisierter Generierung von CVs, Beraterprofilen und Speaker-Intros. Es nutzt strukturierte YAML-Daten und Skills zur Produktion maßgeschneiderter Dokumente.
## Ordnerstruktur
| Pfad | Inhalt |
|------|--------|
| `kb/` | Knowledge Base — Profile, Erfahrungen, Skills, Projekte, Zertifizierungen, Organisationen, Tandems |
| `src/` | TypeScript Source Code — Validierung, Graph-Management, CV-Generierung, Interview, Review |
| `templates/` | Markdown-Templates für CV und Intro-Generierung |
| `output/` | Generierte Outputs (Profile, Intros, CVs) |
| `assets/` | Fotos, Logos (d-hive CD) |
| `bewerbungen/` | Stellenausschreibungen und Bewerbungsmaterial |
| `archive/` | Ältere CVs und Referenzdokumente |
| `sources/` | Quelldokumente für KB-Import |
| `.kiro/skills/` | Kiro Skills (consultant-profile, cv-generate, interview-collect, kb-review, talk-intro) |
| `.kiro/steering/` | Steering-Dateien (kb-conventions, start) |
| `.kiro/specs/` | Spec-Dokumente |
## Wesentliche Steuerungsdokumente
1. **SPEC.md** — Technische Spezifikation des Projekts (Source of Truth)
2. **AGENTS.md** — Coding Rules, Git-Workflow, Dokumentationsregeln
3. **RULES.md** — Zusätzliche Projektregeln
4. **README.md** — Projektbeschreibung
5. **.kiro/steering/kb-conventions.md** — KB-Konventionen (Dateinamen, Schema, Validierung)
## Skills (verfügbar via `#`-Kontext)
| Skill | Zweck |
|-------|-------|
| `consultant-profile` | Beraterprofil (HTML One-Pager) aus KB + RFP generieren |
| `cv-generate` | CV aus KB + Stellenausschreibung generieren |
| `talk-intro` | Speaker-Intro in 3 Längenvarianten generieren |
| `interview-collect` | Interview-Session zur KB-Erweiterung |
| `kb-review` | KB-Review mit Completeness-Scoring |
## Corporate Design (d-hive)
- **Farben:** Schwarz (#0a0a0a) + Neon-Grün (#39ff14)
- **Auf weißem Hintergrund:** Schwarz für Struktur, Neon-Grün für Highlights
- **Logo (heller BG):** `assets/d-Hive_logo_darkText_transparent_crop.png`
- **Logo (dunkler BG):** `assets/d-Hive_logo_transparent_crop.png`
- **Foto André:** `assets/230823_Einfachbahn_Andre-brillenlos-hochformat.png`
- **Typografie:** Inter (Google Fonts)
## Key Facts (für Stats-Bars)
- 50+ Projekte, 15+ Kunden
- 13+ Jahre KI-Erfahrung (erste ML-Publikation 2012)
- 60+ wissenschaftliche Veröffentlichungen, 2.000+ Zitationen
- 6 Live Use Cases (Projekt KIQ)
- 100% DSGVO & AI-Act konform
## Session-Routing
Wenn die erste Nachricht des Users vage ist oder ein Gruß (z.B. "hi", "hallo", "was geht?"), biete folgende Optionen an:
1. **Introduction erstellen** — Speaker-Intro oder Kurztext für ein Event generieren
2. **CV / Beraterprofil erstellen** — CV oder Consultant One-Pager passend zu einer Stellenausschreibung oder RFP generieren
3. **Neuen Input liefern** — Neue Informationen in die Knowledge Base eintragen (Interview, Korrekturen, Updates)
4. **Sonstiges** — Etwas anderes
Wenn die Nachricht bereits klar erkennen lässt, was gewünscht ist (z.B. ein RFP wird eingefügt oder "erstell mir eine Intro für..."), überspringe das Menü und starte direkt mit dem passenden Skill.
## Quick Start
1. Lies `SPEC.md` für die technische Architektur
2. Lies `.kiro/steering/kb-conventions.md` für KB-Regeln
3. Nutze Skills via `#consultant-profile`, `#cv-generate`, `#talk-intro`, etc.
4. Outputs landen in `output/`
+122
View File
@@ -0,0 +1,122 @@
# AGENTS.md
---
## Coding rules
1. Read `SPEC.md` first and treat it as source of truth ("the spec"). If `SPEC.md` does not exist, **stop and ask**.
2. Follow the user prompt exactly; do not omit explicitly requested steps.
3. **Avoid over-engineering.** Only make changes that are directly requested or clearly necessary. Keep solutions simple and focused:
- Scope: Don't add features, refactor code, or make "improvements" beyond what was asked. A bug fix doesn't need surrounding code cleaned up. A simple feature doesn't need extra configurability.
- Documentation: Don't add docstrings, comments, or type annotations to code you didn't change. Only add comments where the logic isn't self-evident.
- Defensive coding: Don't add error handling, fallbacks, or validation for scenarios that can't happen. Trust internal code and framework guarantees. Only validate at system boundaries (user input, external APIs).
- Abstractions: Don't create helpers, utilities, or abstractions for one-time operations. Don't design for hypothetical future requirements. The right amount of complexity is the minimum needed for the current task.
- Custom coding: Don't reinvent the wheel, use the functions the framework provides you with. If you think that using framework is not possible, consult the relevant online or MCP docs to make sure. If you still cannot find a solution within the framework, **stop and ask**.
4. Do not hard-code values or create solutions that only work for specific test inputs; implement the actual logic that solves the problem generally.
5. The resulting code must be robust, maintainable, and extendable.
6. The resulting code must not contradict the spec.
7. **Before writing code**, post a short and concise "Plan + spec mapping" summary and **ask for approval to proceed**. Do not implement until you receive the go-ahead.
8. Documentation Rules:
- filenames are always capitalized.
- describes the **current state only**. Do not include change/history phrasing.
- must always be coherent end-to-end never have stale or conflicting info.
9. Always use repo virtual environment (unless there is none).
---
## Documentation MCP policy
- We run ONE docs MCP server: `docs` (multi-library).
### Library selection
- For any docs query call (everything except `list_libraries`), you MUST set `library`.
- If the prompt or repo context involves a specific product/project unambiguously, use that as `library` (e.g. `library="haystack"`).
- If more than one library could plausibly match, call `list_libraries` and select the best match (do not invent/guess library ids).
- If the task spans multiple products, run separate docs calls per library and label results by library.
### Version selection
- If the prompt or repo context involves a version or range (e.g. `2.25`, `2.x`), call `find_version(library=..., targetVersion=...)` and record the returned `version`.
- Use that resolved `version` for all subsequent calls for that library.
- If `find_version` cannot resolve unambiguously, **stop and ask**.
- If no version is mentioned, omit `version` (defaults to latest indexed for that library).
- We also run the `github` MCP server. Consult it always for code that is in public github instead of searching at the disk or cloning the repos locally.
---
## Base branch rule
**BASE_BRANCH = the branch that new work branches are created from and PRs target.**
Default:
- If the user did not explicitly specify a base/target branch, set:
- `BASE_BRANCH=$(git branch --show-current)` (from the user's main checkout at session start)
Override:
- If the user explicitly specifies a base/target branch in the prompt, use that as `BASE_BRANCH`.
Remote base ref:
- If `origin/$BASE_BRANCH` exists, use that as `BASE_REF`, else use `$BASE_BRANCH`:
- `git show-ref --verify --quiet "refs/remotes/origin/$BASE_BRANCH" && BASE_REF="origin/$BASE_BRANCH" || BASE_REF="$BASE_BRANCH"`
Notes:
- This supports long-lived feature integration branches and stacked PRs.
- The base branch may itself be another PR branch (for stacking); set BASE_BRANCH accordingly.
---
## Before work
1. Determine base branch (unless user specified it explicitly):
- `BASE_BRANCH=$(git branch --show-current)`
2. Fetch latest refs:
- `git fetch origin --prune`
3. Update base branch (fast-forward only) if it has an `origin/` tracking ref:
- `git switch "$BASE_BRANCH"`
- `if git show-ref --verify --quiet "refs/remotes/origin/$BASE_BRANCH"; then git pull --ff-only origin "$BASE_BRANCH"; fi`
- If the pull fails for any reason, stop and ask.
4. Read `SPEC.md` + `README.md` once per session. Re-read only if changed/unsure:
- `git log -1 --oneline -- SPEC.md README.md`
5. If deviating from `SPEC.md`: **stop and ask**.
6. Create a new local work branch (once per session) **from BASE_BRANCH**. **ALWAYS push to the branch you created.**
- `git switch -c "agent/<topic>-YYYYMMDD-<shortid>"`
## Tests
- Run tests only if the prompt requests or `SPEC.md` requires them; run all requested tests.
- If any cannot be run: **stop and ask**.
## After work
1. Make sure you did not miss requested tests.
2. If you are addressing a **remote github issue** with
- "to-do" checklist: for **each** item, make sure your implementation is **fully complete** and:
- if yes, check it off
- if not, finish implementation and recheck.
- "acceptance" checklist: for **each** item, make the acceptance criterion is **completely fulfilled** and:
- if yes, check it off
- if not, implement missing code and recheck.
3. Update all relevant documentation appropriately.
4. **Before making a commit**: Stop and ask user to `/review``Review uncommited changes`.
5. Commit **only after** user confirms code review passed.
6. Open a PR or use already opened PR
- **use your created branch**.
- **Target `BASE_BRANCH`**.
- PR text requirements:
- commands in backticks
- real newlines (ANSI-C quoting/heredoc)
- if addressing a **remote github issue**, reference it so that github can close automatically after merging.
7. **Only after** PR is merged:
- switch back to base branch and sync it
- `git switch "$BASE_BRANCH"`
- `git fetch origin --prune`
- `if git show-ref --verify --quiet "refs/remotes/origin/$BASE_BRANCH"; then git reset --hard "origin/$BASE_BRANCH"; fi`
- If the reset fails, **stop and ask**.
- delete the local merged work branch
---
## Required completion checklist (final response)
- [ ] Base/target branch used correctly (BASE_BRANCH)
- [ ] **all** Coding rules followed
- [ ] All requested tests run (commands + results), or blocked → asked
- [ ] Documentation updated appropriately: **list updated files**
- [ ] PR opened (summary + command log) targeting BASE_BRANCH
- [ ] After merge (if applicable): base branch synced; merged branch deleted
---
+306
View File
@@ -0,0 +1,306 @@
# Personal Knowledge Base
A file-based personal knowledge graph that stores structured professional information in YAML, enabling tailored CV generation, interview-based knowledge collection, speaker introductions, and iterative review workflows.
The file system is the database. No build step, no server, no compilation required. Git provides version history and deployment.
## Directory Structure
```
project-root/
├── kb/ # Knowledge base data (YAML entity files)
│ ├── profiles/ # Person profile entities
│ ├── experiences/ # Work experience entities
│ ├── skills/ # Skill entities
│ ├── organizations/ # Organization entities
│ ├── projects/ # Project entities
│ ├── certifications/ # Certification entities
│ ├── tandems/ # Job sharing tandem entities
│ └── graph-index.yaml # Central index of all entities and relationships
├── templates/ # Document generation templates
│ ├── cv-templates/ # CV layout templates (Markdown)
│ └── intro-templates/ # Speaker introduction templates
├── output/ # Generated documents (gitignored or committed)
│ ├── cvs/ # Generated CV files
│ └── intros/ # Generated introduction files
├── sources/ # Imported source documents (PDFs, DOCX)
├── src/ # TypeScript validation and logic
├── .kiro/
│ ├── skills/ # Kiro agent skills
│ │ ├── interview-collect/ # Knowledge collection via interview
│ │ ├── cv-generate/ # Tailored CV generation
│ │ ├── talk-intro/ # Speaker introduction generation
│ │ └── kb-review/ # Knowledge base review and maintenance
│ └── steering/ # Kiro steering files (conventions)
└── README.md
```
### Directory Purposes
| Directory | Purpose |
|-----------|---------|
| `kb/` | Core data store. All entities stored as individual YAML files, one file per entity. |
| `kb/profiles/` | Person profiles with name, contact, summary, education, languages, and entity references. |
| `kb/experiences/` | Work experiences with title, organization, dates, description, achievements, and skills used. |
| `kb/skills/` | Skills with name, category, proficiency level, and years of experience. |
| `kb/organizations/` | Organizations with name, industry, and optional parent organization. |
| `kb/projects/` | Projects with description, organization, dates, skills used, and persons involved. |
| `kb/certifications/` | Certifications with issuer, date, and optional expiry. |
| `kb/tandems/` | Job sharing tandem definitions linking two partners with shared vision and collaboration model. |
| `templates/` | Markdown templates used by generation skills for consistent document formatting. |
| `output/` | Generated documents (CVs, introductions) produced by Kiro skills. |
| `sources/` | Imported source documents (PDFs, DOCX) used as reference for data extraction. |
| `src/` | TypeScript validation logic and utilities for schema enforcement and testing. |
## Kiro Skills
Four Kiro skills automate common workflows. Activate them through Kiro's skill system.
### interview-collect
**Purpose:** Conducts focused interview sessions to collect or update knowledge base data.
**How to activate:** Use the `/interview-collect` command or ask Kiro to run an interview session.
**What it does:**
- Identifies gaps in existing profiles (missing required and optional attributes)
- Asks focused questions — maximum 10 per session, covering one topic area
- Writes collected data to the appropriate entity YAML files
- Updates the graph index with new entities and relationships
- Detects conflicts with existing data and asks for resolution
### cv-generate
**Purpose:** Generates tailored CVs from knowledge base data matched against a job posting.
**How to activate:** Use the `/cv-generate` command or ask Kiro to generate a CV, providing a job posting.
**What it does:**
- Analyzes job posting requirements
- Selects relevant experiences, skills, and projects from the knowledge base
- Generates individual CVs emphasizing matching qualifications
- Generates tandem CVs (combined + 2 individual) for job sharing applications
- Outputs Markdown files in `output/cvs/`
- Never fabricates content — only uses data present in the knowledge base
### talk-intro
**Purpose:** Generates speaker introductions for talks and events.
**How to activate:** Use the `/talk-intro` command or ask Kiro to generate a speaker introduction, providing a talk topic and event context.
**What it does:**
- Produces three length variants: short (2-3 sentences), medium (paragraph), long (multi-paragraph)
- Adapts tone to event context (technical conference, business meeting, academic setting)
- Highlights relevant expertise from the person profile based on the talk topic
- Outputs Markdown files in `output/intros/`
### kb-review
**Purpose:** Initiates review sessions for knowledge base maintenance and enhancement.
**How to activate:** Use the `/kb-review` command or ask Kiro to review the knowledge base.
**What it does:**
- Calculates completeness scores per profile (filled attributes / total attributes)
- Identifies stale information based on last-modified dates
- Presents a prioritized list of areas needing updates
- Suggests relationship additions for graph consistency
- Recommends topics for the next interview session
## Entity Types and Schemas
All entity files use YAML format and share a common header:
```yaml
id: <kebab-case-unique-id>
type: <entity-type>
created: <ISO-8601 date>
modified: <ISO-8601 date>
```
### Person Profile
**Location:** `kb/profiles/<person-id>.yaml`
| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `id` | string | yes | Kebab-case unique identifier |
| `type` | string | yes | Always `person` |
| `name.first` | string | yes | First name |
| `name.last` | string | yes | Last name |
| `name.display` | string | yes | Display name |
| `contact` | object | no | Email, LinkedIn, location |
| `summary` | string | no | Professional summary |
| `languages` | list | no | Languages with proficiency level |
| `education` | list | no | Education history entries |
| `skills` | list | no | References to skill entity IDs |
| `experiences` | list | no | References to experience entity IDs |
| `certifications` | list | no | References to certification entity IDs |
| `publications` | list | no | Publications list |
### Experience
**Location:** `kb/experiences/<experience-id>.yaml`
| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `id` | string | yes | Kebab-case unique identifier |
| `type` | string | yes | Always `experience` |
| `title` | string | yes | Job title or role name |
| `organization` | string | yes | Reference to organization entity ID |
| `start` | date | yes | Start date (YYYY-MM) |
| `end` | date | no | End date (null = current) |
| `description` | string | no | Role description |
| `achievements` | list | no | List of achievements |
| `skills-used` | list | no | References to skill entity IDs |
| `projects` | list | no | References to project entity IDs |
### Skill
**Location:** `kb/skills/<skill-id>.yaml`
| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `id` | string | yes | Kebab-case unique identifier |
| `type` | string | yes | Always `skill` |
| `name` | string | yes | Display name |
| `category` | string | yes | One of: programming-language, framework, methodology, soft-skill, domain |
| `level` | string | yes | One of: beginner, intermediate, advanced, expert |
| `years` | number | no | Years of experience |
| `context` | string | no | Notes on how/where the skill was developed |
### Organization
**Location:** `kb/organizations/<org-id>.yaml`
| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `id` | string | yes | Kebab-case unique identifier |
| `type` | string | yes | Always `organization` |
| `name` | string | yes | Organization name |
| `industry` | string | yes | Industry sector |
| `parent` | string | no | Reference to parent organization entity ID |
| `website` | string | no | Organization website |
### Project
**Location:** `kb/projects/<project-id>.yaml`
| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `id` | string | yes | Kebab-case unique identifier |
| `type` | string | yes | Always `project` |
| `name` | string | yes | Project name |
| `description` | string | no | Project description |
| `organization` | string | yes | Reference to organization entity ID |
| `start` | date | yes | Start date |
| `end` | date | no | End date |
| `skills-used` | list | no | References to skill entity IDs |
| `persons` | list | no | References to person entity IDs |
### Certification
**Location:** `kb/certifications/<cert-id>.yaml`
| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `id` | string | yes | Kebab-case unique identifier |
| `type` | string | yes | Always `certification` |
| `name` | string | yes | Certification name |
| `issuer` | string | yes | Issuing organization |
| `date` | date | yes | Date obtained |
| `expires` | date | no | Expiry date |
| `person` | string | yes | Reference to person entity ID |
### Tandem (Job Sharing)
**Location:** `kb/tandems/<tandem-id>.yaml`
| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `id` | string | yes | Kebab-case unique identifier |
| `type` | string | yes | Always `tandem` |
| `partners` | list | yes | Exactly two person entity ID references |
| `shared-vision` | string | yes | Shared professional vision |
| `complementary-skills` | string | yes | How partners' skills complement each other |
| `collaboration-model` | string | yes | How work is divided and shared |
| `combined-narrative` | string | no | Joint professional narrative |
| `joint-competencies` | list | no | List of joint competency descriptions |
### Graph Index
**Location:** `kb/graph-index.yaml`
The central index lists all entities and their relationships:
```yaml
entities:
- id: <entity-id>
type: <entity-type>
name: <display-name>
relationships:
- from: <entity-id>
to: <entity-id>
type: <relationship-type>
context: <optional-reference>
```
**Relationship types:** `has_skill`, `worked_at`, `collaborated_with`, `applied_for`, `partners_with`
## Usage Instructions
### Adding Data via Interview
1. Activate the `interview-collect` skill
2. Specify a topic area (e.g., "my role at DB Cargo" or "my Python skills")
3. Answer the focused questions (max 10 per session)
4. Review the collected data when presented
5. Resolve any conflicts with existing data if flagged
### Generating a CV
1. Activate the `cv-generate` skill
2. Provide the job posting (paste text or reference a file in `sources/`)
3. Specify whether this is an individual or tandem application
4. Review the generated CV in `output/cvs/`
5. For tandem applications, you'll get 3 documents: combined tandem CV + 2 individual CVs
### Generating a Speaker Introduction
1. Activate the `talk-intro` skill
2. Provide the talk topic and event context (technical, business, or academic)
3. Review the three length variants in `output/intros/`
### Running a Knowledge Base Review
1. Activate the `kb-review` skill
2. Review the completeness scores and staleness report
3. Follow up on suggested areas using the `interview-collect` skill
### Manual Editing
Entity files are plain YAML — you can edit them directly with any text editor. After manual edits, the graph index should be rebuilt to stay consistent.
### File Naming Convention
All entity files use kebab-case naming: `<entity-id>.yaml`
Examples: `andre-knie.yaml`, `db-cargo-innovation-lead.yaml`, `aws-solutions-architect.yaml`
## Version Control
Git tracks all changes to the knowledge base. Every entity modification creates a meaningful diff thanks to the YAML format and one-file-per-entity pattern.
- Commit after interview sessions to capture new data
- Commit after CV generation to track output history
- Use branches for experimental changes to profiles
## Technical Details
- **Data format:** YAML (human-readable, clean diffs, supports comments)
- **Validation:** TypeScript in `src/` — schema validation, temporal consistency checks
- **Testing:** Vitest + fast-check (property-based testing)
- **No build step required** — the file system is the database
- **No server required** — Kiro skills read/write files directly
+10
View File
@@ -0,0 +1,10 @@
# RULES.md
## Foundational Rules
1. **No documents outside the folder:** All project-related documents and files must reside strictly within this repository folder.
2. **Keep documentation concise:** Documentation should be brief, clear, and to the point.
3. **Single source of truth:** Use single, dedicated documents for specific types of information to avoid fragmentation and redundancy.
- Use `ARCHITECTURE.md` for all architectural information.
- Use `PLAN.md` for ongoing steps, which must be revised after each PR.
- Use `COMPONENTS.md` to track all specific components used in the project.
4. **Document Components After Inclusion:** Only add components to `COMPONENTS.md` once you have actually included them in the code.
+112
View File
@@ -0,0 +1,112 @@
# SPEC.md — Personal Knowledge Base
## Purpose
A file-based personal knowledge graph that stores structured professional information in YAML, enabling tailored CV generation, interview-based knowledge collection, speaker introductions, and iterative review workflows. The file system is the database — no build step, no server, no compilation required.
## Tech Stack
| Layer | Technology |
|-------|-----------|
| Data format | YAML (one file per entity) |
| Validation & logic | TypeScript (strict mode) |
| Testing | Vitest + fast-check (property-based) |
| Runtime | Node.js (v24+) |
| Version control | Git |
| Automation | Kiro skills (.kiro/skills/) |
## Architecture
```
project-root/
├── kb/ # Knowledge base data (YAML entities)
│ ├── profiles/ # Person profiles
│ ├── experiences/ # Work experiences
│ ├── skills/ # Skills
│ ├── organizations/ # Organizations
│ ├── projects/ # Projects
│ ├── certifications/ # Certifications
│ ├── tandems/ # Job sharing tandems
│ └── graph-index.yaml # Central entity/relationship index
├── templates/ # Document generation templates
├── output/ # Generated documents (CVs, intros)
├── sources/ # Imported source documents
├── src/ # TypeScript validation and logic
│ ├── schemas/ # Entity interfaces and validation
│ ├── io/ # YAML serialization and file I/O
│ ├── graph/ # Graph index management
│ ├── interview/ # Gap and conflict detection
│ ├── cv/ # Relevance selection and tandem generation
│ ├── intro/ # Introduction generation
│ └── review/ # Completeness scoring and prioritization
└── .kiro/skills/ # Kiro agent skills
├── interview-collect/ # Knowledge collection via interview
├── cv-generate/ # Tailored CV generation
├── talk-intro/ # Speaker introduction generation
└── kb-review/ # Knowledge base review
```
## Entity Types
- **Person** — name, contact, summary, education, languages, references to skills/experiences/certifications
- **Experience** — title, organization, dates, description, achievements, skills-used
- **Skill** — name, category, level, years, context
- **Organization** — name, industry, optional parent
- **Project** — name, description, organization, dates, skills-used, persons
- **Certification** — name, issuer, date, expires, person
- **Tandem** — exactly 2 partners, shared-vision, complementary-skills, collaboration-model
## Relationship Types
`has_skill`, `worked_at`, `collaborated_with`, `applied_for`, `partners_with`
## Kiro Skills
| Skill | Purpose |
|-------|---------|
| interview-collect | Focused interview sessions (max 10 questions) to collect/update KB data |
| cv-generate | Tailored CVs matched against job postings; supports tandem applications |
| talk-intro | Speaker introductions in 3 length variants adapted to event context |
| kb-review | Completeness scoring, staleness detection, review prioritization |
## Conventions
- File naming: kebab-case (`<entity-id>.yaml`)
- One file per entity
- Graph index updated on every entity change
- All data human-readable and diffable in Git
- TypeScript interfaces use camelCase (deserialized form of kebab-case YAML)
## Rules
1. Never fabricate content in generated documents — only use data present in the knowledge base.
2. Validate entities against schema before persisting.
3. Enforce temporal consistency (start ≤ end) for time-bound entities.
4. Create and use Kiro skills whenever a task of more than 5 lines of code runs for the second time.
## Correctness Properties
15 formal properties validated via property-based testing (fast-check):
1. Entity serialization round-trip
2. Entity schema validation
3. Temporal consistency
4. Graph index consistency
5. Tandem entity integrity
6. Interview session question limit (≤ 10)
7. Gap detection completeness
8. Conflict detection
9. CV relevance selection ordering
10. Tandem application document set (exactly 3 docs)
11. CV output validity and traceability
12. Introduction length variants (short < medium < long)
13. Completeness score calculation
14. Review prioritization ordering
15. File naming convention (kebab-case)
## Current State
- Directory structure: created
- TypeScript project: initialized, dependencies installed
- Entity interfaces: defined (src/schemas/types.ts)
- Validation, I/O, graph, skills, tests: pending implementation
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+22
View File
@@ -0,0 +1,22 @@
# STARTFRESH.md
## General Approach to New Projects
This document serves as a template and set of guiding principles for starting any new project, capturing the preferred methodology and structural rules.
### 1. Design & Architecture Philosophy
- **Self-Sufficiency:** Minimize external dependencies. Prefer tech stacks that offer local control and self-hosting capabilities (e.g., Python backend, PostgreSQL database).
- **Tidy First, Fancy Later:** Focus initially on clean structures, functional layouts, and standard technologies. Complex visuals and design polish should only be added once the foundational logic is proven.
### 2. Repository Rules
- **Containment:** No documents outside the folder. All project-related documents, notes, and files must reside strictly within the repository.
- **Conciseness:** Keep documentation brief, clear, and to the point.
- **Single Source of Truth:** Use single, dedicated documents for specific types of information to avoid fragmentation.
### 3. Required Foundational Documents
Every new project should initialize with the following document structure:
* **`RULES.md`**: To declare foundational repository and workflow rules.
* **`ARCHITECTURE.md`**: To collect all architectural decisions, technology stack choices, and integration strategies.
* **`PLAN.md`**: To track ongoing steps, categorized by short, medium, and long-term goals. *Must be revised after each PR.*
* **`COMPONENTS.md`**: To track specific components used in the project. *Rule: Only add components to this document once they have been actively included and utilized in the codebase.*
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

@@ -0,0 +1,19 @@
Die Zielsetzung der Stelle liegt in der Steigerung der Wirtschaftlichkeit und Wettbewerbsfähigkeit im GF DB Regio AG durch effiziente, bedarfsgerechte Innovation, Beratung, Identifikation, Konzeption und Umsetzung / Entwicklung neuer Use Cases, (kritischer) Projekte und digitaler Produkte mit Flächenorganisationen und Fachbereichen sowie deren Betrieb. Zum 1.7.2026 suchen wir dich als Leiter:in Digitale Produkte OFK 2 (w/m/d) für die DB Regio AG am Standort Frankfurt am Main.
Deine Aufgaben:
Du verantwortest das bedarfsgerechte und wirtschaftliche Management der digitalen Produkte des Geschäftsfelds DB Regio AG (Schiene und Straße) über den gesamten Lebenszyklus und bist dafür in engem Austausch mit den Bedarfsträgern vor Ort
Die Datenprodukte aus den Datalakes von Schiene und Straße sowie die digitalen Produkte für die Domänen Fahrt, Instandhaltung und komfortrelevante Fahrzeug-IT entwickelst du mit deinen Produktorganisationen im Governance-Rahmen der Regio- und Konzern-IT
Du sicherst mit deinen Betriebsteams in unterschiedlichen Zusammenarbeitsmodellen die störungsfreie Bereitstellung der digitalen Produkte sowie der dazugehörigen IT-Infrastruktur ab und steuerst die an der Leistungserstellung beteiligten Dienstleister
Dir obliegt es, ein bedarfsgerechtes und wirtschaftlich optimiertes Lifecycle Management bereitzustellen und so durch kontinuierliche Arbeit an den Kostenstrukturen einen Beitrag zur Wettbewerbsfähigkeit der DB Regio AG zu liefern
Du arbeitest kontinuierlich an der Weiterentwicklung der Ablauforganisation und bist Dienstleister für die Regionen
Zu deinen weiteren Aufgaben gehören die Sicherstellung des IT-Notfallmanagements sowie die bedarfsgerechte Bereitstellung eines Helpdesks für digitale Produkte im GF DB Regio AG
Dein Profil:
Ein erfolgreich abgeschlossenes Studium im Bereich (Wirtschafts-)Informatik, Wirtschaftswissenschaften oder Ingenieurwesen mit Schwerpunkt Digitalisierung, Projektmanagement, IT-Management oder eine vergleichbare Qualifikation setzen wir voraus
Du kannst mehrjährige Führungserfahrung in großen, verteilten IT-Organisationen idealerweise im Management digitaler Produkte bieten
Nachgewiesene Kenntnisse und Erfolge bei der Umsetzung / Einführung von IT-Projekten und Erfahrung in agilen Arbeitsweisen, Entwicklungsmethoden und Betriebsmodellen zeichnen dich aus
Du hast Erfahrung in der Budgetverantwortung, -planung und -steuerung für alle verantworteten Use Cases, Projekte und digitale Produkte über den gesamten Produktlebenszyklus hinweg
Dein Hintergrund umfasst zudem das bedarfsgerechte Management und Steuerung von Verträgen und Dienstleistern, Lizenzmanagement- und Asset-Management
Unternehmerisches, strategisches Denken und wirtschaftliches Handeln, gepaart mit einer hohen Ergebnisorientierung, Kommunikations- und Umsetzungsstärke sowie dem Gespür für Innovationen, runden dein Profil ab
+1
View File
@@ -0,0 +1 @@
@@ -0,0 +1,9 @@
id: agile-coach-okr
type: certification
created: 2026-05-04
modified: 2026-05-04
name: Agile Coach & OKR Business Coach
issuer: Future-Fit Work Institut c/o projektmagazin
date: 2023-10
person: andre-knie
@@ -0,0 +1,9 @@
id: bahn-fuehrungskraft
type: certification
created: 2026-05-04
modified: 2026-05-04
name: Koordinierte Weiterbildung mittlere Führungskraft
issuer: Deutsche Bahn
date: 2020
person: andre-knie
@@ -0,0 +1,9 @@
id: safe-agile-leader
type: certification
created: 2026-05-04
modified: 2026-05-04
name: SAFe Agile Leader & PO/PM
issuer: Scaled Agile
date: 2022
person: andre-knie
@@ -0,0 +1,9 @@
id: uni-kassel-forschungsmanagement
type: certification
created: 2026-05-04
modified: 2026-05-04
name: Entwicklung und Management von Forschungsprojekten
issuer: Universität Kassel
date: 2015
person: andre-knie
@@ -0,0 +1,9 @@
id: uni-kassel-fuehrungskolleg
type: certification
created: 2026-05-04
modified: 2026-05-04
name: Führungskolleg (Personalführung, Management, Persönlichkeitsentwicklung)
issuer: Universität Kassel
date: 2016
person: andre-knie
+1
View File
@@ -0,0 +1 @@
@@ -0,0 +1,22 @@
id: data-hive-cassel-gruender
type: experience
created: 2025-01-15
modified: 2026-05-04
title: Gründer & Geschäftsführer
organization: data-hive-cassel
start: 2021-08
end: null
description: |
Wir hassen Verschwendung und lieben Wandel. Als Geschäftsführer von Data Hive Cassel lebe und gestalte ich diese Vision jeden Tag. Mein Anspruch ist es, für unsere Kunden nicht nur technische Lösungen zu liefern, sondern echten, nachhaltigen Wandel zu ermöglichen. Mit meiner Expertise in Künstlicher Intelligenz, Change Management und Führung bringe ich Menschen, Prozesse und Technologie zusammen.
achievements:
- Druckluftoptimierung bei der Hütt-Brauerei — datengetriebene Analyse und smarte Automatisierung senkten den Energieverbrauch signifikant
- KI FrAItage an der Universität Kassel — innovatives Veranstaltungsformat macht KI praxisnah und verständlich für die Verwaltung
skills-used:
- kuenstliche-intelligenz
- change-management
- coaching
- digitale-transformation
@@ -0,0 +1,23 @@
id: db-infrago-digitalisierung
type: experience
created: 2025-01-15
modified: 2026-05-04
title: Experte für Digitalisierung
organization: db-infrago
start: 2025-06
end: null
description: |
Ich schaffe digitalen Kundennutzen. Mit einem Auge für Technologie und Menschen ermögliche ich es mit meinem Team, dass große und kleine Projekte möglichst effizient abgeschlossen werden. Digitalisierung ist der Weg, um das System Schiene in die Zukunft zu bewegen. Seit 2025 verantworte ich die Einführung/den Roll-out des Bestellportals pathOS — über dieses Portal werden alle Trassen bestellt, die ab 2027 fahren sollen. Betriebsstabilität ist das höchste Ziel: Ich bin selbst Teil des IT-Notfallmanagements während der Hypercarephase der TTT-Einführung. Auch wenn fachliche Anforderungen und Lücken immer wieder neue Priorisierungen erzwingen, darf die Stabilität nie in Frage gestellt werden.
achievements:
- Verantwortung für Einführung/Roll-out des Bestellportals pathOS (fahrplankritisch ab 2027)
- IT-Notfallmanagement in der Hypercarephase der TTT-Einführung
- Betriebsstabilität als oberstes Ziel bei gleichzeitiger fachlicher Weiterentwicklung
skills-used:
- digitale-transformation
- change-management
- team-management
- it-strategie
@@ -0,0 +1,22 @@
id: db-netz-einfachbahn-jobsharing
type: experience
created: 2025-01-15
modified: 2026-05-04
title: Leiter #Einfachbahn im JobSharing
organization: db-netz
start: 2022-10
end: 2025-06
description: |
Führung ist keine One-Man-Show. Im JobSharing mit Claudia Froldi unterstützen wir das Team der #Einfachbahn dabei, den Zugang zur Bahninfrastruktur einfach zu machen. Ich fokussiere mich auf die fachlichen und Budget-Themen, Claudia auf die disziplinarischen und Team-Themen. Bewusster Gehaltsverzicht, um geteilte Führung auf Augenhöhe zu ermöglichen.
achievements:
- Experiment geteilte Führung bei der DB Netz erfolgreich etabliert
- Fachliche Führung und Budgetverantwortung im Tandem-Modell
skills-used:
- shared-leadership
- team-management
- it-strategie
- agilitaet
@@ -0,0 +1,24 @@
id: db-netz-einfachbahn-leiter
type: experience
created: 2025-01-15
modified: 2026-05-04
title: Leiter #Einfachbahn
organization: db-netz
start: 2020-05
end: 2022-10
description: |
Eines der ambitioniertesten Digitalisierungsvorhaben im Konzernumfeld steuern: Die Digitalisierung auf die Schiene bringen und die Zukunft des Bahnverkehrs aktiv mitgestalten. Interdisziplinäres Team aufgebaut und zu Höchstleistungen geführt. Agile Methoden und innovative Arbeitsformen wie Shared Leadership etabliert.
achievements:
- Interdisziplinäres Team aufgebaut und agile Methoden etabliert
- IT-Operations und Betriebsstabilität für 15 verschiedene Produkte verantwortet
- Silos aufgebrochen und Kultur des offenen Lernens geschaffen
- Technische und kulturelle Transformation nachhaltig vorangetrieben
skills-used:
- team-management
- agilitaet
- digitale-transformation
- coaching
@@ -0,0 +1,17 @@
id: hochschule-fresenius-dozent
type: experience
created: 2025-01-15
modified: 2026-05-04
title: Dozent — Agilität und ergebnisorientierte Unternehmensführung
organization: hochschule-fresenius
start: 2025-02
end: 2025-06
description: |
Gemeinsam mit zwei Kollegen einer extrem motivierten Gruppe von MBA-Studierenden gezeigt, warum Agilität, Change, Innovation und Führung zusammengehören. Die Studierenden konnten am eigenen Leib erfahren, was die Themen bedeuten.
skills-used:
- agilitaet
- coaching
- shared-leadership
@@ -0,0 +1,16 @@
id: uni-kassel-doktorand
type: experience
created: 2025-01-15
modified: 2026-05-04
title: Doktorand — wissenschaftlicher Mitarbeiter
organization: universitaet-kassel
start: 2009-05
end: 2012-12
description: |
Forschung im Bereich Atom- und Molekülphysik und Prototyp-Entwicklung. Aufbau und Charakterisierung einer Elektronenstrahlquelle (inkl. Simulation, Design, Konstruktion). Planung, Einwerbung und Durchführung von Synchrotronstrahlungsexperimenten.
achievements:
- 10 wissenschaftliche Paper und 10 Beiträge auf internationalen Konferenzen
- Aufbau einer Elektronenstrahlquelle von Simulation bis Konstruktion
@@ -0,0 +1,12 @@
id: uni-kassel-dozent-physik
type: experience
created: 2026-05-04
modified: 2026-05-04
title: Dozent für experimentelle Atom- und Molekülphysik
organization: universitaet-kassel
start: 2017
end: 2019
description: |
Lehre im Bereich experimentelle Atom- und Molekülphysik an der Universität Kassel.
@@ -0,0 +1,24 @@
id: uni-kassel-teilgruppenleiter
type: experience
created: 2025-01-15
modified: 2026-05-04
title: Teilgruppenleiter Spektroskopie
organization: universitaet-kassel
start: 2013-01
end: 2020-04
description: |
Forschung im Bereich Atom- und Molekülphysik und Prototyp-Entwicklung. Projekte im Bereich cryogene Cluster, Flüssigkeitsstrahlen, Fluoreszenz, UV-Vis, EUV, X-ray. Analyse und Visualisierung komplexer Daten mit klassischen und Machine-Learning-Ansätzen (ab 2012 konkret ML/PyTorch). Aufbau internationaler Teams junger MINT-Talente. Entwicklung von Hardware (Sensorik, Ultrahochvakuum, Elektronik, Signalverarbeitung, Hochfrequenztechnik) und passender Software (Python, PyTorch, Cython, Backend, Frontend, Maschinensteuerung, Automatisierung).
achievements:
- Leitung einer Forschungsgruppe mit mehreren Doktoranden
- 50+ wissenschaftliche Veröffentlichungen, 2.000+ Zitationen
- Einwerbung von 12 Mio. € Drittmittel in 10+ Anträgen (DFG, BMBF, EU)
- Einwerbung und Durchführung von Synchrotronstrahlungsexperimenten
- Aufbau internationaler Teams aus dem MINT-Bereich
skills-used:
- team-management
- kuenstliche-intelligenz
- digitale-transformation
+156
View File
@@ -0,0 +1,156 @@
entities:
- id: andre-knie
type: person
name: Dr. Andre Knie
- id: data-hive-cassel
type: organization
name: Data Hive Cassel
- id: db-infrago
type: organization
name: DB InfraGO
- id: db-netz
type: organization
name: DB Netz AG
- id: hochschule-fresenius
type: organization
name: Hochschule Fresenius
- id: universitaet-kassel
type: organization
name: Universität Kassel
- id: data-hive-cassel-gruender
type: experience
name: Gründer & Geschäftsführer
- id: db-infrago-digitalisierung
type: experience
name: Experte für Digitalisierung
- id: db-netz-einfachbahn-jobsharing
type: experience
name: Leiter #Einfachbahn im JobSharing
- id: db-netz-einfachbahn-leiter
type: experience
name: Leiter #Einfachbahn
- id: hochschule-fresenius-dozent
type: experience
name: Dozent — Agilität und ergebnisorientierte Unternehmensführung
- id: uni-kassel-teilgruppenleiter
type: experience
name: Teilgruppenleiter Spektroskopie
- id: uni-kassel-doktorand
type: experience
name: Doktorand — wissenschaftlicher Mitarbeiter
- id: kuenstliche-intelligenz
type: skill
name: Künstliche Intelligenz
- id: change-management
type: skill
name: Change Management
- id: digitale-transformation
type: skill
name: Digitale Transformation
- id: shared-leadership
type: skill
name: Shared Leadership / JobSharing
- id: agilitaet
type: skill
name: Agilität
- id: coaching
type: skill
name: Coaching
- id: team-management
type: skill
name: Teammanagement
- id: it-strategie
type: skill
name: IT-Strategie
- id: ki-fraitag
type: project
name: KI FrAItage — Universität Kassel
- id: projekt-kiq
type: project
name: Project KIQ — Souveränes KI-Betriebssystem
- id: dhive-automatisierung
type: project
name: dHive Automatisierung
- id: ki-peergroup-nordhessen
type: project
name: KI-Peergroup Nordhessen & KIck-Start Kassel
- id: hessian-ai-startup-workshops
type: project
name: Hessian.AI Startup-Workshops
- id: ai-masterclass-sciencepark
type: project
name: AI Masterclass & Prototyping-Labor — Science Park Kassel
- id: studierendenwerk-kassel-ki
type: project
name: KI-Beratung Studierendenwerk Kassel
- id: schlachthof-kassel-ki
type: project
name: KI-Strategie Schlachthof Kassel gGmbH
- id: huebner-innovation
type: project
name: Hübner — 3D-Bewegungsklassifikation & Innovation
- id: powerhive-energiemonitoring
type: project
name: Powerhive — Energiemonitoring & Effizienz
- id: promate-distral
type: project
name: PROMATE — Intelligente Überwachung von Kaltverformungsprozessen
- id: auteba-automatisierung
type: project
name: Auteba — Automatisierung & Patententwicklung
- id: rkw-ki-workshop
type: project
name: RKW — Workshop KI für Berater
- id: uni-kassel-ki-forschung
type: project
name: KI-Methoden in der Physik-Forschung — Uni Kassel
# LinkedIn Tracking Entities (kb/tracking/)
# type: linkedin-tracking
# Naming: linkedin-<year>-w<week>, e.g. linkedin-2026-w28
relationships:
- from: andre-knie
to: kuenstliche-intelligenz
type: has_skill
- from: andre-knie
to: change-management
type: has_skill
- from: andre-knie
to: digitale-transformation
type: has_skill
- from: andre-knie
to: shared-leadership
type: has_skill
- from: andre-knie
to: agilitaet
type: has_skill
- from: andre-knie
to: coaching
type: has_skill
- from: andre-knie
to: team-management
type: has_skill
- from: andre-knie
to: it-strategie
type: has_skill
- from: andre-knie
to: data-hive-cassel
type: worked_at
context: data-hive-cassel-gruender
- from: andre-knie
to: db-infrago
type: worked_at
context: db-infrago-digitalisierung
- from: andre-knie
to: db-netz
type: worked_at
context: db-netz-einfachbahn-jobsharing
- from: andre-knie
to: hochschule-fresenius
type: worked_at
context: hochschule-fresenius-dozent
- from: andre-knie
to: universitaet-kassel
type: worked_at
context: uni-kassel-teilgruppenleiter
+1
View File
@@ -0,0 +1 @@
@@ -0,0 +1,43 @@
id: data-hive-cassel
type: organization
created: 2025-01-15
modified: 2026-05-04
name: Data Hive Cassel
industry: consulting
website: https://datahive.de
team:
size: 6
structure: 2 Geschäftsführer, 1 Entwickler, 1 Werkstudent, 1 Admin, 1 Putzkraft (überwiegend Teilzeit)
co-founder: Dr.-Ing. Alexander Schrodt
services:
- Technische und KI-Beratung (50%)
- KI-Entwicklung, Softwareentwicklung, Automatisierung (50%)
- Startup-Beratung (technisch und Gründungsfragen)
- Mechatronik und Mess-/Regelungstechnik mit KI
stats:
founded: 2021
combined-experience: 30+ Jahre (Gründer)
projects-completed: 50+
avg-time-to-impact: unter 6 Wochen
avg-roi: über 2
customers: 15+
customers:
- Arvos Group
- Esterer
- MTO Kassel
- Paul Beier
- Sika
- Hexagon Purus
- Hütt-Brauerei
- Universität Kassel
memberships:
- KI-Bundesverband
- Gemeinsam Nachhaltig (Kassel)
- Science Park Kassel
- Arbeitgeberverband
@@ -0,0 +1,8 @@
id: db-infrago
type: organization
created: 2025-01-15
modified: 2026-05-04
name: DB InfraGO
industry: rail-infrastructure
parent: deutsche-bahn
+8
View File
@@ -0,0 +1,8 @@
id: db-netz
type: organization
created: 2025-01-15
modified: 2026-05-04
name: DB Netz AG
industry: rail-infrastructure
parent: deutsche-bahn
@@ -0,0 +1,7 @@
id: hochschule-fresenius
type: organization
created: 2025-01-15
modified: 2026-05-04
name: Hochschule Fresenius
industry: higher-education
@@ -0,0 +1,7 @@
id: universitaet-kassel
type: organization
created: 2025-01-15
modified: 2026-05-04
name: Universität Kassel
industry: higher-education
+1
View File
@@ -0,0 +1 @@
+121
View File
@@ -0,0 +1,121 @@
id: andre-knie
type: person
created: 2025-01-15
modified: 2026-05-04
name:
first: Andre
last: Knie
display: Dr. Andre Knie
contact:
email-db: andre.knie@deutschebahn.com
email-dhive: knie@d-hive.de
email-privat: andre@knie.email
location: Kassel, Germany
linkedin: https://www.linkedin.com/in/knie
summary: |
Die Angst vor Technologie und Veränderung lähmt viele Organisationen und Menschen. Ich helfe dabei, diese Ängste zu überwinden, und gestalte Technologie sowie Change-Prozesse so, dass sie echten Mehrwert schaffen und Begeisterung auslösen. Als promovierter Physiker betrachte ich Systeme und Zusammenhänge aus einer einzigartigen Perspektive. Meine wissenschaftliche Herangehensweise ermöglicht es mir, komplexe Herausforderungen analytisch zu durchdringen und visionäre Lösungen zu entwickeln, die technisch fundiert und praxisnah sind. Meine Expertise konzentriert sich auf drei Kernthemen: 1. Innovation und Technologie, 2. Mensch & Kultur, 3. Verantwortung.
personal:
family: Glücklich verheiratet, Vater dreier Kinder
sport: JuJutsu (KSV Auedamm Kassel)
engagement:
- Mentor für Startups (seit 2022, ab 2024 auch Honorar)
- Host KI-Peergroup Nordhessen (mit Prof. Timo Braun, seit 2025)
- Juror UNIKAT Ideenwettbewerb (2026)
- Deutsche Physikalische Gesellschaft (Mitglied)
- Wikipedia (Fördermitglied)
- Förderverein Friedrichsgymnasium Kassel
- Förderverein Herkulesschule
- KSV Auedamm, JuJutsu-Abteilung
languages:
- language: German
level: native
- language: English
level: fluent
- language: Spanish
level: basic
- language: Python
level: expert
education:
- institution: Universität Kassel
degree: Dr. rer. nat.
field: Physik (Atom- und Molekülphysik)
start: 2009-05
end: 2012-12
- institution: Universität Kassel
degree: Diplom
field: Experimentalphysik
start: 2004
end: 2009
- institution: Friedrichsgymnasium Kassel
degree: Abitur
field: null
start: null
end: 2003
publications:
- type: podcast
name: Einfachbahn-Impulse
description: Podcast rund um Digitalisierung und Innovation bei der Bahn
- type: podcast
name: Almost Intelligent
description: 14-tägiger KI-Podcast — Brücke zwischen künstlicher und natürlicher Intelligenz
- type: column
name: Kniepunkt
description: Wöchentliche KI-Kolumne jeden Sonntag — Nachrichten und Absurditäten rund um KI. Bisher 38 Folgen.
talks:
- title: KI und Einsatz von KI
event: Future Mobility Shift 2023
organizer: Regionalmanagement Nordhessen GmbH
date: 2023
co-speaker: Oliver Bracht (GF eoda)
- title: KI und Einsatz von KI
event: IT-Netzwerk Nordhessen
organizer: IT-Netzwerk Nordhessen
date: 2023
co-speaker: Oliver Bracht (GF eoda)
- title: Energieeffizienz und KI
event: Hessenmetall Workshop
organizer: Hessenmetall
date: 2024-02-21
- title: Energieeffizienz in der Druckluft und moderne Sensorik
event: Eingeladener Vortrag Hessenmetall / TU Darmstadt
organizer: Hessenmetall, TU Darmstadt
date: 2024
- title: Positive Fehlerkultur
event: Eingeladener Vortrag UNH
organizer: Unternehmerverband Nordhessen (UNH)
date: 2025
skills:
- kuenstliche-intelligenz
- change-management
- digitale-transformation
- shared-leadership
- agilitaet
- coaching
- team-management
- it-strategie
experiences:
- data-hive-cassel-gruender
- db-infrago-digitalisierung
- hochschule-fresenius-dozent
- db-netz-einfachbahn-jobsharing
- db-netz-einfachbahn-leiter
- uni-kassel-dozent-physik
- uni-kassel-teilgruppenleiter
- uni-kassel-doktorand
certifications:
- agile-coach-okr
- safe-agile-leader
- bahn-fuehrungskraft
- uni-kassel-forschungsmanagement
- uni-kassel-fuehrungskolleg
@@ -0,0 +1,153 @@
id: athanasios-stylianou
type: person
created: 2026-05-18
modified: 2026-05-18
name:
first: Athanasios
last: Stylianou
display: Dr. Athanasios Stylianou
role: Full-Stack Entwicklung
contact:
email-primary: stylianou@d-hive.de
email-university: stylianou@mathematik.uni-kassel.de
location: Kassel
address: Leibnizstr. 21, 34121 Kassel, Germany
employer: Data Hive Cassel GmbH
website: d-hive.de
linkedin: https://www.linkedin.com/in/athanasiosstylianou
orcid: https://orcid.org/0000-0001-7863-4028
researchgate: https://www.researchgate.net/profile/Athanasios-Stylianou
summary: |
Promovierter Mathematiker und Mitarbeiter der Data Hive Cassel GmbH mit
Erfahrung in Hochschule, Scientific Computing, Engineering-Simulation sowie
forschungsnahem KI-Training in Mathematik und Physik. Verbindet fundierte
mathematische Analyse mit Python-basierter Tool-Entwicklung,
Open-Source-KI-Workflows, API-Know-how sowie der Entwicklung und dem
Deployment vollständiger KI-Lösungsstacks.
personal:
pronouns: he/him
nationalities:
- Griechisch
- Deutsch
date-of-birth: 1983-05-18
birthplace: Athen, Griechenland
education:
- institution: Universität zu Köln
degree: Ph.D.
field: Mathematik
end: 2010
- institution: National Technical University of Athens
degree: Diplom
field: Angewandte Mathematik & Physik
end: 2007
experience-highlights:
- title: Full-Stack Entwicklung
organization: Data Hive Cassel GmbH
start: 2026
end: null
location: Kassel, Deutschland
description: Entwicklung und Deployment vollständiger KI-Lösungsstacks.
- title: KI-Training
organization: Outlier AI
start: 2025
end: 2026
location: Deutschland
description: Research-Level KI-Training in Mathematik und Physik.
- title: Habilitant
organization: Universität Kassel
start: 2015
end: 2025
location: Deutschland
description: Analysis-Gruppe, Institut für Mathematik.
- title: Postdoc
organization: Universität des Saarlandes
start: 2013
end: 2014
location: Deutschland
description: Forschung in der Arbeitsgruppe von Prof. Dr. Mark Groves.
- title: Entwicklungsingenieur NVH
organization: P+Z Engineering
start: 2011
end: 2013
location: Köln, Deutschland
description: NVH, strukturelle Steifigkeit und Topologieoptimierung.
- title: Assistent
organization: Universität zu Köln
start: 2010
end: 2011
location: Deutschland
description: Lehre und Forschungsunterstützung in der Arbeitsgruppe von Prof. Dr. Bernd Kawohl.
technical-skills:
- KI-Entwicklung
- KI-Implementierung
- API-Know-how
- GenAI / LLM
- Context-Engineering
- Full-Stack
- Open-Source-KI-Infrastrukturen
- Python
- DSGVO-konforme KI-Nutzung
- TypeScript
- System-Administration
- Wissensretrieval
- LangChain
- PostgreSQL
- Chroma
- Deployment
- Prototyping
methodological-skills:
- Problemlösung
- Lerntheorien
- Interdisziplinäre Zusammenarbeit
- Wissenschaftliches Schreiben
- Binnendifferenzierte Wissensvermittlung
- Outreach
projects:
- name: KI FrAItage
description: KI-Experimentierräume für Verwaltungsmitarbeitende: Use-Case-Workshops, Hands-on-Sessions, Prototyping. Ziel: KI-Kompetenzaufbau und Beschleunigung der Verwaltung.
details:
- Automatisiertes Deployment von Chatbots in OpenWebUI
- Custom Service für Anonymisierung und Pseudonymisierung
- Service-Deployment in Sandbox-Umgebungen
- Technische Ansprechperson für Teilnehmende und Organisationsteam
- name: Projekt KIQ
description: Souveränes KI-Betriebssystem für den Mittelstand. 100% DSGVO- und AI-Act-konform. 6 Live-Use-Cases bei Pilotkunden. Gefördert durch die Wirtschaftsförderung der Stadt Kassel.
details:
- Custom-Code für kundenspezifische RAG-Pipelines
- Multi-agentische RAG-Workflows in OpenWebUI für produktive Wissensanwendungen
- name: Kompetenzatlas
description: Entwicklung eines evidenzbasierten Kompetenzgraphen und einer query-basierten Discovery-Plattform für den Kompetenzatlas der Universität Kassel.
- name: KI-Beratung & Entwicklung am Schlachthof Kassel
description: Hands-on-Workshop für Mitarbeitende: KI-Anwendungen live entwickeln und aufsetzen. Begleitende technische Unterstützung und Debugging parallel im Hintergrund.
- name: thesecretary
description: In-Context-Generierung mit PostgreSQL, Chroma, LangChain und Streamlit.
- name: thetutor
description: Wissensretrieval und In-Context-Generierung mit Mathpix, Chroma und LangChain.
- name: thestudent
description: Computergestütztes Wissensretrieval und In-Context-Generierung mit Wolfram|Alpha, Chroma und LangChain.
- name: Eigeninitiative über den Aufgabenbereich hinaus
description: Betreuung eines Promotionsprojekts außerhalb des eigentlichen Aufgabenbereichs mit zwei peer-reviewten Publikationen sowie Aufbau und Betrieb von Nextcloud und Talk HPB für die Arbeitsgruppe.
talks:
- title: Outreach
items:
- Nordhessischer Tag der Mathematik
- Girls' Day, Universität Kassel
publication-summary:
peer-reviewed-count: 12
citation-count: 168
manuscripts:
- Geometrische Maßtheorie
- Comparison and sign preserving properties of bilaplace boundary value problems in domains with corners
- Asymptotic behaviour of p-Laplace Wave Equations
+1
View File
@@ -0,0 +1 @@
@@ -0,0 +1,23 @@
id: ai-masterclass-sciencepark
type: project
created: 2026-05-22
modified: 2026-05-22
name: AI Masterclass & Prototyping-Labor — Science Park Kassel
organization: data-hive-cassel
start: 2024
description: |
Zwei Formate für den Science Park Kassel: (1) AI Masterclass in 10 Terminen für Startups — von KI-Grundlagen bis zur Umsetzung. (2) Mobiles Prototyping-Labor: Alles zur Verfügung, um in 8 Stunden von der Idee zum testbaren Hardware-Prototypen zu kommen. Workshop 2x durchgeführt. Beitrag zum Thema KI im Science Park Magazin.
achievements:
- 10-teilige AI Masterclass für Startups konzipiert und durchgeführt
- Mobiles Prototyping-Labor entwickelt und 2x als Workshop ausgerichtet
- Beitrag im Science Park Magazin
skills-used:
- kuenstliche-intelligenz
- coaching
- digitale-transformation
persons:
- andre-knie
@@ -0,0 +1,21 @@
id: auteba-automatisierung
type: project
created: 2026-05-22
modified: 2026-05-22
name: Auteba — Automatisierung & Patententwicklung
organization: data-hive-cassel
start: 2025
description: |
Erweiterte Zusammenarbeit mit Auteba: 1 gemeinsame Patententwicklung zur Leckageortung mittels Körperschallsensorik. Alexander Schrodt arbeitet gemeinsam mit Auteba an 4 großen Automatisierungsprojekten und ermöglicht die Umsetzung und den Einsatz von ML-Methoden in der klassischen Automatisierung.
achievements:
- Gemeinsame Patententwicklung (Leckageortung via Körperschall)
- 4 große Automatisierungsprojekte mit ML-Integration
skills-used:
- kuenstliche-intelligenz
- digitale-transformation
persons:
- andre-knie
@@ -0,0 +1,16 @@
id: dhive-automatisierung
type: project
created: 2026-05-04
modified: 2026-05-04
name: dHive Automatisierung — Mess- und Regelungstechnik mit KI
organization: data-hive-cassel
start: 2021
description: |
Kombination klassischer Mess- und Regelungstechnik mit modernster KI für Produktionsprozesse. Höhere Kundenzufriedenheit, motivierte Mitarbeitende und nachhaltig gesenkte Produktionskosten. Beispielprojekt: Druckluftoptimierung bei der Hütt-Brauerei — datengetriebene Analyse und smarte Automatisierung senkten den Energieverbrauch signifikant.
skills-used:
- kuenstliche-intelligenz
persons:
- andre-knie
@@ -0,0 +1,23 @@
id: hessian-ai-startup-workshops
type: project
created: 2026-05-22
modified: 2026-05-22
name: Hessian.AI Startup-Workshops
organization: data-hive-cassel
start: 2022
end: 2023
description: |
Workshop-Reihe für Hessian.AI zur Befähigung von Startups, von der KI-Idee zum testbaren MVP zu kommen. Kombination aus technischer Umsetzung und Business-Case-Entwicklung. In einem zweiten Format wurden gemeinsam mit Startups aus Ideen konkret MVPs entwickelt. Wiederholung in 2023.
achievements:
- Startups von der Idee zum testbaren MVP begleitet
- Technische und Business-Case-Perspektive kombiniert
skills-used:
- kuenstliche-intelligenz
- coaching
- agilitaet
persons:
- andre-knie
@@ -0,0 +1,24 @@
id: huebner-innovation
type: project
created: 2026-05-22
modified: 2026-05-22
name: Hübner — 3D-Bewegungsklassifikation & Innovation
organization: data-hive-cassel
start: 2021
end: 2022
description: |
Mehrphasiges Projekt für Hübner GmbH: (1) 3D-Bewegungsklassifikation mit einfacher Sensorik und fortgeschrittener ML-Analyse zur Untersuchung des Bewegungsverhaltens von Bus- und Bahn-Gelenken. (2) Masterclass zur Etablierung agiler Methoden inkl. OKR im Innovationsteam. (3) Ideation-Workshops, u.a. zur Entwicklung einer Ultraschall-Überwachung eines Eingangssystems.
achievements:
- ML-basierte Bewegungsklassifikation für Gelenkanalyse entwickelt
- Agile Masterclass inkl. OKR im Innovationsteam etabliert
- Ideation-Workshops mit konkreten Prototyp-Ergebnissen
skills-used:
- kuenstliche-intelligenz
- agilitaet
- coaching
persons:
- andre-knie
+17
View File
@@ -0,0 +1,17 @@
id: ki-fraitag
type: project
created: 2026-05-04
modified: 2026-05-04
name: KI FrAItage — Universität Kassel
organization: data-hive-cassel
start: 2024
description: |
Innovatives Veranstaltungsformat an der Universität Kassel, das Künstliche Intelligenz praxisnah und verständlich macht. Ziel: Beschleunigung der Verwaltung durch KI-Kompetenzaufbau. Workshops und Hands-on-Sessions für Verwaltungsmitarbeitende.
skills-used:
- kuenstliche-intelligenz
- change-management
persons:
- andre-knie
@@ -0,0 +1,23 @@
id: ki-peergroup-nordhessen
type: project
created: 2026-05-22
modified: 2026-05-22
name: KI-Peergroup Nordhessen & KIck-Start Kassel
organization: data-hive-cassel
start: 2025-01
description: |
Ehrenamtliches Engagement im Rahmen des tregks-Projekts der Wirtschaftsförderung Kassel. Gemeinsam mit Prof. Timo Braun (Uni Kassel) als Host ausgewählt. Regelmäßige Begleitung von KMUs bei ihren ersten Schritten zum Einsatz von KI: Austauschmöglichkeit, Impulse, Pilotprojekte. Im November 2025 erster KIck-Start Kassel Workshop (VSB): öffentlicher Vormittag mit 100+ Teilnehmern, geschlossener Entscheider-Nachmittag mit ca. 20 Entscheidern der Region. Mündet in das Projekt KIQ.
achievements:
- 100+ Teilnehmer beim öffentlichen KIck-Start Workshop
- 20 Entscheider im geschlossenen Nachmittags-Format
- Regelmäßige KMU-Begleitung seit Januar 2025
skills-used:
- kuenstliche-intelligenz
- change-management
- coaching
persons:
- andre-knie
@@ -0,0 +1,23 @@
id: powerhive-energiemonitoring
type: project
created: 2026-05-22
modified: 2026-05-22
name: Powerhive — Energiemonitoring & Effizienz
organization: data-hive-cassel
start: 2021
description: |
Produktlinie zur günstigen Leistungsmessung mit Sekundenauflösung. Gestartet für Veli (2021), weiterentwickelt für Ökovision, Smartrplace (Industrieelektronik bis 1000A für Glasschmelze) und Hütt-Brauerei (Druckluftoptimierung). Digi-Zuschuss-gefördertes Projekt zur Erweiterung um Vibrationssensorik (2023). In 2024 Ausweitung auf Druckluft-Energieeffizienz (Hütt). In 2025 Reaudit bei Hütt mit weiteren 20% Einsparung.
achievements:
- Von der Idee zum Industrieprodukt (Leistungsmessung bis 1000A)
- Signifikante Energieeinsparung bei Hütt-Brauerei (Druckluft)
- Reaudit 2025 mit weiteren 20% Einsparung
- Digi-Zuschuss-Förderung für Vibrationssensorik-Erweiterung
skills-used:
- kuenstliche-intelligenz
- digitale-transformation
persons:
- andre-knie
+27
View File
@@ -0,0 +1,27 @@
id: projekt-kiq
type: project
created: 2026-05-04
modified: 2026-05-04
name: Project KIQ — Souveränes KI-Betriebssystem für den deutschen Mittelstand
organization: data-hive-cassel
start: 2025
description: |
Das souveräne KI-Betriebssystem für den deutschen Mittelstand. Modernste KI-Anwendungen, komplett aus Deutschland, völlig unabhängig von amerikanischen Hyperscalern oder chinesischem Big-Tech. 100% DSGVO- und AI-Act-konform. Partnerschaft mit der Universität Kassel.
Bewiesene Use Cases (6 live bei Pilotkunden):
- Teileerkennung: Bauteile auf Foto identifizieren, Teilenummer und Lagerplatz ermitteln
- Prüfprotokolle: Automatische Erzeugung aus Auftrag und Zeichnungen
- Marktanalyse: KI-Agent überwacht Wettbewerber und erstellt Wettbewerbsanalysen
- Angebotsunterstützung: KI-Agent erstellt Angebote unter Berücksichtigung rechtlicher Vorgaben
- Berichtserzeugung: Monatliche Berichte von einer Woche auf wenige Minuten reduziert
- Individueller RAG-Chatbot: Interaktion mit Unternehmensdokumenten ohne US/China-Hyperscaler
Kunden: Arvos Group, Esterer, MTO Kassel, Paul Beier, Sika, Hexagon Purus
skills-used:
- kuenstliche-intelligenz
- digitale-transformation
persons:
- andre-knie
@@ -0,0 +1,30 @@
id: promate-distral
type: project
created: 2026-05-22
modified: 2026-05-22
name: PROMATE — Intelligente Überwachung von Kaltverformungsprozessen
organization: data-hive-cassel
start: 2024
description: |
Distral-Förderprojekt des Digitalisierungsministeriums des Landes Hessen. Data Hive Cassel ist Konsortialführer. KI-basierte Auswahl von Sensorik und KI-basierte Analyse der Messdaten zur intelligenten Überwachung von Kaltverformungsprozessen. Vom Uni-Projekt (TU Darmstadt) zum Produkt — dHive entwickelt Hand in Hand mit der Uni ein Produkt, um schneller mehr Mittelständlern helfen zu können. Pilotkunden: Produzierende Konzerne Umformtechnik (nicht öffentlich).
partners:
- TU Darmstadt
- iba
- auteba
funding: Digitalisierungsministerium Hessen (Distral)
role: Konsortialführer
achievements:
- Konsortialführerschaft in öffentlich gefördertem Projekt
- Transfer von Forschung (TU Darmstadt) zum Industrieprodukt
- KI-basierte Sensorikauswahl und Messdatenanalyse
skills-used:
- kuenstliche-intelligenz
- digitale-transformation
persons:
- andre-knie
@@ -0,0 +1,18 @@
id: rkw-ki-workshop
type: project
created: 2026-05-22
modified: 2026-05-22
name: RKW — Workshop KI für Berater
organization: data-hive-cassel
start: 2026
description: |
Workshop zum Thema KI für Berater im Auftrag des RKW. Vermittlung von KI-Kompetenzen und Einsatzmöglichkeiten für Beratungsunternehmen.
skills-used:
- kuenstliche-intelligenz
- coaching
- change-management
persons:
- andre-knie
@@ -0,0 +1,22 @@
id: schlachthof-kassel-ki
type: project
created: 2026-05-22
modified: 2026-05-22
name: KI-Strategie Schlachthof Kassel gGmbH
organization: data-hive-cassel
start: 2025
description: |
Unterstützung der KI-Strategie des Schlachthof Kassel gGmbH. In 2026 Abschluss eines Rahmenvertrags zur langfristigen KI-Beratungsexpertise.
achievements:
- KI-Strategie erarbeitet
- Rahmenvertrag für KI-Beratung abgeschlossen (2026)
skills-used:
- kuenstliche-intelligenz
- it-strategie
- change-management
persons:
- andre-knie
@@ -0,0 +1,18 @@
id: studierendenwerk-kassel-ki
type: project
created: 2026-05-22
modified: 2026-05-22
name: KI-Beratung Studierendenwerk Kassel
organization: data-hive-cassel
start: 2026
description: |
KI-Beratung, KI-Strategie und Umsetzung für das Studierendenwerk Kassel. Aktuell in der Strategiephase.
skills-used:
- kuenstliche-intelligenz
- change-management
- it-strategie
persons:
- andre-knie
@@ -0,0 +1,16 @@
id: uni-kassel-ki-forschung
type: project
created: 2026-05-22
modified: 2026-05-22
name: KI-Methoden in der Physik-Forschung — Uni Kassel
organization: data-hive-cassel
start: 2024
description: |
Erarbeitung von Ansätzen für den Einsatz von KI-Methoden in der Forschung des Fachbereichs theoretische Physik der Universität Kassel. Fokus auf winkelaufgelöste Elektronenspektroskopie.
skills-used:
- kuenstliche-intelligenz
persons:
- andre-knie
+1
View File
@@ -0,0 +1 @@
+12
View File
@@ -0,0 +1,12 @@
id: agilitaet
type: skill
created: 2025-01-15
modified: 2026-05-04
name: Agilität
category: methodology
level: expert
years: 6
context: |
Agile Methoden bei DB Netz etabliert, Dozent für Agilität an der Hochschule Fresenius, OKRs.
@@ -0,0 +1,12 @@
id: change-management
type: skill
created: 2025-01-15
modified: 2026-05-04
name: Change Management
category: methodology
level: expert
years: 10
context: |
Begleitung von Organisationen bei digitaler Transformation, Workshops und Vorträge zu Veränderungsprozessen.
+12
View File
@@ -0,0 +1,12 @@
id: coaching
type: skill
created: 2025-01-15
modified: 2026-05-04
name: Coaching
category: soft-skill
level: advanced
years: 8
context: |
Team-Coaching bei DB Netz und Data Hive Cassel, Talentförderung, Begleitung von Führungskräften.
@@ -0,0 +1,12 @@
id: digitale-transformation
type: skill
created: 2025-01-15
modified: 2026-05-04
name: Digitale Transformation
category: domain
level: expert
years: 8
context: |
Leitung der #Einfachbahn bei DB Netz, Digitalisierungsexpertise bei DB InfraGO, Beratung bei Data Hive Cassel.
+12
View File
@@ -0,0 +1,12 @@
id: it-strategie
type: skill
created: 2025-01-15
modified: 2026-05-04
name: IT-Strategie
category: domain
level: advanced
years: 5
context: |
Strategische IT-Planung bei DB Netz und DB InfraGO, Budgetverantwortung.
@@ -0,0 +1,12 @@
id: kuenstliche-intelligenz
type: skill
created: 2025-01-15
modified: 2026-05-04
name: Künstliche Intelligenz
category: domain
level: expert
years: 10
context: |
KI-Projekte bei Data Hive Cassel, KI FrAItage an der Uni Kassel, wöchentliche KI-Kolumne, Machine-Learning-Ansätze in der Forschung.
@@ -0,0 +1,12 @@
id: shared-leadership
type: skill
created: 2025-01-15
modified: 2026-05-04
name: Shared Leadership / JobSharing
category: methodology
level: expert
years: 3
context: |
Geteilte Führung im JobSharing mit Claudia Froldi bei DB Netz. Bewusster Gehaltsverzicht für Führung auf Augenhöhe.
+12
View File
@@ -0,0 +1,12 @@
id: team-management
type: skill
created: 2025-01-15
modified: 2026-05-04
name: Teammanagement
category: soft-skill
level: expert
years: 12
context: |
Führung interdisziplinärer Teams bei DB Netz, Universität Kassel und Data Hive Cassel.
+1
View File
@@ -0,0 +1 @@
+17
View File
@@ -0,0 +1,17 @@
id: froldi-knie
type: tandem
created: 2026-05-04
modified: 2026-05-04
partners:
- andre-knie
- claudia-froldi
shared-vision: |
Führung ist keine One-Man-Show. Geteilte Führung auf Augenhöhe ermöglicht bessere Ergebnisse für das Team und die Organisation.
complementary-skills: |
Andre übernimmt fachliche Vision, Budget und Stakeholder-Management. Claudia verantwortet Personalführung und Organisationsentwicklung. Stark ergänzend und unabhängig aufgestellt.
collaboration-model: |
JobSharing in der Leitung der #Einfachbahn bei DB Netz AG (20222025). Bewusster Gehaltsverzicht von Andre, um geteilte Führung zu ermöglichen.
View File
+313
View File
@@ -0,0 +1,313 @@
# SPEC.md
## 1. Executive Summary
* **Product / initiative name:** `andreknie.de`
* **Interviewed stakeholder role:** Project lead, implementer together with AI, website operator, content author, Managing Director of dHive, and client / sponsor.
* **Product type:** New personal homepage, based on existing content and an existing repository.
* **Goal in one sentence:** Create a personal homepage that builds the stakeholders personal brand, makes his AI-related content persistently accessible, presents consulting and speaking work, and supports visibility for both the stakeholder and dHive.
* **Short business context:** Today, the stakeholders visibility mainly depends on LinkedIn and the dHive company website. LinkedIn does not provide a reliable, persistent, well-structured content archive, while `d-hive.de` focuses on the broader company offering rather than the stakeholders individual consulting, speaking, and content profile.
* **Primary target users:** Mid-sized companies, HR / people development and organizational development roles, IT leaders, managing directors, people looking for sovereign AI from Germany, and event organizers looking for AI speakers.
* **Core functional scope summary:** The homepage shall present the stakeholder profile, consulting and speaking examples, resources, newsletter subscription, the `Kniepunkt` column, the `Almost Intelligent` podcast, and relevant content objects such as posts, resources, talks, consulting examples, newsletter issues, podcast episodes, and dates / events.
* **In scope:** Public homepage, personal profile, content archive, resource area, newsletter placement, lead capture for downloads, contact and speaking inquiries, content filtering, downloadable resources, and links between `andreknie.de` and dHive.
* **Out of scope:** Appointment scheduling, calendar with available time slots, blunt promotional advertising messages, an internal area with additional features, and additional content object types beyond the confirmed first-scope list.
* **Main open questions:** Public versus subscriber-only content rules, exact grouping and filtering criteria, exact future subscriber-area concept, and detailed Sales Funnel handling.
* **Main acceptance indicators:** Positive feedback from existing customers, measurable website traffic, and sign-ups for the `Kniepunkt` column.
## 2. Goal
* **One-sentence goal:** `andreknie.de` shall become the stakeholders central personal homepage for trust-building, content access, speaking visibility, consulting positioning, and lead generation.
* **Detailed goal:** The homepage shall provide a calm, professional, hype-free, and still approachable presentation of the stakeholders AI expertise. It shall make LinkedIn-style content more persistent and easier to find, give the column and podcast a home, present consulting and speaking examples, and create clear paths for visitors to contact the stakeholder, request a talk, subscribe to the newsletter, or access resources.
* **Business value:** The homepage shall reduce dependency on LinkedIn algorithms, strengthen the stakeholders personal brand, support qualified inbound interest, and create a bridge between the stakeholders personal positioning and the broader dHive offering.
* **Intended outcome for users and organization:** Visitors shall quickly understand who the stakeholder is, what he stands for, how he frames AI in a sober and useful way, and how they can engage with him or dHive. The stakeholder shall gain more structured visibility, better content reuse, and more measurable interest.
## 3. Stakeholder Context
* **Respondent role:** Project lead, implementer together with AI, website operator, content author, Managing Director of dHive, and commissioning stakeholder.
* **Perspective represented:** Combined owner, author, business sponsor, and operator perspective.
* **Relevant organizational or customer context:** The homepage supports both the stakeholders personal brand and dHives consulting visibility. It is related to, but distinct from, the broader dHive company website.
* **Whether this spec reflects one interview only:** This specification reflects one interview with the primary stakeholder.
## 4. Target Users
* **User groups:**
* Mid-sized companies.
* HR / people development and organizational development roles.
* IT leaders.
* Managing directors and executives.
* People looking for sovereign AI from Germany and needing consulting.
* Event organizers and decision-makers looking for speakers.
* Secondary audience: people who want solid information and contextual orientation about AI.
* **Their context:**
* They may have seen the stakeholder at an event.
* They may search for AI speakers.
* They may look for a trustworthy AI expert or consultant.
* They may know the stakeholder from LinkedIn, the `Kniepunkt` column, the `Almost Intelligent` podcast, or dHive.
* **Their needs:**
* A clear and trustworthy explanation of the stakeholders expertise.
* Access to persistent and structured content.
* Examples of consulting and speaking work.
* A way to request talks or make contact.
* A way to subscribe to the column or newsletter.
* A calm, sober assessment of AI opportunities, limits, and regulations.
* **Their pain points:**
* AI communication is often hectic, fear-driven, or hype-driven.
* LinkedIn content is difficult to browse historically or by topic.
* The dHive company site does not provide a dedicated space for the stakeholders individual consulting, speaking, and content profile.
* **Important differences between groups:**
* Business decision-makers need confidence, clarity, and credibility.
* Event organizers need speaker relevance, examples, and a request path.
* Newsletter or column readers need access to content and subscription options.
* Informational visitors need orientation and useful AI classification without being pushed into blunt advertising.
## 5. Current Situation / Current Process
* **How the process works today:**
* The stakeholder is mainly discovered through LinkedIn.
* The stakeholder is also discoverable through the dHive company website `d-hive.de`.
* People may also become aware of the stakeholder through events, the `Kniepunkt` column, or the `Almost Intelligent` podcast.
* **Existing workaround or manual steps:**
* LinkedIn currently serves as the main content and visibility channel.
* dHives company website provides company-level visibility, including some reference to the stakeholders consulting work.
* Content references and article clusters are difficult to present systematically.
* **Main gaps, bottlenecks, and failure points:**
* LinkedIn discovery is algorithm-driven and not reliably persistent.
* Visitors cannot easily browse a stakeholder-controlled timeline.
* Groups or clusters of articles are difficult to reference.
* `d-hive.de` focuses on the general dHive offering rather than the stakeholders personal advisory and speaker positioning.
* There is no dedicated content area for individual consulting or the speaker program.
* A false impression of the stakeholder, dHive, or the offer would be a serious issue.
* **What should remain unchanged, if applicable:**
* LinkedIn and `d-hive.de` remain relevant external visibility channels.
* The new homepage should connect with the existing dHive presence rather than replace it.
## 6. Functional Scope
The homepage shall provide the following product behavior in business language:
* Present the stakeholders personal profile, positioning, and AI perspective.
* Explain the stakeholders consulting relevance for mid-sized organizations, HR / people development, organizational development, IT leadership, and executive audiences.
* Present examples of consulting work.
* Present examples of talks and speaking engagements.
* Provide a resource area.
* Provide a home for the `Kniepunkt` column.
* Provide a home for the `Almost Intelligent` podcast.
* Allow visitors to subscribe to the newsletter or column-related communication.
* Allow visitors to contact the stakeholder.
* Allow visitors to request or inquire about talks.
* Allow visitors to filter or browse content.
* Allow visitors to download selected resources after providing basic lead/contact data.
* Support the stakeholder in adding new content.
* Support links or references between `andreknie.de` and `d-hive.de`.
* Support an adaptable content organization model that can grow as more content is added.
Role-based differences:
* Public visitors shall be able to access public homepage content and public resources.
* The stakeholder shall be able to add content.
* Newsletter subscribers may later receive differentiated access, but the exact concept is unresolved and an internal area with additional features is out of scope for the first version.
Triggers, inputs, outputs, and outcomes:
* A visitor requests contact or a talk; the business outcome is an email to the stakeholder.
* A visitor downloads a resource; the business outcome is lead capture for the Sales Funnel.
* A visitor subscribes to the newsletter; the desired business outcome is both newsletter subscription and Sales Funnel entry.
* A visitor browses content; the outcome is structured access to posts, resources, column content, podcast content, talks, consulting examples, and events.
## 7. Business Rules
* The homepage must not create a false impression about the stakeholder, dHive, or the offer.
* The tone must be professional but still relaxed.
* The tone must avoid hype, fearmongering, and blunt promotional advertising.
* AI shall be presented as a useful tool, not as something to demonize.
* AI limits, current regulations, and meaningful sovereign use shall be assessed in a clear and sober way.
* Resource downloads shall require basic lead/contact data before access.
* Contact requests shall initially result in an email to the stakeholder.
* Talk requests shall initially result in an email to the stakeholder.
* Newsletter registration should ideally both subscribe the visitor and create a Sales Funnel entry.
* Email confirmation is desired to reduce bot submissions and improve the quality of inquiries.
* Public versus subscriber-only content rules are not yet decided and must be clarified later.
* Additional content object types beyond the confirmed first-scope list are out of scope for the first version.
* Appointment scheduling and calendar availability are out of scope for the first version.
* An internal area with additional features is out of scope for the first version.
## 8. Business Objects / Functional Data Objects
* **Profile:** Represents the stakeholders personal positioning, expertise, credibility, and connection to dHive.
* **Post / Article:** Represents written content, including content that may originate from or relate to LinkedIn posts.
* **Resource:** Represents downloadable or otherwise useful material that can support visitors and generate leads.
* **Talk / Speaking Engagement:** Represents speaking topics, examples, and event-related credibility.
* **Consulting Example:** Represents examples of advisory or consulting work without necessarily exposing confidential client details.
* **Newsletter Issue:** Represents editions or content related to the newsletter or column.
* **Podcast Episode:** Represents episodes of `Almost Intelligent`.
* **Date / Event:** Represents relevant events, appearances, or time-bound activities.
* **Lead / Contact Data:** Represents basic visitor-provided information collected for resource downloads, newsletter sign-ups, or inquiries.
* **Inquiry:** Represents a visitors contact request or talk request.
* **Content Grouping / Filter Criterion:** Represents a business-level classification that helps visitors find content. Exact criteria are not yet fixed and must remain adaptable.
## 9. In Scope
* New personal homepage for `andreknie.de`.
* Personal profile and positioning.
* Presentation of consulting examples.
* Presentation of talks and speaking examples.
* Resource area.
* Newsletter / column subscription placement.
* Home for `Kniepunkt`.
* Home for `Almost Intelligent`.
* Public content browsing.
* Content filtering or grouping.
* Resource downloads after lead/contact data capture.
* Contact request.
* Talk request.
* Email notification to the stakeholder for contact and talk requests.
* Support for adding new content by the stakeholder.
* References or links between `andreknie.de` and `d-hive.de`.
* Adaptable content structure that can grow with future content.
## 10. Out of Scope
* Appointment scheduling.
* Calendar with available time slots.
* Blunt promotional advertising messages.
* Internal area with additional features for the first version.
* Additional content object types beyond posts/articles, resources, talks, consulting examples, newsletter issues, podcast episodes, and dates/events.
* Fully defined subscriber-only content strategy in the first specification.
* Final detailed Sales Funnel process design beyond the confirmed business outcome.
## 11. Requirements
### Profile and Positioning
1. The homepage shall present the stakeholders personal profile clearly and prominently.
2. The homepage shall communicate the stakeholders role as AI expert, consultant, speaker, content author, and Managing Director of dHive.
3. The homepage shall present AI in a calm, sober, and useful way, avoiding hype and fearmongering.
4. The homepage shall explain the stakeholders perspective on sovereign AI from Germany.
5. The homepage shall make the relationship between the stakeholders personal offer and dHive understandable.
### Target Audience Orientation
6. The homepage shall address mid-sized companies, HR / people development, organizational development, IT leaders, and managing directors.
7. The homepage shall support event organizers in evaluating the stakeholder as a potential speaker.
8. The homepage shall provide useful orientation for visitors who want a solid assessment of AI topics.
9. The homepage shall avoid communication that feels like blunt advertising.
### Content and Resources
10. The homepage shall provide access to posts or articles.
11. The homepage shall provide access to resources.
12. The homepage shall provide access to talk or speaking-related content.
13. The homepage shall provide access to consulting examples.
14. The homepage shall provide access to newsletter or column-related content.
15. The homepage shall provide access to podcast-related content.
16. The homepage shall provide access to relevant dates or events.
17. The homepage shall not introduce additional first-version content object types beyond the confirmed list.
18. The homepage shall support a content organization approach that can adapt as more content is added.
19. The homepage shall allow visitors to filter or group content by business-relevant criteria once those criteria are defined.
### Column, Newsletter, and Podcast
20. The homepage shall provide a dedicated home or clear placement for `Kniepunkt`.
21. The homepage shall provide a dedicated home or clear placement for `Almost Intelligent`.
22. The homepage shall offer visitors a way to subscribe to the newsletter or column-related communication.
23. Newsletter registration should create business value beyond communication subscription by also supporting Sales Funnel entry.
### Lead Generation and Inquiries
24. The homepage shall allow visitors to contact the stakeholder.
25. The homepage shall allow visitors to request or inquire about talks.
26. Contact requests shall result in an email to the stakeholder.
27. Talk requests shall result in an email to the stakeholder.
28. The homepage shall allow selected resources to be downloaded.
29. Resource downloads shall require basic lead/contact data before access.
30. Resource-download lead/contact data shall support Sales Funnel development.
31. The homepage shall include an email confirmation step or equivalent business-level confirmation expectation to reduce bot submissions and unqualified inquiries.
### Content Management from Business Perspective
32. The stakeholder shall be able to add new content.
33. Added content shall be usable in the relevant content areas such as posts/articles, resources, talks, consulting examples, newsletter issues, podcast episodes, or dates/events.
34. The content structure shall not depend on a fixed final taxonomy at launch, because grouping criteria are expected to evolve.
### Scope Boundaries
35. The first version shall not include appointment scheduling.
36. The first version shall not include a calendar with free appointment slots.
37. The first version shall not include an internal area with additional features.
38. The first version shall not require a final decision on public versus subscriber-only content.
39. The homepage shall support references or links to the dHive company website where useful.
## 12. Open Questions / Items to Clarify
* Which content should be public and which content should be limited to newsletter subscribers?
* Should there be any subscriber-only access in the first version, or should this remain entirely future scope?
* What exact content grouping and filtering criteria should be used initially?
* How should grouping criteria evolve as new content is added?
* Which specific resources should require lead/contact data?
* What exact basic lead/contact data is needed for resource downloads?
* What exact information should be requested for talk inquiries?
* What exact information should be requested for general contact inquiries?
* What is the desired business handling of Sales Funnel entries after newsletter sign-up or resource download?
* How should older newsletter issues be handled, especially the idea of access to issues older than three months?
* Whether comments for newsletter subscribers remain a future idea or become a later requirement.
## 13. Risks and Ambiguities
* If the personal positioning is unclear, visitors may misunderstand the relationship between the stakeholder, dHive, consulting, speaking, and content.
* If the tone is too promotional, the homepage may contradict the intended calm, trustworthy, hype-free positioning.
* If the content structure is too rigid, it may not support future growth.
* If the content structure is too vague, visitors may not find relevant posts, talks, podcast episodes, or resources.
* If public versus subscriber-only access is not clarified later, the team may implement the wrong access model.
* If lead/contact data expectations are not clarified, resource downloads may either create too much friction or fail to support the Sales Funnel.
* If inquiry confirmation is not designed from a business perspective, unqualified or bot-generated inquiries may remain a problem.
* If dHive references are too dominant, the personal brand may be weakened.
* If dHive references are too weak, the business connection to the company offering may be missed.
## 14. Acceptance Perspective
The first version of `andreknie.de` shall be considered successful from a business perspective when:
* Existing customers give positive feedback and confirm that the site feels appropriate and convincing.
* The homepage creates the right impression of the stakeholder, his AI perspective, and his relationship to dHive.
* The site receives measurable traffic.
* Visitors sign up for the `Kniepunkt` column or related newsletter communication.
* Visitors can understand the stakeholders consulting and speaking relevance without needing LinkedIn as the primary source.
* Visitors can find persistent content instead of relying on algorithmic LinkedIn discovery.
* Visitors can contact the stakeholder or request a talk.
* Visitors can access resources in a way that supports lead generation.
* The tone feels professional, relaxed, sober, and clear.
* The homepage avoids hype, fearmongering, and blunt advertising.
## 15. Glossary
| Original term | English explanation | Notes / context |
| ------------------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------- |
| `andreknie.de` | Product / initiative name for the personal homepage | New homepage for the stakeholders personal brand and content presence |
| dHive | Company associated with the stakeholder | The homepage shall promote the stakeholder and also support visibility for dHive |
| Data Hive Cassel | Company context related to dHive | Mentioned as the current company website context behind `d-hive.de` |
| `d-hive.de` | Existing dHive company website | Current secondary discovery channel; focused on the broader company offer |
| Mittelständler | Mid-sized companies | Primary business target group |
| Personal- und Organisationsentwickler | HR / people development and organizational development roles | Primary target users interested in AI adoption and organizational development |
| souveräne KI | Sovereign AI | AI use that is controlled, responsible, and aligned with German / European expectations and constraints |
| `Kniepunkt` | Column name | A key content product that needs placement and subscription support |
| `Almost Intelligent` | Podcast name | A key content product that needs a home on the homepage |
| große Visitenkarte | Large digital business card | Describes the strategic role of the homepage |
| Kopfdaten | Basic lead/contact data | Information requested before resource downloads to support the Sales Funnel |
| Sales Funnel | Business process for turning interest into qualified leads | The homepage should contribute leads through downloads and newsletter sign-ups |
| plumpe Werbebotschaften | Blunt promotional advertising messages | Explicitly out of scope and contrary to desired tone |
+1
View File
@@ -0,0 +1 @@
@@ -0,0 +1,10 @@
---
generated: 2026-05-28
person: andre-knie
posting: db-systel-strategy-business-operations-ofk2
type: kurztext
---
# Freitext — Beweggründe (max. 800 Zeichen)
Strategie umsetzen, nicht nur denken — das treibt mich an. Als Leiter der #Einfachbahn habe ich IT-Operations für 15 Produkte, Budgetverantwortung und Betriebsstabilität im Konzernumfeld verantwortet. Aktuell steuere ich den Roll-out des fahrplankritischen Portals pathOS und bin selbst Teil des IT-Notfallmanagements. Im JobSharing-Tandem habe ich netzwerkorientierte Führung auf Augenhöhe gelebt. Als Gründer verantworte ich Geschäftsentwicklung, Portfoliosteuerung und Governance eigenständig. Diese Rolle vereint meine Stärken: IT-Strategie, Operations, skalierte agile Setups und die Fähigkeit, auf allen Ebenen — vom Team bis zur Geschäftsführung — wirksam zu kommunizieren und strategische Handlungsfelder voranzutreiben.
@@ -0,0 +1,140 @@
---
generated: 2026-05-26
person: andre-knie
posting: db-systel-strategy-business-operations-ofk2
type: individual
---
# Dr. Andre Knie
andre.knie@deutschebahn.com | [LinkedIn](https://www.linkedin.com/in/knie) | Kassel, Germany
---
## Professional Summary
Strategisch denkende Führungskraft mit über 12 Jahren Erfahrung in der Leitung komplexer Organisationseinheiten — von der Wissenschaft über den DB-Konzern bis zur eigenen Unternehmensgründung. Ich verbinde IT-Strategie, Digitale Transformation und KI-Expertise mit einer netzwerkorientierten Führung auf Augenhöhe. Im DB-Konzern habe ich eines der ambitioniertesten Digitalisierungsvorhaben gesteuert, agile Methoden in skalierten Setups etabliert und Shared Leadership als Führungsmodell erfolgreich gelebt. Als Gründer und Geschäftsführer verantworte ich Geschäftsentwicklung, Portfoliosteuerung und Strategieprozesse — immer mit dem Anspruch, Technologie und Menschen zusammenzubringen.
---
## Key Skills
### Strategie & Governance
- IT-Strategie (5 Jahre, strategische IT-Planung bei DB Netz und DB InfraGO)
- IT-Operations & Betriebsstabilität (5+ Jahre, 15 Produkte bei DB Netz, pathOS bei DB InfraGO)
- IT-Notfallmanagement (aktiv in Hypercarephase TTT/pathOS)
- Digitale Transformation (8 Jahre, Expert)
- Künstliche Intelligenz (10+ Jahre, Expert)
### Führung & Organisation
- Teammanagement (12 Jahre, Expert — interdisziplinäre Teams bei DB, Universität und eigener GmbH)
- Shared Leadership / JobSharing (3 Jahre, Expert — Tandem-Führung bei DB Netz)
- Change Management (10 Jahre, Expert)
### Methodik
- Agilität (6 Jahre, Expert — SAFe, OKR, skalierte Setups)
- Coaching (Agile Coach & OKR Business Coach)
---
## Professional Experience
### **Experte für Digitalisierung** | DB InfraGO | *Juni 2025 heute*
Digitalen Kundennutzen schaffen und Betriebsstabilität sicherstellen. Verantwortung für die Einführung/den Roll-out des Bestellportals pathOS — über dieses Portal werden alle Trassen bestellt, die ab 2027 fahren sollen. Betriebsstabilität ist das höchste Ziel.
- Verantwortung für Einführung/Roll-out des fahrplankritischen Bestellportals pathOS
- IT-Notfallmanagement in der Hypercarephase der TTT-Einführung (aktives Mitglied)
- Betriebsstabilität als oberstes Ziel bei gleichzeitiger fachlicher Weiterentwicklung
- Steuerung digitaler Projekte im Konzernumfeld mit Fokus auf IT-Operations
### **Leiter #Einfachbahn im JobSharing** | DB Netz AG | *Oktober 2022 Juni 2025*
Führung ist keine One-Man-Show. Im JobSharing mit Claudia Froldi: Fachliche Führung und Budgetverantwortung im Tandem-Modell. Bewusster Gehaltsverzicht, um geteilte Führung auf Augenhöhe zu ermöglichen.
- Gesamthafte Ergebnis- und Budgetverantwortung für die Einheit
- Experiment geteilte Führung bei der DB Netz erfolgreich etabliert
- Netzwerkorientierte Arbeitsweise und Kultur von Transparenz und Vertrauen gefördert
- Enge Zusammenarbeit mit Konzernschnittstellen und Top-Management
### **Leiter #Einfachbahn** | DB Netz AG | *Mai 2020 Oktober 2022*
Eines der ambitioniertesten Digitalisierungsvorhaben im Konzernumfeld steuern: Die Digitalisierung auf die Schiene bringen und die Zukunft des Bahnverkehrs aktiv mitgestalten.
- IT-Operations und Betriebsstabilität für 15 verschiedene Produkte verantwortet
- Interdisziplinäres Team aufgebaut und agile Methoden in skaliertem Setup etabliert
- Silos aufgebrochen und Kultur des offenen Lernens geschaffen
- Technische und kulturelle Transformation nachhaltig vorangetrieben
- Strategische Handlungsfelder eigenständig erkannt und vorangetrieben
### **Gründer & Geschäftsführer** | Data Hive Cassel | *August 2021 heute*
Strategische Geschäftsentwicklung, Portfoliosteuerung und Operationalisierung der Unternehmensstrategie. KI-Beratung und Digitale Transformation für den Mittelstand.
- Aufbau und Steuerung des Unternehmensportfolios (KI, Automatisierung, Beratung)
- Strategieprozess und Geschäftsentwicklung in Eigenverantwortung
- 6 Live Use Cases im Projekt KIQ — souveränes KI-Betriebssystem, 100% DSGVO & AI-Act konform
- Governance und Compliance als integraler Bestandteil aller Lösungen
### **Dozent — Agilität und ergebnisorientierte Unternehmensführung** | Hochschule Fresenius | *Februar 2025 Juni 2025*
MBA-Lehrauftrag: Agilität, Change, Innovation und Führung als zusammenhängendes System vermittelt.
### **Teilgruppenleiter Spektroskopie** | Universität Kassel | *Januar 2013 April 2020*
Leitung einer Forschungsgruppe mit mehreren Doktoranden. Aufbau internationaler Teams. Budgetverantwortung und Drittmitteleinwerbung.
- 50+ wissenschaftliche Veröffentlichungen, 2.000+ Zitationen
- Einwerbung von 12 Mio. € Drittmittel in 10+ Anträgen (DFG, BMBF, EU)
- Aufbau internationaler Teams aus dem MINT-Bereich
- Machine-Learning-Ansätze in der Forschung (ab 2012)
---
## Projects
### **Project KIQ — Souveränes KI-Betriebssystem**
Das souveräne KI-Betriebssystem für den deutschen Mittelstand. 6 Live Use Cases bei Pilotkunden. 100% DSGVO- und AI-Act-konform. Partnerschaft mit der Universität Kassel.
- **Relevanz:** Governance, Compliance, Sicherheit, IT-Strategie, Portfolio-Management
### **KI-Peergroup Nordhessen & KIck-Start Kassel**
Ehrenamtliches Engagement: Regelmäßige Begleitung von KMUs bei ihren ersten KI-Schritten. 100+ Teilnehmer beim öffentlichen Workshop, 20 Entscheider im geschlossenen Format.
- **Relevanz:** Strategische Geschäftsentwicklung, Netzwerkorientierung, Begeisterungsfähigkeit
---
## Education
### Dr. rer. nat. — Physik (Atom- und Molekülphysik)
Universität Kassel | *2009 2012*
### Diplom — Experimentalphysik
Universität Kassel | *2004 2009*
---
## Certifications
- **SAFe Agile Leader & PO/PM** — Scaled Agile, *2022*
- **Agile Coach & OKR Business Coach** — Future-Fit Work Institut, *2023*
- **Koordinierte Weiterbildung mittlere Führungskraft** — Deutsche Bahn, *2020*
- **Führungskolleg** — Universität Kassel, *2016*
- **Entwicklung und Management von Forschungsprojekten** — Universität Kassel, *2015*
---
## Languages
- Deutsch — Muttersprache
- Englisch — Fließend
- Spanisch — Grundkenntnisse
+1
View File
@@ -0,0 +1 @@
@@ -0,0 +1,90 @@
# Vorstellung — Geschäftsführer-Meeting ESG Niestetal
**Person:** Dr. Andre Knie
**Anlass:** Eingeladene Vorstellung im GF-Meeting, Energiesysteme Groß GmbH & Co. KG
**Empfehlung über:** Kanzler Universität Kassel
**Datum:** 2026
**Tonalität:** Sachlich, direkt, kein Hype. Raum für Gespräch lassen.
---
## Kurzvorstellung (zum freien Sprechen, ~2 Min.)
**Wer ich bin:**
Ich bin Andre Knie, promovierter Physiker aus Kassel. Seit 2021 berate ich mit meiner Firma Data Hive Cassel mittelständische Unternehmen beim Einsatz von Künstlicher Intelligenz — von der Strategie bis zur laufenden Anwendung.
**Was ich mache:**
Ich helfe Unternehmen herauszufinden, wo KI tatsächlich Nutzen stiftet — und wo nicht. Kein Verkauf von Luftschlössern, sondern nüchterne Analyse: Was ist euer Problem? Lässt sich das mit KI lösen? Wenn ja, wie schnell und mit welchem Aufwand?
**Warum Mittelstand:**
Ich arbeite ausschließlich mit Mittelständlern und öffentlichen Einrichtungen in der Region. Meine Kunden sind Unternehmen wie Hübner, die Hütt-Brauerei, Arvos Group, Esterer, das Studierendenwerk Kassel oder der Schlachthof Kassel. Keine Konzernberatung, keine PowerPoint-Schlachten.
**Was mich von anderen unterscheidet:**
- Alles, was wir bauen, läuft auf deutschen Servern. Keine Abhängigkeit von amerikanischen oder chinesischen Anbietern.
- 100% konform mit Datenschutz und dem neuen europäischen KI-Gesetz.
- Ich begleite den gesamten Weg: von der ersten Frage bis zum laufenden System.
---
## Relevanz für ESG (Gesprächsanker, nicht vortragen)
Diese Punkte kannst du im Gespräch einstreuen, wenn passend:
| ESG-Thema | Dein Anknüpfungspunkt |
|-----------|----------------------|
| Energiemonitoring / Speicher | Powerhive: Leistungsmessung mit Sekundenauflösung, Druckluftoptimierung bei Hütt (20% Einsparung im Reaudit) |
| Fachkräftemangel | KI-Automatisierung von Routineaufgaben (Prüfprotokolle, Berichte, Angebotsunterstützung) — setzt Fachkräfte für Wertschöpfung frei |
| Regulatorik / Direktvermarktung | Marktanalyse-Agent: automatisierte Wettbewerbs- und Marktbeobachtung |
| Wachstum / Skalierung (9 Standorte) | Dokumenten-KI: einheitlicher Zugriff auf Wissen über Standorte hinweg |
| Netzintegration / Großspeicher | Datengetriebene Optimierung von Lade- und Einspeisezyklen |
---
## Folienvorschlag (35 Folien, schlank)
### Folie 1 — Wer bin ich?
- Name, Firma, Standort Kassel
- Physiker → KI-Berater → Mittelstandsfokus
- „Wir hassen Verschwendung und lieben Wandel."
### Folie 2 — Was mache ich konkret?
- Strategische KI-Beratung: Wo lohnt es sich? Wo nicht?
- Umsetzung: Vom Piloten zum laufenden System
- Begleitung: Menschen mitnehmen, nicht überrollen
- Optional: 23 Logos bisheriger Kunden (wenn freigegeben)
### Folie 3 — Referenz mit Energiebezug
- Powerhive / Hütt-Brauerei: Energiemonitoring → Druckluftoptimierung → messbare Einsparung
- Kurz und knapp: Problem → Ansatz → Ergebnis
### Folie 4 — Wie könnte ein Weg aussehen?
- Schritt 1: Gespräch — Wo drückt der Schuh?
- Schritt 2: Analyse — Was ist machbar, was nicht?
- Schritt 3: Pilot — Klein anfangen, schnell lernen
- Schritt 4: Skalieren — Nur was funktioniert
- (Kein Zwang, kein Langzeitvertrag als Einstieg)
### Folie 5 (optional) — Zahlen
- 50+ Projekte, 15+ Kunden
- 13 Jahre KI-Erfahrung (erste Publikation 2012)
- 6 laufende Anwendungen bei Pilotkunden
- 100% deutsch gehostet, DSGVO- & AI-Act-konform
---
## Nicht sagen / vermeiden
- Keine englischen Buzzwords (kein „Leverage", „Scalability", „Disruption")
- Kein Versprechen, dass KI alles löst
- Keine Kritik an bisherigen Entscheidungen von ESG
- Nicht zu viel über Technik reden — die Fragen kommen von allein
---
## Gesprächsziel
Vertrauen aufbauen. Zeigen, dass du die Welt des Mittelstands verstehst. Einen konkreten nächsten Schritt vereinbaren (z.B. halber Tag Analyse vor Ort). Den Rest macht das Gespräch.

Some files were not shown because too many files have changed in this diff Show More