@@ -77,12 +77,130 @@ const teamMembers = [
7777 } ,
7878]
7979
80+ const researchPapers = {
81+ maia1 : {
82+ title :
83+ 'Aligning Superhuman AI with Human Behavior: Chess as a Model System' ,
84+ link : 'https://www.cs.toronto.edu/~ashton/pubs/maia-kdd2020.pdf' ,
85+ description :
86+ 'This paper introduces Maia, a chess engine trained to imitate real human moves at different rating levels. Instead of always picking the best move, Maia predicts what a human player of a given skill would actually play. This makes it ideal for training, game analysis, and even coaching, as it helps players learn from realistic decisions rather than computer perfection. It was the first AI to prioritize human-likeness over engine strength, making it a powerful tool for improvement.' ,
87+ } ,
88+ maia2 : {
89+ title : 'Maia‑2: A Unified Model for Human‑AI Alignment in Chess' ,
90+ link : 'https://www.cs.toronto.edu/~ashton/pubs/maia2-neurips2024.pdf' ,
91+ description :
92+ "Maia‑2 is the evolution of Maia into a single model that can simulate any skill level in chess. Instead of using separate models for different ratings, it understands and adapts to your level in real time. Whether you're a beginner or a master, Maia‑2 predicts the moves players like you would actually make. It's built to feel human, teach naturally, and support personalized analysis without needing to toggle between bots." ,
93+ } ,
94+ others : [
95+ {
96+ title : 'Learning Personalized Models of Human Behavior in Chess' ,
97+ link : 'https://www.cs.toronto.edu/~ashton/pubs/maia-personalized2021.pdf' ,
98+ description :
99+ 'Creates a version of Maia that learns your individual playing style and mirrors the way you think on the board.' ,
100+ } ,
101+ {
102+ title :
103+ 'Detecting Individual Decision‑Making Style: Exploring Behavioral Stylometry in Chess' ,
104+ link : 'https://www.cs.toronto.edu/~ashton/pubs/maia-personalized2021.pdf' ,
105+ description :
106+ 'Shows that your chess style is as unique as a fingerprint, allowing the model to recognize you just by your move choices.' ,
107+ } ,
108+ {
109+ title : 'Learning Models of Individual Behavior in Chess' ,
110+ link : 'https://www.cs.toronto.edu/~ashton/pubs/maia-personalized2021.pdf' ,
111+ description :
112+ 'Extends personalized Maia to thousands of players, showing it can consistently capture how real people play across the rating ladder.' ,
113+ } ,
114+ {
115+ title :
116+ 'Designing Skill‑Compatible AI: Methodologies and Frameworks in Chess' ,
117+ link : 'https://www.cs.toronto.edu/~ashton/pubs/maia-partner-iclr24.pdf' ,
118+ description :
119+ 'Explains how to build training bots that play at your level and support fair, instructive, and enjoyable games.' ,
120+ } ,
121+ ] ,
122+ }
123+
124+ const PaperCard = ( {
125+ paper,
126+ featured = false ,
127+ className = '' ,
128+ } : {
129+ paper : typeof researchPapers . maia1
130+ featured ?: boolean
131+ className ?: string
132+ } ) => (
133+ < motion . div
134+ className = { `group relative flex h-full flex-col rounded-lg bg-background-1 transition-all duration-200 ${ featured ? '' : 'hover:scale-[1.02]' } ${ className } ${ featured ? 'overflow-hidden' : 'p-6' } ` }
135+ initial = { { opacity : 0 , y : 20 } }
136+ whileInView = { { opacity : 1 , y : 0 } }
137+ viewport = { { once : true } }
138+ transition = { { duration : 0.4 } }
139+ >
140+ < div
141+ className = { `absolute ${ featured ? 'right-4 top-4 z-10' : 'right-4 top-4' } ` }
142+ >
143+ < span className = "material-symbols-outlined text-sm text-primary/60" >
144+ arrow_outward
145+ </ span >
146+ </ div >
147+ { featured && (
148+ < div className = "aspect-[4/3] w-full overflow-hidden" >
149+ < img
150+ src = { `/assets/papers/${ paper . title . includes ( 'Maia‑2' ) ? 'maia2' : 'maia1' } .jpg` }
151+ alt = { `${ paper . title } paper preview` }
152+ className = "h-full w-full object-cover object-top"
153+ />
154+ </ div >
155+ ) }
156+ < div className = { `flex flex-1 flex-col items-start justify-between` } >
157+ < div className = { `flex flex-col ${ featured ? 'p-6' : '' } ` } >
158+ < h4
159+ className = { `pr-6 font-bold leading-tight ${ featured ? 'text-center text-base' : 'text-left text-lg' } ` }
160+ >
161+ { paper . title }
162+ </ h4 >
163+ < p
164+ className = { `mt-3 text-sm text-primary/80 ${ featured ? 'text-center leading-relaxed' : 'text-left' } ` }
165+ >
166+ { paper . description }
167+ </ p >
168+ </ div >
169+ { featured && (
170+ < a
171+ href = { paper . link }
172+ target = "_blank"
173+ rel = "noreferrer"
174+ className = "mt-auto inline-flex w-full items-center justify-center bg-human-4/80 px-5 py-3 font-medium text-primary transition duration-200 hover:bg-human-4"
175+ >
176+ Read { paper . title . includes ( 'Maia‑2' ) ? 'Maia 2' : 'Maia 1' } Paper
177+ </ a >
178+ ) }
179+ </ div >
180+
181+ { ! featured && (
182+ < a
183+ href = { paper . link }
184+ target = "_blank"
185+ rel = "noreferrer"
186+ className = "absolute inset-0 rounded-lg"
187+ aria-label = { `Read paper: ${ paper . title } ` }
188+ />
189+ ) }
190+ </ motion . div >
191+ )
192+
80193export const AboutMaia = ( ) => {
81194 const [ projectRef , projectInView ] = useInView ( {
82195 triggerOnce : false ,
83196 threshold : 0.2 ,
84197 } )
85198
199+ const [ researchRef , researchInView ] = useInView ( {
200+ triggerOnce : false ,
201+ threshold : 0.2 ,
202+ } )
203+
86204 const [ teamRef , teamInView ] = useInView ( {
87205 triggerOnce : false ,
88206 threshold : 0.2 ,
@@ -94,10 +212,10 @@ export const AboutMaia = () => {
94212 } )
95213
96214 return (
97- < div className = "font-helvetica [&_a]:text-human-3" >
215+ < div >
98216 < section
99217 id = "main_info"
100- className = "relative flex flex-col items-center justify-center bg-background-1 py-20 text-center"
218+ className = "relative flex flex-col items-center justify-center bg-background-2 py-20 text-center"
101219 ref = { projectRef }
102220 >
103221 < div className = "flex max-w-3xl flex-col items-center justify-center px-4 md:px-0" >
@@ -130,31 +248,31 @@ export const AboutMaia = () => {
130248 Maia 2 in our paper that appeared at NeurIPS 2024.
131249 </ p >
132250 </ div >
133- < br / >
134- < div className = "flex items-center justify-center gap-2 " >
135- < a
136- target = "_blank"
137- rel = "noreferrer"
138- href = "https://arxiv.org/pdf/2006.01855"
139- className = "rounded bg-human-3 px-6 py-2 !text-primary transition duration-200 hover:bg-human-4 "
140- >
141- Read Maia-1 Paper
142- </ a >
143- < a
144- target = "_blank "
145- rel = "noreferrer"
146- href = "https://www.cs.toronto.edu/~ashton/pubs/maia2-neurips2024.pdf"
147- className = "rounded bg-human-3 px-6 py-2 !text-primary transition duration-200 hover:bg-human-4"
148- >
149- Read Maia-2 Paper
150- </ a >
251+ </ div >
252+ < div className = "mx-auto max-w-7xl px-4 pt-16 " >
253+ < div className = "grid gap-6 md:grid-cols-3" >
254+ < PaperCard
255+ paper = { researchPapers . maia1 }
256+ featured = { true }
257+ className = ""
258+ / >
259+ < PaperCard
260+ paper = { researchPapers . maia2 }
261+ featured = { true }
262+ className = " "
263+ />
264+ < div className = "flex flex-col gap-4" >
265+ { researchPapers . others . map ( ( paper , index ) => (
266+ < PaperCard key = { index } paper = { paper } className = "flex-1" / >
267+ ) ) }
268+ </ div >
151269 </ div >
152270 </ div >
153271 </ section >
154272
155273 < section
156274 id = "team_info"
157- className = "relative overflow-hidden bg-background-2 py-16"
275+ className = "relative overflow-hidden bg-background-1 py-16"
158276 ref = { teamRef }
159277 >
160278 < div className = "relative z-10 mx-auto my-0 max-w-[1200px]" >
@@ -170,7 +288,7 @@ export const AboutMaia = () => {
170288 </ section >
171289
172290 < section
173- className = "relative flex flex-col items-center justify-center gap-2 overflow-hidden bg-background-1 py-20"
291+ className = "relative flex flex-col items-center justify-center gap-2 overflow-hidden bg-background-2 py-20"
174292 ref = { acknowledgementsRef }
175293 >
176294 < h3 className = "text-center text-xl font-bold uppercase" >
0 commit comments