Back to blog
Guide·May 25, 2026·7 min read

Italian RAG for SMBs — build an assistant with Claude in 4 weeks

A practical guide for Italian startups and SMBs: a complete Italian RAG stack with Claude Sonnet 4.6, ~€0.006 per query, Italian token considerations (1.3–1.5x more than English), hallucination prevention, real monthly costs for 100 to 10,000 queries per day, GDPR, and a note on electronic invoicing to SDI.

Build an Italian-language RAG assistant for your SME — a practical guide for Italian startups and companies that want to put Claude into production on an Italian-language knowledge base. Includes working code, realistic monthly costs, GDPR considerations, and electronic invoicing.

The basic stack

  1. Embed documents with text-embedding-3-large, called directly through OpenAI —— Kunavo does not serve embeddings, only the generation step
  2. Vector search (pgvector / Pinecone / Qdrant)
  3. Response generation with Claude Sonnet 4.6 + prompt caching
  4. Fallback to Gemini 2.5 Flash for high concurrency / minimum costs

Essential code

rispondere.py
from openai import OpenAI

client = OpenAI(
    api_key="sk-kn-...",
    base_url="https://api.kunavo.com/v1",
)

def rispondere(domanda: str, contesto: list[str]) -> str:
    """Risponde in italiano basandosi solo sul contesto recuperato dalla KB."""
    resp = client.chat.completions.create(
        model="claude-sonnet-4-6",
        messages=[
            {
                "role": "system",
                "content": [
                    {
                        "type": "text",
                        "text": (
                            "Sei un assistente che risponde in italiano formale "
                            "ma cordiale, basandoti esclusivamente sul contesto "
                            "fornito. Se la risposta non si trova nel contesto, "
                            "rispondi 'Non ho questa informazione' invece di "
                            "inventare. Cita sempre il documento di origine "
                            "quando possibile."
                        ),
                        "cache_control": {"type": "ephemeral"},
                    },
                ],
            },
            {
                "role": "user",
                "content": (
                    f"## Contesto\n{chr(10).join(contesto)}\n\n"
                    f"## Domanda\n{domanda}"
                ),
            },
        ],
        max_tokens=600,
    )
    return resp.choices[0].message.content

Cost per query with caching enabled: ~$0.004 (about €0.004). Without caching: ~$0.01. The difference justifies correctly configuring cache_control on the stable system prompt.

Tokens in Italian

Italian uses approximately 1.3-1.5x more tokens than English for the same content (articles, longer endings). Account for this in your budgets: a 5K-token context in English becomes ~6.5K in Italian. Limit the context to 4K to keep costs under control without losing quality.

Anti-hallucination — what actually works

  • Explicit system prompt: “If the answer is not in the context, say ‘I don’t have that information.’” Claude follows this instruction reliably in Italian
  • Cite the source: Ask the model to return the ID of the document each claim came from. If the ID is made up, you’ve found a hallucination
  • Limit the output: max_tokens=400 reduces the temptation to add invented filler
  • Adversarial tests: Prepare 50 questions from your dataset marked as “unanswerable with the current context.” The assistant must reject all of them

Estimated monthly cost

  • 100 queries/day: ~$11/month (~€10) with caching
  • 1,000 queries/day: ~$110/month (~€100)
  • 10,000 queries/day: ~$1,100/month (~€1,000)

Comparison: an Italian customer support agent costs ~€2,500/month to handle ~100 tickets/day. Even at 1,000 queries/day, the AI assistant does the work of 10 people at about 4% of the cost of one agent.

Payment and invoicing

  • Cards: Visa, Mastercard, American Express, PostePay (via Visa)
  • Apple Pay / Google Pay / Link
  • Satispay, when checkout is in euros

All prices are in USD; Stripe can convert the amount to EUR at checkout, using a rate that includes a 2–4% conversion fee paid by the payer (there is no fee when paying in USD; Stripe Adaptive Pricing documentation, read on 2026-10-03). PayPal and SEPA Direct Debit are not available. Checkout does not display VAT or request a VAT number. Electronic invoicing through SDI: we currently do not issue electronic invoices through the Italian SDI. For invoicing requirements, contact sales@kunavo.com.

GDPR — key points for Italian SMEs

  • PII pseudonymization: Remove personal names, tax codes, IBANs, emails, and addresses from the prompt before sending it to the model
  • DPA / GDPR Art. 28: Kunavo does not offer a DPA or standard contractual clauses (SCCs); requests are processed in the United States and forwarded to upstream providers. If you need a DPA with SCCs for transferring data to the United States, enter into one directly with the model provider (Anthropic, OpenAI, or Google's enterprise terms)
  • Updated privacy notice: Explicitly mention the use of third-party AI through Kunavo
  • Right to erasure (Art. 17): Make sure your application logs can be deleted. Don’t put prompts in immutable archives such as blockchains

Practical roadmap

  • Week 1: Prototype with 100 documents, 10 test queries
  • Week 2: Integrate the complete KB, test with internal users
  • Week 3: Tune the system prompt using real cases, evaluate quality
  • Week 4: Gradual deployment, monitor costs at /app/usage

Ready to get started? Sign up for free, top up from $10, and pay only for what you use (enough for ~1,100 test queries). Full documentation: /docs/quickstart. For questions in Italian, email contact@kunavo.com directly.