Deal Seed Table

The columns of the deal seed record, what each one holds and what it means

Overview

Every deal seed Zooly proposes is one row in the deal_seed table of the database package (@zooly/app-db). The row holds the pair of people, the suggested deal, the match numbers, the answer links, and the history of every step. The table is read and written only through the database package's access functions, never directly by other packages.

This page lists the columns that matter to a person reading a seed. The creation and last-update timestamps are left out.

Columns

ColumnTypeWhat it holds
idtextThe seed's own id. It is the primary key.
brand_account_idtextThe brand account the seed is for.
talent_account_idtextThe talent account the seed is for.
scenario_keytextThe scenario the seed fits.
statetextWhere the seed is now: proposed, approved by team, asked talent, talent yes, asked brand, brand yes, or introduced. Side exits are rejected by team, talent no, brand no, not now, and expired.
sourcetextHow the pair was found. brief means from a brand's brief. category means from the brand's own category, with no brief. Defaults to category.
brief_texttextThe brand's brief, when the seed came from one. Empty otherwise.
proposaljsonThe pitch: what the talent does, the deal mechanic, and a one-line summary.
price_minorintegerThe suggested price in the smallest currency unit (for USD, cents). Empty when no price is set yet.
price_sourcetextWhere the price came from: the brief's budget, the talent's minimum, the pricing engine, the team (when edited in admin), or empty.
currencytextThe currency of the price. Defaults to USD.
matchintegerOverall match score from 0 to 100, from the matching step at seed time.
brand_wantsintegerHow much the brand wants this talent, from 0 to 100.
talent_wantsintegerHow much the talent wants this brand, from 0 to 100.
confidenceintegerHow sure the matching is of the match, from 0 to 100.
reasonsjson (list of text)The short reasons behind the match. A seed repeats these; it does not invent its own.
exploreinteger (0 or 1)1 when this seed was picked as an exploratory pick rather than a strong match. Exploratory seeds are never auto-approved.
match_run_idtextThe matching run that produced this seed, so the numbers can be traced back.
automationtextThe automation level in force when the seed was made: manual, semi, or auto. Defaults to semi.
talent_tokentextThe secret link the talent uses to answer. Unique per seed.
brand_tokentextThe secret link the brand uses to answer. Unique per seed.
talent_codetextA short code the talent can reply with by SMS (for example "YES" plus the code).
brand_codetextThe short code the brand can reply with by SMS.
approved_bytextWho approved the seed for asking: the team member's name, or auto when the automation approved it.
approved_attimestampWhen the seed was approved.
asked_talent_attimestampWhen the talent was asked.
talent_answered_attimestampWhen the talent answered.
asked_brand_attimestampWhen the brand was asked.
brand_answered_attimestampWhen the brand answered.
declined_bytextWho said no: the talent, the brand, or the team. Empty if nobody has said no.
decline_reasontextThe reason code for the no, from the list on the Decline reasons page.
decline_notetextThe words the person wrote with the no, if any.
snooze_untiltimestampFor "not now": the pair is not seeded again before this time.
deal_idtextThe deal that opened when both sides said yes. Empty until then.
judge_verdicttextThe outside judges' worst verdict on this seed: send, fix, or drop. Empty until judged. A drop is never sent automatically.
judge_scoreintegerThe lower of the two outside judges' scores, from 1 to 10. Empty until judged.
judged_attimestampWhen the outside judges last scored the seed.
eventsjson (list)Every step in order, oldest first. Each entry records the time, the state reached, who did it, and an optional note.