The columns of the deal seed record, what each one holds and what it means
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.
The seeding story itself (who is asked first, what a yes does) is on the Deal seeding page.
| Column | Type | What it holds |
|---|---|---|
id | text | The seed's own id. It is the primary key. |
brand_account_id | text | The brand account the seed is for. |
talent_account_id | text | The talent account the seed is for. |
scenario_key | text | The scenario the seed fits. |
state | text | Where 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. |
source | text | How 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_text | text | The brand's brief, when the seed came from one. Empty otherwise. |
proposal | json | The pitch: what the talent does, the deal mechanic, and a one-line summary. |
price_minor | integer | The suggested price in the smallest currency unit (for USD, cents). Empty when no price is set yet. |
price_source | text | Where the price came from: the brief's budget, the talent's minimum, the pricing engine, the team (when edited in admin), or empty. |
currency | text | The currency of the price. Defaults to USD. |
match | integer | Overall match score from 0 to 100, from the matching step at seed time. |
brand_wants | integer | How much the brand wants this talent, from 0 to 100. |
talent_wants | integer | How much the talent wants this brand, from 0 to 100. |
confidence | integer | How sure the matching is of the match, from 0 to 100. |
reasons | json (list of text) | The short reasons behind the match. A seed repeats these; it does not invent its own. |
explore | integer (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_id | text | The matching run that produced this seed, so the numbers can be traced back. |
automation | text | The automation level in force when the seed was made: manual, semi, or auto. Defaults to semi. |
talent_token | text | The secret link the talent uses to answer. Unique per seed. |
brand_token | text | The secret link the brand uses to answer. Unique per seed. |
talent_code | text | A short code the talent can reply with by SMS (for example "YES" plus the code). |
brand_code | text | The short code the brand can reply with by SMS. |
approved_by | text | Who approved the seed for asking: the team member's name, or auto when the automation approved it. |
approved_at | timestamp | When the seed was approved. |
asked_talent_at | timestamp | When the talent was asked. |
talent_answered_at | timestamp | When the talent answered. |
asked_brand_at | timestamp | When the brand was asked. |
brand_answered_at | timestamp | When the brand answered. |
declined_by | text | Who said no: the talent, the brand, or the team. Empty if nobody has said no. |
decline_reason | text | The reason code for the no, from the list on the Decline reasons page. |
decline_note | text | The words the person wrote with the no, if any. |
snooze_until | timestamp | For "not now": the pair is not seeded again before this time. |
deal_id | text | The deal that opened when both sides said yes. Empty until then. |
judge_verdict | text | The outside judges' worst verdict on this seed: send, fix, or drop. Empty until judged. A drop is never sent automatically. |
judge_score | integer | The lower of the two outside judges' scores, from 1 to 10. Empty until judged. |
judged_at | timestamp | When the outside judges last scored the seed. |
events | json (list) | Every step in order, oldest first. Each entry records the time, the state reached, who did it, and an optional note. |