DEV Community

Dhawal Shukla
Dhawal Shukla

Posted on

I Built a CLI That Interviews Me on My Own Code

When I started preparing for technical interviews, I noticed something strange.

I remembered DSA problems.

I remembered system design concepts.

But I kept forgetting the implementation details of my own projects.

Interviewers would ask questions like:

  • Why did you choose PostgreSQL instead of MongoDB?
  • How does authentication work in this project?
  • Walk me through the request flow.
  • Why this architecture?

And I'd end up opening GitHub to remember code that I had written.

That felt wrong.

So I built Churn.


The Idea

Instead of manually revising every repository before an interview...

What if a CLI could read my project and interview me?

pip install churn-cli

churn interview .
Enter fullscreen mode Exit fullscreen mode

Churn scans your repository and generates interview questions based on your actual implementation, not generic programming questions.


Example Questions

Instead of asking:

What is JWT?

It asks:

  • Why did you implement JWT authentication in this project?
  • Explain the request flow from the controller to the database.
  • Why did you choose FastAPI over Flask?
  • How does your caching strategy work?
  • What trade-offs did you make while designing this API?

The questions come from the repository itself.


Then I Realized...

Most repositories suffer from another problem.

Documentation.

README files become outdated.

Architecture documents don't exist.

PRDs are rarely written.

So I added another command.

churn docs .
Enter fullscreen mode Exit fullscreen mode

Now Churn can generate:

  • README.md
  • PRD.md
  • ARCHITECTURE.md
  • REPORT.pdf

directly from an existing codebase.


One More Feature

While working on different repositories, I noticed many projects were missing basic engineering practices.

No CI/CD.

No Docker.

No tests.

So I built:

churn doctor .
Enter fullscreen mode Exit fullscreen mode

Example output:

README         ✓
Architecture   ✓
License        ✓
Docker         ✗
CI/CD          ✗
Tests          ✗

Overall: C (60%)
Enter fullscreen mode Exit fullscreen mode

It provides a quick repository health report before interviews, open-source releases, or deployments.


Engineering Decisions

Some of the parts I enjoyed building the most:

  • Recursive repository scanning
  • Git-based file prioritization
  • AI provider abstraction (Gemini, Groq & OpenAI)
  • Markdown, JSON and PDF generation
  • Public & private GitHub repository support
  • Local repository support
  • Configuration management
  • Repository health analysis

Ironically, integrating an LLM wasn't the hardest part.

Designing a clean CLI, handling repositories, configuration, prompts, error handling, and creating a good developer experience took much longer.


Why I Built It

I didn't build Churn to replace interview preparation.

I built it because I wanted a tool that understood my own codebase better than generic interview sheets ever could.

If it helps even a few developers better understand and present their own projects, I'll consider it a success.


Try It

📦 PyPI

https://pypi.org/project/churn-cli/0.5.0/

🐙 GitHub

https://github.com/DhawalShankar/project-churn

I'd genuinely appreciate feedback, feature requests, or contributions.

If you've ever forgotten the details of your own project during an interview, I'd love to know how you currently prepare.

Top comments (0)