← Pitch Slate
API
Tokens

Run Pitch Slate from your own code

Both metered lanes are available over HTTP and each returns one JSON object. The division of labour: the page answers and routes the three gates, checks every award item, re-ranks the four menus, works out each judge's interest and the conflict matrix, writes the route as a sentence, does the block arithmetic and checks the rubric - all free, in slatekit.js. The run writes the plan or the call with the judge briefing; the page then holds the reply to its own board (slatereply.js). The menus and the observed-versus-claimed split are the source skill's own construction; every minute and weight is the organizer's own. Not legal, securities or investment advice.

Base URL and the response shape

Every endpoint lives under https://api.skillsafe.ai/v1/app-api, and every response has one shape:

{ "ok": true,  "data":  { ... } }
{ "ok": false, "error": { "code": "...", "message": "..." } }

The token is minted for this app (the guest call takes {"slug":"pitch-slate"}), so no slug header is needed afterwards. Send it as Authorization: Bearer YOUR_TOKEN. The run body is the input object, sent bare.

StatusCodeMeaning
400validation_errorThe body is not a JSON object, or a required key (task, event, judges, awards, applicants, facts) is missing.
401unauthorizedNo token, or a stale one. Mint a guest token or sign in again.
402insufficient_creditsThe balance is under min_credits. Price with /estimate first.
403forbiddenA guest token tried to run: both lanes are metered and need a personal sign-in.
404not_foundUnknown job id.
429rate_limitedBack off and retry.
5xxserver_errorTransient. Retry with the same Idempotency-Key so a retry never double-bills.

The task field comes first

Two lanes, chosen by task:

A missing or unknown task is answered as plan. Both lanes send the same six fields; for the call, the event field also carries the lines the page fills from a plan (the conflict rule and each judge's handling). The applicants field may be an empty string.

The input

FieldRequiredWhat
taskyesplan or call. If it is missing or neither, do plan and set "task": "plan".
eventyesthe interview, Q1 to Q10: what is already published, the pitching population as a stage of company, the block and the organizer's own measured minutes, the judges in summary, capital, sponsorship, recording, the edition and its dates, the effort ceiling with who reads applications and who receives challenges; for the call, the lines carried from the plan.
judgesyesone row per judge: name or role, kind, fund or employer, declared holdings and portfolio sectors, competing positions, declared in writing.
awardsyesone row per award item: item, kind, amount or detail, delivering party, committed in writing, delivery date.
applicantsyesone row per applicant: company, sector, stage, one line; may be empty.
factsyesthe page's verdict, the disclaimer, the three gates with statuses and routes, every award item with its announce call, the four menus with their picks, moves, deletions and notes, the conflict rule with what it covers and does not, each judge's interest and handling, the conflict matrix, the published route, the block arithmetic, the rubric, the tie-break ladder, the challenge window, the pass threshold and every finding tagged [fix], [check] or [info].
retry_notenooptional; if present, your previous reply was unusable - follow it.

The rules the model applies

House rules

The replies

plan

  1. summary - one sentence, at most 40 words: the verdict, the most important open item, and the next step.
  2. disclaimer - one sentence: not legal, securities or investment advice; capital and contest law go to counsel; each judge's obligations go to their own institution.
  3. verdict - the page's verdict, exactly: ready to publish the call, fix first or blocked by a gate.
  4. gates - the page's three gates in order: gate and status (each the page's exactly) and route (one sentence: who it goes to and before what moment).
  5. awards - one object per award item in the page's order: item and party (the page's exactly; "none" where none), written (yes or no, the page's), announce (yes or no, the page's).
  6. conflict - pick (the page's conflict rule exactly), covers and does_not_cover (one sentence each), per_judge (one object per judge in the page's order: judge and interest exactly as the page has them, handling in one sentence).
  7. funnel - pick (the page's exactly), route_sentence (the page's published route, copied), reason (one sentence naming the interview answer that moved it, or that nothing did).
  8. format - pick (the page's exactly), arithmetic (the page's block arithmetic with its numbers, the organizer's minutes labelled self-set), reason (one sentence).
  9. rubric - one object per page dimension in order: dimension, weight (a number) and kind (observed or claimed), each the page's; how_judged (short: the block, or the application field a named reviewer checks).
  10. announcement - challenge_to (the page's contact exactly, or "to be named"), window (one sentence: until when, before which delivery, and what can change).
  11. caveats - at most 6 short strings: the [fix] findings first in the page's order, then the most important [check] findings. [] when there are none.
{
  "task": "plan",
  "summary": "one sentence",
  "disclaimer": "one sentence",
  "verdict": "fix first",
  "gates": [ { "gate": "the page's gate", "status": "the page's status", "route": "one sentence" } ],
  "awards": [ { "item": "the page's item", "party": "the page's party", "written": "yes", "announce": "yes" } ],
  "conflict": { "pick": "the page's pick", "covers": "one sentence", "does_not_cover": "one sentence", "per_judge": [ { "judge": "the page's judge", "interest": "the page's interest", "handling": "one sentence" } ] },
  "funnel": { "pick": "the page's pick", "route_sentence": "the page's route", "reason": "one sentence" },
  "format": { "pick": "the page's pick", "arithmetic": "the page's arithmetic (self-set)", "reason": "one sentence" },
  "rubric": [ { "dimension": "the page's dimension", "weight": 25, "kind": "observed", "how_judged": "short" } ],
  "announcement": { "challenge_to": "the page's contact", "window": "one sentence" },
  "caveats": [ "a caveat" ]
}

The page holds it to its own board: the verdict, the three gates in order with their statuses, every award item with its party, written status and announce call, the conflict, funnel and format picks (never a deleted rung), each judge's interest line, every date of the route, the arithmetic's per-company minutes, live window and companies that fit labelled self-set, every rubric weight and kind, the challenge contact and date, a disclaimer routing to counsel and the judge's own institution, and no number, exemption or gender the input does not hold.

call

  1. call.title - a short title naming the contest.
  2. call.for_whom - one sentence naming the population in the page's stage words.
  3. call.route - the published route to the stage as one sentence, carrying every date the page's route carries.
  4. call.submit - 4 to 9 short strings: what to submit, field by field, each one a criterion reads; say that reviewers sign no NDA and who reads the material.
  5. call.criteria - one object per page dimension in order: criterion and weight, exactly as the page has them. Add which are judged on stage and which are checked against the application in call.submit or the briefing, not here.
  6. call.awards - one string per award item the page lets the call announce, naming the item and the party who delivers it; an item the page cannot announce is left out, or labelled "not yet committed".
  7. call.recording - one sentence: the recording, streaming and press posture, or that the room is not recorded.
  8. call.conflict_statement - one or two sentences: who judges and reviews, that interests are collected in writing and how they are handled under the page's rule.
  9. call.dates - short strings, each a key date from the input only.
  10. call.contact - the page's contact exactly, or "to be named".
  11. briefing.rule - the page's conflict rule exactly.
  12. briefing.declare - 3 short strings: what each judge declares in writing before seeing an application.
  13. briefing.contact_protocol - the protocol in one or two sentences when the page picked it; otherwise "None - not the page's pick".
  14. briefing.scoring - 2 to 5 short strings: score observed dimensions from the block and claimed ones only against the application; score after each company; the first company against the scale.
  15. briefing.contest_path - one sentence: who receives a challenge, the window, and what can change.
  16. disclaimer - one sentence, as for the plan.
  17. note - one sentence: when the page's verdict is not ready to publish the call, say what to fix first; otherwise that the call is ready to publish.
{
  "task": "call",
  "call": { "title": "short", "for_whom": "one sentence", "route": "one sentence", "submit": [ "a field" ], "criteria": [ { "criterion": "the page's dimension", "weight": 25 } ], "awards": [ "an item - its party" ], "recording": "one sentence", "conflict_statement": "one or two sentences", "dates": [ "a date from the input" ], "contact": "the page's contact" },
  "briefing": { "rule": "the page's pick", "declare": [ "one thing to declare" ], "contact_protocol": "one or two sentences", "scoring": [ "one instruction" ], "contest_path": "one sentence" },
  "disclaimer": "one sentence",
  "note": "one sentence"
}

The page requires the stage words in who it is for, every date of the route, the criteria and weights exactly, every award item the page lets it announce (anything else left out or labelled not yet committed), the recording posture, a conflict statement that says interests are disclosed when the rule does, the page's contact and rule, three declarations, the protocol when it is the pick, scoring that separates observed from claimed, and a note that says what to fix first when the verdict is not ready.

Worked examples - every lane, every sample

These are the page's three free samples (fictional contests, funds, companies and people). Each input is exactly what the page sends; each reply is the saved reply the sample replays, shipped unedited; the last line is the page's own check.

Brindlemoor DevConf Demo Day (600 people, 45 minutes, 8 companies) - plan

Verdict: fix first; 3 judges; 2 of 3 award items announceable; pass threshold 5 of 6; 1 fix-level findings.

Input:

{
 "task": "plan",
 "event": "Contest: Brindlemoor DevConf Demo Day; organizer: Brindlemoor DevConf\nAlready published (Q1): the contest is in the published programme, with no route stated - \"Demo Day: eight early-stage devtools companies pitch on the main stage on day two.\"\nPitching population (Q2): first customers; decided by the programme committee; written where an applicant can read it: yes\nThe block (Q3): starts 2027-04-08 15:00; 45 minutes; fixed: yes; companies expected: 8\nMeasured on the organizer's own stage (self-set): pitch 3 min, questions 1 min, walk-on and walk-off 1 min, judge deliberation 3 min, announcement buffer 2 min, finalists not set\nJudges (Q4): 3 judges, 1 active investor; a judge or audience invited because of who would be pitching: no\nCapital (Q6): no capital purpose stated; counsel has seen the structure: no\nSponsorship (Q7): sponsored yes; a signed say: no say; a fee, ticket or package as a condition of pitching: no\nRecording (Q8): streamed; applicants told before applying: yes\nEdition (Q9): one-off; call published 2027-01-11; applications close 2027-02-15; slate notified 2027-02-26; challenge window closes 2027-04-12; applications deleted by 2029-04-30\nEffort ceiling (Q10): 40 organizer hours; reads applications: Lena Osei (programme chair) and Dana Wrenfield; chases third parties: the sponsorship lead; data obligations: Brindlemoor DevConf data protection lead; contact and challenges: Lena Osei, programme chair\nAlready true: named referrers who would nominate no; an accelerator relationship predating the event no; slate half-filled by invitation before the call no; a fund partner on the organizing team no",
 "judges": "J1. Dana Wrenfield | active investor | Seedquill Capital | seed-stage devtools; portfolio: Keyward (secrets management) | Pipeworks (continuous integration) | declared in writing: yes\nJ2. Priya Raman, VP Engineering | operator | Hollis Bank | none declared | none declared | declared in writing: yes\nJ3. Startup programme lead | sponsor representative | Cumulix Cloud | none declared | none declared | declared in writing: yes",
 "awards": "A1. Equity-free cash prize | equity-free cash | 10,000 EUR paid to the company | Brindlemoor DevConf (organizer) | in writing: yes | delivery: 2027-04-30\nA2. Cloud credits | committed slot | 25,000 USD in credits | Cumulix Cloud | in writing: no | delivery: 2027-05-31\nA3. Introductions to three seed funds | committed introductions | each fund has agreed to take the meeting | Brindlemoor DevConf (organizer) | in writing: yes | delivery: 2027-04-15",
 "applicants": "C1. Gridlock CI | continuous integration | first customers | flaky-test quarantine for CI pipelines\nC2. Vaultline | secrets management | first customers | secret rotation for small platform teams\nC3. Tracefold | observability | first customers | trace sampling that keeps the slow requests\nC4. Schemawise | database tooling | first customers | schema migrations reviewed like code\nC5. Lintlark | code review | pre-product | review bots tuned on a team's own history",
 "facts": "Verdict: fix first (0 open gates, 1 fix-level finding)\nDisclaimer: Not legal, securities or investment advice: any capital, convertible instrument or equity award goes to counsel before it is announced, contest-law classification goes to counsel whatever the award, and each judge's own institutional disclosure obligations go to that judge's own institution, in writing.\nGates, in order:\n- Q6 - capital, a convertible instrument or equity - status: does not fire - route: No award carries capital, a convertible instrument or equity. Contest-law classification still goes to counsel whatever the award.\n- Q7 - a sponsor's say in who pitches or who wins - status: does not fire - route: The contest is sponsored, and no signed agreement gives a sponsor a say in who pitches or who wins.\n- Q8 - recording, streaming or press without prior notice - status: answered - applicants told - route: The room is streamed and applicants were told before they applied; the call names the posture and the form asks for consent to it.\nAward items (3), in order:\n- A1 Equity-free cash prize - equity-free cash - party: Brindlemoor DevConf (organizer) - written: yes - delivery: 2027-04-30 - announce: yes (named party, in writing, dated)\n- A2 Cloud credits - committed slot - party: Cumulix Cloud - written: no - delivery: 2027-05-31 - announce: no (not committed in writing)\n- A3 Introductions to three seed funds - committed introductions - party: Brindlemoor DevConf (organizer) - written: yes - delivery: 2027-04-15 - announce: yes (named party, in writing, dated)\nAnnounceable now: Equity-free cash prize; Introductions to three seed funds\nPrize and opportunity structure (pick: Committed introductions): 1. Committed introductions; 2. Recognition only; 3. Equity-free cash; 4. A committed slot or in-kind item. Deleted, not demoted: Capital as the prize (Q5: no party has committed capital in writing). Notes: Dominance check: equity-free cash dominates capital (more value net of cost, less effort, less compliance cost); capital survives only through its promotion condition.\nConflict rule (pick: Recusal plus disclosure to the pitching companies): 1. Recusal plus disclosure to the pitching companies; 2. Scoring recusal only; 3. Recusal plus disclosure plus a stated contact protocol. Deleted, not demoted: No stated rule (Q4: 1 active investor on the panel). Notes: Dominance check: disclosure and recusal only each beat no stated rule on value and on compliance at once - only the effort of writing the rule down stops it.\nConflict rule picked: Recusal plus disclosure to the pitching companies. Covers: the vote, plus every declared interest stated to the pitching companies before they pitch - a term they entered under. Does not cover: what a judge may do afterwards and by when (no stand-off window, no routed introduction), and any interest nobody declared; the judge's own institutional obligations stay with the judge's institution.\nPer judge, in order:\n- Dana Wrenfield (active investor) - interest: access; backwards; own institution - handling: recused from scoring Gridlock CI and Vaultline; interests disclosed to the pitching companies before they pitch; asked in writing whether their own institution permits them to sit and to see this material\n- Priya Raman, VP Engineering (operator) - interest: none declared - handling: no declared tie - briefed on the rule like every judge\n- Startup programme lead (sponsor representative) - interest: sponsor tie - handling: interests disclosed to the pitching companies before they pitch; recused from any company tied to the sponsor\nConflict matrix (judge x applicant): Dana Wrenfield x Gridlock CI: backwards (competing position: the continuous integration sector); Dana Wrenfield x Vaultline: direct (holdings: the secrets management sector)\nSelection funnel (pick: Open application plus a screening call): 1. Open application plus a screening call [made the pick by Q3: the block is fixed and short relative to the slate - one weak pitch costs a share of the block you cannot get back]; 2. Open application, single review pass; 3. Curated invitation; 4. Nomination by named referrers [demoted by Q9 with Q10: one edition built from nothing - recruiting and briefing referrers lands before a single application]\nPublished route, as a sentence: Any company at the first customers stage may apply until 2027-02-15. Applications are read by Lena Osei (programme chair) and Dana Wrenfield against the published criteria and weights below, in a single review pass, then a short screening call with every shortlisted applicant, each asked the same opening question, before the slate is fixed. Nobody else reads them, and they are deleted by 2029-04-30. Accepted companies are notified by 2027-02-26 and commit to pitching in person on 2027-04-08, in a room that is streamed.\nPitch format (pick: Stage pitch plus judge questions): 1. Stage pitch plus judge questions; 2. Pre-scored submission with a finalist stage; 3. Closed-door deep dive with finalists. Deleted, not demoted: Stage pitch only (Q5: the award commits a third party (Cloud credits and Introductions to three seed funds) - a committed outsider would act on a judgment reached without one unscripted answer). Notes: Q3: the block holds the field, so pre-scoring would spend the audience's block on fewer companies. This format menu is the skill's own construction, claimed rather than agreed with event-format-selection.\nBlock arithmetic (shape from hackathon-judging's feasibility gate, inputs re-measured for a stage): Per company (Stage pitch plus judge questions): 3 min pitch + 1 min questions + 1 min walk-on and walk-off = 5 min (self-set). Live window: 45-min block - 3 min judge deliberation - 2 min announcement buffer = 40 min (deliberation and buffer self-set). Holds 8 of the 8 companies expected; 0 min spare.\nRubric (6 dimensions, weights sum 100; top-weighted observed: yes), in order:\n- Problem and product legibility - weight 25 - observed - the block - could a stranger repeat the problem back\n- Working product shown - weight 25 - observed - the block - shown live on request, not a recording\n- Answers under question - weight 20 - observed - the block - the judge questions\n- Evidence of traction - weight 15 - claimed - the application's traction field, checked by the programme chair before the block\n- Team fit to this problem - weight 10 - claimed - the application's team field, checked before the block\n- Fit to the award on offer - weight 5 - claimed - the application's \"what the company wants\" field\nTie-break ladder, published in the call: 1. highest score on the highest-weighted observable dimension; 2. the most judges who placed the company first; 3. a named tie-break judge with no declared interest in either company decides, on the record, in one sentence; 4. a shared award, only where every item in it is divisible and the call said so in advance - never a re-pitch, never a random draw\nAnnouncement and contest path: challenges go to Lena Osei, programme chair. Window: Challenges in writing to Lena Osei, programme chair, until 2027-04-12, before anything of value is delivered (the first item, \"Introductions to three seed funds\", on 2027-04-15). What can change: a score shown to be outside the published criteria, or an interest a judge did not declare; never a re-pitch, never a random draw.\nPass threshold: 5 of 6 in writing with zero blanks - The published route onto the stage: yes; The criteria with their weights: yes; The pitch format with the block it fits inside: yes; The conflict rule with what it does and does not cover: yes; The award list with the party who committed each item: no; The answers to all three gates: yes\nFindings (13):\n[fix] award_2_written (awards): \"Cloud credits\" (Cumulix Cloud) is not committed in writing - it cannot be announced. Enthusiasm in the room is not a commitment; get it in writing from someone with authority, with a named person and a date.\n[check] contest_law (gates): Contest-law classification - whether this counts as a skill-based contest where it runs - goes to counsel whatever the award; cash makes it bite hardest.\n[check] backwards_0 (conflict): Dana Wrenfield holds a position competing with Gridlock CI (competing position: the continuous integration sector) - an interest in that applicant not winning; recuse and disclose it before the pitch.\n[check] readers_invest (funnel): The reviewers include Dana Wrenfield, who invests - say so in the call; it is the fact the conflict rule exists to handle, met earlier and more cheaply.\n[check] elig_5 (funnel): Lintlark is at \"pre-product\", outside the population (first customers) - eligibility runs against Q2.\n[check] six (measure): Pass threshold (structural, one only): 5 of 6 exist in writing with zero blanks - missing: the award list with the party who committed each item. Iterate until the count is six.\n[info] award_1_cash (awards): \"Equity-free cash prize\" is cash: route the payout to hackathon-cash-prize's tax and payment categories, and pay the company named in the application, not whoever stands on stage.\n[info] award_2_gap (awards): \"Cloud credits\" is delivered by Cumulix Cloud - decide now what happens if they do not deliver; after the event the organizer owns the gap.\n[info] access_1 (conflict): Dana Wrenfield is an active investor: the interest is in access, not the result - recusal removes the vote and leaves the early look intact.\n[info] panel (block): The whole panel sits together and companies present serially, so the sampled-panel rung is unavailable; the levers left are the field, the slot, the block and pre-scoring.\n[info] floor_ok (timeline): Notification to the stage is 41 days - clear of the DevOpsDays 4-6 week travel floor.\n[info] screening (funnel): Say in the call that a screening round exists; ask every shortlisted applicant the same opening question; take notes against the published criteria only; it is not diligence and must not be presented as it.\n[info] disclaimer (honesty): Not legal, securities or investment advice: any capital, convertible instrument or equity award goes to counsel before it is announced, contest-law classification goes to counsel whatever the award, and each judge's own institutional disclosure obligations go to that judge's own institution, in writing."
}

Reply:

{
 "task": "plan",
 "summary": "Fix first: the gates are answered, but Cumulix Cloud's credits are not committed in writing, so they cannot be announced - get the commitment in writing, or take the credits out of the call.",
 "disclaimer": "Not legal, securities or investment advice: contest-law classification goes to counsel whatever the award, and each judge's own disclosure obligations go to that judge's own institution, in writing.",
 "verdict": "fix first",
 "gates": [
  {
   "gate": "Q6 - capital, a convertible instrument or equity",
   "status": "does not fire",
   "route": "No award carries capital, an instrument or equity; contest-law classification still goes to counsel before the call is published."
  },
  {
   "gate": "Q7 - a sponsor's say in who pitches or who wins",
   "status": "does not fire",
   "route": "Cumulix Cloud sponsors the contest with no signed say in who pitches or who wins, so nothing routes beyond keeping it that way."
  },
  {
   "gate": "Q8 - recording, streaming or press without prior notice",
   "status": "answered - applicants told",
   "route": "The room is streamed and applicants were told before applying; the call names the posture and the form asks for consent before the block."
  }
 ],
 "awards": [
  {
   "item": "Equity-free cash prize",
   "party": "Brindlemoor DevConf (organizer)",
   "written": "yes",
   "announce": "yes"
  },
  {
   "item": "Cloud credits",
   "party": "Cumulix Cloud",
   "written": "no",
   "announce": "no"
  },
  {
   "item": "Introductions to three seed funds",
   "party": "Brindlemoor DevConf (organizer)",
   "written": "yes",
   "announce": "yes"
  }
 ],
 "conflict": {
  "pick": "Recusal plus disclosure to the pitching companies",
  "covers": "The vote, plus every declared interest stated to the pitching companies before they pitch, so it is a term they entered under.",
  "does_not_cover": "What a judge may do afterwards and by when, any interest nobody declared, and each judge's own institutional obligations, which stay with their institution.",
  "per_judge": [
   {
    "judge": "Dana Wrenfield",
    "interest": "access; backwards; own institution",
    "handling": "Recused from scoring Gridlock CI and Vaultline, with both interests disclosed to the pitching companies before they pitch, and asked in writing whether Seedquill Capital permits them to sit and to see this material."
   },
   {
    "judge": "Priya Raman, VP Engineering",
    "interest": "none declared",
    "handling": "No declared tie; briefed on the rule in writing like every judge before seeing an application."
   },
   {
    "judge": "Startup programme lead",
    "interest": "sponsor tie",
    "handling": "The Cumulix Cloud tie is disclosed to the pitching companies before they pitch, and they are recused from any company tied to the sponsor."
   }
  ]
 },
 "funnel": {
  "pick": "Open application plus a screening call",
  "route_sentence": "Any company at the first customers stage may apply until 2027-02-15. Applications are read by Lena Osei (programme chair) and Dana Wrenfield against the published criteria and weights below, in a single review pass, then a short screening call with every shortlisted applicant, each asked the same opening question, before the slate is fixed. Nobody else reads them, and they are deleted by 2029-04-30. Accepted companies are notified by 2027-02-26 and commit to pitching in person on 2027-04-08, in a room that is streamed.",
  "reason": "The fixed 45-minute block holds the 8 companies with no spare minute (Q3), so one weak pitch costs a share of the block that cannot be won back, and the screening call is the only rung that tests whether a founder can hold a room."
 },
 "format": {
  "pick": "Stage pitch plus judge questions",
  "arithmetic": "Per company: 3 min pitch + 1 min questions + 1 min walk-on and walk-off = 5 min (self-set). Live window: 45-min block - 3 min deliberation - 2 min announcement buffer = 40 min (self-set). Holds 8 of the 8 companies expected; 0 min spare.",
  "reason": "Stage pitch only is deleted because the introductions and the credits commit outsiders, and the block holds the field, so pre-scoring would spend the audience's block on fewer companies."
 },
 "rubric": [
  {
   "dimension": "Problem and product legibility",
   "weight": 25,
   "kind": "observed",
   "how_judged": "In the block: could a stranger repeat the problem back."
  },
  {
   "dimension": "Working product shown",
   "weight": 25,
   "kind": "observed",
   "how_judged": "In the block: shown live on request, not a recording."
  },
  {
   "dimension": "Answers under question",
   "weight": 20,
   "kind": "observed",
   "how_judged": "In the block, from the judge questions."
  },
  {
   "dimension": "Evidence of traction",
   "weight": 15,
   "kind": "claimed",
   "how_judged": "The application's traction field, checked by the programme chair before the block."
  },
  {
   "dimension": "Team fit to this problem",
   "weight": 10,
   "kind": "claimed",
   "how_judged": "The application's team field, checked before the block."
  },
  {
   "dimension": "Fit to the award on offer",
   "weight": 5,
   "kind": "claimed",
   "how_judged": "The application's field for what the company wants."
  }
 ],
 "announcement": {
  "challenge_to": "Lena Osei, programme chair",
  "window": "Challenges go in writing to Lena Osei until 2027-04-12, before the introductions are delivered on 2027-04-15; a score outside the published criteria or an undeclared interest can change the result, and a re-pitch or a random draw never will."
 },
 "caveats": [
  "Cloud credits from Cumulix Cloud are not committed in writing - they cannot be announced until they are.",
  "Contest-law classification goes to counsel whatever the award; the cash prize makes it bite hardest.",
  "Dana Wrenfield holds a position competing with Gridlock CI - recuse and disclose it before the pitch.",
  "The reviewers include Dana Wrenfield, who invests - say so in the call.",
  "Lintlark is pre-product, outside the first customers population.",
  "Pass threshold: 5 of 6 in writing - the award list still has an uncommitted item."
 ]
}

The page's check: kept - nothing to flag

Brindlemoor DevConf Demo Day (600 people, 45 minutes, 8 companies) - call

Verdict: fix first; 3 judges; 2 of 3 award items announceable; pass threshold 5 of 6; 1 fix-level findings.

Input:

{
 "task": "call",
 "event": "Contest: Brindlemoor DevConf Demo Day; organizer: Brindlemoor DevConf\nAlready published (Q1): the contest is in the published programme, with no route stated - \"Demo Day: eight early-stage devtools companies pitch on the main stage on day two.\"\nPitching population (Q2): first customers; decided by the programme committee; written where an applicant can read it: yes\nThe block (Q3): starts 2027-04-08 15:00; 45 minutes; fixed: yes; companies expected: 8\nMeasured on the organizer's own stage (self-set): pitch 3 min, questions 1 min, walk-on and walk-off 1 min, judge deliberation 3 min, announcement buffer 2 min, finalists not set\nJudges (Q4): 3 judges, 1 active investor; a judge or audience invited because of who would be pitching: no\nCapital (Q6): no capital purpose stated; counsel has seen the structure: no\nSponsorship (Q7): sponsored yes; a signed say: no say; a fee, ticket or package as a condition of pitching: no\nRecording (Q8): streamed; applicants told before applying: yes\nEdition (Q9): one-off; call published 2027-01-11; applications close 2027-02-15; slate notified 2027-02-26; challenge window closes 2027-04-12; applications deleted by 2029-04-30\nEffort ceiling (Q10): 40 organizer hours; reads applications: Lena Osei (programme chair) and Dana Wrenfield; chases third parties: the sponsorship lead; data obligations: Brindlemoor DevConf data protection lead; contact and challenges: Lena Osei, programme chair\nAlready true: named referrers who would nominate no; an accelerator relationship predating the event no; slate half-filled by invitation before the call no; a fund partner on the organizing team no\nCarried from the plan (6): 1. Conflict rule covers: The vote, plus every declared interest stated to the pitching companies before they pitch, so it is a term they entered under.; 2. Conflict rule does not cover: What a judge may do afterwards and by when, any interest nobody declared, and each judge's own institutional obligations, which stay with their institution.; 3. Dana Wrenfield: Recused from scoring Gridlock CI and Vaultline, with both interests disclosed to the pitching companies before they pitch, and asked in writing whether Seedquill Capital permits them to sit and to see this material.; 4. Priya Raman, VP Engineering: No declared tie; briefed on the rule in writing like every judge before seeing an application.; 5. Startup programme lead: The Cumulix Cloud tie is disclosed to the pitching companies before they pitch, and they are recused from any company tied to the sponsor.; 6. Why this funnel: The fixed 45-minute block holds the 8 companies with no spare minute (Q3), so one weak pitch costs a share of the block that cannot be won back, and the screening call is the only rung that tests whether a founder can hold a room.",
 "judges": "J1. Dana Wrenfield | active investor | Seedquill Capital | seed-stage devtools; portfolio: Keyward (secrets management) | Pipeworks (continuous integration) | declared in writing: yes\nJ2. Priya Raman, VP Engineering | operator | Hollis Bank | none declared | none declared | declared in writing: yes\nJ3. Startup programme lead | sponsor representative | Cumulix Cloud | none declared | none declared | declared in writing: yes",
 "awards": "A1. Equity-free cash prize | equity-free cash | 10,000 EUR paid to the company | Brindlemoor DevConf (organizer) | in writing: yes | delivery: 2027-04-30\nA2. Cloud credits | committed slot | 25,000 USD in credits | Cumulix Cloud | in writing: no | delivery: 2027-05-31\nA3. Introductions to three seed funds | committed introductions | each fund has agreed to take the meeting | Brindlemoor DevConf (organizer) | in writing: yes | delivery: 2027-04-15",
 "applicants": "C1. Gridlock CI | continuous integration | first customers | flaky-test quarantine for CI pipelines\nC2. Vaultline | secrets management | first customers | secret rotation for small platform teams\nC3. Tracefold | observability | first customers | trace sampling that keeps the slow requests\nC4. Schemawise | database tooling | first customers | schema migrations reviewed like code\nC5. Lintlark | code review | pre-product | review bots tuned on a team's own history",
 "facts": "Verdict: fix first (0 open gates, 1 fix-level finding)\nDisclaimer: Not legal, securities or investment advice: any capital, convertible instrument or equity award goes to counsel before it is announced, contest-law classification goes to counsel whatever the award, and each judge's own institutional disclosure obligations go to that judge's own institution, in writing.\nGates, in order:\n- Q6 - capital, a convertible instrument or equity - status: does not fire - route: No award carries capital, a convertible instrument or equity. Contest-law classification still goes to counsel whatever the award.\n- Q7 - a sponsor's say in who pitches or who wins - status: does not fire - route: The contest is sponsored, and no signed agreement gives a sponsor a say in who pitches or who wins.\n- Q8 - recording, streaming or press without prior notice - status: answered - applicants told - route: The room is streamed and applicants were told before they applied; the call names the posture and the form asks for consent to it.\nAward items (3), in order:\n- A1 Equity-free cash prize - equity-free cash - party: Brindlemoor DevConf (organizer) - written: yes - delivery: 2027-04-30 - announce: yes (named party, in writing, dated)\n- A2 Cloud credits - committed slot - party: Cumulix Cloud - written: no - delivery: 2027-05-31 - announce: no (not committed in writing)\n- A3 Introductions to three seed funds - committed introductions - party: Brindlemoor DevConf (organizer) - written: yes - delivery: 2027-04-15 - announce: yes (named party, in writing, dated)\nAnnounceable now: Equity-free cash prize; Introductions to three seed funds\nPrize and opportunity structure (pick: Committed introductions): 1. Committed introductions; 2. Recognition only; 3. Equity-free cash; 4. A committed slot or in-kind item. Deleted, not demoted: Capital as the prize (Q5: no party has committed capital in writing). Notes: Dominance check: equity-free cash dominates capital (more value net of cost, less effort, less compliance cost); capital survives only through its promotion condition.\nConflict rule (pick: Recusal plus disclosure to the pitching companies): 1. Recusal plus disclosure to the pitching companies; 2. Scoring recusal only; 3. Recusal plus disclosure plus a stated contact protocol. Deleted, not demoted: No stated rule (Q4: 1 active investor on the panel). Notes: Dominance check: disclosure and recusal only each beat no stated rule on value and on compliance at once - only the effort of writing the rule down stops it.\nConflict rule picked: Recusal plus disclosure to the pitching companies. Covers: the vote, plus every declared interest stated to the pitching companies before they pitch - a term they entered under. Does not cover: what a judge may do afterwards and by when (no stand-off window, no routed introduction), and any interest nobody declared; the judge's own institutional obligations stay with the judge's institution.\nPer judge, in order:\n- Dana Wrenfield (active investor) - interest: access; backwards; own institution - handling: recused from scoring Gridlock CI and Vaultline; interests disclosed to the pitching companies before they pitch; asked in writing whether their own institution permits them to sit and to see this material\n- Priya Raman, VP Engineering (operator) - interest: none declared - handling: no declared tie - briefed on the rule like every judge\n- Startup programme lead (sponsor representative) - interest: sponsor tie - handling: interests disclosed to the pitching companies before they pitch; recused from any company tied to the sponsor\nConflict matrix (judge x applicant): Dana Wrenfield x Gridlock CI: backwards (competing position: the continuous integration sector); Dana Wrenfield x Vaultline: direct (holdings: the secrets management sector)\nSelection funnel (pick: Open application plus a screening call): 1. Open application plus a screening call [made the pick by Q3: the block is fixed and short relative to the slate - one weak pitch costs a share of the block you cannot get back]; 2. Open application, single review pass; 3. Curated invitation; 4. Nomination by named referrers [demoted by Q9 with Q10: one edition built from nothing - recruiting and briefing referrers lands before a single application]\nPublished route, as a sentence: Any company at the first customers stage may apply until 2027-02-15. Applications are read by Lena Osei (programme chair) and Dana Wrenfield against the published criteria and weights below, in a single review pass, then a short screening call with every shortlisted applicant, each asked the same opening question, before the slate is fixed. Nobody else reads them, and they are deleted by 2029-04-30. Accepted companies are notified by 2027-02-26 and commit to pitching in person on 2027-04-08, in a room that is streamed.\nPitch format (pick: Stage pitch plus judge questions): 1. Stage pitch plus judge questions; 2. Pre-scored submission with a finalist stage; 3. Closed-door deep dive with finalists. Deleted, not demoted: Stage pitch only (Q5: the award commits a third party (Cloud credits and Introductions to three seed funds) - a committed outsider would act on a judgment reached without one unscripted answer). Notes: Q3: the block holds the field, so pre-scoring would spend the audience's block on fewer companies. This format menu is the skill's own construction, claimed rather than agreed with event-format-selection.\nBlock arithmetic (shape from hackathon-judging's feasibility gate, inputs re-measured for a stage): Per company (Stage pitch plus judge questions): 3 min pitch + 1 min questions + 1 min walk-on and walk-off = 5 min (self-set). Live window: 45-min block - 3 min judge deliberation - 2 min announcement buffer = 40 min (deliberation and buffer self-set). Holds 8 of the 8 companies expected; 0 min spare.\nRubric (6 dimensions, weights sum 100; top-weighted observed: yes), in order:\n- Problem and product legibility - weight 25 - observed - the block - could a stranger repeat the problem back\n- Working product shown - weight 25 - observed - the block - shown live on request, not a recording\n- Answers under question - weight 20 - observed - the block - the judge questions\n- Evidence of traction - weight 15 - claimed - the application's traction field, checked by the programme chair before the block\n- Team fit to this problem - weight 10 - claimed - the application's team field, checked before the block\n- Fit to the award on offer - weight 5 - claimed - the application's \"what the company wants\" field\nTie-break ladder, published in the call: 1. highest score on the highest-weighted observable dimension; 2. the most judges who placed the company first; 3. a named tie-break judge with no declared interest in either company decides, on the record, in one sentence; 4. a shared award, only where every item in it is divisible and the call said so in advance - never a re-pitch, never a random draw\nAnnouncement and contest path: challenges go to Lena Osei, programme chair. Window: Challenges in writing to Lena Osei, programme chair, until 2027-04-12, before anything of value is delivered (the first item, \"Introductions to three seed funds\", on 2027-04-15). What can change: a score shown to be outside the published criteria, or an interest a judge did not declare; never a re-pitch, never a random draw.\nPass threshold: 5 of 6 in writing with zero blanks - The published route onto the stage: yes; The criteria with their weights: yes; The pitch format with the block it fits inside: yes; The conflict rule with what it does and does not cover: yes; The award list with the party who committed each item: no; The answers to all three gates: yes\nFindings (13):\n[fix] award_2_written (awards): \"Cloud credits\" (Cumulix Cloud) is not committed in writing - it cannot be announced. Enthusiasm in the room is not a commitment; get it in writing from someone with authority, with a named person and a date.\n[check] contest_law (gates): Contest-law classification - whether this counts as a skill-based contest where it runs - goes to counsel whatever the award; cash makes it bite hardest.\n[check] backwards_0 (conflict): Dana Wrenfield holds a position competing with Gridlock CI (competing position: the continuous integration sector) - an interest in that applicant not winning; recuse and disclose it before the pitch.\n[check] readers_invest (funnel): The reviewers include Dana Wrenfield, who invests - say so in the call; it is the fact the conflict rule exists to handle, met earlier and more cheaply.\n[check] elig_5 (funnel): Lintlark is at \"pre-product\", outside the population (first customers) - eligibility runs against Q2.\n[check] six (measure): Pass threshold (structural, one only): 5 of 6 exist in writing with zero blanks - missing: the award list with the party who committed each item. Iterate until the count is six.\n[info] award_1_cash (awards): \"Equity-free cash prize\" is cash: route the payout to hackathon-cash-prize's tax and payment categories, and pay the company named in the application, not whoever stands on stage.\n[info] award_2_gap (awards): \"Cloud credits\" is delivered by Cumulix Cloud - decide now what happens if they do not deliver; after the event the organizer owns the gap.\n[info] access_1 (conflict): Dana Wrenfield is an active investor: the interest is in access, not the result - recusal removes the vote and leaves the early look intact.\n[info] panel (block): The whole panel sits together and companies present serially, so the sampled-panel rung is unavailable; the levers left are the field, the slot, the block and pre-scoring.\n[info] floor_ok (timeline): Notification to the stage is 41 days - clear of the DevOpsDays 4-6 week travel floor.\n[info] screening (funnel): Say in the call that a screening round exists; ask every shortlisted applicant the same opening question; take notes against the published criteria only; it is not diligence and must not be presented as it.\n[info] disclaimer (honesty): Not legal, securities or investment advice: any capital, convertible instrument or equity award goes to counsel before it is announced, contest-law classification goes to counsel whatever the award, and each judge's own institutional disclosure obligations go to that judge's own institution, in writing."
}

Reply:

{
 "task": "call",
 "call": {
  "title": "Brindlemoor DevConf Demo Day - call for applications",
  "for_whom": "Devtools companies at the first customers stage: a live product and first customers, as written by the programme committee.",
  "route": "Any company at the first customers stage may apply until 2027-02-15. Applications are read by Lena Osei (programme chair) and Dana Wrenfield against the published criteria and weights below, in a single review pass, then a short screening call with every shortlisted applicant, each asked the same opening question, before the slate is fixed. Nobody else reads them, and they are deleted by 2029-04-30. Accepted companies are notified by 2027-02-26 and commit to pitching in person on 2027-04-08, in a room that is streamed.",
  "submit": [
   "Company name and a one-line description",
   "Stage, in this call's words: first customers",
   "What the company does, in prose",
   "Who is on the team and what they did before",
   "Traction, stated as facts with dates - the claimed criteria are checked against this field",
   "What the company wants out of pitching",
   "Who presents, and whether they are available on 2027-04-08",
   "Any conflict you already know about with a judge or reviewer",
   "Consent to the streamed room; reviewers sign no NDA and include an investor, so include nothing you need kept confidential"
  ],
  "criteria": [
   {
    "criterion": "Problem and product legibility",
    "weight": 25
   },
   {
    "criterion": "Working product shown",
    "weight": 25
   },
   {
    "criterion": "Answers under question",
    "weight": 20
   },
   {
    "criterion": "Evidence of traction",
    "weight": 15
   },
   {
    "criterion": "Team fit to this problem",
    "weight": 10
   },
   {
    "criterion": "Fit to the award on offer",
    "weight": 5
   }
  ],
  "awards": [
   "Equity-free cash prize - 10,000 EUR paid to the company, by Brindlemoor DevConf, by 2027-04-30",
   "Introductions to three seed funds - made by Brindlemoor DevConf by 2027-04-15; each fund has agreed to take the meeting",
   "Cloud credits from Cumulix Cloud - not yet committed in writing; listed only once Cumulix Cloud commits"
  ],
  "recording": "The block is streamed; you were told before applying, and the application asks for your consent to it.",
  "conflict_statement": "Judges and reviewers declare their holdings and competing positions in writing before reading any application; a judge with a tie is recused from scoring that company, and every declared interest is disclosed to the pitching companies before they pitch.",
  "dates": [
   "Call published: 2027-01-11",
   "Applications close: 2027-02-15",
   "Slate notified: 2027-02-26",
   "Demo Day block: 2027-04-08 15:00",
   "Challenge window closes: 2027-04-12"
  ],
  "contact": "Lena Osei, programme chair"
 },
 "briefing": {
  "rule": "Recusal plus disclosure to the pitching companies",
  "declare": [
   "Any position you or your fund hold in an applicant, or in anything competing with one",
   "Whether your own institution permits you to sit on this panel and to see this material",
   "Whether you intend to approach any company from this stage"
  ],
  "contact_protocol": "None - not the page's pick; tell the organizer if you want to talk to a company after the block.",
  "scoring": [
   "Score the observed dimensions from what happens in the block, and the claimed ones only against the application.",
   "Score each company before the next one starts.",
   "Score the first company against the scale, not against nothing."
  ],
  "contest_path": "Challenges go in writing to Lena Osei until 2027-04-12, before the introductions on 2027-04-15; a score outside the published criteria or an undeclared interest can change the result, a re-pitch or a random draw never."
 },
 "disclaimer": "Not legal, securities or investment advice: contest-law classification goes to counsel, and each judge's own disclosure obligations go to that judge's own institution, in writing.",
 "note": "Fix first: get Cumulix Cloud's credits committed in writing, or take them out, before this call is published."
}

The page's check: kept - nothing to flag

Harborwick Founders Cup (a SAFE prize, a sponsor's say) - plan

Verdict: blocked by a gate; 3 judges; 1 of 2 award items announceable; pass threshold 5 of 6; 2 fix-level findings.

Input:

{
 "task": "plan",
 "event": "Contest: Harborwick Founders Cup; organizer: Harborwick Summit\nAlready published (Q1): a public route onto the stage has already been announced - \"Apply by March 1; eight finalists pitch the Harborwick Fund partners on stage.\"\nPitching population (Q2): raising against traction; decided by Harborwick Fund; written where an applicant can read it: yes\nThe block (Q3): starts 2027-05-20 10:00; 90 minutes; fixed: yes; companies expected: 8\nMeasured on the organizer's own stage (self-set): pitch 5 min, questions 3 min, walk-on and walk-off 1 min, judge deliberation 10 min, announcement buffer 5 min, finalists not set\nJudges (Q4): 3 judges, 1 active investor; a judge or audience invited because of who would be pitching: no\nCapital (Q6): a capital prize attached to a contest that would run anyway; counsel has seen the structure: no\nSponsorship (Q7): sponsored yes; a signed say: a say in who pitches (signed; handled as the hard case: no); a fee, ticket or package as a condition of pitching: no\nRecording (Q8): recorded; applicants told before applying: yes\nEdition (Q9): recurring; call published 2027-01-15; applications close 2027-03-01; slate notified 2027-03-29; challenge window closes 2027-05-27; applications deleted by 2030-06-30\nEffort ceiling (Q10): 80 organizer hours; reads applications: Marcus Lindqvane (Harborwick Fund) and Ines Duarte (programme lead); chases third parties: Ines Duarte; data obligations: Harborwick Summit operations; contact and challenges: Ines Duarte, programme lead\nAlready true: named referrers who would nominate no; an accelerator relationship predating the event no; slate half-filled by invitation before the call no; a fund partner on the organizing team yes",
 "judges": "J1. Marcus Lindqvane | active investor | Harborwick Fund | Series A fintech and climate software | none declared | declared in writing: yes\nJ2. Asha Rao | operator | Brightwell Energy | none declared | none declared | declared in writing: yes\nJ3. Sponsor partnerships director | sponsor representative | Quayvale Bank | none declared | none declared | declared in writing: yes",
 "awards": "A1. SAFE investment | capital | an investment on a SAFE from the organizer's fund | Harborwick Fund | in writing: yes | delivery: 2027-06-30\nA2. Founders Cup title | recognition | the title and a write-up | Harborwick Summit (organizer) | in writing: yes | delivery: 2027-05-20",
 "applicants": "",
 "facts": "Verdict: blocked by a gate (2 open gates, 2 fix-level findings)\nDisclaimer: Not legal, securities or investment advice: any capital, convertible instrument or equity award goes to counsel before it is announced, contest-law classification goes to counsel whatever the award, and each judge's own institutional disclosure obligations go to that judge's own institution, in writing.\nGates, in order:\n- Q6 - capital, a convertible instrument or equity - status: open - route: Route the structure to counsel before the award is announced, and to the funding party's own legal team where one exists. The page states no threshold, exemption name or currency amount.\n- Q7 - a sponsor's say in who pitches or who wins - status: open - route: A say over who pitches buys a place on the slate: take it out, and scope the sponsor's say to a named award. \"No speaker spots can be bought by sponsors: not ever - period\" (DevOpsDays organizing guide).\n- Q8 - recording, streaming or press without prior notice - status: answered - applicants told - route: The room is recorded and applicants were told before they applied; the call names the posture and the form asks for consent to it.\nAward items (2), in order:\n- A1 SAFE investment - capital - party: Harborwick Fund - written: yes - delivery: 2027-06-30 - announce: no (the capital gate is open - counsel first)\n- A2 Founders Cup title - recognition - party: Harborwick Summit (organizer) - written: yes - delivery: 2027-05-20 - announce: yes (named party, in writing, dated)\nAnnounceable now: Founders Cup title\nPrize and opportunity structure (pick: Committed introductions): 1. Committed introductions; 2. Recognition only; 3. Equity-free cash; 4. A committed slot or in-kind item; 5. Capital as the prize. Notes: Dominance check: equity-free cash dominates capital (more value net of cost, less effort, less compliance cost); capital survives only through its promotion condition.\nConflict rule (pick: Recusal plus disclosure plus a stated contact protocol): 1. Recusal plus disclosure plus a stated contact protocol [promoted by a fund partner already on the organizing team; made the pick by Q6: an award carries capital or an instrument - a judge's own institution is already a party to the outcome]; 2. Recusal plus disclosure to the pitching companies; 3. Scoring recusal only. Deleted, not demoted: No stated rule (Q4: 1 active investor on the panel). Notes: Dominance check: disclosure and recusal only each beat no stated rule on value and on compliance at once - only the effort of writing the rule down stops it.\nConflict rule picked: Recusal plus disclosure plus a stated contact protocol. Covers: the vote, every declared interest disclosed before the pitch, and first contact - a stand-off window to a stated date and introductions routed through a named organizer. Does not cover: a relationship that predates the contest (a declared interest, handled by disclosure) and any interest nobody declared; the judge's own institutional obligations stay with the judge's institution.\nPer judge, in order:\n- Marcus Lindqvane (active investor) - interest: access; own institution - handling: interests disclosed to the pitching companies before they pitch; asked in writing whether their own institution permits them to sit and to see this material; any approach to a pitching company routed through the organizer after the stand-off date\n- Asha Rao (operator) - interest: none declared - handling: no declared tie - briefed on the rule like every judge\n- Sponsor partnerships director (sponsor representative) - interest: sponsor tie - handling: interests disclosed to the pitching companies before they pitch; scores confined to what the sponsor bought, the result computed with and without them\nConflict matrix (judge x applicant): no applicants listed\nSelection funnel (pick: Open application plus a screening call): 1. Open application plus a screening call [made the pick by Q3: the block is fixed and short relative to the slate - one weak pitch costs a share of the block you cannot get back]; 2. Open application, single review pass; 3. Nomination by named referrers. Deleted, not demoted: Curated invitation (Q1: a public route onto the stage has already been announced)\nPublished route, as a sentence: Any company at the raising against traction stage may apply until 2027-03-01. Applications are read by Marcus Lindqvane (Harborwick Fund) and Ines Duarte (programme lead) against the published criteria and weights below, in a single review pass, then a short screening call with every shortlisted applicant, each asked the same opening question, before the slate is fixed. Nobody else reads them, and they are deleted by 2030-06-30. Accepted companies are notified by 2027-03-29 and commit to pitching in person on 2027-05-20, in a room that is recorded.\nPitch format (pick: Closed-door deep dive with finalists): 1. Closed-door deep dive with finalists [made the pick by Q6: the award carries capital - a public pitch does not reach the facts it has to be justified on; made the pick by Q2: the population is raising against traction - claims no stage slot can show]; 2. Stage pitch plus judge questions; 3. Pre-scored submission with a finalist stage. Deleted, not demoted: Stage pitch only (Q5: the award commits a third party (SAFE investment) - a committed outsider would act on a judgment reached without one unscripted answer). Notes: Q3: the block holds the field, so pre-scoring would spend the audience's block on fewer companies. This format menu is the skill's own construction, claimed rather than agreed with event-format-selection.\nBlock arithmetic (shape from hackathon-judging's feasibility gate, inputs re-measured for a stage): Per company (Closed-door deep dive with finalists): 5 min pitch + 3 min questions + 1 min walk-on and walk-off = 9 min (self-set). Live window: 90-min block - 10 min judge deliberation - 5 min announcement buffer = 75 min (deliberation and buffer self-set). Holds 8 of the 8 companies expected; 3 min spare.\nRubric (4 dimensions, weights sum 100; top-weighted observed: yes), in order:\n- Problem and product legibility - weight 30 - observed - the block\n- Answers under question - weight 30 - observed - the block\n- Evidence of traction - weight 25 - claimed - the application's traction field, checked by a named reviewer\n- Fit to the award on offer - weight 15 - claimed - the application's \"what the company wants\" field\nTie-break ladder, published in the call: 1. highest score on the highest-weighted observable dimension; 2. the most judges who placed the company first; 3. a named tie-break judge with no declared interest in either company decides, on the record, in one sentence; 4. a shared award, only where every item in it is divisible and the call said so in advance - never a re-pitch, never a random draw\nAnnouncement and contest path: challenges go to Ines Duarte, programme lead. Window: Challenges in writing to Ines Duarte, programme lead, until 2027-05-27, before anything of value is delivered. What can change: a score shown to be outside the published criteria, or an interest a judge did not declare; never a re-pitch, never a random draw.\nPass threshold: 5 of 6 in writing with zero blanks - The published route onto the stage: yes; The criteria with their weights: yes; The pitch format with the block it fits inside: yes; The conflict rule with what it does and does not cover: yes; The award list with the party who committed each item: yes; The answers to all three gates: no\nFindings (15):\n[fix] gate_capital (gates): Q6 - capital, a convertible instrument or equity is open: Route the structure to counsel before the award is announced, and to the funding party's own legal team where one exists. The page states no threshold, exemption name or currency amount.\n[fix] gate_sponsor (gates): Q7 - a sponsor's say in who pitches or who wins is open: A say over who pitches buys a place on the slate: take it out, and scope the sponsor's say to a named award. \"No speaker spots can be bought by sponsors: not ever - period\" (DevOpsDays organizing guide).\n[check] fund_partner (conflict): A fund partner sits on the organizing team - declare that interest in the call like a judge's.\n[check] deepdive (format): The closed-door deep dive runs outside the block, so its judge hours are not in this arithmetic - publish that it exists, and who is in the room, before applications close.\n[check] readers_invest (funnel): The reviewers include Marcus Lindqvane, who invests - say so in the call; it is the fact the conflict rule exists to handle, met earlier and more cheaply.\n[check] published (funnel): A public route has already been announced (Q1): \"Apply by March 1; eight finalists pitch the Harborwick Fund partners on stage.\" - a published route is a promise; the sentence below must match it.\n[check] six (measure): Pass threshold (structural, one only): 5 of 6 exist in writing with zero blanks - missing: the answers to all three gates. Iterate until the count is six.\n[info] contest_law (gates): Contest-law classification - whether this counts as a skill-based contest where it runs - goes to counsel whatever the award.\n[info] award_1_gap (awards): \"SAFE investment\" is delivered by Harborwick Fund - decide now what happens if they do not deliver; after the event the organizer owns the gap.\n[info] access_1 (conflict): Marcus Lindqvane is an active investor: the interest is in access, not the result - recusal removes the vote and leaves the early look intact.\n[info] protocol_text (conflict): Publish the contact protocol in the call: the stand-off window as a date, a named organizer who makes introductions, the founder may decline with no effect on the result, and a relationship that predates the contest is a declared interest, not a new approach.\n[info] panel (block): The whole panel sits together and companies present serially, so the sampled-panel rung is unavailable; the levers left are the field, the slot, the block and pre-scoring.\n[info] floor_ok (timeline): Notification to the stage is 52 days - clear of the DevOpsDays 4-6 week travel floor.\n[info] screening (funnel): Say in the call that a screening round exists; ask every shortlisted applicant the same opening question; take notes against the published criteria only; it is not diligence and must not be presented as it.\n[info] disclaimer (honesty): Not legal, securities or investment advice: any capital, convertible instrument or equity award goes to counsel before it is announced, contest-law classification goes to counsel whatever the award, and each judge's own institutional disclosure obligations go to that judge's own institution, in writing."
}

Reply:

{
 "task": "plan",
 "summary": "Blocked by a gate: the SAFE has to go to counsel before it is announced, and Quayvale Bank's signed say over who pitches has to come out of the slate before the call can be written.",
 "disclaimer": "Not legal, securities or investment advice: the SAFE and contest-law classification go to counsel, and each judge's own disclosure obligations go to that judge's own institution, in writing.",
 "verdict": "blocked by a gate",
 "gates": [
  {
   "gate": "Q6 - capital, a convertible instrument or equity",
   "status": "open",
   "route": "The SAFE structure goes to counsel, and to Harborwick Fund's own legal team, before the award is announced."
  },
  {
   "gate": "Q7 - a sponsor's say in who pitches or who wins",
   "status": "open",
   "route": "Take the sponsor's say out of who pitches and scope it to a named award before applications close; a stage slot is not for sale."
  },
  {
   "gate": "Q8 - recording, streaming or press without prior notice",
   "status": "answered - applicants told",
   "route": "Applicants were told the room is recorded before applying; the call repeats the posture and the form asks for consent before the block."
  }
 ],
 "awards": [
  {
   "item": "SAFE investment",
   "party": "Harborwick Fund",
   "written": "yes",
   "announce": "no"
  },
  {
   "item": "Founders Cup title",
   "party": "Harborwick Summit (organizer)",
   "written": "yes",
   "announce": "yes"
  }
 ],
 "conflict": {
  "pick": "Recusal plus disclosure plus a stated contact protocol",
  "covers": "The vote, every declared interest disclosed before the pitch, and first contact: a stand-off window to a stated date with introductions routed through a named organizer.",
  "does_not_cover": "A relationship that predates the contest, which is handled as a declared interest, any interest nobody declared, and each judge's own institutional obligations, which stay with their institution.",
  "per_judge": [
   {
    "judge": "Marcus Lindqvane",
    "interest": "access; own institution",
    "handling": "Interests disclosed to the pitching companies before they pitch, asked in writing whether Harborwick Fund permits them to sit and see this material, and any approach routed through the organizer after the stand-off date."
   },
   {
    "judge": "Asha Rao",
    "interest": "none declared",
    "handling": "No declared tie; briefed on the rule in writing before seeing an application."
   },
   {
    "judge": "Sponsor partnerships director",
    "interest": "sponsor tie",
    "handling": "The Quayvale Bank tie is disclosed before the pitch, and their scores are confined to what the sponsor bought, with the result computed with and without them."
   }
  ]
 },
 "funnel": {
  "pick": "Open application plus a screening call",
  "route_sentence": "Any company at the raising against traction stage may apply until 2027-03-01. Applications are read by Marcus Lindqvane (Harborwick Fund) and Ines Duarte (programme lead) against the published criteria and weights below, in a single review pass, then a short screening call with every shortlisted applicant, each asked the same opening question, before the slate is fixed. Nobody else reads them, and they are deleted by 2030-06-30. Accepted companies are notified by 2027-03-29 and commit to pitching in person on 2027-05-20, in a room that is recorded.",
  "reason": "The fixed block is short relative to the 8 companies (Q3), and curated invitation is deleted because a public route was already announced (Q1)."
 },
 "format": {
  "pick": "Closed-door deep dive with finalists",
  "arithmetic": "Per company: 5 min pitch + 3 min questions + 1 min walk-on and walk-off = 9 min (self-set). Live window: 90-min block - 10 min deliberation - 5 min announcement buffer = 75 min (self-set). Holds 8 of the 8 companies expected; 3 min spare. The deep dive runs outside the block.",
  "reason": "The award carries capital (Q6) and the population is raising against traction (Q2), so a public pitch cannot reach the facts the award has to be justified on; publish that the deep dive exists, and who is in the room, before applications close."
 },
 "rubric": [
  {
   "dimension": "Problem and product legibility",
   "weight": 30,
   "kind": "observed",
   "how_judged": "In the block."
  },
  {
   "dimension": "Answers under question",
   "weight": 30,
   "kind": "observed",
   "how_judged": "In the block, from the judge questions."
  },
  {
   "dimension": "Evidence of traction",
   "weight": 25,
   "kind": "claimed",
   "how_judged": "The application's traction field, checked by a named reviewer before the block."
  },
  {
   "dimension": "Fit to the award on offer",
   "weight": 15,
   "kind": "claimed",
   "how_judged": "The application's field for what the company wants."
  }
 ],
 "announcement": {
  "challenge_to": "Ines Duarte, programme lead",
  "window": "Challenges go in writing to Ines Duarte until 2027-05-27, before anything of value is delivered; a score outside the published criteria or an undeclared interest can change the result, a re-pitch or a random draw never."
 },
 "caveats": [
  "The SAFE investment cannot be announced until counsel has the structure.",
  "Quayvale Bank's signed say over who pitches buys a place on the slate - take it out and scope it to a named award.",
  "A fund partner sits on the organizing team - declare that interest in the call.",
  "Publish that the closed-door deep dive exists, and who is in the room, before applications close.",
  "The reviewers include Marcus Lindqvane, who invests - say so in the call.",
  "The route already announced is a promise; the published sentence must match it."
 ]
}

The page's check: kept - nothing to flag

Harborwick Founders Cup (a SAFE prize, a sponsor's say) - call: not offered - blocked by a gate (Q6, Q7) - settle it before the call is written.

Harbourside Rust Demo Night (a small meetup) - plan

Verdict: ready to publish the call; 2 judges; 2 of 2 award items announceable; pass threshold 6 of 6; 0 fix-level findings.

Input:

{
 "task": "plan",
 "event": "Contest: Harbourside Rust Demo Night; organizer: Harbourside Rust Meetup\nAlready published (Q1): nothing published yet\nPitching population (Q2): pre-product; decided by the meetup organizers; written where an applicant can read it: yes\nThe block (Q3): starts 2027-02-18 19:00; 60 minutes; fixed: no; companies expected: 4\nMeasured on the organizer's own stage (self-set): pitch 5 min, questions 5 min, walk-on and walk-off 1 min, judge deliberation 5 min, announcement buffer 2 min, finalists not set\nJudges (Q4): 2 judges, 0 active investors; a judge or audience invited because of who would be pitching: no\nCapital (Q6): no capital purpose stated; counsel has seen the structure: no\nSponsorship (Q7): sponsored no; a signed say: no say; a fee, ticket or package as a condition of pitching: no\nRecording (Q8): not recorded, streamed or open to press; applicants told before applying: no\nEdition (Q9): recurring; call published 2026-12-01; applications close 2026-12-20; slate notified 2027-01-08; challenge window closes 2027-02-25; applications deleted by 2028-02-28\nEffort ceiling (Q10): 10 organizer hours; reads applications: Tomas Berg and Wen Li (meetup organizers); chases third parties: Tomas Berg; data obligations: Tomas Berg; contact and challenges: Tomas Berg, meetup organizer\nAlready true: named referrers who would nominate no; an accelerator relationship predating the event no; slate half-filled by invitation before the call no; a fund partner on the organizing team no",
 "judges": "J1. Ayo Bello | operator | Ferrous Labs | none declared | none declared | declared in writing: yes\nJ2. Mira Novak | customer | Portside Logistics | none declared | none declared | declared in writing: yes",
 "awards": "A1. Demo Night winner | recognition | the title and a write-up on the meetup blog | Harbourside Rust Meetup (organizer) | in writing: yes | delivery: 2027-02-25\nA2. Introductions to two platform teams | committed introductions | both teams agreed to a call | Harbourside Rust Meetup (organizer) | in writing: yes | delivery: 2027-03-04",
 "applicants": "",
 "facts": "Verdict: ready to publish the call (0 open gates, 0 fix-level findings)\nDisclaimer: Not legal, securities or investment advice: any capital, convertible instrument or equity award goes to counsel before it is announced, contest-law classification goes to counsel whatever the award, and each judge's own institutional disclosure obligations go to that judge's own institution, in writing.\nGates, in order:\n- Q6 - capital, a convertible instrument or equity - status: does not fire - route: No award carries capital, a convertible instrument or equity. Contest-law classification still goes to counsel whatever the award.\n- Q7 - a sponsor's say in who pitches or who wins - status: does not fire - route: Not sponsored.\n- Q8 - recording, streaming or press without prior notice - status: does not fire - route: The room is not recorded, streamed or open to press.\nAward items (2), in order:\n- A1 Demo Night winner - recognition - party: Harbourside Rust Meetup (organizer) - written: yes - delivery: 2027-02-25 - announce: yes (named party, in writing, dated)\n- A2 Introductions to two platform teams - committed introductions - party: Harbourside Rust Meetup (organizer) - written: yes - delivery: 2027-03-04 - announce: yes (named party, in writing, dated)\nAnnounceable now: Demo Night winner; Introductions to two platform teams\nPrize and opportunity structure (pick: Committed introductions): 1. Committed introductions; 2. Recognition only; 3. Equity-free cash; 4. A committed slot or in-kind item. Deleted, not demoted: Capital as the prize (Q5: no party has committed capital in writing). Notes: Dominance check: equity-free cash dominates capital (more value net of cost, less effort, less compliance cost); capital survives only through its promotion condition.\nConflict rule (pick: Scoring recusal only): 1. Scoring recusal only [promoted by Q4: the panel is operators and customers, not investors]; 2. Recusal plus disclosure to the pitching companies; 3. No stated rule; 4. Recusal plus disclosure plus a stated contact protocol. Notes: Dominance check: disclosure and recusal only each beat no stated rule on value and on compliance at once - only the effort of writing the rule down stops it.\nConflict rule picked: Scoring recusal only. Covers: the vote: a judge does not score a company they are close to or hold a competing position against. Does not cover: the access an investor judge gains by watching, and what a judge may do afterwards with what they saw; the judge's own institutional obligations stay with the judge's institution.\nPer judge, in order:\n- Ayo Bello (operator) - interest: none declared - handling: no declared tie - briefed on the rule like every judge\n- Mira Novak (customer) - interest: none declared - handling: no declared tie - briefed on the rule like every judge\nConflict matrix (judge x applicant): no applicants listed\nSelection funnel (pick: Open application, single review pass): 1. Open application, single review pass; 2. Nomination by named referrers; 3. Curated invitation; 4. Open application plus a screening call\nPublished route, as a sentence: Any company at the pre-product stage may apply until 2026-12-20. Applications are read by Tomas Berg and Wen Li (meetup organizers) against the published criteria and weights below, in a single review pass. Nobody else reads them, and they are deleted by 2028-02-28. Accepted companies are notified by 2027-01-08 and commit to pitching in person on 2027-02-18.\nPitch format (pick: Stage pitch plus judge questions): 1. Stage pitch plus judge questions; 2. Pre-scored submission with a finalist stage; 3. Closed-door deep dive with finalists. Deleted, not demoted: Stage pitch only (Q5: the award commits a third party (Introductions to two platform teams) - a committed outsider would act on a judgment reached without one unscripted answer). Notes: Q3: the block holds the field, so pre-scoring would spend the audience's block on fewer companies. This format menu is the skill's own construction, claimed rather than agreed with event-format-selection.\nBlock arithmetic (shape from hackathon-judging's feasibility gate, inputs re-measured for a stage): Per company (Stage pitch plus judge questions): 5 min pitch + 5 min questions + 1 min walk-on and walk-off = 11 min (self-set). Live window: 60-min block - 5 min judge deliberation - 2 min announcement buffer = 53 min (deliberation and buffer self-set). Holds 4 of the 4 companies expected; 9 min spare.\nRubric (4 dimensions, weights sum 100; top-weighted observed: yes), in order:\n- Problem and product legibility - weight 35 - observed - the block\n- Working product shown - weight 35 - observed - the block, live\n- Answers under question - weight 20 - observed - the block\n- Fit to the award on offer - weight 10 - claimed - the application's \"what the company wants\" field\nTie-break ladder, published in the call: 1. highest score on the highest-weighted observable dimension; 2. the most judges who placed the company first; 3. a named tie-break judge with no declared interest in either company decides, on the record, in one sentence; 4. a shared award, only where every item in it is divisible and the call said so in advance - never a re-pitch, never a random draw\nAnnouncement and contest path: challenges go to Tomas Berg, meetup organizer. Window: Challenges in writing to Tomas Berg, meetup organizer, until 2027-02-25, before anything of value is delivered (the first item, \"Introductions to two platform teams\", on 2027-03-04). What can change: a score shown to be outside the published criteria, or an interest a judge did not declare; never a re-pitch, never a random draw.\nPass threshold: 6 of 6 in writing with zero blanks - The published route onto the stage: yes; The criteria with their weights: yes; The pitch format with the block it fits inside: yes; The conflict rule with what it does and does not cover: yes; The award list with the party who committed each item: yes; The answers to all three gates: yes\nFindings (5):\n[info] contest_law (gates): Contest-law classification - whether this counts as a skill-based contest where it runs - goes to counsel whatever the award.\n[info] panel (block): The whole panel sits together and companies present serially, so the sampled-panel rung is unavailable; the levers left are the field, the slot, the block and pre-scoring.\n[info] floor_ok (timeline): Notification to the stage is 41 days - clear of the DevOpsDays 4-6 week travel floor.\n[info] six (measure): Pass threshold (structural, one only): 6 of 6 exist in writing with zero blanks - the call can go public on this count.\n[info] disclaimer (honesty): Not legal, securities or investment advice: any capital, convertible instrument or equity award goes to counsel before it is announced, contest-law classification goes to counsel whatever the award, and each judge's own institutional disclosure obligations go to that judge's own institution, in writing."
}

Reply:

{
 "task": "plan",
 "summary": "Ready to publish the call: no gate fires, both award items are committed in writing by the organizer with dates, and the block holds all 4 companies - publish the call before applications close on 2026-12-20.",
 "disclaimer": "Not legal, securities or investment advice: contest-law classification goes to counsel whatever the award, and each judge's own disclosure obligations go to that judge's own institution, in writing.",
 "verdict": "ready to publish the call",
 "gates": [
  {
   "gate": "Q6 - capital, a convertible instrument or equity",
   "status": "does not fire",
   "route": "No award carries capital, an instrument or equity; contest-law classification still goes to counsel before the call goes out."
  },
  {
   "gate": "Q7 - a sponsor's say in who pitches or who wins",
   "status": "does not fire",
   "route": "The demo night is not sponsored, so no one outside the organizers has a say in who pitches or who wins."
  },
  {
   "gate": "Q8 - recording, streaming or press without prior notice",
   "status": "does not fire",
   "route": "The room is not recorded, streamed or open to press, and the call says so."
  }
 ],
 "awards": [
  {
   "item": "Demo Night winner",
   "party": "Harbourside Rust Meetup (organizer)",
   "written": "yes",
   "announce": "yes"
  },
  {
   "item": "Introductions to two platform teams",
   "party": "Harbourside Rust Meetup (organizer)",
   "written": "yes",
   "announce": "yes"
  }
 ],
 "conflict": {
  "pick": "Scoring recusal only",
  "covers": "The vote: a judge does not score a company they are close to or hold a competing position against.",
  "does_not_cover": "The access a judge gains by watching and what they do afterwards with it - acceptable here because no investor sits on the panel - and each judge's own institutional obligations, which stay with their institution.",
  "per_judge": [
   {
    "judge": "Ayo Bello",
    "interest": "none declared",
    "handling": "No declared tie; briefed in writing on the recusal rule before seeing an application."
   },
   {
    "judge": "Mira Novak",
    "interest": "none declared",
    "handling": "No declared tie; briefed in writing on the recusal rule before seeing an application."
   }
  ]
 },
 "funnel": {
  "pick": "Open application, single review pass",
  "route_sentence": "Any company at the pre-product stage may apply until 2026-12-20. Applications are read by Tomas Berg and Wen Li (meetup organizers) against the published criteria and weights below, in a single review pass. Nobody else reads them, and they are deleted by 2028-02-28. Accepted companies are notified by 2027-01-08 and commit to pitching in person on 2027-02-18.",
  "reason": "Nothing in the interview moved this menu, so the default holds: an open call at one review pass, for companies the meetup would not otherwise find."
 },
 "format": {
  "pick": "Stage pitch plus judge questions",
  "arithmetic": "Per company: 5 min pitch + 5 min questions + 1 min walk-on and walk-off = 11 min (self-set). Live window: 60-min block - 5 min deliberation - 2 min announcement buffer = 53 min (self-set). Holds 4 of the 4 companies expected; 9 min spare.",
  "reason": "Stage pitch only is deleted because the introductions commit people to act on the result, and the block holds the field without pre-scoring."
 },
 "rubric": [
  {
   "dimension": "Problem and product legibility",
   "weight": 35,
   "kind": "observed",
   "how_judged": "In the block."
  },
  {
   "dimension": "Working product shown",
   "weight": 35,
   "kind": "observed",
   "how_judged": "In the block, live."
  },
  {
   "dimension": "Answers under question",
   "weight": 20,
   "kind": "observed",
   "how_judged": "In the block, from the judge questions."
  },
  {
   "dimension": "Fit to the award on offer",
   "weight": 10,
   "kind": "claimed",
   "how_judged": "The application's field for what the company wants."
  }
 ],
 "announcement": {
  "challenge_to": "Tomas Berg, meetup organizer",
  "window": "Challenges go in writing to Tomas Berg until 2027-02-25, before the introductions are made on 2027-03-04; a score outside the published criteria or an undeclared interest can change the result, a re-pitch or a random draw never."
 },
 "caveats": []
}

The page's check: kept - nothing to flag

Harbourside Rust Demo Night (a small meetup) - call

Verdict: ready to publish the call; 2 judges; 2 of 2 award items announceable; pass threshold 6 of 6; 0 fix-level findings.

Input:

{
 "task": "call",
 "event": "Contest: Harbourside Rust Demo Night; organizer: Harbourside Rust Meetup\nAlready published (Q1): nothing published yet\nPitching population (Q2): pre-product; decided by the meetup organizers; written where an applicant can read it: yes\nThe block (Q3): starts 2027-02-18 19:00; 60 minutes; fixed: no; companies expected: 4\nMeasured on the organizer's own stage (self-set): pitch 5 min, questions 5 min, walk-on and walk-off 1 min, judge deliberation 5 min, announcement buffer 2 min, finalists not set\nJudges (Q4): 2 judges, 0 active investors; a judge or audience invited because of who would be pitching: no\nCapital (Q6): no capital purpose stated; counsel has seen the structure: no\nSponsorship (Q7): sponsored no; a signed say: no say; a fee, ticket or package as a condition of pitching: no\nRecording (Q8): not recorded, streamed or open to press; applicants told before applying: no\nEdition (Q9): recurring; call published 2026-12-01; applications close 2026-12-20; slate notified 2027-01-08; challenge window closes 2027-02-25; applications deleted by 2028-02-28\nEffort ceiling (Q10): 10 organizer hours; reads applications: Tomas Berg and Wen Li (meetup organizers); chases third parties: Tomas Berg; data obligations: Tomas Berg; contact and challenges: Tomas Berg, meetup organizer\nAlready true: named referrers who would nominate no; an accelerator relationship predating the event no; slate half-filled by invitation before the call no; a fund partner on the organizing team no\nCarried from the plan (5): 1. Conflict rule covers: The vote: a judge does not score a company they are close to or hold a competing position against.; 2. Conflict rule does not cover: The access a judge gains by watching and what they do afterwards with it - acceptable here because no investor sits on the panel - and each judge's own institutional obligations, which stay with their institution.; 3. Ayo Bello: No declared tie; briefed in writing on the recusal rule before seeing an application.; 4. Mira Novak: No declared tie; briefed in writing on the recusal rule before seeing an application.; 5. Why this funnel: Nothing in the interview moved this menu, so the default holds: an open call at one review pass, for companies the meetup would not otherwise find.",
 "judges": "J1. Ayo Bello | operator | Ferrous Labs | none declared | none declared | declared in writing: yes\nJ2. Mira Novak | customer | Portside Logistics | none declared | none declared | declared in writing: yes",
 "awards": "A1. Demo Night winner | recognition | the title and a write-up on the meetup blog | Harbourside Rust Meetup (organizer) | in writing: yes | delivery: 2027-02-25\nA2. Introductions to two platform teams | committed introductions | both teams agreed to a call | Harbourside Rust Meetup (organizer) | in writing: yes | delivery: 2027-03-04",
 "applicants": "",
 "facts": "Verdict: ready to publish the call (0 open gates, 0 fix-level findings)\nDisclaimer: Not legal, securities or investment advice: any capital, convertible instrument or equity award goes to counsel before it is announced, contest-law classification goes to counsel whatever the award, and each judge's own institutional disclosure obligations go to that judge's own institution, in writing.\nGates, in order:\n- Q6 - capital, a convertible instrument or equity - status: does not fire - route: No award carries capital, a convertible instrument or equity. Contest-law classification still goes to counsel whatever the award.\n- Q7 - a sponsor's say in who pitches or who wins - status: does not fire - route: Not sponsored.\n- Q8 - recording, streaming or press without prior notice - status: does not fire - route: The room is not recorded, streamed or open to press.\nAward items (2), in order:\n- A1 Demo Night winner - recognition - party: Harbourside Rust Meetup (organizer) - written: yes - delivery: 2027-02-25 - announce: yes (named party, in writing, dated)\n- A2 Introductions to two platform teams - committed introductions - party: Harbourside Rust Meetup (organizer) - written: yes - delivery: 2027-03-04 - announce: yes (named party, in writing, dated)\nAnnounceable now: Demo Night winner; Introductions to two platform teams\nPrize and opportunity structure (pick: Committed introductions): 1. Committed introductions; 2. Recognition only; 3. Equity-free cash; 4. A committed slot or in-kind item. Deleted, not demoted: Capital as the prize (Q5: no party has committed capital in writing). Notes: Dominance check: equity-free cash dominates capital (more value net of cost, less effort, less compliance cost); capital survives only through its promotion condition.\nConflict rule (pick: Scoring recusal only): 1. Scoring recusal only [promoted by Q4: the panel is operators and customers, not investors]; 2. Recusal plus disclosure to the pitching companies; 3. No stated rule; 4. Recusal plus disclosure plus a stated contact protocol. Notes: Dominance check: disclosure and recusal only each beat no stated rule on value and on compliance at once - only the effort of writing the rule down stops it.\nConflict rule picked: Scoring recusal only. Covers: the vote: a judge does not score a company they are close to or hold a competing position against. Does not cover: the access an investor judge gains by watching, and what a judge may do afterwards with what they saw; the judge's own institutional obligations stay with the judge's institution.\nPer judge, in order:\n- Ayo Bello (operator) - interest: none declared - handling: no declared tie - briefed on the rule like every judge\n- Mira Novak (customer) - interest: none declared - handling: no declared tie - briefed on the rule like every judge\nConflict matrix (judge x applicant): no applicants listed\nSelection funnel (pick: Open application, single review pass): 1. Open application, single review pass; 2. Nomination by named referrers; 3. Curated invitation; 4. Open application plus a screening call\nPublished route, as a sentence: Any company at the pre-product stage may apply until 2026-12-20. Applications are read by Tomas Berg and Wen Li (meetup organizers) against the published criteria and weights below, in a single review pass. Nobody else reads them, and they are deleted by 2028-02-28. Accepted companies are notified by 2027-01-08 and commit to pitching in person on 2027-02-18.\nPitch format (pick: Stage pitch plus judge questions): 1. Stage pitch plus judge questions; 2. Pre-scored submission with a finalist stage; 3. Closed-door deep dive with finalists. Deleted, not demoted: Stage pitch only (Q5: the award commits a third party (Introductions to two platform teams) - a committed outsider would act on a judgment reached without one unscripted answer). Notes: Q3: the block holds the field, so pre-scoring would spend the audience's block on fewer companies. This format menu is the skill's own construction, claimed rather than agreed with event-format-selection.\nBlock arithmetic (shape from hackathon-judging's feasibility gate, inputs re-measured for a stage): Per company (Stage pitch plus judge questions): 5 min pitch + 5 min questions + 1 min walk-on and walk-off = 11 min (self-set). Live window: 60-min block - 5 min judge deliberation - 2 min announcement buffer = 53 min (deliberation and buffer self-set). Holds 4 of the 4 companies expected; 9 min spare.\nRubric (4 dimensions, weights sum 100; top-weighted observed: yes), in order:\n- Problem and product legibility - weight 35 - observed - the block\n- Working product shown - weight 35 - observed - the block, live\n- Answers under question - weight 20 - observed - the block\n- Fit to the award on offer - weight 10 - claimed - the application's \"what the company wants\" field\nTie-break ladder, published in the call: 1. highest score on the highest-weighted observable dimension; 2. the most judges who placed the company first; 3. a named tie-break judge with no declared interest in either company decides, on the record, in one sentence; 4. a shared award, only where every item in it is divisible and the call said so in advance - never a re-pitch, never a random draw\nAnnouncement and contest path: challenges go to Tomas Berg, meetup organizer. Window: Challenges in writing to Tomas Berg, meetup organizer, until 2027-02-25, before anything of value is delivered (the first item, \"Introductions to two platform teams\", on 2027-03-04). What can change: a score shown to be outside the published criteria, or an interest a judge did not declare; never a re-pitch, never a random draw.\nPass threshold: 6 of 6 in writing with zero blanks - The published route onto the stage: yes; The criteria with their weights: yes; The pitch format with the block it fits inside: yes; The conflict rule with what it does and does not cover: yes; The award list with the party who committed each item: yes; The answers to all three gates: yes\nFindings (5):\n[info] contest_law (gates): Contest-law classification - whether this counts as a skill-based contest where it runs - goes to counsel whatever the award.\n[info] panel (block): The whole panel sits together and companies present serially, so the sampled-panel rung is unavailable; the levers left are the field, the slot, the block and pre-scoring.\n[info] floor_ok (timeline): Notification to the stage is 41 days - clear of the DevOpsDays 4-6 week travel floor.\n[info] six (measure): Pass threshold (structural, one only): 6 of 6 exist in writing with zero blanks - the call can go public on this count.\n[info] disclaimer (honesty): Not legal, securities or investment advice: any capital, convertible instrument or equity award goes to counsel before it is announced, contest-law classification goes to counsel whatever the award, and each judge's own institutional disclosure obligations go to that judge's own institution, in writing."
}

Reply:

{
 "task": "call",
 "call": {
  "title": "Harbourside Rust Demo Night - call for demos",
  "for_whom": "Rust companies at the pre-product stage, as written by the meetup organizers.",
  "route": "Any company at the pre-product stage may apply until 2026-12-20. Applications are read by Tomas Berg and Wen Li (meetup organizers) against the published criteria and weights below, in a single review pass. Nobody else reads them, and they are deleted by 2028-02-28. Accepted companies are notified by 2027-01-08 and commit to pitching in person on 2027-02-18.",
  "submit": [
   "Company name and a one-line description",
   "Stage, in this call's words: pre-product",
   "What the product does, and what you will show working",
   "Who presents, and whether they are available on 2027-02-18",
   "What the company wants out of pitching - the award-fit criterion reads this field",
   "Any conflict you already know about with a judge; reviewers sign no NDA, so include nothing you need kept confidential"
  ],
  "criteria": [
   {
    "criterion": "Problem and product legibility",
    "weight": 35
   },
   {
    "criterion": "Working product shown",
    "weight": 35
   },
   {
    "criterion": "Answers under question",
    "weight": 20
   },
   {
    "criterion": "Fit to the award on offer",
    "weight": 10
   }
  ],
  "awards": [
   "Demo Night winner - the title and a write-up on the meetup blog, by Harbourside Rust Meetup",
   "Introductions to two platform teams - made by Harbourside Rust Meetup by 2027-03-04; both teams agreed to a call"
  ],
  "recording": "The room is not recorded, streamed or open to press.",
  "conflict_statement": "Judges declare any tie to an applicant in writing before reading applications, and a judge with a tie does not score that company.",
  "dates": [
   "Call published: 2026-12-01",
   "Applications close: 2026-12-20",
   "Demos notified: 2027-01-08",
   "Demo night: 2027-02-18 19:00",
   "Challenge window closes: 2027-02-25"
  ],
  "contact": "Tomas Berg, meetup organizer"
 },
 "briefing": {
  "rule": "Scoring recusal only",
  "declare": [
   "Any position you hold in an applicant, or in anything competing with one",
   "Whether your employer's rules prevent you from sitting or seeing this material",
   "Whether you intend to approach any company after the demo night"
  ],
  "contact_protocol": "None - not the page's pick.",
  "scoring": [
   "Score the observed dimensions from the demo itself; the one claimed dimension, award fit, only against the application.",
   "Score each company before the next one starts, and the first against the scale, not against nothing."
  ],
  "contest_path": "Challenges go in writing to Tomas Berg until 2027-02-25, before the introductions on 2027-03-04; a score outside the published criteria or an undeclared tie can change the result, a re-pitch or a random draw never."
 },
 "disclaimer": "Not legal, securities or investment advice: contest-law classification goes to counsel, and each judge's own disclosure obligations go to that judge's own institution, in writing.",
 "note": "Ready to publish: the call carries the criteria, the committed awards and the dates as the page has them."
}

The page's check: kept - nothing to flag

The free award list for the first sample

# Brindlemoor DevConf Demo Day - award list

_Not legal, securities or investment advice: any capital, convertible instrument or equity award goes to counsel before it is announced, contest-law classification goes to counsel whatever the award, and each judge's own institutional disclosure obligations go to that judge's own institution, in writing._

| Item | Kind | Detail | Delivered by | In writing | Delivery date | Announce |
|---|---|---|---|---|---|---|
| Equity-free cash prize | equity-free cash | 10,000 EUR paid to the company | Brindlemoor DevConf (organizer) | yes | 2027-04-30 | yes |
| Cloud credits | committed slot | 25,000 USD in credits | Cumulix Cloud | no | 2027-05-31 | no - not committed in writing |
| Introductions to three seed funds | committed introductions | each fund has agreed to take the meeting | Brindlemoor DevConf (organizer) | yes | 2027-04-15 | yes |

Only the items marked yes go in the call. Each one names the party who delivers it, in writing, by a date; anything else is somebody else's intention.

Build the input yourself

Load the engine in node (global.window = global; require("./slatekit.js"); require("./slatereply.js")), then:

const K = SlateKit, R = SlateReply;
const f = K.form({ name: "My Demo Day", blockStart: "2027-04-08 15:00", blockMinutes: "45", expected: "8", pitchMin: "3", qaMin: "1", changeMin: "1",
  judges: "A name | active investor | A fund | portfolio sectors | competing positions | yes", awards: "A prize | equity-free cash | detail | the organizer | yes | 2027-04-30",
  rubric: "Working product shown | 60 | observed | the block\nEvidence of traction | 40 | claimed | the application's traction field", callDate: "2027-01-11", closeDate: "2027-02-15" });
// f.gates (gate, status, route), f.awards (item, party, written, announce, why), f.menus (prize, conflict, funnel, format: options, deleted, notes, picks)
// f.judges (name, kind, interest, handling, cells), f.matrix, f.route, f.math (per, live, fits, need, text), f.rubric, f.window, f.six, f.verdict, f.findings
K.awardsMd(f); K.rubricCsv(f); K.matrixCsv(f)  // the free award list, scoring sheet and conflict matrix
const b = K.buildInput(f, "plan");             // or "call" (only when no gate is open)
const wire = K.toWire(b.input);                // POST this to /estimate and /run
// then: const reply = R.normalize(R.parseReply(job.output.output), "plan");
// R.check(reply, b)                           // {status: kept or flagged, notes}
// R.carryText(reply)                          // the lines the call lane carries - set them as f.raw.carry

Get a token for the steps below from /tokens.html.

Step 1 — a tiny client helper

One function that sends JSON and unwraps the response. Paste a personal token from /tokens.html, or leave it empty and mint a guest token in step 2.

BASE="https://api.skillsafe.ai/v1/app-api"
TOKEN="YOUR_TOKEN"   # from https://pitch-slate.skillsafe.ai/tokens.html
api() { # api METHOD PATH [JSON-BODY]
  curl -s -X "$1" "$BASE$2" -H "Content-Type: application/json" \
    ${TOKEN:+-H "Authorization: Bearer $TOKEN"} ${3:+--data "$3"}
}

Step 2 — a token

A guest token is enough for /me and /estimate. A run is metered, so it needs a personal token: sign in on /tokens.html and copy it from there.

# a guest token (enough for /me and /estimate); a run needs your personal token from /tokens.html
TOKEN=$(curl -s -X POST "$BASE/guest" -H "Content-Type: application/json" -d '{"slug":"pitch-slate"}' | jq -r '.data.token')

Step 3 — GET /me

Who the token is (subject_type: user or guest) and the credit balance.

api GET /me | jq '.data | {subject_type, credits}' 

Step 4 — POST /estimate

Free. The body is the run input itself, the bare object (never wrapped in {"input": ...}). hold_credits is a reservation, not the price; min_credits is what the balance must cover; model_alias reads gpt-terra.

# input.json: the run input object - {"task": "plan", "event": "Contest: ...; The block (Q3): ...", "judges": "J1. ... | active investor | ...", "awards": "A1. ... | equity-free cash | ...", "applicants": "C1. ...", "facts": "Verdict: ..."}
# - see the input table
api POST /estimate "$(cat input.json)" | jq '.data | {hold_credits, min_credits, model, model_alias, markup_bps, warnings}' 

Step 5 — POST /run, then poll the job

Send an Idempotency-Key built from the lane and the input: a retry with the same key never bills twice. The page uses pitch-slate:<task>:<inputHash>:a<attempt> - the lane is part of the key - and its one automatic reformat retry is a new attempt number, named in the page as one extra run. A plan carries summary, disclaimer, verdict, gates, awards, conflict, funnel, format, rubric, announcement and caveats; a call carries call, briefing, disclaimer and note. The code below prints the headline of either.

KEY="pitch-slate:plan:$(shasum -a 256 input.json | cut -c1-16):a1"
JOB=$(curl -s -X POST "$BASE/run" -H "Content-Type: application/json" -H "Authorization: Bearer $TOKEN" \
  -H "Idempotency-Key: $KEY" --data @input.json | jq -r '.data.job_id')
while :; do
  J=$(api GET "/jobs/$JOB"); S=$(echo "$J" | jq -r '.data.status')
  case "$S" in succeeded|failed|cancelled) break;; esac; sleep 2
done
echo "$J" | jq -r '.data.output.output' > reply.json   # one JSON object, the reply contract
echo "$J" | jq '.data | {charged_credits, truncated}'
jq -r '.verdict // .call.title, .summary // .note' reply.json
jq -r '(.gates // [])[] | .gate + ": " + .status' reply.json   # the plan's gates; a call has .call.criteria

Step 6 — POST /run-stream

The same run as Server-Sent Events, with the same input.json. Browsers receive progress ticks rather than text deltas; the final done event carries the reply.

# Server-Sent Events: tick/delta events while the job runs, then a final event with the job
curl -N -s -X POST "$BASE/run-stream" -H "Content-Type: application/json" -H "Authorization: Bearer $TOKEN" \
  -H "Idempotency-Key: pitch-slate:plan:$(shasum -a 256 input.json | cut -c1-16):a1" --data @input.json