Product 1
Version 1 product definition for the agentic prediction-market analytics platform
Updated 2026-09-20
doc4
titleProduct 1
descriptionVersion 1 product definition for the agentic prediction-market analytics platform
iconcompass
updated2026-09-20
product4
namekalshi-ai
version1
one_linerAgentic research and trade-recommendation platform for prediction markets. Kalshi first, venue-agnostic by design.
statusdesign
scope3
in8
[0]Agentic scan of all open markets on a schedule, producing a ranked shortlist
[1]Agentic deep analysis of a single market on demand
[2]1
Trade recommendation per marketside, size, entry, exit, invalidation, or abstain
[3]Plain-language explanation of every recommendation
[4]Logged recommendations with resolution tracking and public calibration stats
[5]Freemium tiers with credit metering
[6]Stablecoin payments
[7]Clerk authentication
out4
- Live trading account management of any kind
- Placing, modifying, or cancelling orders on behalf of users
- Holding user exchange API keys or wallet keys
- Portfolio sync from exchange accounts
decided1
D14
idD1
decisionVersion 1 is analysis and recommendation only. No execution.
decided_on2026-09-20
noteUsers act on recommendations themselves. The app deep-links to the market on the venue. The provider interface excludes execution methods entirely so the boundary is structural, not a config flag.
venues4
design_ruleOne MarketProvider interface, one normalized market model, one adapter per venue. Nothing outside the adapter may import venue-specific types.
normalized_model3
market10
- id
- venue
- event_id
- title
- resolution_rules
- resolution_source
- outcomes[]
- close_time
- resolve_time
- status
outcome7
- label
- price
- bid
- ask
- volume_24h
- open_interest
- liquidity_score
history_point3
- ts
- price
- volume
provider_interface6
- listMarkets(filter)
- getMarket(id)
- getOrderBook(id)
- getHistory(id, range)
- getEvents(filter)
- getResolution(id)
adapters2
[0]4
venuekalshi
priority1
apiREST v2 plus WebSocket; RSA-signed auth for authenticated endpoints
notesseries -> event -> market hierarchy; prices in cents
[1]4
venuepolymarket
priority2
apiGamma API for metadata, CLOB API for prices
notesoutcome tokens priced in USDC; first target for cross-venue checks
agents4
shared_rules5
- Every run has hard caps on tool calls, tokens, and wall time
- Every run is a background job, never inside a request handler
- Every output is structured and stored before any UI renders it
- Web research must cite sources; model recall is not evidence
- Resolution rules are quoted verbatim in output, with the agent's reading of edge cases
scanner5
purposeFind markets worth attention across all open markets
cadencescheduled; delayed for free tier, fresh for paid tiers
model_tiercost-efficient
signals5
- price vs base rate
- thin liquidity or wide spread
- mutually exclusive outcomes summing well over 1.0
- same event priced differently across venues
- high volume near resolution
outputranked shortlist with one-line rationale per market; shared across all users
analyst5
purposeForm an independent probability for one market
triggeron demand, or automatically for paid watchlists
model_tierfrontier
steps5
- read resolution rules literally
- pull order book and price history
- research the underlying question with a search tool
- estimate probability with a confidence band
- compare to market price and state the edge
outputprobability, confidence, edge, evidence with citations, rules reading
strategist4
purposeTurn an analyst result into a recommendation
positions4
- YES
- NO
- ABSTAIN
- WAIT
output6
- position
- size_guidance
- entry_price
- exit_conditions
- invalidation
- explanation
rules2
- ABSTAIN rate is reported, never hidden
- never references user account balances (none exist in v1)
track_record4
purposeCredibility and marketing; built before the first user
log_per_recommendation8
- market_id
- venue
- ts
- market_price_at_rec
- model_probability
- position
- tier_that_produced_it
- model_ids_used
on_resolution3
- outcome
- brier_contribution
- hypothetical_pnl_at_rec_price
public_page3
- Brier score over time
- abstain rate
- hypothetical P&L by position type and venue
tiers5
meteringcredits
free3
price0
includes4
- browse and search all markets
- delayed scanner shortlist
- small monthly credit grant for deep analyses
- public track record
cost_notescanner and track record are shared computation; cheap to serve
standard1
includes5
- daily fresh scanner
- meaningful monthly credit grant
- watchlists
- resolution alerts
- private history
elite1
includes5
- real-time scanner
- cross-venue arbitrage feed
- auto-analysis on watchlist changes
- API access
- larger credit grant
pricingTBD
payments5
methodstablecoins only
constraintwallets cannot be charged on a schedule
candidate_models2
- prepaid_periods
- credit_top_ups
candidate_processors2
- Coinbase Commerce
- Stripe stablecoin
ruleno custody of funds or keys on our side in v1
auth3
providerclerk
ruletier and entitlements live in our database keyed by Clerk user id, not Clerk metadata
noteClerk Billing is card-based via Stripe; not used
stack7
webNext.js 16.3.5
languageTypeScript
package_managerpnpm
dbDynamoDB
jobsInngest or Trigger.dev
llmClaude API with tool use
layout4
- apps/web
- packages/providers
- packages/agents
- packages/db
risks5
R14
idR1
riskPersonalized paid recommendations may look like Commodity Trading Advisor activity
mitigationFintech counsel before taking payment; research-and-analytics framing; disclaimers
statusopen
R23
idR2
riskLLM misreads resolution criteria
mitigationverbatim rules in output; explicit edge-case reading; citations required
R33
idR3
riskUnbounded agent cost on free users
mitigationhard caps per run; credit check before job start; shared scanner output
R43
idR4
riskStablecoin-only checkout limits conversion
mitigationdecide on card fallback timing; see D3
R53
idR5
riskVenue API terms may restrict advisory use
mitigationreview Kalshi and Polymarket developer terms during adapter work
open_decisions5
D23
idD2
questionStablecoin recurrence model
options3
- prepaid_periods
- credit_top_ups
- both
D32
idD3
questionCard fallback ever, later, or never
D42
idD4
questionLegal counsel engaged, or draft the questions to bring to one
D53
idD5
questionFree tier split between shared computation and per-user quota
leanshared scanner output plus a small personal quota
D62
idD6
questionPricing for standard and elite
milestones5
M15
idM1
namevertical slice
goalKalshi adapter, one market analyzed end to end, recommendation logged with tracked outcome
excludesauth, billing, UI polish
whyvalidates the interesting part before any infrastructure that depends on it
M22
idM2
namescanner and track record
M32
idM3
nameauth, tiers, credit ledger
M42
idM4
namestablecoin payments
M52
idM5
namepolymarket adapter and cross-venue signals
1# product-1.yaml2# Product definition for version 1 of an agentic analytics platform on prediction markets.3# Source: design exploration on 2026-09-20. Update this file as decisions are made.45doc:6 title: Product 17 description: Version 1 product definition for the agentic prediction-market analytics platform8 icon: compass9 updated: 2026-09-201011product:12 name: kalshi-ai # working name; repo name, not final brand13 version: 114 one_liner: >15 Agentic research and trade-recommendation platform for prediction markets.16 Kalshi first, venue-agnostic by design.17 status: design1819scope:20 in:21 - Agentic scan of all open markets on a schedule, producing a ranked shortlist22 - Agentic deep analysis of a single market on demand23 - Trade recommendation per market: side, size, entry, exit, invalidation, or abstain24 - Plain-language explanation of every recommendation25 - Logged recommendations with resolution tracking and public calibration stats26 - Freemium tiers with credit metering27 - Stablecoin payments28 - Clerk authentication29 out:30 - Live trading account management of any kind31 - Placing, modifying, or cancelling orders on behalf of users32 - Holding user exchange API keys or wallet keys33 - Portfolio sync from exchange accounts34 decided:35 - id: D136 decision: Version 1 is analysis and recommendation only. No execution.37 decided_on: 2026-09-2038 note: >39 Users act on recommendations themselves. The app deep-links to the market40 on the venue. The provider interface excludes execution methods entirely41 so the boundary is structural, not a config flag.4243venues:44 design_rule: >45 One MarketProvider interface, one normalized market model, one adapter per venue.46 Nothing outside the adapter may import venue-specific types.47 normalized_model:48 market:49 - id # venue-prefixed, e.g. kalshi:KXBTC-26SEP30-T10000050 - venue51 - event_id52 - title53 - resolution_rules # verbatim text from the venue54 - resolution_source55 - outcomes[] # binary markets have exactly two56 - close_time57 - resolve_time58 - status # open | closed | resolved59 outcome:60 - label61 - price # probability 0..1, normalized from cents or USDC62 - bid63 - ask64 - volume_24h65 - open_interest66 - liquidity_score # derived, venue-agnostic67 history_point:68 - ts69 - price70 - volume71 provider_interface:72 - listMarkets(filter)73 - getMarket(id)74 - getOrderBook(id)75 - getHistory(id, range)76 - getEvents(filter)77 - getResolution(id)78 adapters:79 - venue: kalshi80 priority: 181 api: REST v2 plus WebSocket; RSA-signed auth for authenticated endpoints82 notes: series -> event -> market hierarchy; prices in cents83 - venue: polymarket84 priority: 285 api: Gamma API for metadata, CLOB API for prices86 notes: outcome tokens priced in USDC; first target for cross-venue checks8788agents:89 shared_rules:90 - Every run has hard caps on tool calls, tokens, and wall time91 - Every run is a background job, never inside a request handler92 - Every output is structured and stored before any UI renders it93 - Web research must cite sources; model recall is not evidence94 - Resolution rules are quoted verbatim in output, with the agent's reading of edge cases95 scanner:96 purpose: Find markets worth attention across all open markets97 cadence: scheduled; delayed for free tier, fresh for paid tiers98 model_tier: cost-efficient99 signals:100 - price vs base rate101 - thin liquidity or wide spread102 - mutually exclusive outcomes summing well over 1.0103 - same event priced differently across venues104 - high volume near resolution105 output: ranked shortlist with one-line rationale per market; shared across all users106 analyst:107 purpose: Form an independent probability for one market108 trigger: on demand, or automatically for paid watchlists109 model_tier: frontier110 steps:111 - read resolution rules literally112 - pull order book and price history113 - research the underlying question with a search tool114 - estimate probability with a confidence band115 - compare to market price and state the edge116 output: probability, confidence, edge, evidence with citations, rules reading117 strategist:118 purpose: Turn an analyst result into a recommendation119 positions:120 - YES121 - NO122 - ABSTAIN # fairly priced or too uncertain; a first-class answer123 - WAIT # conditional entry with a stated trigger price124 output:125 - position126 - size_guidance # fraction of stated risk budget, Kelly-derived and capped127 - entry_price128 - exit_conditions129 - invalidation # what would make the thesis wrong130 - explanation131 rules:132 - ABSTAIN rate is reported, never hidden133 - never references user account balances (none exist in v1)134135track_record:136 purpose: Credibility and marketing; built before the first user137 log_per_recommendation:138 - market_id139 - venue140 - ts141 - market_price_at_rec142 - model_probability143 - position144 - tier_that_produced_it145 - model_ids_used146 on_resolution:147 - outcome148 - brier_contribution149 - hypothetical_pnl_at_rec_price150 public_page:151 - Brier score over time152 - abstain rate153 - hypothetical P&L by position type and venue154155tiers:156 metering: credits # per-action cost, tuned without changing the product157 free:158 price: 0159 includes:160 - browse and search all markets161 - delayed scanner shortlist162 - small monthly credit grant for deep analyses163 - public track record164 cost_note: scanner and track record are shared computation; cheap to serve165 standard:166 includes:167 - daily fresh scanner168 - meaningful monthly credit grant169 - watchlists170 - resolution alerts171 - private history172 elite:173 includes:174 - real-time scanner175 - cross-venue arbitrage feed176 - auto-analysis on watchlist changes177 - API access178 - larger credit grant179 pricing: TBD180181payments:182 method: stablecoins only # per founder direction; card fallback is an open question183 constraint: wallets cannot be charged on a schedule184 candidate_models:185 - prepaid_periods # pay 1, 3, or 12 months up front186 - credit_top_ups # buy balance; tiers become spend thresholds187 candidate_processors:188 - Coinbase Commerce # hosted USDC checkout, webhooks, no custody189 - Stripe stablecoin # same posture, existing subscription tooling190 rule: no custody of funds or keys on our side in v1191192auth:193 provider: clerk194 rule: tier and entitlements live in our database keyed by Clerk user id, not Clerk metadata195 note: Clerk Billing is card-based via Stripe; not used196197stack:198 web: Next.js 16.3.5 # read node_modules/next/dist/docs before writing code199 language: TypeScript200 package_manager: pnpm201 db: DynamoDB # single-table design; AWS SDK v3 with DynamoDB Toolbox or ElectroDB202 jobs: Inngest or Trigger.dev # scanner schedule, long-running analyses, retries203 llm: Claude API with tool use # verify current model ids and pricing from docs at build time204 layout:205 - apps/web # Next app206 - packages/providers # MarketProvider interface and adapters207 - packages/agents # scanner, analyst, strategist208 - packages/db # table definitions, entity models, access patterns209210risks:211 - id: R1212 risk: Personalized paid recommendations may look like Commodity Trading Advisor activity213 mitigation: Fintech counsel before taking payment; research-and-analytics framing; disclaimers214 status: open215 - id: R2216 risk: LLM misreads resolution criteria217 mitigation: verbatim rules in output; explicit edge-case reading; citations required218 - id: R3219 risk: Unbounded agent cost on free users220 mitigation: hard caps per run; credit check before job start; shared scanner output221 - id: R4222 risk: Stablecoin-only checkout limits conversion223 mitigation: decide on card fallback timing; see D3224 - id: R5225 risk: Venue API terms may restrict advisory use226 mitigation: review Kalshi and Polymarket developer terms during adapter work227228open_decisions:229 - id: D2230 question: Stablecoin recurrence model231 options: [prepaid_periods, credit_top_ups, both]232 - id: D3233 question: Card fallback ever, later, or never234 - id: D4235 question: Legal counsel engaged, or draft the questions to bring to one236 - id: D5237 question: Free tier split between shared computation and per-user quota238 lean: shared scanner output plus a small personal quota239 - id: D6240 question: Pricing for standard and elite241242milestones:243 - id: M1244 name: vertical slice245 goal: Kalshi adapter, one market analyzed end to end, recommendation logged with tracked outcome246 excludes: auth, billing, UI polish247 why: validates the interesting part before any infrastructure that depends on it248 - id: M2249 name: scanner and track record250 - id: M3251 name: auth, tiers, credit ledger252 - id: M4253 name: stablecoin payments254 - id: M5255 name: polymarket adapter and cross-venue signals