# Meme generator with human-in-the-loop approval

> Source: https://trigger.dev/docs/guides/example-projects/meme-generator-human-in-the-loop

[​](https://trigger.dev/docs/guides/example-projects/meme-generator-human-in-the-loop#overview)

Overview
-----------------------------------------------------------------------------------------------------------

This demo is a full stack example that uses the following:

*   A [Next.js](https://nextjs.org/)
     app, with an [endpoint](https://github.com/triggerdotdev/examples/blob/main/meme-generator-human-in-the-loop/src/app/endpoints/%5Bslug%5D/page.tsx)
     for approving the generated memes
*   [Trigger.dev](https://trigger.dev/)
     tasks to generate the images and orchestrate the waitpoint workflow
*   [OpenAI DALL-E 3](https://platform.openai.com/docs/guides/images)
     for generating the images
*   A [Slack app](https://api.slack.com/quickstart)
     for the human-in-the-loop step, with the approval buttons linked to the endpoint

[​](https://trigger.dev/docs/guides/example-projects/meme-generator-human-in-the-loop#github-repo)

GitHub repo
-----------------------------------------------------------------------------------------------------------------

View the meme generator human-in-the-loop example repo
------------------------------------------------------

Click here to view the full code for this project in our examples repository on GitHub. You can fork it and use it as a starting point for your own project.

[​](https://trigger.dev/docs/guides/example-projects/meme-generator-human-in-the-loop#post-to-slack)

Post to Slack
---------------------------------------------------------------------------------------------------------------------

![Meme Generator with Human-in-the-Loop Approval](https://mintcdn.com/trigger/5SxX7bFjJKRsidSL/images/slack-meme-approval.png?w=2500&fit=max&auto=format&n=5SxX7bFjJKRsidSL&q=85&s=4f9d0357cc10f5c9f5e57203987102c5)

[​](https://trigger.dev/docs/guides/example-projects/meme-generator-human-in-the-loop#relevant-code)

Relevant code
---------------------------------------------------------------------------------------------------------------------

*   **Meme generator task**:
    *   The [memegenerator.ts](https://github.com/triggerdotdev/examples/blob/main/meme-generator-human-in-the-loop/src/trigger/memegenerator.ts)
         task:
        *   Generates two meme variants using DALL-E 3
        *   Uses [batchTriggerAndWait](https://trigger.dev/docs/triggering#yourtask-batchtriggerandwait)
             to generate multiple meme variants simultaneously (this is because you can only generate 1 image at a time with DALL-E 3)
        *   Creates a [waitpoint token](https://trigger.dev/docs/wait-for-token)
            
        *   Sends the generated images with approval buttons to Slack for review
        *   Handles the approval workflow
*   **Approval Endpoint**:
    *   The waitpoint approval handling is in [page.tsx](https://github.com/triggerdotdev/examples/blob/main/meme-generator-human-in-the-loop/src/app/endpoints/%5Bslug%5D/page.tsx)
        , which processes:
        *   User selections from Slack buttons
        *   Waitpoint completion with the chosen meme variant
        *   Success/failure feedback to the approver

[​](https://trigger.dev/docs/guides/example-projects/meme-generator-human-in-the-loop#learn-more)

Learn more
---------------------------------------------------------------------------------------------------------------

To learn more, take a look at the following resources:

*   [Waitpoint tokens](https://trigger.dev/docs/wait-for-token)
     - learn about waitpoint tokens in Trigger.dev and human-in-the-loop flows
*   [OpenAI DALL-E API](https://platform.openai.com/docs/guides/images)
     - learn about the DALL-E image generation API
*   [Next.js Documentation](https://nextjs.org/docs)
     - learn about Next.js features and API
*   [Slack Incoming Webhooks](https://api.slack.com/messaging/webhooks)
     - learn about integrating with Slack

Was this page helpful?

YesNo

[Previous](https://trigger.dev/docs/guides/example-projects/mastra-agents-with-memory)
[OpenAI Agents SDK for Typescript playgroundBuild production-ready AI agents with OpenAI Agents SDK for Typescript and Trigger.dev. Explore 7 examples covering streaming, multi-agent systems, and tool integration.\
\
Next](https://trigger.dev/docs/guides/example-projects/openai-agents-sdk-typescript-playground)

⌘I

Assistant

Responses are generated using AI and may contain mistakes.
