JiwaAI
Blog
โ†All posts
product-design
business-model
technical-architecture
transparency

Quota at Generation, Not Publish: Why We Charge When You Create, Not When You Post

Jiwa AI Teamยท

The Problem with Deducting Quota at Publish Time

When we first launched Jiwa, quota worked like most content platforms: you bought credits, generated drafts for free, and only lost a credit when you actually published. It seemed fair on paper. In practice, it created a mismatch between what you paid for and what you got.

Here's what happened. A business owner would generate 12 posts, review them carefully, reject 4 that didn't match their brand, approve 8, and schedule them across a month. They'd use 12 credits worth of AI generation but only "spend" 8 credits at publish time. The value they received โ€” brand analysis, calendar planning, image generation, copy refinement across all 12 posts โ€” happened upfront. But the billing happened later, and only for the ones they kept.

This created three problems. First, it was hard to predict your actual quota cost. Rejection rates varied by brand and season, so you couldn't reliably forecast how many generations got you how many published posts. Second, it made our economics unstable โ€” we had no predictable correlation between credits purchased and compute costs incurred. Third, it felt asymmetric: a draft you rejected still consumed hours of AI work, but we acted like it was free.

The fairest model is the one that matches reality: you pay for the work at the moment the work happens.

What Changed Technically

Moving quota from publish-time to generation-time required rethinking three parts of the system.

Gate check. The generation endpoint (/api/business/[id]/generate-posts) now checks upfront: does this business have enough credits to generate the requested posts? If not, we reject the request immediately โ€” before any AI models run, before any images generate, before any compute is spent.

If you request 6 posts but have 3 credits remaining, we cap the generation to 3 and notify you. You get what your quota covers, and the rest waits until you top up.

Atomic deduction. Quota now decrements inside a Prisma transaction alongside post creation. Both operations succeed together or roll back together โ€” you can't end up with posts in the database but no quota deducted, or quota drained without posts created. This makes the system consistent under failure.

Removed publish-time checks. The /api/posts/[id]/publish and /api/posts/[id]/publish-tiktok routes no longer check or decrement quota. Once you've generated posts and paid for them, publishing is free. Your scheduled cron jobs also no longer skip posts due to quota โ€” if posts exist and are approved, they publish.

WhatsApp on cron skip. One remaining silent failure was the cron scheduler skipping posts when no Instagram account was connected. We now send a WhatsApp notification immediately when that happens, so you know why the post didn't go out and can reconnect your account to resume.

What You Experience Now

Before: Generate 12 posts, reject 4, publish 8. Your quota only drops by 8 โ€” but you consumed 12 posts worth of AI generation.

After: Generate 12 posts, your quota drops by 12 immediately. All 12 drafts are in your account. Review them, edit them, reject them, delete them โ€” the credit cost is settled upfront. Publishing is the final step and doesn't cost anything extra.

The dashboard "Generate" button is disabled when your credits hit zero and shows a "Purchase a content pack โ†’" link instead. You'll never click "generate," watch the spinner, and land on an error screen. The gate is clear and immediate.

Why This Matters for Your Business

Predictable. You know your credit spend the moment you hit generate โ€” no variance based on what you publish or reject later.

Transparent. The dashboard credit balance is exact. 10 credits means you can generate 10 posts. Not "up to 10 if you publish all of them."

Aligned. We earn proportional to the AI work we do. You pay proportional to the value you receive โ€” brand analysis, image generation, copy writing โ€” the moment you receive it. This lets us improve generation quality without worrying about published-post conversion rates.


Quota-at-generation isn't a constraint. It's the pricing model that makes sense when the value is created at generation time, not delivery time.