← hackathons

Hackathon field report

"Build an Agent" Hackathon

Built Corgi Ads with Zen in three and a half hours. An ad agent you talk to. It studies competitor ads, makes the creative, stages it on Meta and proposes where the money should go. You approve; it acts.

October 7, 2026 · Built Corgi Ads ·Corgi Cafe, San Francisco · repo ↗
HermesAgent37Meta Ads MCPMonidComposioSupabaseVercel

Event photos

Prototype

Corgi Ads preview

Built with Zen at the “Build an Agent” Hackathon at Corgi Cafe in San Francisco on October 7, 2026. Sponsored by Agent37, Monid, OpenAI, Supabase and InstaCloud, with 350 people on the RSVP list. The brief: an agent that takes over repetitive, frustrating work, good enough to sell. We had three and a half hours.

Corgi Cafe has an actual corgi. It supervised our pizza.

The problem I chose

Running Meta ads is four jobs: study what competitors are running, make the creative, launch it, then watch the spend. Corgi Ads does all four and asks before it touches money.

What shipped

  • Monid pulls the top five competitor Instagram ads, and the agent names each one’s hook, format and offer.
  • It writes three variants with different hooks, and a product-reel skill turns product photos into vertical video ads.
  • It picks manual or Advantage+, says why, and stages the ads on Meta through the Meta Ads MCP.
  • A cron every 15 minutes snapshots ad-level insights and proposes a pause or a budget shift. You say “approve”; it applies one change and re-reads the result.

The guardrails: cron runs only propose, one change per approval, and nothing over $20 a day unless you type the number. The agent is the only thing that touches Meta. The dashboard just reads Supabase.

Honest status: the pipeline was wired end to end, but Meta’s development-mode wall stopped the agent from creating the final ad. The campaign ended the day with $0 spent.

Toolset

  • Hermes on Agent37: the agent, its skills and the 15-minute cron.
  • Monid: competitor ad scraping, plus a marketplace of generation models for the reels.
  • Meta Ads MCP and Graph API: campaign setup, insights, pauses and budgets.
  • Composio: Agent37’s managed connector to Meta.
  • Supabase: competitor ads, creatives, snapshots and recommendations, plus public storage for video uploads.
  • FFmpeg: reel assembly and checks.
  • Vercel: the live demo page. Claude Code and Codex did most of the typing.

What was hard

  • Meta’s dev-mode wall. Creating the ad failed with “app is in development mode.” The app in that error was most likely Composio’s, not ours, so switching our own app to Live wouldn’t have fixed it.
  • Meta permissions, one door at a time. The Ads MCP rejects Admin system-user tokens, so the agent needed an Employee role. The ad account came back as an empty list until it was assigned. The old personal ad account couldn’t join the business portfolio until it made a first payment.
  • A headless agent can’t upload files. Drive and Dropbox share links don’t work for Meta, so video went through a Supabase public bucket at 720px to clear Instagram’s 500px minimum.
  • Nothing to show the judges. They can’t open Ads Manager, and with no ad live there was no spend to prove.

What we learned

  • One component touches the money. The agent holds the Meta token; the UI stays dumb.
  • Human approval is the safety layer. Propose, approve one change, re-read after every write.
  • With no pixel on a small test, you get CTR and CPC, not ROAS. Match the cadence to Meta’s 15-minute refresh.
  • A managed connector’s identity is your identity. When it’s in development mode, so are you.