$ANSEM
connecting…

DROP DESK MANUAL

every data source, filter, allocation mode and sender mechanic on the drop desk, with the caveats spelled out.

bullprint endorses no token and touches no funds. not financial advice.

doctrine

four rules the whole desk is built on. one, zero custody: your wallet signs every transaction, bullprint never holds keys or funds. two, fail closed: a filter whose data source cannot be read refuses with a reason, it never silently passes everyone. three, addresses stay server side: previews carry counts and distributions only, addresses leave only through the auth-gated, publicly receipted export. four, honest coverage: every filter states what it can and cannot see, and wallets a filter cannot judge are kept and counted, never silently cut.

the snapshot

the base list is a daily full walk of every $ansem holder. rows are serialized canonically (sorted by address, one address:raw line each) and the sha256 over those exact bytes is published with the receipt, so anyone can re-derive and verify the list. structural wallets (cex, pools, burns, program-owned accounts) are flagged at walk time with reasons and removed by the infra filter at export.

snapshots are retained for a configurable window (currently 30 days) and every retained day feeds the behavior windows below. a new snapshot lands daily and every dependent dataset updates with it automatically.

filters, group by group

structurepure snapshot math, full coverage always. balance bounds, the four supply tiers (whale at or above 0.5% of supply, shark 0.05%, fish 0.005%, shrimp below), balance-rank ranges (rank 1 = largest non-infra wallet), percentile bands (0.5 to 5 = the top 0.5% to 5% band), and share-of-supply bounds.
behavior: sold / accumulated / unchanged over a windowdiffs todays snapshot against one n days back. full coverage of both endpoints: absence from a complete snapshot is knowledge, so new since then and exited are real classes, not guesses. thresholds compare in integer basis points, floats never decide a cut. when history is shorter than the requested window the desk uses the oldest readable snapshot and reports the real span. wallets a truncated endpoint made unjudgeable are kept unchecked and counted, and the export requires you to acknowledge them.
behavior: observed sellersthe live tapes wallet ledger, up to 7 days back. cuts wallets the stream actually saw selling, with a window and a minimum-usd knob. observed coverage only: a wallet the stream never saw is kept, absence is unknown.
behavior: tenuredays present in the retained daily snapshots, up to 100 bits per wallet. present-in-n-of-m-days. wallets predating the ledger read low, never high, and the export requires acknowledging the history bound.
behavior: holding agefirst-seen stamps from holder walks plus a one-sided chain overlay: a wallet whose first on-chain activity is younger than the floor is honestly too new and is cut, but an old wallet age proves nothing about holding age and never stamps a pass. unstamped wallets are kept unchecked and counted.
behavior: dumper shieldfor the 978 wallets the whale directly airdropped: dumped = holds at or below the threshold percent (default 5, yours to set) of what they were sent. a balance test, not a confirmed sale: a wallet that moved its drop elsewhere reads as a dump. non-recipients have no baseline and are never dumpers.
identity: bots / likely organicevery holder is classified from its on-chain signature history (page cap, activity rate, wallet age at drop time). exclude-bots removes flagged wallets and keeps the unclassified; likely-organic-only is the strict inverse, keeping only wallets judged organic. both state their live classified coverage. heuristics, stated as such, never proof of humanity.
identity: bullpen memberswallets claimed by signed-up bullprint users. the rescue toggle guarantees them a place in the list, bypassing every gate including the top-n cut; only infra, the ansem wallet, your explicit exclude list and the allocation dust floor still apply. verified-humans-only inverts it into a hard identity gate for tiny curated drops. both optional.
listspaste-in always-exclude and include-only lists, base58 validated, deduped, capped. an explicit exclusion beats everything, including the bullpen rescue.
cuttop-n by balance, applied last, after every other gate.

the funnel under the target panel shows every active gate in exact application order with its removal count; amber ticks mark gates that kept unjudgeable wallets. counts always reconcile: recipients plus every removal equals the snapshot row count, exactly.

allocation

amounts are computed in integer base units of the drop token, BigInt end to end, and every mode obeys one invariant: allocated sum plus remainder equals the total, exactly. floors are never sprinkled back, the remainder stays with the sender, visibly.

modesequal (same amount each), prorata (by held balance), prorata capped, sqrt (weight = integer square root of balance, whales still lead but the curve flattens), sqrt capped, and tiered (a fixed amount per supply tier, the total derives from the table).
bullpen boostoptional: member wallets carry extra weight (25 = 1.25x), applied to the weights in equal/prorata/sqrt and to the per-tier amounts in tiered. exact basis-point scaling, conservation unchanged.
dust floorrecipients allocated below it are dropped after allocation and their amounts join the remainder. a zero allocation always drops: a 0 transfer is not a drop.

exports and receipts

exports need a signed-in bullpen session with a linked x handle, because every export is a public receipt: who, when, how many wallets, which snapshot, the files sha256, and a summary of the filters, on the ledger at the bottom of the desk before a single byte is served. quota: 10 a day.

csv / csv headerlessaddress,amount. what external multisenders ingest directly.
jsonthe pinned sender contract: raw base-unit amounts, the snapshot sha, the filter set. the in-app sender re-verifies the whole file by hash before it will sign anything.
csv enrichedthe analysis sheet: 25 columns per recipient covering amount, balance, share, rank, percentile, tier, first seen, tenure days, window delta and behavior class, dumper flag, bot class, verified and member flags, bulls held, first observed buy, airdrop baseline, observed 7d buy and sell usd, and the exclusion reason. a blank cell means unknown, values are never fabricated. for spreadsheets, not senders.

the sender

the in-app sender re-runs your exact export, re-verifies its sha over the received bytes, derives and checks every recipient token account, then per batch: fresh blockhash, build, simulate first (a revert stops everything before anything is signed), sign in your wallet, broadcast, poll to confirmed. any failure stops the run loudly.

double-send protectionevery batchs signature is extracted from the signed bytes and durably journaled BEFORE broadcast, with its blockhash expiry. on resume, every journaled signature is reconciled against the chain: landed batches are skipped, failed ones resend safely, and a signature that is merely not visible yet is never resent until its blockhash has provably expired. if the journal cannot be persisted, nothing broadcasts.
more railsa cross-tab lock stops two tabs from sending the same list, batch plans are frozen so a resume can never re-pack and misalign indices, destructive resets require a second confirming click that states what is forgotten, and an unfinished run for a different export blocks new full sends until you explicitly forget it. test send caps a run to the first 3 recipients so the flow is proven with tiny stakes first.
costeach new recipient token account costs a one-time rent (about 0.00204 sol) that stays with that account; fees are shown as a calm-to-congested band. the sending wallet pays.
compressed sends (airship)for six-figure lists, the desk has a dedicated airship lane: helius airship sends the tokens COMPRESSED (zk compression), no per-recipient account rent, so the full herd costs well under 1 sol instead of hundreds. the lane is first-class: a "csv for airship" export format emits the exact one-column file their importer parses (sha receipt and public ledger entry like every export), the cost panel computes the compressed price from airship's own published constants (15 addresses per tx, base + compression fees, ported and attributed), the panel derives your equal per-wallet figure, and a post-drop spot check reads sampled recipients' compressed balances back off the photon api. two honest caveats: every address receives the same amount, so weighted allocations stay on the in-app sender, and recipients hold the bag as compressed tokens until they decompress. constants and parser verified against their source 2026-07-24.

what updates when

the holder snapshot lands daily and re-checks every 15 minutes. behavior windows deepen with every new snapshot. the presence ledger updates at each snapshot persist. the classifier re-scans twice hourly, stamping only newly appeared wallets, and rewrites its fast-read mirror whenever anything changed. the observed-sellers ledger accrues live from the tape. every preview computes fresh against these stores, and every coverage badge shows the live reach at that moment.