Synaplan
Open-source AI platform for companies: self-hosted AI agents, GDPR-compliant chatbot widget, RAG knowledge base, WhatsApp and Outlook AI, MCP, multi-model routing. Docker, Kubernetes or hosted in Germ
Paid bounties for The ZAO, judged in public, with notes for everyone who enters.
BusinessPython · HTMLGitHub @bettercallzaalOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
BCZ POIDH bounty ops: rounds, judging pages, brand kits, leaderboard. Source of truth for every BCZ-issued POIDH bounty.
Translation pending
Loading the full README. The saved excerpt is shown below.
poidhz - a public client for poidh bounties
Live: poidhz.com - every open poidh bounty with a stated deadline, on a calendar, with countdowns, filters, and a subscribable .ics. Refreshes every 6 hours. poidh has an on-chain deadline field that almost nobody sets, so this reads the date out of each bounty's description instead; of the bounties scanned on 2026-09-07, exactly one had the native field populated.Read the full README ↗Live: poidhz.com - every open poidh bounty with a stated deadline, on a calendar, with countdowns, filters, and a subscribable .ics. Refreshes every 6 hours. poidh has an on-chain deadline field that almost nobody sets, so this reads the date out of each bounty's description instead; of the bounties scanned on 2026-09-07, exactly one had the native field populated.
poidhz started as BetterCallZaal / The ZAO's own bounty-ops repo (rounds, judging pages, the canonical bounty bar) and grew the tooling any issuer or hunter can use. Both halves live here. MIT, fork it.
Nothing below needs permission, an account, or a fork. Pick the row that is you.
| You are | Start with | You do not need |
|---|---|---|
| Hunting bounties - looking for work worth doing | poidhz.com for what closes when, and /dashboard for prize size and whether anyone has claimed yet | anything in this repo |
| Issuing a bounty and want people to actually enter | /best-practices, then docs/how-to-draft-next-bounty.md. docs/PROMISE-AUDIT.md is the honest version - five of our own rounds, and what we promised and failed to deliver | to run our rounds or use our brand |
| Building something on poidh | The open data below. Every file the site renders is a public endpoint | to scrape the site |
| Running your own bounty programme | docs/PARTNER-GUIDE.md - point org.config.json at your wallet and every script here runs for your org | to change any code |
The rounds, playbook and brand kits further down are BetterCallZaal's own use of this tooling. They are here as a worked example, not as the product. Skip them unless a real example of a bounty that actually paid out is useful to you.
poidh has no public deadline index and no submitter leaderboard. These are those, rebuilt
from poidh's own API every 6 hours and served with Access-Control-Allow-Origin: * so you
can fetch them straight from a browser. Verified live 2026-09-07.
| Endpoint | What is in it |
|---|---|
/data/bounty-dashboard.json | Every open bounty platform-wide: prize in native token and USD, parsed deadline, claim status, chain, and a guessed task type. This is what both pages render. |
/data/poidh-deadlines.ics | The same deadlines as a calendar feed. Subscribe in any calendar app. |
/leaderboard | Submitters by count of bounties entered, in Empire Builder's [{address, score}] shape. |
/data/poidh-deadlines-global.json | The raw deadline scan, with the free text each date was parsed out of so you can check the parse. |
/data/health.json | What this programme currently owes: promises made in bounty text and not yet delivered, time-bound claims that have gone unverified, and drafts held back because a round is not closed out. Written by the 6h cron. |
The one thing worth knowing before you build on it: poidh has an on-chain deadline
field and almost nobody sets it. Of the 90 open bounties on 2026-09-07, 77 stated no
machine-readable deadline at all and only one had the native field populated. Every date
in these files was parsed out of free text in the description, and
deadline_raw_text carries the exact string it came from so you can judge the parse
yourself rather than trusting it.
Bounties also outlive their own deadlines - a passed date does not close a poidh bounty, so
deadline_status is past or upcoming and is not the same question as whether the
bounty is still open. status in the dashboard answers that one.
Domain note.
poidhz.comis the production domain as of 2026-09-06.zpoidh.vercel.appstill resolves and 307s to it, so older links keep working.www.poidhz.comdoes not resolve yet - use the apex.
| URL | What |
|---|---|
| / | Deadline calendar + agenda + every open bounty without a date |
| /dashboard | Platform-wide live dashboard: timers, claim status, ease / difficulty / money per bounty |
| /data/poidh-deadlines.ics | Subscribe in any calendar app |
| /data/bounty-dashboard.json | The data behind both pages, CORS open |
| /best-practices | The canonical bounty bar: how to write a bounty people can actually win |
| /about | Our own rounds, winners, brand kits |
| /leaderboard | Submitter leaderboard feed (Empire Builder format) |
BetterCallZaal's own five rounds. Kept public because a bounty that actually paid out is more useful than a template - including R4, which we broke, and the audit of what every round promised and did not deliver.
| Round | Bounty | Ask | Prize | Result |
|---|---|---|---|---|
| R1 | 1151 | BCZ YapZ Ep 17 clip-up | 0.0105 ETH | paid, @cryptfi-mariano |
| R2 | 1166 | Best 60s POIDH ad from Ep 19 | 0.0105 ETH | paid, @joeyofdeus |
| R3 | 1180 | ZABAL Gamez ad, any format | 0.025 ETH | paid, @femmie (8 claims) |
| R4 | 1249 | ZABAL Gamez July open pot | canceled at closeout | 15 builders credited in $ZABAL, see CLOSEOUT.md |
| R5 | 1330 | Best 60s clip from the WaveWarZ Twitch stream | 0.0125 ETH seed, 0.0238 final | paid, claim 7795 (9 claims). Winner announcement still owed |
| R6 | not cast | Recap my NYC trip in 60 seconds - one pot plus seven paid channel slots | 0.0125 ETH (open pot) + up to $35 $ZABAL | DRAFT, closes Wed Sep 30. See rounds/r6/ |
| R7 | not cast | WaveWarZ clip round 2 - the edit, not the moment | 0.0125 ETH (open pot) | DRAFT, queued behind R6. See rounds/r7/ |
Never-cast drafts (Unlock Protocol clip bounty, solo variant, ZABAL Gamez bug-fix bounty) live in rounds/drafts/.
python3 scripts/build-bounty-dashboard.py # all open bounties + USD + type guess -> data/bounty-dashboard.json
python3 scripts/scan-poidh-deadlines.py # free-text deadline parse -> data/poidh-deadlines-global.json
python3 scripts/build-bounty-calendar.py # our rounds -> data/bounty-calendar.json
python3 scripts/deadlines-to-ics.py # -> data/poidh-deadlines.ics
python3 scripts/query-bounty.py --bounty 1180 --chain 8453 # any bounty, any chain, resolves the winner
python3 scripts/precast-check.py --round 6 --prize 0.0128 # can this round cast? wallet, deadline, config, placeholders
python3 scripts/postclose-check.py --bounty 1330 --round 5 # did we do what the bounty text promised after it closed?
Every script takes --selftest and runs it offline, so you can check the logic without
hitting the network or having our data.
Python 3.9+ standard library only, no dependencies. org.config.json holds the issuer wallets and bounty ids; point it at your own to run this for a different org.
poidhz/
├── README.md
├── index.html # the deadline calendar (front page) # this file
├── docs/
│ ├── bounty-best-practices.html # canonical bar (use for every bounty)
│ ├── bounty-calendar.html # rendered deadline calendar
│ ├── create-bounty.html # standalone bounty-creation tool - any EIP-6963
│ │ # browser wallet, no Farcaster app required (used for R6)
│ ├── poidh-hub.html # the live hub UI source
│ ├── how-to-draft-next-bounty.md
│ ├── erc20-bounty-fork.md # notes on an ERC20-reward PoidhV2 fork explored, not shipped
│ ├── qr-bid-reward-design.md # design-only, gated on-chain spend
│ ├── unlock-fireside-collectible.md
│ └── RECAP.md # resume artifact + history log
├── rounds/
│ ├── _template/ # starter files for the NEXT round
│ ├── r1/ # Hannah Ep 17 clip-up (bounty 1151, Apr 2026) - closed, paid
│ ├── r2/ # Best 60s POIDH ad from Ep 19 (bounty 1166, May 2026) - closed, paid
│ ├── r3/ # Best ad for ZABAL Gamez (bounty 1180) - closed, paid, cast drafted
│ ├── r4/ # ZABAL Gamez open pot (bounty 1249) - closed, see CLOSEOUT.md
│ ├── r5/ # WaveWarZ Twitch clip bounty (bounty 1330) - closed, paid,
│ │ # winner announcement still owed (see r5/winner-announce.md)
│ ├── r6/ # NYC trip recap, 60s - DRAFT. Blocked on the Drive link,
│ │ # the trip write-up, and funding the issuer wallet
│ ├── r7/ # WaveWarZ clip round 2 - DRAFT, queued behind R6
│ └── drafts/ # never-cast drafts: unlock-cofund, unlock-solo, zabal-bugfix
├── assets/
│ └── brand-kits/
│ └── zabal-games/ # full CC-BY kit (used by R3+)
├── api/
│ └── claim-meta.mjs # claim metadata endpoint
├── pipeline/ # Fable eval-runner - AI-assisted submission scoring
│ ├── eval-runner.mjs # per-submission scoring (distribution/craft/substance/spec), Claude-called
│ ├── run-eval.md # manual-first runbook
│ └── *-template.md # rubric / scorecard / cohort-synthesis templates
├── data/
│ ├── leaderboard.json # the EB-pulled feed (`[{address, score}]`)
│ ├── claims.json # rich page data
│ ├── audit.json # audit trail
│ ├── bounty-calendar.json # parsed deadlines, output of build-bounty-calendar.py
│ ├── poidh-deadlines-global.json # platform-wide deadline scan (not just BCZ's own bounties)
│ └── zabal-preview.json # EB snapshot per submitter
└── scripts/
├── refresh-poidh-leaderboard.py # canonical leaderboard refresh (tRPC + web3.bio)
├── scan-poidh-deadlines.py # parses deadlines from bounty description free text
├── build-bounty-calendar.py # turns scanned deadlines into a calendar view
├── deadlines-to-ics.py # subscribable .ics calendar export
├── build-bounty-dashboard.py # platform-wide live dashboard: timers, submission status,
│ # estimated ease/difficulty/money per bounty (docs/bounty-dashboard.html)
├── process-judging-videos.py # Stage 1: download + duration-check + scaffold judging.json
├── render-judging-html.py # Stage 2: judging.json -> shareable HTML scorecard
├── precast-check.py # is this round castable? wallet balance, deadline window,
│ # config wiring, placeholders, validator, data freshness
├── validate-bounty-description.py # Stage 3: check a draft description against the canonical bar
├── prepare-winner-announcement.py # Stage 4: scaffold the winner-announce cast templates
└── run-judging-round.py # Stage 5: orchestrates stages 1-4, pauses at two human gates
Chains together everything from "submissions closed" to "winner cast drafted," with two hard human gates that are never automated: rubric scoring / winner selection, and posting the actual announcement + any on-chain call. Run the whole thing with:
python3 scripts/run-judging-round.py --bounty <id> --round <N> [--skip-stage 1] [--skip-stage 3]
Or run each stage standalone:
process-judging-videos.py --bounty <id> --round <N> - downloads submitted videos, checks duration against spec, scaffolds judging.jsonrender-judging-html.py --round <N> - turns judging.json into a shareable HTML scorecardvalidate-bounty-description.py --description <path> - checks a draft bounty description against the canonical bar before castingprepare-winner-announcement.py --round <N> - scaffolds the winner-announce cast templates (Farcaster/X/short) into rounds/rN/cast-templates/, leaving the "why it won" reasoning for a human to fillAll idempotent, safe to re-run. No script in this pipeline posts anything, signs anything, or touches chain state.
0xbB48f19B0494Ff7C1fE5Dc2032aeEE14312f0b07) - score = count of BCZ POIDH bounties they have entered.Use docs/bounty-best-practices.html as the canonical bar. Required sections in order:
+ checkboxesFloor rules MUST include:
@bettercallzaal on X/zabal, /zao, etc.)Use the existing rounds as reference:
0x7234c36a71ec237c2ae7698e8916e0735001e9af (must be EOA, not Smart Wallet - POIDH reverts on contract callers)wethemmedia (continuity with R1+R2+R3)/zabal (or relevant channel) + /poidh + /zao with the bounty URL as embed/bounties channel) - reaches 200-400 Farcaster-native builders who won't see poidh.xyz or a GitHub issue on their own. POIDH handles escrow, Bountycaster handles discovery. See rounds/drafts/zabal-bugfix/bountycaster-cast.md for the format (ZAOOS doc 1584 has the full mechanics). This was flagged for R7 back in July and never actually posted because R7 itself was never cast - don't repeat that gap.ffprobe on every video to confirm duration vs spec/poidh-round{N}-judging.html within 48hsubmitClaimForVote(bountyId, claimId) → 48h contributor vote → resolveVote(bountyId) → winner withdrawsNo random background music or ambient audio under dialog in any BCZ POIDH bounty submission. If you want non-silence, use the official campaign promo MP3 (e.g.
assets/brand-kits/zabal-games/zabal-gamez-promo.mp3), original source-episode audio, or one clear instrumental that does not compete with spoken dialog. Layered melodic music over spoken dialog = automatic floor fail.
Why: R2 had submissions where Kenny's voice was buried under cinematic ambient pads - the editor's craft was real but the message disappeared. POIDH ads are watched at 50% volume on Farcaster + X with subtitles on.
This rule lives in every round's description starting from R3.
Every BCZ POIDH submitter lands on slot 8 of $ZABAL Empire (POIDH Submitters leaderboard). Each wallet's score = the count of BCZ POIDH bounties they have submitted to. Empire Builder distributes $ZABAL proportional to score every refresh cycle.
Token Boosters + Reputation Boosters intentionally OFF (cleanest mechanic, no Talent Protocol or token-holder confounders).
Update via scripts/refresh-poidh-leaderboard.py - reads POIDH tRPC, aggregates per-wallet counts, writes the strict EB feed at data/leaderboard.json, served at poidhz.com/leaderboard.
The cut-over has not happened. Empire Builder's "POIDH Submitters" leaderboard still has its api_endpoint pointed at bettercallzaal.com/poidh-leaderboard.json, a pre-poidhz URL that now redirects away. Measured 2026-08-08 and unchanged since: EB shows 16 entries where this repo generates 22, so 6 real submitters are missing from EB entirely - including femmie, the R3 winner, whose wallet is absent from EB's feed. Three more wallets have understated scores. No code change here can fix it; EB's own admin dashboard needs the api_endpoint corrected by someone with access. scripts/check-eb-sync.py exists to detect exactly this drift.
| Round | Bounty | Episode / Source | Prize | Winner | State | Doc |
|---|---|---|---|---|---|---|
| R1 | 1151 | BCZ YapZ Ep 17 (Hannah / Farm Drop clip-up) | 0.0105 ETH | @cryptfi-mariano (claim 6368) | closed, paid | rounds/r1/ |
| R2 | 1166 | BCZ YapZ Ep 19 (Best 60s POIDH ad w/ Kenny) | 0.0105 ETH | @joeyofdeus / Monksage (claim 6645) | closed, paid | rounds/r2/ |
| R3 | 1180 | ZABAL Gamez ad (any format) | 0.025 ETH | @femmie (claim 6749) | closed, paid, confirmed on-chain via direct bounties()/getClaimsByBountyId() eth_call - cast templates drafted, not yet posted | rounds/r3/ |
| R4 | 1249 | ZABAL Gamez July open build pot | $ZABAL leaderboard credit (originally an ETH split, bounty was accidentally canceled mid-close) | 15 qualifying builders | CLOSED 2026-08-05 - see CLOSEOUT.md | rounds/r4/ |
| R5 | 1330 | WaveWarZ Twitch clip bounty (twitch.tv/wavewarzofficial, clip for WaveWarZ's own socials) |
Leaderboard refresh last run 2026-08-05 - data/leaderboard.json / claims.json /
audit.json include R1-R4 (22 submitters via on-chain POIDH claims, plus R4's separate
15-wallet $ZABAL leaderboard credit tracked in rounds/r4/r4-builder-leaderboard.csv).
Each campaign gets a CC-BY brand kit under assets/brand-kits/<campaign>/. The kit holds the canonical logo, palette, typography spec, voice rules, approved/banned phrases, glossary, and an official 50-second promo audio file editors can use freely.
Current campaigns:
assets/brand-kits/zabal-games/ - used by R3, which closed 2026-06-14, and by any future ZABAL Gamez bounties. Said "R3 (active)" until 2026-09-09, nearly three months after it closed.Future campaigns get their own subfolder when launched.
Each kit mirrors a canonical source repo (e.g. github.com/ZAODEVZ/zabalgames for ZABAL Gamez). Sync target: weekly during the active campaign. If a kit and its canonical source disagree, the source wins.
These live in the ZAO OS V1 research library, which is internal. Paths are given in full
because a doc number alone is not an address - 218 numbers in that library resolve to
more than one document. Four of the nine below are among them: 759, 769, 992 and 743 each
name two different docs in two different topic folders. Resolve with
zao-research-health --resolve <n> if you ever have only a number; never rebuild a path
with find | head -1, which is how a lane read a POIDH bounty doc under an Empire Builder
title tonight.
| Path | What |
|---|---|
business/768-poidh-bounty-best-practices-zabalgames-r3 | canonical bounty best practices distillation |
business/769-zaodevz-zabalgames-repo-state | the ZAODEVZ/zabalgames repo audit |
business/786-zabal-gamez-brand-kit-rebuild | the ZABAL Gamez brand kit rebuild audit |
business/759-poidh-history-origin-to-2026 | POIDH history: Kenny, lifetime stats, cohort patterns |
business/631-poidh-zabal-sentinel-convergence | POIDH x $ZABAL x Sentinel convergence map |
community/625-poidh-zao-bounty-playbook | POIDH x ZAO bounty playbook, 18 templates |
agents/992-live-clipper-agent-creator-ops | clipper to POIDH pipeline concept; R5 was the manual v1 test |
business/2202-poidh-zao-collab-current-state-brand-alignment | current-state + brand-alignment synthesis, Aug 2026 |
business/2203-poidh-zao-full-lore-history | full POIDH x ZAO lore, Kenny's 2023 founding onward |
business/2466-poidhz-platform-honest-audit | this platform measured against the live poidh board, Sep 2026 |
org.config.jsondocs/outreach/This repo: MIT.
Brand kits inside assets/brand-kits/: CC-BY 4.0 (per each kit's own README). Remix freely - keep the campaign name + canonical URL visible in your final piece.
Maintained by Zaal / BetterCallZaal. POIDH bounties are BCZ-issued + Zaal-funded. Issuer wallet: BCZ Treasury EOA 0x7234c36a71ec237c2ae7698e8916e0735001e9af on Base.
| 0.0125 ETH seed, pot grew to 0.0238 |
claim 7795, @wimpydwi's clip, paid to 0x3f07d412...70ec9 (wallet resolves to no linked handle) |
closed, paid, isAccepted confirmed on-chain 2026-09-05. 9 claims from 7 entrants. Winner never announced on @wavewarz, which the bounty text promised |
| rounds/r5/ |
| R6 | not cast | Recap my NYC trip in 60 seconds. One 0.0125 ETH pot, plus seven channel slots paying $5 in $ZABAL each to clips we actually post | 0.0125 ETH seed, fund 0.0128, plus up to $35 $ZABAL | - | DRAFT. Closes Wed 2026-09-30. Blocked on the Drive link, the trip write-up, and funding | rounds/r6/ |
| R7 | not cast | WaveWarZ clip round 2 - the edit, not the moment. Binding deliverable spec, handle required in claim, retainer holders excluded | 0.0125 ETH seed, fund 0.0128 | - | DRAFT, queued behind R6. Deadline placeholdered, re-measure the Twitch archive before casting | rounds/r7/ |
| drafts | not cast | Unlock Protocol clip bounty (co-fund + solo variants), ZABAL Gamez bug-fix bounty | TBD | - | parked, see folder READMEs | rounds/drafts/ |