# Suggest Category

> Find the right SKR account code for a bookkeeping category (SME only). Search the full SKR03/SKR04 chart of accounts by code or use AI to match by name or description. Use when an SME user needs help finding a category code, wants to add a new custom category, or asks "what account number is X?"

- Skill: `norman-finance/suggest-category` (Agent Skill)
- Install (CLI): `npx skillmds@latest add norman-finance/suggest-category`
- Raw SKILL.md: https://api.skillmd.com/api/skills/norman-finance/suggest-category/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: norman-finance (https://skillmd.com/u/norman-finance)
- Updated: 2026-09-10
- Page: https://skillmd.com/skills/norman-finance/suggest-category

---


Help the user find the correct SKR chart of accounts category.

**IMPORTANT: SME accounts only.** This skill applies to GmbH/UG companies that use DATEV standard chart of accounts (SKR03/SKR04). For freelance accounts, use `categorize_transaction` instead — it has its own category set and AI detection.

## How to determine account type

Call `get_company_details` and check the `isSme` field:
- `isSme: true` → Use this skill (SKR tools below)
- `isSme: false` → Use `categorize_transaction` for freelance AI categorization

## Workflow

1. **Determine the search approach** based on what the user provides:
   - If they provide an **account number or prefix** (digits like `42`, `4200`, `6300`), use `search_skr_by_code` for instant CSV-based results.
   - If they describe a **category by name or purpose** (e.g. "office rent", "Reisekosten", "software subscriptions"), use `suggest_skr_category` which leverages OpenAI to semantically match against the full catalog.

2. **Show results clearly**: Present the matches with:
   - Account number (code)
   - German name (`nameDe`)
   - English name (`nameEn`)
   - Let the user pick the best fit.

3. **Check the company's existing categories**: Call `list_company_categories` to see if the desired category is already provisioned. If it is, inform the user — no need to create a new one.

4. **Create the category if needed**: If the user wants to add it, use `create_company_category` with:
   - The account code from the SKR catalog
   - The name (use the language the user prefers)
   - The cashflow type (INCOME or EXPENSE)
   - Optional German name and description

5. **Context**: The company's active chart of accounts (SKR03 or SKR04) determines which catalog is searched. You can check the current template via `get_company_details`.

## Tool summary

| Tool | For | What it does |
|---|---|---|
| `search_skr_by_code` | SME only | Fast CSV lookup by account number prefix |
| `suggest_skr_category` | SME only | AI (OpenAI) semantic search by name/description |
| `create_company_category` | SME only | Create a new custom DATEV category |
| `list_company_categories` | SME only | List categories already provisioned for the company |
| `categorize_transaction` | All accounts | AI detection for a specific transaction (freelance + SME) |

## Tips

- The full SKR catalog has ~1000+ entries — the tools handle search/filtering, don't try to list everything.
- Prefer `search_skr_by_code` over `suggest_skr_category` when possible (faster, no OpenAI cost).
- `categorize_transaction` is a *different* tool — it classifies a specific transaction. The SKR tools here help find/create account codes for the company's category setup.
- Common SKR04 ranges: 0xxx = assets, 1xxx = financial accounts, 2xxx = liabilities, 3xxx = income, 4xxx = material costs, 5xxx = depreciation, 6xxx = other expenses, 7xxx = extraordinary items.

