2026-10-05 20:11:24 +00:00
<!doctype html>
< html lang = "en" >
< head >
2026-10-05 20:15:33 +00:00
< meta charset = "utf-8" >< meta name = "viewport" content = "width=device-width,initial-scale=1" >
2026-10-05 20:21:29 +00:00
< title > notplanned</ title >
< meta name = "description" content = "Deterministic GitHub scout for rejected demand, plus a curated opportunity layer." >
2026-10-05 20:11:24 +00:00
< style >
2026-10-05 20:21:29 +00:00
: root { color-scheme : light dark ; --bg : #f3f1eb ; --fg : #111 ; --muted : #6c6961 ; --line : #cbc7bc ; --card : #faf8f2 ; --accent : #ff5a1f ; --warm : #d99416 ; --watch : #7b8178 }
@ media ( prefers-color-scheme : dark ) {: root { --bg : #10100f ; --fg : #f2efe7 ; --muted : #a6a198 ; --line : #393732 ; --card : #171715 ; --accent : #ff7540 ; --warm : #efad32 ; --watch : #92988f }}
2026-10-05 20:15:33 +00:00
* { box-sizing : border-box } body { margin : 0 ; background : var ( -- bg ); color : var ( -- fg ); font-family : ui-monospace , SFMono-Regular , Menlo , Monaco , Consolas , "Liberation Mono" , monospace } a { color : inherit }. wrap { width : min ( 1180 px , calc ( 100 % - 36 px )); margin : auto }
2026-10-05 20:48:21 +00:00
header { min-height : 76 px ; border-bottom : 1 px solid var ( -- line ); display : flex ; align-items : center ; justify-content : space-between ; gap : 18 px }. brand { font-weight : 900 ; letter-spacing : -.05 em }. nav { display : flex ; gap : 14 px ; font-size : 11 px ; color : var ( -- muted ); flex-wrap : wrap ; justify-content : flex-end }. nav a { text-decoration : none }. nav a : hover { color : var ( -- fg )}
2026-10-05 20:21:29 +00:00
. hero { padding : 76 px 0 48 px ; display : grid ; grid-template-columns : 1.35 fr .65 fr ; gap : 42 px ; align-items : end } h1 { font-family : ui-sans-serif , system-ui , sans-serif ; font-size : clamp ( 50 px , 8 vw , 98 px ); line-height : .88 ; letter-spacing : -.075 em ; margin : 0 }. dek { font-family : ui-sans-serif , system-ui , sans-serif ; color : var ( -- muted ); font-size : 18 px ; line-height : 1.45 ; margin : 0 }
. stats { display : grid ; grid-template-columns : repeat ( 6 , 1 fr ); border : 1 px solid var ( -- line ); border-radius : 16 px ; overflow : hidden ; margin-bottom : 58 px }. stat { padding : 15 px 16 px ; border-right : 1 px solid var ( -- line )}. stat : last-child { border : 0 }. stat strong { display : block ; font-family : ui-sans-serif , system-ui , sans-serif ; font-size : 22 px }. stat span { font-size : 9 px ; text-transform : uppercase ; letter-spacing : .1 em ; color : var ( -- muted )}
. section-head { display : flex ; justify-content : space-between ; gap : 24 px ; align-items : end ; margin-bottom : 17 px }. section-head h2 { font-family : ui-sans-serif , system-ui , sans-serif ; font-size : 30 px ; letter-spacing : -.04 em ; margin : 0 }. section-head p { margin : 0 ; max-width : 520 px ; text-align : right ; font-size : 12 px ; line-height : 1.45 ; color : var ( -- muted )}
. curated { display : grid ; grid-template-columns : repeat ( 3 , minmax ( 0 , 1 fr )); gap : 12 px ; margin-bottom : 64 px }. curated-card , . card { display : flex ; flex-direction : column ; background : var ( -- card ); border : 1 px solid var ( -- line ); border-radius : 17 px ; padding : 20 px ; text-decoration : none ; transition : .12 s ease }. curated-card { min-height : 280 px }. card { min-height : 250 px }. curated-card : hover , . card : hover { transform : translateY ( -2 px ); border-color : var ( -- fg )}
. topline { display : flex ; justify-content : space-between ; gap : 12 px ; margin-bottom : 18 px }. repo , . meta , . why { font-size : 10.5 px ; color : var ( -- muted )}. score { min-width : 34 px ; height : 34 px ; border : 1 px solid var ( -- accent ); border-radius : 50 % ; display : grid ; place-items : center ; color : var ( -- accent ); font-weight : 800 }. heat { font-size : 9 px ; text-transform : uppercase ; letter-spacing : .1 em ; border : 1 px solid currentColor ; border-radius : 999 px ; padding : 5 px 7 px }. heat . hot { color : var ( -- accent )}. heat . warm { color : var ( -- warm )}. heat . watch { color : var ( -- watch )}
h3 { font-family : ui-sans-serif , system-ui , sans-serif ; font-size : 21 px ; line-height : 1.08 ; letter-spacing : -.035 em ; margin : 0 0 8 px }. thesis , . move { font-family : ui-sans-serif , system-ui , sans-serif ; font-size : 14.5 px ; line-height : 1.45 }. thesis { margin : 18 px 0 auto }. move { margin : 18 px 0 auto }. why { border-top : 1 px solid var ( -- line ); padding-top : 11 px ; margin-top : 17 px ; line-height : 1.45 }. why strong { color : var ( -- fg )}
. note { border-left : 3 px solid var ( -- accent ); padding-left : 15 px ; color : var ( -- muted ); font-size : 11.5 px ; line-height : 1.55 ; margin-bottom : 20 px }. grid { display : grid ; grid-template-columns : repeat ( 2 , minmax ( 0 , 1 fr )); gap : 14 px ; margin-bottom : 64 px }. empty { border : 1 px dashed var ( -- line ); padding : 28 px ; border-radius : 16 px ; color : var ( -- muted )}
2026-10-05 20:15:33 +00:00
footer { border-top : 1 px solid var ( -- line ); padding : 24 px 0 36 px ; display : flex ; justify-content : space-between ; gap : 20 px ; color : var ( -- muted ); font-size : 11 px }
2026-10-05 20:21:29 +00:00
@ media ( max-width : 980px ) {. curated { grid-template-columns : 1 fr 1 fr }. stats { grid-template-columns : repeat ( 3 , 1 fr )}. stat : nth-child ( 3n ) { border-right : 0 }. stat : nth-child ( -n + 3 ) { border-bottom : 1 px solid var ( -- line )}}
@ media ( max-width : 820px ) {. hero { grid-template-columns : 1 fr }. grid { grid-template-columns : 1 fr }. section-head { align-items : start ; flex-direction : column }. section-head p { text-align : left }}
2026-10-05 20:48:21 +00:00
@ media ( max-width : 620px ) {. curated { grid-template-columns : 1 fr }. stats { grid-template-columns : 1 fr 1 fr }. stat : nth-child ( odd ) { border-right : 1 px solid var ( -- line )}. stat : nth-child ( even ) { border-right : 0 }. stat { border-bottom : 1 px solid var ( -- line )}. stat : nth-last-child ( -n + 2 ) { border-bottom : 0 }}
2026-10-05 20:11:24 +00:00
</ style >
</ head >
2026-10-05 20:15:33 +00:00
< body >< div class = "wrap" >
2026-10-05 20:21:29 +00:00
< header >
< div class = "brand" > notplanned</ div >
2026-10-07 04:26:00 +00:00
< div class = "nav" >< a href = "/claude/" > claude</ a >< a href = "/trending/" > trending</ a >< a href = "#curated" > curated</ a >< a href = "#radar" > raw radar</ a ></ div >
2026-10-05 20:21:29 +00:00
</ header >
< section class = "hero" >
< h1 > github scout.</ h1 >
< p class = "dek" > Two layers: a cheap deterministic radar that continuously searches GitHub for rejected demand, and a smaller curated list of plays worth thinking about harder.</ p >
2026-10-05 20:11:24 +00:00
</ section >
2026-10-05 20:21:29 +00:00
< section class = "stats" >
< div class = "stat" >< strong > __COUNT__</ strong >< span > raw candidates</ span ></ div >
< div class = "stat" >< strong > __CURATED_COUNT__</ strong >< span > curated plays</ span ></ div >
< div class = "stat" >< strong > __REPOS__</ strong >< span > repos scanned</ span ></ div >
< div class = "stat" >< strong > __SEEDS__</ strong >< span > seed repos</ span ></ div >
< div class = "stat" >< strong > __DISCOVERED__</ strong >< span > discovered repos</ span ></ div >
< div class = "stat" >< strong > __UPDATED__</ strong >< span > last radar · UTC</ span ></ div >
</ section >
< section id = "curated" >
< div class = "section-head" >
< h2 > curated</ h2 >
< p > Promoted opportunities with an actual thesis and smallest next move. Static for now; no scheduled model job burning tokens.</ p >
</ div >
< div class = "curated" > __CURATED_CARDS__</ div >
</ section >
< section id = "radar" >
< div class = "section-head" >
< h2 > raw deterministic radar</ h2 >
< p > No model judgment. Seed repos + deterministic GitHub repo discovery → rejected issues → explicit score → ranked candidates.</ p >
</ div >
< div class = "note" > Minimum score: __THRESHOLD__. Score = rejection + recency + engagement + externalizability + repository activity/scale/issue surface. Repos are either permanent seeds or discovered from fixed GitHub search queries. Same inputs, same ranking.</ div >
< div class = "grid" > __CARDS__</ div >
</ section >
2026-10-07 04:26:00 +00:00
< footer >< span > notplanned · GitHub scout</ span >< span > deterministic radar refreshes every 6h · < a href = "/radar.json" > radar.json</ a > · < a href = "/curated.json" > curated.json</ a ></ span ></ footer >
2026-10-07 04:04:23 +00:00
</ div ></ body ></ html >