<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Reply Zero on Producthunt daily</title>
        <link>https://producthunt.programnotes.cn/en/tags/reply-zero/</link>
        <description>Recent content in Reply Zero on Producthunt daily</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>en</language>
        <lastBuildDate>Tue, 22 Apr 2025 15:28:29 +0800</lastBuildDate><atom:link href="https://producthunt.programnotes.cn/en/tags/reply-zero/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>inbox-zero</title>
        <link>https://producthunt.programnotes.cn/en/p/inbox-zero/</link>
        <pubDate>Tue, 22 Apr 2025 15:28:29 +0800</pubDate>
        
        <guid>https://producthunt.programnotes.cn/en/p/inbox-zero/</guid>
        <description>&lt;img src="https://images.unsplash.com/photo-1600110099493-db8e356ed121?ixid=M3w0NjAwMjJ8MHwxfHJhbmRvbXx8fHx8fHx8fDE3NDUzMDY4ODB8&amp;ixlib=rb-4.0.3" alt="Featured image of post inbox-zero" /&gt;&lt;h1 id=&#34;elie222inbox-zero&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/elie222/inbox-zero&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;elie222/inbox-zero&lt;/a&gt;
&lt;/h1&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.getinboxzero.com&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://producthunt.programnotes.cn/apps/web/app/opengraph-image.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p align=&#34;center&#34;&gt;
  &lt;a href=&#34;https://www.getinboxzero.com&#34;&gt;
    &lt;h1 align=&#34;center&#34;&gt;Inbox Zero - Your AI Email Assistant&lt;/h1&gt;
  &lt;/a&gt;
  &lt;p align=&#34;center&#34;&gt;
    Open source email app to reach inbox zero fast.
    &lt;br /&gt;
    &lt;a href=&#34;https://www.getinboxzero.com&#34;&gt;Website&lt;/a&gt;
    ·
    &lt;a href=&#34;https://www.getinboxzero.com/discord&#34;&gt;Discord&lt;/a&gt;
    ·
    &lt;a href=&#34;https://github.com/elie222/inbox-zero/issues&#34;&gt;Issues&lt;/a&gt;
  &lt;/p&gt;
&lt;/p&gt;
&lt;h2 id=&#34;about&#34;&gt;About
&lt;/h2&gt;&lt;p&gt;There are two parts to Inbox Zero:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;An AI email assistant that helps you spend less time on email.&lt;/li&gt;
&lt;li&gt;Open source AI email client.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;If you&amp;rsquo;re looking to contribue to the project, the email client is the best place to do this.&lt;/p&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2Felie222%2Finbox-zero&amp;amp;env=NEXTAUTH_SECRET,GOOGLE_CLIENT_ID,GOOGLE_CLIENT_SECRET,GOOGLE_ENCRYPT_SECRET,GOOGLE_ENCRYPT_SALT,UPSTASH_REDIS_URL,UPSTASH_REDIS_TOKEN,GOOGLE_PUBSUB_TOPIC_NAME,DATABASE_URL&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://vercel.com/button&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Deploy with Vercel&#34;
	
	
&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Thanks to Vercel for sponsoring Inbox Zero in support of open-source software.&lt;/p&gt;
&lt;h2 id=&#34;features&#34;&gt;Features
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;AI Personal Assistant:&lt;/strong&gt; Manages your email for you based on a plain text prompt file. It can take any action a human assistant can take on your behalf (Draft reply, Label, Archive, Reply, Forward, Mark Spam, and even call a webhook).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Reply Zero:&lt;/strong&gt; Track emails that need your reply and those awaiting responses.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Smart Categories:&lt;/strong&gt; Categorize everyone that&amp;rsquo;s ever emailed you.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Bulk Unsubscriber:&lt;/strong&gt; Quickly unsubscribe from emails you never read in one-click.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cold Email Blocker:&lt;/strong&gt; Automatically block cold emails.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Email Analytics:&lt;/strong&gt; Track your email activity with daily, weekly, and monthly stats.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Learn more in our &lt;a class=&#34;link&#34; href=&#34;https://docs.getinboxzero.com&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;docs&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;feature-screenshots&#34;&gt;Feature Screenshots
&lt;/h2&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th style=&#34;text-align: center&#34;&gt;&lt;img src=&#34;https://producthunt.programnotes.cn/.github/screenshots/email-assistant.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;AI Assistant&#34;
	
	
&gt;&lt;/th&gt;
          &lt;th style=&#34;text-align: center&#34;&gt;&lt;img src=&#34;https://producthunt.programnotes.cn/.github/screenshots/reply-zero.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Reply Zero&#34;
	
	
&gt;&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;&lt;em&gt;AI Assistant&lt;/em&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;&lt;em&gt;Reply Zero&lt;/em&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;&lt;img src=&#34;https://producthunt.programnotes.cn/.github/screenshots/email-client.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Gmail Client&#34;
	
	
&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;&lt;img src=&#34;https://producthunt.programnotes.cn/.github/screenshots/bulk-unsubscriber.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Bulk Unsubscriber&#34;
	
	
&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;&lt;em&gt;Gmail client&lt;/em&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;&lt;em&gt;Bulk Unsubscriber&lt;/em&gt;&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;demo-video&#34;&gt;Demo Video
&lt;/h2&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;http://www.youtube.com/watch?v=hfvKvTHBjG0&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://producthunt.programnotes.cn/video-thumbnail.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Inbox Zero demo&#34;
	
	
&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;built-with&#34;&gt;Built with
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://nextjs.org/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Next.js&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://tailwindcss.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Tailwind CSS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://ui.shadcn.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;shadcn/ui&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.prisma.io/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Prisma&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://upstash.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Upstash&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://turbo.build/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Turborepo&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;star-history&#34;&gt;Star History
&lt;/h2&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.star-history.com/#elie222/inbox-zero&amp;amp;Date&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://api.star-history.com/svg?repos=elie222/inbox-zero&amp;amp;type=Date&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Star History Chart&#34;
	
	
&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;feature-requests&#34;&gt;Feature Requests
&lt;/h2&gt;&lt;p&gt;To request a feature open a &lt;a class=&#34;link&#34; href=&#34;https://github.com/elie222/inbox-zero/issues&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;GitHub issue&lt;/a&gt;, or join our &lt;a class=&#34;link&#34; href=&#34;https://www.getinboxzero.com/discord&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Discord&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;getting-started-for-developers&#34;&gt;Getting Started for Developers
&lt;/h2&gt;&lt;p&gt;We offer a hosted version of Inbox Zero at &lt;a class=&#34;link&#34; href=&#34;https://getinboxzero.com&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://getinboxzero.com&lt;/a&gt;. To self-host follow the steps below.&lt;/p&gt;
&lt;h3 id=&#34;contributing-to-the-project&#34;&gt;Contributing to the project
&lt;/h3&gt;&lt;p&gt;You can view open tasks in our &lt;a class=&#34;link&#34; href=&#34;https://github.com/elie222/inbox-zero/issues&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;GitHub Issues&lt;/a&gt;.
Join our &lt;a class=&#34;link&#34; href=&#34;https://www.getinboxzero.com/discord&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Discord&lt;/a&gt; to discuss tasks and check what&amp;rsquo;s being worked on.&lt;/p&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;./ARCHITECTURE.md&#34; &gt;ARCHITECTURE.md&lt;/a&gt; explains the architecture of the project (LLM generated).&lt;/p&gt;
&lt;h3 id=&#34;requirements&#34;&gt;Requirements
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://nodejs.org/en/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Node.js&lt;/a&gt; &amp;gt;= 18.0.0&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://pnpm.io/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;pnpm&lt;/a&gt; &amp;gt;= 8.6.12&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.docker.com/products/docker-desktop/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Docker desktop&lt;/a&gt; (optional)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;setup&#34;&gt;Setup
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://youtu.be/hVQENQ4WT2Y&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Here&amp;rsquo;s a video&lt;/a&gt; on how to set up the project. It covers the same steps mentioned in this document. But goes into greater detail on setting up the external services.&lt;/p&gt;
&lt;p&gt;The external services that are required are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://console.cloud.google.com/apis/credentials&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Google OAuth&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://console.cloud.google.com/cloudpubsub/topic/list&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Google PubSub&lt;/a&gt; - see set up instructions below&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You also need to set an LLM, but you can use a local one too:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://console.anthropic.com/settings/keys&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Anthropic&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://platform.openai.com/api-keys&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;OpenAI&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;AWS Bedrock Anthropic&lt;/li&gt;
&lt;li&gt;Google Gemini&lt;/li&gt;
&lt;li&gt;OpenRouter (any model)&lt;/li&gt;
&lt;li&gt;Groq (Llama 3.3 70B)&lt;/li&gt;
&lt;li&gt;Ollama (local)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;We use Postgres for the database.
For Redis, you can use &lt;a class=&#34;link&#34; href=&#34;https://upstash.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Upstash Redis&lt;/a&gt; or set up your own Redis instance.&lt;/p&gt;
&lt;p&gt;You can run Postgres &amp;amp; Redis locally using &lt;code&gt;docker-compose&lt;/code&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker-compose up -d &lt;span class=&#34;c1&#34;&gt;# -d will run the services in the background&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Create your own &lt;code&gt;.env&lt;/code&gt; file:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cp apps/web/.env.example apps/web/.env
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; apps/web
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pnpm install
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;For self-hosting, you may also need to copy the &lt;code&gt;.env&lt;/code&gt; file to both the root directory AND the apps/web directory (PRs welcome to improve this):&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cp apps/web/.env .env
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Set the environment variables in the newly created &lt;code&gt;.env&lt;/code&gt;. You can see a list of required variables in: &lt;code&gt;apps/web/env.ts&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;The required environment variables:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;NEXTAUTH_SECRET&lt;/code&gt; &amp;ndash; can be any random string (try using &lt;code&gt;openssl rand -hex 32&lt;/code&gt; for a quick secure random string)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;GOOGLE_CLIENT_ID&lt;/code&gt; &amp;ndash; Google OAuth client ID. More info &lt;a class=&#34;link&#34; href=&#34;https://next-auth.js.org/providers/google&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;here&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;GOOGLE_CLIENT_SECRET&lt;/code&gt; &amp;ndash; Google OAuth client secret. More info &lt;a class=&#34;link&#34; href=&#34;https://next-auth.js.org/providers/google&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;here&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;GOOGLE_ENCRYPT_SECRET&lt;/code&gt; &amp;ndash; Secret key for encrypting OAuth tokens (try using &lt;code&gt;openssl rand -hex 32&lt;/code&gt; for a secure key)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;GOOGLE_ENCRYPT_SALT&lt;/code&gt; &amp;ndash; Salt for encrypting OAuth tokens (try using &lt;code&gt;openssl rand -hex 16&lt;/code&gt; for a secure salt)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;UPSTASH_REDIS_URL&lt;/code&gt; &amp;ndash; Redis URL from Upstash. (can be empty if you are using Docker Compose)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;UPSTASH_REDIS_TOKEN&lt;/code&gt; &amp;ndash; Redis token from Upstash. (or specify your own random string if you are using Docker Compose)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;When using Vercel with Fluid Compute turned off, you should set &lt;code&gt;MAX_DURATION=300&lt;/code&gt; or lower. See Vercel limits for different plans &lt;a class=&#34;link&#34; href=&#34;https://vercel.com/docs/functions/configuring-functions/duration#duration-limits&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;To run the migrations:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pnpm prisma migrate dev
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;To run the app locally for development (slower):&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pnpm run dev
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Or from the project root:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;turbo dev
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;To build and run the app locally in production mode (faster):&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pnpm run build
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pnpm start
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Open &lt;a class=&#34;link&#34; href=&#34;http://localhost:3000&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;http://localhost:3000&lt;/a&gt; to view the app in your browser.&lt;/p&gt;
&lt;p&gt;To upgrade yourself, make yourself an admin in the &lt;code&gt;.env&lt;/code&gt;: &lt;code&gt;ADMINS=hello@gmail.com&lt;/code&gt;
Then upgrade yourself at: &lt;a class=&#34;link&#34; href=&#34;http://localhost:3000/admin&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;http://localhost:3000/admin&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;supported-llms&#34;&gt;Supported LLMs
&lt;/h3&gt;&lt;p&gt;For the LLM, you can use Anthropic, OpenAI, or Anthropic on AWS Bedrock. You can also use Ollama by setting the following enviroment variables:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;DEFAULT_LLM_PROVIDER&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;ollama
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;OLLAMA_BASE_URL&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;http://localhost:11434/api
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;NEXT_PUBLIC_OLLAMA_MODEL&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;gemma3  &lt;span class=&#34;c1&#34;&gt;# or whatever available model you want to use&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Note: If you need to access Ollama hosted locally and the application is running on Docker setup, you can use &lt;code&gt;http://host.docker.internal:11434/api&lt;/code&gt; as the base URL. You might also need to set &lt;code&gt;OLLAMA_HOST&lt;/code&gt; to &lt;code&gt;0.0.0.0&lt;/code&gt; in the Ollama configuration file.&lt;/p&gt;
&lt;p&gt;You can select the model you wish to use in the app on the &lt;code&gt;/settings&lt;/code&gt; page of the app.&lt;/p&gt;
&lt;h3 id=&#34;setting-up-google-oauth-and-gmail-api&#34;&gt;Setting up Google OAuth and Gmail API
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Create a Project in Google Cloud Console&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Go to &lt;a class=&#34;link&#34; href=&#34;https://console.cloud.google.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Google Cloud Console&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Create a new project&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Enable Required APIs&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Enable the &lt;a class=&#34;link&#34; href=&#34;https://console.developers.google.com/apis/api/gmail.googleapis.com/overview&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Gmail API&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Enable the &lt;a class=&#34;link&#34; href=&#34;https://console.developers.google.com/apis/api/people.googleapis.com/overview&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;People API&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Configure the OAuth Consent Screen&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Go to &amp;lsquo;APIs &amp;amp; Services&amp;rsquo; &amp;gt; &amp;lsquo;OAuth consent screen&amp;rsquo;&lt;/li&gt;
&lt;li&gt;Choose &amp;lsquo;External&amp;rsquo; user type (or &amp;lsquo;Internal&amp;rsquo; if you have Google Workspace)&lt;/li&gt;
&lt;li&gt;Fill in required app information&lt;/li&gt;
&lt;li&gt;Add the following scopes:
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-plaintext&#34; data-lang=&#34;plaintext&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;https://www.googleapis.com/auth/userinfo.profile
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;https://www.googleapis.com/auth/userinfo.email
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;https://www.googleapis.com/auth/gmail.modify
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;https://www.googleapis.com/auth/gmail.settings.basic
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;https://www.googleapis.com/auth/contacts
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;Add yourself as a test user under &amp;lsquo;Test users&amp;rsquo; section&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Create OAuth 2.0 Credentials&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Go to &amp;lsquo;APIs &amp;amp; Services&amp;rsquo; &amp;gt; &amp;lsquo;Credentials&amp;rsquo;&lt;/li&gt;
&lt;li&gt;Click &amp;lsquo;Create Credentials&amp;rsquo; &amp;gt; &amp;lsquo;OAuth client ID&amp;rsquo;&lt;/li&gt;
&lt;li&gt;Select &amp;lsquo;Web application&amp;rsquo; type&lt;/li&gt;
&lt;li&gt;Add authorized JavaScript origins:
&lt;ul&gt;
&lt;li&gt;Development: &lt;code&gt;http://localhost:3000&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Production: &lt;code&gt;https://your-production-url.com&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Add authorized redirect URIs:
&lt;ul&gt;
&lt;li&gt;Development:
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;http://localhost:3000/api/auth/callback/google
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;Production:
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;https://your-production-url.com/api/auth/callback/google
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Configure Environment Variables&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Add to your &lt;code&gt;.env&lt;/code&gt; file:
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;GOOGLE_CLIENT_ID=your_client_id
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;GOOGLE_CLIENT_SECRET=your_client_secret
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;set-up-push-notifications-via-google-pubsub-to-handle-emails-in-real-time&#34;&gt;Set up push notifications via Google PubSub to handle emails in real time
&lt;/h3&gt;&lt;p&gt;Follow instructions &lt;a class=&#34;link&#34; href=&#34;https://developers.google.com/gmail/api/guides/push&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://developers.google.com/gmail/api/guides/push#create_a_topic&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Create a topic&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://developers.google.com/gmail/api/guides/push#create_a_subscription&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Create a subscription&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://developers.google.com/gmail/api/guides/push#grant_publish_rights_on_your_topic&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Grant publish rights on your topic&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Set env var &lt;code&gt;GOOGLE_PUBSUB_TOPIC_NAME&lt;/code&gt;.
When creating the subscription select Push and the url should look something like: &lt;code&gt;https://www.getinboxzero.com/api/google/webhook?token=TOKEN&lt;/code&gt; or &lt;code&gt;https://abc.ngrok-free.app/api/google/webhook?token=TOKEN&lt;/code&gt; where the domain is your domain. Set &lt;code&gt;GOOGLE_PUBSUB_VERIFICATION_TOKEN&lt;/code&gt; in your &lt;code&gt;.env&lt;/code&gt; file to be the value of &lt;code&gt;TOKEN&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;To run in development ngrok can be helpful:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ngrok http &lt;span class=&#34;m&#34;&gt;3000&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# or with an ngrok domain to keep your endpoint stable (set `XYZ`):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ngrok http --domain&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;XYZ.ngrok-free.app &lt;span class=&#34;m&#34;&gt;3000&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;And then update the webhook endpoint in the &lt;a class=&#34;link&#34; href=&#34;https://console.cloud.google.com/cloudpubsub/subscription/list&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Google PubSub subscriptions dashboard&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;To start watching emails visit: &lt;code&gt;/api/google/watch/all&lt;/code&gt;&lt;/p&gt;
&lt;h3 id=&#34;watching-for-email-updates&#34;&gt;Watching for email updates
&lt;/h3&gt;&lt;p&gt;Set a cron job to run these:
The Google watch is necessary. Others are optional.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;s2&#34;&gt;&amp;#34;crons&amp;#34;&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nt&#34;&gt;&amp;#34;path&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;/api/google/watch/all&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nt&#34;&gt;&amp;#34;schedule&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;0 1 * * *&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nt&#34;&gt;&amp;#34;path&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;/api/resend/summary/all&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nt&#34;&gt;&amp;#34;schedule&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;0 16 * * 1&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nt&#34;&gt;&amp;#34;path&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;/api/reply-tracker/disable-unused-auto-draft&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nt&#34;&gt;&amp;#34;schedule&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;0 3 * * *&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://vercel.com/guides/how-to-setup-cron-jobs-on-vercel#alternative-cron-providers&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Here&lt;/a&gt; are some easy ways to run cron jobs. Upstash is a free, easy option. I could never get the Vercel &lt;code&gt;vercel.json&lt;/code&gt;. Open to PRs if you find a fix for that.&lt;/p&gt;
</description>
        </item>
        
    </channel>
</rss>
