No description
Find a file
2026-06-09 10:35:52 -07:00
apps Serve web build from Slide Factory API 2026-06-09 10:35:52 -07:00
docs Merge Google Slides workflow into Slide Factory 2026-06-09 10:31:33 -07:00
examples Initial Slide Factory MVP scaffold 2026-06-08 21:43:58 -07:00
packages Initial Slide Factory MVP scaffold 2026-06-08 21:43:58 -07:00
schemas Merge Google Slides workflow into Slide Factory 2026-06-09 10:31:33 -07:00
styles/incorta Initial Slide Factory MVP scaffold 2026-06-08 21:43:58 -07:00
.env.example Initial Slide Factory MVP scaffold 2026-06-08 21:43:58 -07:00
.gitignore Initial Slide Factory MVP scaffold 2026-06-08 21:43:58 -07:00
package-lock.json Add source upload deck starter 2026-06-08 22:09:12 -07:00
package.json Initial Slide Factory MVP scaffold 2026-06-08 21:43:58 -07:00
README.md Merge Google Slides workflow into Slide Factory 2026-06-09 10:31:33 -07:00
tsconfig.base.json Initial Slide Factory MVP scaffold 2026-06-08 21:43:58 -07:00

Slide Factory

Slide Factory turns messy business content into brand-consistent slide decks.

Current version: v0.1 local source-upload MVP
Primary dev machine: MBS / Mac Studio
Local source: /Users/tars/AgentPlane/projects/slide-factory/source/slide-factory
Forgejo: https://git.scottfelten.com/tars/slide-factory.git
Current branch: dev

What Works In v0.1

The app can create an editable PPTX from:

  • pasted markdown or plain text
  • .md, .markdown, or .txt files
  • .pdf files with extractable text
  • .pptx files by extracting slide text
  • image files or pasted clipboard images as starter context

The v0.1 deck-generation path is:

source content
  -> text extraction
  -> heuristic deck planning
  -> validated DeckSpec
  -> Incorta starter style pack
  -> PPTX renderer
  -> saved PPTX + DeckSpec JSON

This is deliberately local-first. It proves the core source-to-deck loop before production hosting, auth, persistence, or full LLM orchestration.

Google Slides Workflow

The older AgentPlane Google Slides project has been merged into this repo as workflow guidance and a future renderer contract:

docs/google-slides-workflow.md
schemas/google-slides-deck-spec.schema.json

Use that path for branded Google Slides generation: copy the template first, inventory native containers, fill existing object IDs, delete unused slides, and render thumbnails/contact sheets for visual QA.

Quick Start On MBS

cd /Users/tars/AgentPlane/projects/slide-factory/source/slide-factory
zsh -lc "npm install"

Run the API:

zsh -lc "SLIDE_FACTORY_PORT=3025 SLIDE_FACTORY_OUTPUT_DIR=outputs npm run dev:api"

Run the web app in a second terminal:

cd /Users/tars/AgentPlane/projects/slide-factory/source/slide-factory
zsh -lc "npm run dev:web"

Open on MBS:

http://127.0.0.1:5185/

If using the MBA to view the MBS app, open an SSH tunnel from the MBA:

ssh -L 5185:127.0.0.1:5185 -L 3025:127.0.0.1:3025 tars-ts

Then open on the MBA:

http://127.0.0.1:5185/

Current Running Dev Server

If the previous session left the app running, the process metadata is here:

/tmp/slide-factory-dev/api.pid
/tmp/slide-factory-dev/web.pid
/tmp/slide-factory-dev/api.log
/tmp/slide-factory-dev/web.log

Stop it with:

kill $(cat /tmp/slide-factory-dev/api.pid) $(cat /tmp/slide-factory-dev/web.pid)

Check ports:

lsof -nP -iTCP:3025 -sTCP:LISTEN
lsof -nP -iTCP:5185 -sTCP:LISTEN

CLI Smoke

zsh -lc "npm run sample"

Outputs:

outputs/sample-incorta.pptx
outputs/sample-incorta.deck.json

API Smoke

curl -sS http://127.0.0.1:3025/api/health

Upload a source file:

curl -sS -X POST http://127.0.0.1:3025/api/decks/from-source \
  -F style=incorta \
  -F instructions="Create a concise executive deck." \
  -F source=@examples/customer-discovery.md

Repo Structure

apps/
  api/              Express API and source extraction
  cli/              Local deck creation command
  web/              React/Vite source-first UI
packages/
  core/             schemas, style loading, heuristic planner
  render-pptx/      deterministic PPTX renderer
styles/
  incorta/          starter Incorta style pack
examples/
  customer-discovery.md
docs/
  architecture.md

Important Limits

  • Image upload does not yet perform OCR or vision understanding. It creates a starter deck from image metadata and the user instructions.
  • PDF extraction is text-only. Scanned/image-only PDFs need future OCR.
  • The planner is heuristic. Model Service Gateway/LLM integration is not wired in yet.
  • Generated slides are editable PPTX, but automated visual QA is still basic.
  • No auth, persistence, job history, hosted route, or Google Slides mutation yet.
  • Do not commit raw customer docs, transcripts, tokens, provider keys, or private Drive files.

AgentPlane Rules

  • Forgejo is implementation truth.
  • Runtime secrets must come from scoped projections or Model Service Gateway.
  • New production deploy, DNS, nginx, systemd, OAuth, secret projection, or provider-key work requires explicit approval.
  • Google Slides generation should reuse:
/Users/tars/AgentPlane/projects/google-slides

For branded Google Slides, use brand-safe mode as documented in docs/google-slides-workflow.md.

Suggested Next Session

Start here:

cd /Users/tars/AgentPlane/projects/slide-factory/source/slide-factory
git status --short --branch
git pull --ff-only origin dev
zsh -lc "npm install && npm run build"

Recommended v0.2 priorities:

  1. Add Model Service Gateway integration for source understanding and deck planning without raw provider keys in the app.
  2. Add OCR/vision path for images and scanned PDFs.
  3. Add SQLite job history and artifact metadata.
  4. Add strict DeckSpec validation for external/LLM-generated specs.
  5. Add PPTX visual QA: render thumbnails or PDF previews and catch overflow.
  6. Add style-pack save/load workflow and template import.
  7. Add Google Slides renderer using the existing template-container workflow.