Inspiration

Token Comic started in July 2024 as a Web3 comic platform. It worked — you could publish a comic and mint a collectible from it as an NFT on Arbitrum. It was also, in practice, unusable by the people I built it for. To touch it at all you needed MetaMask installed, ETH for gas, and the willingness to approve blockchain transactions you didn't understand. I had built a tool for creators that only crypto users could open.

The artists I actually wanted to serve are in Latin America. Enormously talented, no publisher, no path to the U.S. market, no realistic way to monetize. Every time I showed them the platform, the conversation died in the same place: "what's MetaMask?"

Underneath that was a second barrier I hadn't solved either. Comics demand a rare stack of skills — writing, character design, panel composition, keeping a character's face consistent across thirty images, lettering, layout. A person with a great story and no drawing ability never publishes, no matter how good the platform is.

So the question going into this hackathon wasn't "what should I build?" It was: what if AI agents did the creative work that requires drawing skill, and the platform absorbed 100% of the blockchain complexity — so a creator only ever sees a chat, their comics, their balance, and a withdraw button?

That meant rebuilding what Token Comic was. Not polishing it — replacing its entire access model and giving it a production engine it never had.

What it does

Token Comic is a live business at tokencomic.us where AI agents on Google Cloud turn anyone into a paid comic creator.

A creator signs in with Google — no wallet, no seed phrase — and talks to an AI agent that walks them through six stages:

  1. Idea — it interviews them: series, chapter, genre, tone, premise
  2. Characters — it proposes editable character sheets with names, descriptions and physical traits
  3. Script — it writes the chapter scene by scene
  4. Images — the creator picks layout and art style; the agent illustrates every panel
  5. Review — the creator regenerates any panel they don't like
  6. Complete — the agent proposes a cover and identifies a collectible object from inside the story

That last part is worth being precise about. We don't mint the comic, the chapter, or the series. We mint an artifact from within the story — an object the agent identifies while writing the script, with its own name, narrative role, rarity tier and limited supply. Readers collect the thing from the story.

One button publishes it: art to Google Cloud Storage, metadata to IPFS, and the collectible minted as an ERC-1155 NFT on Arbitrum — signed and gas-paid by the platform. No wallet popup. Ever.

The original canvas editor survives as Manual Mode, now for artists who already draw. Same publishing, minting and monetization rails. AI is available there but never required.

The money loop is closed and running with real money:

  • In: creators buy TINKR credits ($2 / $10 / $25 / $50) with a card or PSE through Bold. No exchange, no KYC, no crypto.
  • Spend: 2 TINKR per session, 3 per standard image, 5 per high-quality one. Pricing is dynamic — \( (\text{provider cost} \times (1 + \text{margin})) / \text{TINKR price} \) — so margin holds as model prices shift.
  • Out: creators earn from collectibles and donations, swap TINKR to USDC through a live Uniswap V4 pool, and withdraw to any external wallet.

How we built it

What existed before this hackathon: a MetaMask-gated dApp on a test network, a comic feed, a smart contract, and a domain. No AI. No normal signup. No card payments. No custodial wallets. No token of our own.

What I built during it — 347 commits between May 19 and August 16:

1. The AI agent (the product)

agentOrchestrator.ts is a six-stage state machine, each stage with its own system prompt. The model signals readiness by emitting an [[ADVANCE:stage]] token; the API strips it from the visible reply and advances the session.

Nothing in my code decides when a stage is finished. No button, no rule. Whether the premise is developed enough, whether the characters are defined enough, whether the script is ready to illustrate — that call belongs to the model, and it's making it in production with real users.

2. The Web2 layer (the pivot)

This is what turned a dApp into a business:

  • Google and email signup
  • Custodial wallets generated and encrypted at registration
  • Card and PSE payments via Bold, with automatic on-chain credit delivery
  • Platform-signed minting with subsidized gas

Custody is the whole thing. Every Web3 platform that insists users hold their own keys filters out exactly the people it claims to empower. Taking on custody is harder to build and heavier to be responsible for — and it's the only reason someone who's never heard the word "gas" can mint an NFT and withdraw dollars.

3. Two AI agents that move money

The agent that charges. Rendering a chapter takes minutes, so it runs on a Cloud Run worker that claims jobs atomically via claimNextPendingJob(), generates panel by panel against Vertex AI, uploads each to Cloud Storage — and settles the on-chain TINKR charge with no user session open. Agent-to-service payment, central to the business: without that charge there's no revenue.

The agent that pays. A creator switches on the payout agent once and saves an external wallet. After that it watches the balance on its own and settles TINKR to USDC through our Uniswap V4 pool — no login, no click, no signature. Verified on Arbitrum mainnet:

The agent also declines. Below its threshold it returns decision: "skipped", reason: "below_threshold" and touches nothing. Every rule is a real boundary: threshold, untouchable reserve, per-run cap, 3% max slippage, external transfer cap, blocked destinations. An agent that transacts on its own is only trustworthy if its limits actually bite.

4. Four Google Cloud products, all integrated during the hackathon

Product Role Date
Vertex AI Gemini 2.5 Flash reasons; Nano Banana & Pro illustrate Jun 3
Cloud Run The async worker that generates and charges Jun 9
Cloud SQL (PG16) Every transactional record Jun 23
Cloud Storage All generated artwork

Stack: Next.js 14 App Router, TypeScript strict, Drizzle ORM, Fabric.js, Zustand, ethers.js v6, next-intl (ES/EN), Upstash Redis. 716 tests, coverage thresholds in CI, Pino logging, Sentry with PII disabled, eight written incident runbooks.

Challenges we ran into

A double-charge bug — the one that mattered most

A premium generation failed, but the upfront charge had already been taken. The retry path let the creator switch quality tiers and charged them again. Roughly 85 TINKR of a real person's money vanished into a failure path.

The root cause was structural: start-images charged upfront and set billingPaid=true, but when the job left the pending state on failure, the retry guard stopped catching it. The fix makes any retry on an already-paid job free and locked to the tier that was paid for. Verified in production by watching a real balance step cleanly: 214 → 181 → 178 → 169 → 166.

When your product touches money, "the request failed" and "the charge was reversed" are two entirely different states, and only one of them is automatic.

Character consistency, and a lesson about model priors

If your protagonist's face changes between panel two and panel five, it isn't a comic — it's six unrelated pictures. Character sheets are locked at stage 2 and re-injected into every downstream panel prompt.

The most instructive failure came from a real test. A creator built a chapter with the Powerpuff Girls and asked for characters who were black, short and heavy-set. Every output came back thin and conventionally pretty. The cause was franchise prior: the model's canonical knowledge of a known IP overriding the user's explicit description. The fix was a directive stating the user's character sheet outranks any canonical design. Retested with original characters — a dark-skinned Malik, a heavy-set Beto — and both held across the whole chapter.

Fixing the wrong file, twice

A creator reported her balance frozen while she spent. First fix: add no-store. Still frozen. Second fix: retry polling after each charge, since an on-chain read right after mining returns stale data. Still frozen. Both fixes were correct and both were useless — the balance in the studio top bar was rendered by MiniBalance.tsx, a component I had never opened, fetching exactly once on mount.

Infrastructure that broke under its own design

The delivery cron runs every minute; on Neon's free tier that alone consumed the entire 100 compute-hour monthly quota and started returning 402s. I migrated production to Cloud SQL PostgreSQL 16 behind a DB_PROVIDER switch — every repository untouched, only the driver changed.

Being one person

Every architectural decision, every bug, every QA round, every deploy and every creator conversation is the same person. AI agents aren't a feature I bolted on for a contest — they're how a solo founder ships at this scope.

Accomplishments that we're proud of

An AI that controls its own workflow in production. Not a chatbot wrapper — a model that decides when its own work is done, running live with paying users.

Two agents that move real money in both directions. One charges for compute with no session open; the other settles a creator's payout to an external wallet we don't control, in 10 seconds, with no human present. Both verifiable on-chain.

A closed economic loop with real money. A credit card becomes AI production becomes an NFT becomes USDC in a stranger's wallet. Every step executed with real funds.

A pivot that actually opened the door. Going from "you need MetaMask" to "sign in with your email" changed the addressable market from people who already speak crypto to anyone with an email address.

Engineering discipline at one-person scale. 716 tests, coverage thresholds in CI, eight incident runbooks, four cloud migrations, and eight documented QA rounds with real creators — including finding and fixing a bug that double-charged someone's real money.

Being funded entirely by winning. No investors. $4,000 in prize money from three previous developer competitions, plus my own time.

What we learned

The barrier was never the technology — it was who the technology let in. I spent two years with a working Web3 product that the people I built it for couldn't open. Removing MetaMask did more for this business than any feature I have ever shipped.

Real users find what no test suite will. 716 automated tests never found the double charge. A creator making a real comic with her own money found it in an hour.

Unit economics only reveal themselves with real money. Buying at two price points let me derive our payment processor's actual fee structure: COP 960 fixed plus 5.10%. That fixed component punishes small tickets — our $5 entry pack surrenders 11.1% to processing while the $50 pack surrenders 5.7%. Our most approachable price is our worst-margin one, and the single biggest improvement available is moving a repeat creator up one tier. You don't learn that from a spreadsheet.

Beta friction is evidence, not embarrassment. This product has known rough edges and every one is written down with a root cause and a priority.

Where this honestly stands. Revenue during the hackathon is $47.00 — and $31 of that is my own testing. Four arms-length paying customers: three from a hands-on workshop where everyone who tried it paid the same day, and the creator who tested through eight QA rounds and then bought credits with her own money. $0 spent on marketing. 17 creators registered, 78 AI agent sessions, 70 NFTs minted, 3 autonomous agent payouts. What's validated is the machine. What's unproven is the market — and 17 users is not a market.

What's next for Token Comic

  • Cloud Logging + Monitoring as a fifth Google Cloud product, giving an exportable audit trail of every agent decision.
  • Human vs. AI provenance labels — a visible seal separating AI-assisted work from hand-drawn work, so human artists are marked as human, not diluted.
  • A marketing agent that helps creators promote and sell what they publish.
  • Creators. The engine works. The economics work. The money comes out. What's left is running that workshop in more rooms.

Built With

Share this project:

Updates