Skip to main content

A spaced-repetition CLI for LeetCode practice problems

Project description

Jobbernaut Sensei Logo

Jobbernaut Sensei

Navigate the vast space of the job market.

Jobbernaut is a cloud-native, event-driven open core intelligence platform designed to automate the most tedious parts of the job search: data extraction, resume tailoring, and document management.

Jobbernaut Sensei is the LeetCode practice & spaced-repetition CLI tool within the ecosystem โ€” helping you sharpen your algorithmic skills with a structured review system. It's also an AI-agent-friendly API: every command outputs clean JSON, ready for agents like Cline, Claude Code, or ChatGPT to consume.


๐Ÿš€ The Ecosystem at a Glance

Repository Role Technology Stack
jobbernaut-infra Foundation Terraform (HCL), AWS IAM, S3, DynamoDB
jobbernaut-tabs Frontend Next.js, React, Tailwind CSS
jobbernaut-backend Control Python (AWS Lambda), Boto3, Pydantic
jobbernaut-tailor Intelligence Docker, Python, LangChain (AI), TeXLive (LaTeX)
jobbernaut-extract Collection Chrome Extension (Manifest V3), JavaScript
jobbernaut-sensei CLI Practice Python (setuptools)

๐Ÿ“˜ Documentation: For deep dives into the architecture, data flows, and setup guides, visit jobbernaut-docs.


โšก๏ธ Key Features

  • Spaced Repetition: Never forget a solution โ€” schedules reviews based on your difficulty rating.
  • One-Command Scaffolding: Create new problem files with pre-filled metadata in seconds.
  • ATS-Ready Tracking: Export your progress to CSV or Markdown.
  • Context-Aware Fuzzy Matching: Open or mark problems by number, slug, or title words.
  • Zsh Completions: Tab-complete problem names and categories.
  • ๐Ÿค– AI-Agent Friendly: Every command outputs clean JSON โ€” sensei revisit --json, sensei status, sensei show <problem>.
  • Non-Interactive Marking: sensei mark 217 --rating e โ€” perfect for agent-driven tutoring sessions.

๐Ÿ“ฆ Setup

pip install jobbernaut-sensei

Initialize a problems/ directory:

sensei init

๐Ÿ” Daily Loop

1. Morning โ€” see what's due

sensei revisit

2. Start a problem โ€” scaffold it

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

3. Open a problem โ€” jump back in

sensei open 217

4. After solving โ€” mark it

sensei mark 217

You'll be prompted with one question:

  How did it go?

    [e]  easy      โ†’ 90 days
    [g]  good      โ†’ 30 days
    [h]  hard      โ†’ 7 days
    [s]  struggled โ†’ 3 days

Press one key. last_solved and revisit_in_days are updated automatically.


๐Ÿ“– Command Reference

sensei revisit โ€” daily review runner

sensei revisit
sensei revisit --all
sensei revisit --topic arrays
sensei revisit --json            # AI-agent friendly JSON output
sensei revisit --export
sensei revisit --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)

โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
  0 problem(s) need attention today.  Total tracked: 22

JSON output (--json):

{
  "generated": "2026-05-26",
  "total_tracked": 22,
  "problems": [
    {
      "label": "124. Binary Tree Maximum Path Sum",
      "difficulty": "hard",
      "last_solved": "2026-05-26",
      "due_date": "2026-05-29",
      "days_until_due": 3,
      "topics": ["trees"],
      "topic_folder": "7-trees",
      "filepath": "problems/7-trees/..."
    }
  ]
}
Flag What it does
(none) Overdue + due today + upcoming 7 days
--all Everything, including far-future problems
--topic arrays Filter by topic tag (partial match)
--json Structured JSON output for AI agents
--export Export all problems to export.csv
--export-md Export all problems to export.md

sensei status โ€” quick summary

sensei status

Returns a lightweight JSON snapshot of your tracker state:

{
  "total": 22,
  "overdue": 0,
  "due_today": 0,
  "upcoming": 4,
  "problems": [
    { "label": "124. Binary Tree Maximum Path Sum", "difficulty": "hard", ... }
  ]
}

Ideal for AI agents to quickly assess a user's practice state before a tutoring session.


sensei show <problem> โ€” inspect a problem

sensei show 217
sensei show contains-duplicate

Returns metadata + your saved solution code as JSON:

{
  "label": "217. Contains Duplicate",
  "number": "217",
  "title": "Contains Duplicate",
  "filepath": "problems/1-arrays-and-hashing/...",
  "metadata": {
    "last_solved": "2026-05-14",
    "revisit_in_days": 90,
    "difficulty": "easy",
    "topic_tags": ["arrays", "hashing"],
    "due_date": "2026-08-12"
  },
  "solution": "class Solution:\n    def containsDuplicate(..."
}

Use this to fetch a problem for analysis, code review, or tutoring.


sensei new โ€” scaffold a new problem

sensei new 217 contains-duplicate 1-arrays-and-hashing
sensei new 217 contains-duplicate 1-arrays-and-hashing -d easy -t arrays hash-set --open
Argument Description
number LeetCode problem number
slug LeetCode URL slug, e.g. contains-duplicate
category Topic folder, e.g. 1-arrays-and-hashing
-d / --difficulty easy / medium / hard (default: medium)
-t / --tags One or more topic tags
--open Open the file in $EDITOR / code immediately

sensei open โ€” open a problem

sensei open 217
sensei open contains-duplicate
sensei open 217 --no-browser   # editor only

Accepts problem number, slug, or title words โ€” same fuzzy matching as mark.


sensei mark โ€” mark a problem as reviewed

sensei mark 217
sensei mark contains-duplicate
sensei mark 217 --rating e     # non-interactive (AI-agent friendly)
Flag What it does
(none) Interactive prompt for difficulty rating
--rating e Mark as easy (90 days until next review)
--rating g Mark as good (30 days)
--rating h Mark as hard (7 days)
--rating s Mark as struggled (3 days)

The --rating flag skips the interactive prompt โ€” perfect for AI agents tutoring a user and updating the schedule automatically.


๐Ÿค– AI-Agent Integration

See AGENTS.md โ€” a complete tool-calling guide for integrating sensei into any AI coding agent's toolset.

Quick reference:

sensei status                     # Assess user's practice state
sensei revisit --json             # Get full review data
sensei show <problem>             # Inspect problem + solution
sensei mark <problem> --rating g  # Update schedule after tutoring

๐Ÿ”ง Zsh Shell Completions

Tab-complete sensei subcommands, problem numbers/names, and category names.

Add to ~/.zshrc:

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

Then reload: source ~/.zshrc


โš–๏ธ License

Unless otherwise noted, all repositories within the Jobbernaut organization are licensed under the PolyForm Noncommercial License 1.0.0.

If a repository lacks a specific LICENSE file, the license located at Jobbernaut/LICENSE.md applies by default.

You are free to use, modify, and learn from this code for personal or non-commercial purposes.

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.1.tar.gz (25.9 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.1-py3-none-any.whl (20.0 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: jobbernaut_sensei-0.3.1.tar.gz
  • Upload date:
  • Size: 25.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for jobbernaut_sensei-0.3.1.tar.gz
Algorithm Hash digest
SHA256 395dbedf36ec519c72ab64828d941a87bc61f4354be6097e8faba9f830b8fa27
MD5 0769bc9443a9a868a87f44518c51b15c
BLAKE2b-256 7f13d65abac21890a9eaacf7ebe3ca8ae0b505fa84dc30ec883c45c230c48ada

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jobbernaut_sensei-0.3.1-py3-none-any.whl
Algorithm Hash digest
SHA256 db55a6bedd8e981bbf597658814cc327a29106494c22c7ecdd4f91bc7e919869
MD5 199e5e9dd6cce1088cbb2337ffacdeaa
BLAKE2b-256 95033036cbd293c6e38ba576fadfcd0a792c8532b15060f7c7410eea8612b055

See more details on using hashes here.

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