Skip to main content

A spaced-repetition CLI for LeetCode practice problems

Project description

Jobbernaut Sensei Logo

Jobbernaut Sensei ๐Ÿฅ‹

Your LeetCode practice, but you actually remember what you solved.

Sensei is a spaced-repetition CLI that stops you from grinding LeetCode into the void. Every command outputs clean JSON โ€” it's built for humans but designed for AI agents.

pip install jobbernaut-sensei
sensei init

๐Ÿ”ฅ Why This Exists

You solve 200 LeetCode problems. Three months later you can't solve FizzBuzz.

Sensei tracks when you solved a problem and how well you understood it. Then it tells you exactly what to review โ€” before your brain evicts it from cache.

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  Your brain has a cache. This is the invalidation policy.   โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

Zero config. Zero cloud. Zero bullshit. Your solutions are just .py files in a folder โ€” git-friendly, portable, no lock-in.


โšก What It Does

Command Vibe
sensei revisit "Here's what you're forgetting" โ€” color-coded review queue
sensei status JSON snapshot for you or your AI agent
sensei hint <problem> Get the problem URL + deets without the answer (for quizzing)
sensei show <problem> Full problem + your saved solution (for review)
sensei mark <problem> --rating e "Easy" โ†’ next review in 90 days (or 135, if you've aced it before)
sensei new <num> <slug> <cat> Scaffold a fresh problem in 0.3 seconds
sensei open <problem> Jump into the code + LeetCode page
sensei revisit --export Dump everything to CSV or Markdown

๐Ÿ“… Daily Loop

# 1. What's rotting in my brain today?
sensei revisit

# 2. Quiz me on this one (agent, don't spoil it)
sensei hint 217

# 3. Let me code, then compare
sensei show 217

# 4. How'd I do?
sensei mark 217 --rating g    # good โ†’ 30 days

That's it. Four commands. Whole loop takes 2 seconds of typing.


๐Ÿง  Spaced Repetition โ€” The Smart Part

Rate yourself after each solve. Sensei learns from your history:

Rating Flag Next Review If you keep acing it
Easy ๐ŸŸข --rating e 90 days Grows 1.5ร— per session (90 โ†’ 135 โ†’ 180 max)
Good ๐Ÿ”ต --rating g 30 days Stays 30 days
Hard ๐ŸŸก --rating h 7 days 14 days if you've seen it before
Struggled ๐Ÿ”ด --rating s 3 days Stays 3 days (agent: flag as leech)

First time rating "easy"? โ†’ 90 days.
Fourth time rating "easy"? โ†’ 135 days (you clearly know this).
Keep struggling? โ†’ 3 days forever (time to study the pattern, not the problem).


๐Ÿค– AI-Agent Native

Every command returns clean JSON. Plug it into Cline, Claude Code, ChatGPT, or your own agent:

sensei status                     # โ†’ {"total":22,"overdue":0,...}
sensei revisit --json             # โ†’ Full review data with dates
sensei hint 217                   # โ†’ Problem URL + status, no solution
sensei show 217                   # โ†’ Metadata + saved solution
sensei mark 217 --rating e        # โ†’ Update schedule, no prompts

See AGENTS.md for the complete agent integration guide.


๐Ÿ“ฆ Setup

pip install jobbernaut-sensei
sensei init                      # Creates problems/ directory
sensei new 217 contains-duplicate 1-arrays-and-hashing -d easy -t arrays hash-set
code problems/                   # Start solving

Dependencies

  • Python โ‰ฅ 3.10
  • That's it. No npm. No Docker. No cloud.

๐Ÿ“– Commands

sensei revisit โ€” what to review

sensei revisit                    # Overdue + due today + upcoming 7 days
sensei revisit --all              # Everything
sensei revisit --topic trees      # Filter by topic
sensei revisit --json             # Agent-friendly JSON
sensei revisit --export           # โ†’ export.csv
sensei revisit --export-md        # โ†’ export.md

Colored terminal output:

๐Ÿ“…  Jobbernaut Sensei Revisit โ€” Tuesday, May 26 2026

๐ŸŸข  UPCOMING (7 days)
โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
  in 3d          [hard  ]   124. Binary Tree Maximum Path Sum      (trees)
  in 4d          [medium]   853. Car Fleet                         (stack, monotonic-stack)

sensei show <problem> โ€” inspect + solution

sensei show 217
sensei show contains-duplicate

Returns JSON: label, number, title, filepath, metadata (last_solved, revisit_in_days, difficulty, topic_tags, due_date), and your saved solution code.

sensei hint <problem> โ€” inspect, NO solution

sensei hint 217
sensei hint contains-duplicate

Same as show but no solution field. Perfect for agents that want to quiz without spoiling.

sensei mark <problem> โ€” rate your session

sensei mark 217                    # Interactive prompt
sensei mark 217 --rating e         # Non-interactive (agent-friendly)

sensei new <num> <slug> <cat> โ€” scaffold

sensei new 217 contains-duplicate 1-arrays-and-hashing -d easy -t arrays hash-set

sensei open <problem> โ€” jump in

sensei open 217                    # Editor + browser
sensei open 217 --no-browser       # Editor only

sensei status โ€” quick pulse

sensei status

Returns {total, overdue, due_today, upcoming, problems[]} โ€” one-liner for agents.


๐Ÿ”ง Fuzzy Matching

Every command that takes a problem accepts:

sensei show 217                    # Problem number
sensei show contains-duplicate     # URL slug
sensei show "valid anagram"        # Title words

It matches the first unique result. No tab-complete needed (but we have it anyway โ€” see completions).


๐Ÿš Zsh Completions

fpath=(/path/to/jobbernaut-sensei/src/completions $fpath)
autoload -Uz compinit && compinit

๐Ÿ“„ License

PolyForm Noncommercial License 1.0.0 โ€” free for personal and non-commercial use.

Full license in LICENSE.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

jobbernaut_sensei-0.3.6.tar.gz (26.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

jobbernaut_sensei-0.3.6-py3-none-any.whl (21.6 kB view details)

Uploaded Python 3

File details

Details for the file jobbernaut_sensei-0.3.6.tar.gz.

File metadata

  • Download URL: jobbernaut_sensei-0.3.6.tar.gz
  • Upload date:
  • Size: 26.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for jobbernaut_sensei-0.3.6.tar.gz
Algorithm Hash digest
SHA256 a3d08c0f72c7e7beb546fa6e6df1184d86aa7ecc49f0e99652e9773fc8fb0251
MD5 bd18e2dad4fd30f551e1773808e170bc
BLAKE2b-256 fa660f19ff0de87984a68427ea05a1592ec384c4e35962a92fea15ae65641ffd

See more details on using hashes here.

Provenance

The following attestation bundles were made for jobbernaut_sensei-0.3.6.tar.gz:

Publisher: release.yml on Jobbernaut/jobbernaut-sensei

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file jobbernaut_sensei-0.3.6-py3-none-any.whl.

File metadata

File hashes

Hashes for jobbernaut_sensei-0.3.6-py3-none-any.whl
Algorithm Hash digest
SHA256 e5cdfa80b240fbc5ce31509a291402c1187388fce8bfa56f4b733814259de3a5
MD5 def20776253253c4948ced2e90c765a8
BLAKE2b-256 6e2dd5b5b3545581c7c1035c8165c78368c8279d1a895354d4bf5bf97125f0e7

See more details on using hashes here.

Provenance

The following attestation bundles were made for jobbernaut_sensei-0.3.6-py3-none-any.whl:

Publisher: release.yml on Jobbernaut/jobbernaut-sensei

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page