First Dollar
A talent network where creators and builders get paid. I was the lead engineer across the frontend, backend and payments.
Overview
First Dollar is a talent network. A company posts a campaign, a Radar Room, a buildathon or a job, and creators and builders submit their work and get paid in fiat or crypto.
Prize money sits in escrow on Base until someone wins it, and the platform pays the transaction fees. Anything submitted from Twitter, Instagram or TikTok is checked, so you can only enter work you actually made.
It has 200,000+ users and has run 40+ campaigns for partners like Base, Zerion, Avantis, Polymarket Times, ClusterProtocol and HeyElsa AI, along with 6 Radar Rooms and 8 job listings. Between them they brought in 4,500+ submissions from 15,000+ completed profiles, and over 10 million engagements.

My Contributions
I was the lead engineer on First Dollar, working across the frontend, backend and infra. I built the listing flows for campaigns, Radar Rooms and jobs, the company dashboard, the admin panel, builder profiles, the submission flow and the wallet. I also set up card and crypto payments and wrote the escrow contracts on Base.
It runs on Next.js and TypeScript for the app and its APIs, viem and wagmi for onchain calls, and Privy for sign-in, social accounts and embedded wallets. PostgreSQL holds the data, Supabase handles storage and realtime, and Redis does caching and rate limits. The contracts are in Solidity, Stripe takes card payments, Dots sends payouts, and the model calls go to OpenAI and Gemini.

Wallet
Every user gets an embedded wallet the first time they need one, so nobody has to deal with a seed phrase. We sponsor the gas on every transaction, and people can export the wallet whenever they want.
I built balances, QR code deposits, withdrawals for any token, and an activity history that merges onchain transactions with the app’s own records. Companies see how much they’ve spent, and builders see how much they’ve earned.
A withdrawal can never go out twice. Each one is saved to local storage before the wallet prompt opens, so even a browser crash won’t resend it, and a receipt only counts if it shows the exact transfer.
Campaigns
A company starts a campaign by describing it in a few lines. Our AI chat turns that into a full brief (scope, requirements, deliverables and judging criteria), and the company polishes it on an edit page.
There are three prize types. In a contest, the company picks the winners by tier (1st, 2nd, 3rd and so on) or splits the prize equally between a set number of winners. In an engagement pool, winners are decided by how much engagement their submissions get. A custom prize is something the company provides itself, outside the platform. Publishing locks the prize in escrow, and the platform takes 10%.
Companies can also hire verified creators directly through commissions. Each accepted commission opens a private chat with read receipts, and attachments upload straight from the browser to storage.
Submissions and Scoring
Every submission is checked before it counts. The campaign’s rules come first (dates, countries, invite lists and platforms). Then the server looks up the real author of every link instead of trusting the browser, so nobody can win with someone else’s post. Last come the quality checks: whether the work matches the brief, is in the requested format, is original and was written by a person. If a submission fails, the creator is told which check it failed and why.
Companies review every submission in one table. Each row shows the builder, their submission link, the tweet and its engagement, and the table can be filtered to shortlisted, winning or reported entries. Opening a submission shows the work next to the builder’s answers to the campaign’s questions. Companies shortlist by hearting entries, reported submissions come with the reason and a way to act on it, and video entries play in a TikTok-style snap-scroll viewer. To pick winners, they drag the shortlist into order and announce it.
In pool campaigns, the algorithm picks the winners, so people have a reason to game it. Comments, retweets and quotes are weighted by the reputation and age of the accounts behind them. A model reads the replies, because a hundred “great post” comments look like a real conversation to a counter. Daily snapshots catch the overnight spikes that usually mean bought engagement. I kept revising the algorithm as people found new ways around it.
Radar Rooms
Radar Rooms are paid product testing. A company lists its product and testers apply. Their linked wallets have to clear a minimum reputation score based on their history on Base, and then the application is reviewed by hand. Companies can also hand out referral codes in bulk from a spreadsheet.
When a room is published, we automatically create a private Telegram group for it. Testers post their feedback there, and it syncs back to be scored.
The score decides who gets paid. Each message is split into separate points and categorised, and only real feedback and questions earn money. Points are scored on relevance, how actionable and specific they are, and whether there’s evidence. Models review screenshots and screen recordings, near-duplicates are grouped so rewording someone else’s idea earns nothing, and each extra contribution from the same tester is worth less than the last.
Companies get an AI summary of the feedback, and everything can be exported: scores as a spreadsheet, the summary as a PDF, and the data through an API for partners.
Jobs
Job descriptions are drafted by AI from a role title or a posting on another job board. Companies add a salary range in fiat or crypto and their own screening questions, and there’s no platform fee on jobs.
Hiring runs on a kanban board. Each candidate’s card shows the campaigns they’ve completed, so a founder sees what someone has delivered before opening their CV. CVs are checked on upload by their actual file contents, not their name, and scanned for embedded scripts on submit.
Profiles
A profile brings together connected accounts on six platforms, skills with the price the person charges for each, and past projects as proof of work.
It has four tabs. Feed collects the builder’s submitted tweets, Instagram posts and other entries in one stream. Showcase is a bento grid they arrange with drag-and-drop, laid out with a masonry packer. Text, images, videos and links all render as embeds, and the finished grid can be exported and shared on Twitter. Work lists their projects, each with a cover image, title, description and the skills used. Details holds their location, skills and other basics.
Pasted links turn into playable embeds in the background, and their media is re-hosted.
For Instagram verification, the user puts a link to their First Dollar profile in their bio and we check for it, with matching strict enough that a similar username can’t pass. Creators can also apply for a verified badge, which unlocks paid commissions. Every project link they submit is checked for authorship, on the server as well as in the form.
Company Profiles
Companies don’t have a separate login. A company is attached to an existing account with a role change, so there’s one sign-in flow for everyone.
Every company gets a public profile with its banner, connected socials, listing count, and tabs for its campaigns, jobs, Radar Rooms and events.
Companies run their listings from here too. They create them with the AI chat, edit them, and manage submissions: viewing and exporting entries, shortlisting, dealing with reports on flagged work and announcing winners.
The dashboard shows the remaining balance and every listing in one set of tabs. Drafts open in their editor, and live listings open in one page that handles every listing type. Edits to a live listing are held for review with a before-and-after diff, and prize fields lock once a listing is submitted so they can’t drift from the contract.
Admin Panel and Notifications
The admin panel has about 20 tools, including listing approval, the company review queue, reported submissions, creator verification, an insights dashboard and a payout tool that pays a batch of winners in one go.
I also built real-time in-app notifications for the things people are waiting on: a listing approved, a submission shortlisted, winners announced or a new chat message. They show up in a dropdown tray without a refresh, and each one links to the thing it’s about.
They run over Supabase Broadcast. The server checks auth itself before publishing, so Privy tokens never have to be bridged into Supabase.
Contracts and Payments
Each campaign’s prize money goes into its own escrow contract on Base. I wrote the contracts: a factory deploys and funds one per campaign in a single transaction, and the app pays the winners out of it.
Admin powers sit behind a Safe multisig, and a separate signer (a server wallet managed by Privy) can only approve winners and claims. Approvals expire after five minutes, can only be used once and are tied to one contract, and claims are pull-based. The contracts are deployed and verified on Base mainnet.
Companies fund campaigns by card through Stripe or in crypto, and money always goes out the same way it came in. A ledger stores amounts as integers in the smallest unit and checks that the total equals the fee plus the escrow amount, in both the app and the database.




























