Target Positionering in Sector — Signumi
Genereert een professioneel Word-document dat een Belgisch bedrijf positioneert in zijn sector en aantoont waarom het een interessante overnamedoelstelling is.
Inputs
Verplicht:
- Ondernemingsnummer of bedrijfsnaam
- NACE-code (5 cijfers)
Optioneel:
- Aangepaste outputnaam of pad
Werkwijze (volg deze stappen in volgorde)
Stap 1: Data ophalen (3 calls)
Signumi:get_company_by_enterprise_number(enterprise_number=...)
Signumi:get_industry(nace_code="XXXXX")
Signumi:search_companies(nace_codes=["XXXXX"], sort_by="ebitda", sort_order="desc", limit=20)De derde call levert de top 20 bedrijven in de sector op basis van EBITDA.
Als enkel de naam bekend is (geen ondernemingsnummer), gebruik dan eerst:
Signumi:search_companies(query="...", nace_codes=["XXXXX"], limit=3)en kies het juiste resultaat, daarna get_company(company_id=...).
Stap 2: JSON samenstellen
Bouw het JSON-object op basis van de Signumi-response. Gebruik het schema hieronder. Vul ontbrekende velden in met null — laat nooit een veld weg.
{
"company": {
"name": "Sanitair X",
"city": "X",
"postalCode": "X",
"naceCode": "43221",
"naceLabel": "Sanitaire werkzaamheden",
"startDate": "1972-10-26",
"enterpriseNumber": "X",
"administratorName": "X",
"administratorAge": 62,
"ebitda": 758073.2,
"ebit": 648730.01,
"profit": 441499.65,
"equity": 4885863.54,
"debt": 1490455.72,
"balanceTotal": 6377318.26,
"cash": 1525789.71,
"shortTermDebt": 1490455.72,
"employeeCount": 20,
"valuationMultiple": 4.4,
"enterpriseValue": 3335522.08,
"equityValue": 7362340.94,
"ebitdaHistory": [
{ "fiscalYear": 2021, "ebitda": 654662, "ebit": 551710, "profit": 411532, "equity": 3757053, "employeeCount": 21.7 },
{ "fiscalYear": 2022, "ebitda": 518094, "ebit": 402362, "profit": 284392, "equity": 4041446, "employeeCount": 21.1 },
{ "fiscalYear": 2023, "ebitda": 693436, "ebit": 576399, "profit": 402917, "equity": 4444363, "employeeCount": 19.7 },
{ "fiscalYear": 2024, "ebitda": 758073, "ebit": 648730, "profit": 441499, "equity": 4885863, "employeeCount": 20.0 }
]
},
"sector": {
"label": "Sanitaire werkzaamheden",
"naceCode": "43221",
"companyCount": 867,
"totalTurnover": 255472436,
"totalEbitda": 51800000,
"ebitdaGrowthPct": 4.2,
"medianEbitda": 59714,
"medianEbitdaMarginPct": 6.86,
"profitableCompanyPct": 83.16,
"medianCompanyAgeYears": 14,
"medianYoungestAdministratorAge": 44,
"totalEmployeeCount": 4013.2,
"medianEmployeeCount": 2.0,
"topProvinceByEmployee": "West-Vlaanderen",
"topProvinceEmployeeCount": 987,
"targetRank": 34,
"top20Companies": [
{ "name": "X", "city": "X", "ebitda": 758073 },
{ "name": "Installaties De Smet NV", "city": "Gent", "ebitda": 692000 }
]
}
}Velden mapping:
- sector.totalEbitda — uit
get_industry:industry.aggregates.totalEbitdaof som van top20.ebitda als proxy - sector.ebitdaGrowthPct — uit
get_industry:industry.trends.ebitdaGrowthPct; gebruiknullals niet beschikbaar - sector.top20Companies — uit
search_companies(..., sort_by="ebitda", limit=20): array van {name, city, ebitda} — dit zijn altijd de absolute top 20 van de sector - sector.targetRank — rang van het target in de sector op EBITDA; bepaal via
search_companiesen tel hoeveel bedrijven een hogere EBITDA hebben + 1; gebruiknullals niet bepaald - sector.topProvinceByEmployee — kijk in
industry.geographynaar de provincie met hoogste totalEmployeeCount
Stap 3: Script uitvoeren
cd /home/claude/lead-magnet-generator
npm install --prefix . docx 2>/dev/null || npm install -g docxSla het JSON-object op als tijdelijk bestand en roep het script aan:
OUTPUT="/mnt/user-data/outputs/<BedrijfsnaamSanitized>_Sectorpositie_Signumi.docx"
echo '<JSON_STRING>' > /tmp/lm_input.json
node scripts/generate_docx.js "$(cat /tmp/lm_input.json)" "$OUTPUT"Controleer of de output OK:<pad> bevat. Bij fout: bekijk de error en fix de JSON.
Stap 4: Valideren
python /mnt/skills/public/docx/scripts/office/validate.py "$OUTPUT"Moet eindigen met "All validations PASSED!".
Stap 5: Presenteren
Gebruik present_files met het outputpad.
Geef daarna een korte samenvatting (3–5 bullets) van wat het document bevat en welke key takeaways het betreffende bedrijf zal zien.
Document structuur (6 secties)
- Sectoroverzicht — NACE-data
- Financieel profiel bedrijf — KPI tiles + historische tabel
- Benchmark vs. sector — FTE, EBITDA, solvabiliteit, leeftijd
- Diepgaande benchmarks:
- EBITDA-groei bedrijf vs. sectorgroei (CAGR + laatste jaar)
- EBITDA per FTE vs. sectormediaan
- Marktaandeel op basis van EBITDA (bedrijf / totalEbitda sector)
- Top 20 bedrijven naar EBITDA met rangschikking
- Waarom een interessante overnamedoelstelling — 2×2 argumentenmatrix + waarderingsrange
Troubleshooting
| Probleem | Oplossing |
|----------|----------|
| Cannot find module 'docx' | Run npm install -g docx first |
| JSON parse error | Escape single quotes in namen of schrijf naar bestand via create_file |
| Validatie faalt | Check dat geen veld undefined is in de JS — vervang door null in JSON |
| Turnover ontbreekt | Normaal bij verkorte jaarrekening (m81-f model) — null is correct |
| totalEbitda niet beschikbaar | Gebruik null — sectie 4c toont dan "n/b" maar crasht niet |
| top20Companies leeg | Gebruik [] — sectie 4d wordt dan overgeslagen |
| ebitdaGrowthPct ontbreekt | Gebruik null — kolom "sector" toont "n/b" |
Token-efficiëntie
Het script generate_docx.js bevat de volledige documentopmaak. Claude hoeft enkel data op te halen en JSON samen te stellen — geen codegeneratie in context. Dit bespaart ~2000–3000 tokens per run vs. inline codegeneratie.