Skip to content

Presentia documentation

Presentia is used mostly from the dashboard: create a deck from a prompt, a document, a dataset or markdown; fine-tune it in the editor (with an AI assistant); export to PPTX or PDF. This page covers the fork’s own features and the API; the day-to-day editor works as you would expect from its upstream.

The Markdown page has a full editor — toolbar, live preview that shows exactly how your text splits into cards, card counter, drag & drop — plus template, language, image source/style and export pickers. Every section split by --- or by #/## headings becomes a card.

text_modeWhat happens
preserveYour text goes into the deck verbatim — the AI only picks layouts and generates images.
condenseThe AI summarizes each card while keeping its structure.
generateThe AI rewrites and expands each card.

The same power is available over the API:

Terminal window
curl -X POST http://localhost:5001/api/v1/ppt/presentation/generate-from-markdown \
-H "Content-Type: application/json" \
-d '{
"markdown": "# Q3 Review\nIntro...\n\n---\n\n## Results\n- Revenue up 20%",
"text_mode": "preserve",
"template": "general",
"export_as": "pptx"
}'

POST /api/v1/ppt/presentation/generate-from-data builds a deck from a CSV, TSV or JSON dataset (multipart: file, plus content, n_slides, language, template, instructions, export_as). The anti-hallucination guard checks every chart figure against the dataset — exact values or exact column aggregates (sum, average, min, max, count) only. Wrong numbers get one retry with feedback and are rejected if the model insists.

Terminal window
curl -X POST http://localhost:5001/api/v1/ppt/presentation/generate-from-data \
-F "file=@monthly_summary.csv" \
-F "content=Monthly reconciliation report" \
-F "n_slides=6" -F "language=English" -F "export_as=pdf"

Datasets are expected pre-aggregated; the row cap is DATASET_MAX_ROWS (default 200). The default template is Report, which carries the chart layouts.

Two dashboard pages the upstream doesn’t have:

  • Models — the catalog of text and image models with curated quality dots, blended price per million tokens, availability computed from your keys and recommendation badges. Click a card to switch; with an OpenRouter key nearly everything lights up at once.
  • Costs — summary cards (calls, tokens in/out, estimated cost) and per-deck breakdowns by stage, slide and model, plus a provider comparison table. Pricing comes from a versioned catalog in the repo, so cost history is auditable.

Presentia works standalone — without any of these variables it behaves exactly like vanilla Presenton. Each integration is opt-in and independent; the repo’s docker-compose.yml ships commented service blocks for all of them.

  • Escriba — document parsing with OCR. ESCRIBA_ENABLED=true + ESCRIBA_URL delegate document → markdown conversion to an Escriba service (scanned PDFs, rotated pages, images, 20+ formats). If Escriba is down or fails on a file, Presentia falls back automatically to its local parsers.
  • Anonimal — PII anonymization before the LLM. ANONIMAL_ENABLED=true + ANONIMAL_URL anonymize user prompts and extracted document text before they travel to the LLM provider. Fail-closed: if the service doesn’t answer, generation stops with a clear error instead of sending raw PII. Original text never leaves your host.
  • Searchgirl — private web search. WEB_SEARCH_PROVIDER=searchgirl + SEARCHGIRL_BASE_URL ground generations through your own metasearch instance instead of a third-party API (with an optional Bearer token).

Built-in template families (General, Modern, Standard, Swift, Report with charts, Institucional in es-AR), custom templates generated from your own PPTX, a full theme editor (colors, fonts, logo) and per-template style_instructions that shape the writing tone. The whole interface ships in 7 languages — English, Español, Français, Português, Italiano, 中文, 日本語 — switchable from the sidebar and remembered per browser.

Terminal window
docker compose up -d --build development # hot reload for both servers
cd servers/fastapi && python -m pytest tests/unit # the fork adds 100+ unit tests
View on GitHub