Internal app
Close Call Decks
Queue Close call transcript jobs, process them overnight, create sales decks via SlideClaw PDF export, upload them to Google Drive, and sync the resulting deck links back to Close.
Queued jobs
0
Accepted webhook jobs waiting for the external 02:00 trigger.
Processing / retry
0 / 0
Currently claimed jobs and jobs rescheduled for a later retry.
Completed / failed
0 / 0
Completed jobs now represent full AI → SlideClaw → Close pipeline success.
Implemented V1 foundation
Real intake, persistence, and end-to-end worker pipeline are now in place.
- 1. Make posts transcript payloads to the webhook route.
- 2. The app authenticates, validates, hashes, and stores queued jobs.
- 3. Duplicate deliveries resolve to deterministic duplicate responses.
- 4. An external scheduler calls the processing route around 02:00.
- 5. The worker claims eligible jobs, can reclaim stale leases, and runs AI, SlideClaw, Drive upload, and Close sync.
- 6. Completed jobs persist stage progress, deck metadata, and synced Close target details.
Implementation checklist
What is done versus what still remains open.
- Webhook auth + strict payload validation implemented
- Prisma persistence + idempotency enforcement implemented
- External scheduler trigger route implemented
- AI deck generation + validation pipeline implemented
- SlideClaw PDF export + Google Drive upload + Close write-back flow implemented
- Retry/detail actions still pending in operator UI
- Worker lease recovery + stage visibility implemented
Webhook route
Bearer-protected Make intake with strict validation and idempotent queue insert.
POST /api/webhooks/close/transcriptsProcessing trigger
Externally triggered worker entrypoint. Do not treat this app as a durable cron host.
POST /api/jobs/processTarget window: 02:00 Asia/Nicosia
Persistence
Prisma-backed DeckJob queue with explicit status lifecycle, stage checkpoints, and retry metadata.
queued → processing → retry_scheduled / failed / completed
stage: queued → ai_generated → presentation_created → close_synced
Recent jobs
Latest persisted jobs from PostgreSQL.
Database not reachable in this environment. Live job data will appear once PostgreSQL is available.