Skip to content

AI-powered PowerPoint presentation generator API. Generate customizable .pptx files from topics using AI agents.

Notifications You must be signed in to change notification settings

tejaslinge/AI-PPT-Generator

Repository files navigation

Slide Generator API

Run locally

Quickstart (Docker + Make)

Prerequisites: Docker, Docker Compose v2, Make.

git clone <repository-url>
cd "AmpUp-PPT-Assignment"

Before deploying, create the environment files:

  • Create bot_service/src/backend/etc/.env based on bot_service/src/backend/etc/env_sample (fill your keys like OPENAI_API_KEY, ANTHROPIC_API_KEY, database settings, etc.).
  • Create a project-root .env based on .env_sample (set values such as PGADMIN_DEFAULT_EMAIL and PGADMIN_DEFAULT_PASSWORD).
# Deploy everything
make deploy_presentation_app

After startup:

What make deploy_presentation_app runs under the hood:

  • setup_network: creates Docker network llm-network if missing.
  • setup_volumes: creates external volumes postgres_data and pgadmin_data if missing.
  • start_services: docker compose -f docker-compose-services.yml up -d to start Postgres and PgAdmin.
  • start_main:
    • Stops any existing main service (docker compose -f docker-compose-main.yml down).
    • Prunes old Docker build caches (older than 10 days).
    • Builds and starts the main API (docker compose -f docker-compose-main.yml up --build -d).
    • Waits briefly for health checks.

Generate professional PowerPoint presentations from a topic using an AI-powered planner/summarizer pipeline.

How it works

  1. User creates credentials via the Users API (HTTP Basic Auth is used with email as the username).
  2. The Slides Generator pipeline runs when you call /slides/generate:
    • Planner agent analyzes your inputs (topic, style, layout preferences) and proposes a presentation title plus a list of slide plans (search questions + layout plan for each slide).
    • Summarizer agent runs in parallel for each planned slide, producing concise content, suggested layout type, and citations.
    • The PowerPoint generator compiles all slide contents, applies theme colors and fonts, and saves a .pptx file. The presentation status in the database is updated from processing → completed/failed.

See detailed endpoint reference in docs/API_SPEC.md.

User flow

  1. Create a user
curl -X POST "http://localhost:8081/api/v1/create_user" \
  -H "Content-Type: application/json" \
  -d '{
    "email": "jane.doe@example.com",
    "username": "janedoe",
    "password": "strong-password"
  }'
  1. Generate a presentation
curl -X POST "http://localhost:8081/api/v1/slides/generate" \
  -H "Content-Type: application/json" \
  -d '{
    "topic": "AI Agent Use Cases in Healthcare Sector",
    "num_slides": 8,
    "style": "professional",
    "predefined_theme": "professional_blue"
  }'
  1. Check status and download
# Status
curl "http://localhost:8081/api/v1/slides/<presentation_id>"

# Download when completed
curl -o presentation.pptx "http://localhost:8081/api/v1/slides/<presentation_id>/download"

Authentication

  • HTTP Basic Auth is supported for User and Slide-related endpoints. Use the email as the HTTP Basic username and the user password as the password.

Docs are available at http://localhost:8081/docs and http://localhost:8081/redoc.

Project structure

bot_service/src/backend/
├── slides/                 # Slide endpoints and generation logic
├── user/                   # Users and basic auth helpers
├── LLM/                    # LLM service integration
├── database/               # DB services and models
├── common/                 # Config, logging, utils
└── main.py                 # FastAPI bootstrap

Samples

Generated .pptx files are saved under bot_service/src/backend/generated_presentations/.

Further reading

  • Full API reference: docs/API_SPEC.md
  • Themes, colors, and layouts: GET /api/v1/slides/options

About

AI-powered PowerPoint presentation generator API. Generate customizable .pptx files from topics using AI agents.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages