Thanks for your interest in contributing. Ascent is an open-source AI literacy curriculum for product managers, engineering managers, and individual contributors — contributions that improve the content or the platform are equally welcome.
- New scenarios — realistic AI decision situations for PMs, EMs, or ICs
- New modules — focused reading on AI concepts, LLM mechanics, adoption practices, or team dynamics
- New missions — applied exercises that users complete on their actual work
- Bug fixes — any issue in the platform code
- Platform improvements — UI, performance, accessibility, developer experience
- Translations — curriculum content in languages other than English
The highest-value contributions are new content. Good scenarios and missions are hard to write — if you have hands-on experience with AI adoption in product or engineering roles, that's exactly what this curriculum needs.
git clone https://github.com/divarun/ascent.git
cd ascent
npm install
cp .env .env.local # set DATABASE_URL and NEXTAUTH_SECRET
npm run db:setup
npm run devFull setup reference: detailed.md
Content lives in src/data/ as TypeScript files. Each piece of content is a single file — add the file, register it in the index (modules.ts, scenarios.ts, or missions.ts), then re-seed.
Good scenarios:
- Present a realistic, specific situation — not a vague hypothetical
- Have a clear time pressure or decision point
- Address at least one real pattern from PM/EM/IC practice
- Include a rubric that defines what a strong response covers
- Include
staticFeedbackthat is genuinely useful, not a placeholder - Are tagged to the right roles and difficulty
Good modules:
- Cover a specific concept, not a broad topic
- Are readable in under 15 minutes
- Include 1–3 quiz questions that test understanding, not recall
- Name concrete implications for the target role(s)
Good missions:
- Ask the user to do a real thing on their actual work — not simulate it
- Include a clear checklist of what a complete submission covers
- Include
staticFeedbackthat explains what strong submissions address
- Match the existing code style — TypeScript, no
anyunless unavoidable, no comments unless the WHY is non-obvious - No new dependencies without discussion — open an issue first if you're unsure
- API routes: validate inputs with Zod, use
getServerSessionfor auth, returnNextResponse.json({ error })on failure - Never import
PrismaClientdirectly — always usesrc/lib/db.ts - Run
npm run lintandnpm run buildbefore opening a PR
Open an issue on GitHub with:
- What you did
- What you expected
- What happened instead
- Your environment (OS, Node version, Docker or local)
Open a pull request against main. Include a short description of what you changed and why. For new content, include the scenario/module/mission title and target roles in the PR description.
All contributors are welcome regardless of experience level — if you're unsure whether something is a good fit, open an issue first.