Flask NLP Chatbot Project

Job ID: 40529840

Budget: ₹600 – ₹1,500 INR

I’m putting together an advanced yet teachable Python project for my portfolio: a Flask-based chatbot that understands natural language, calls at least one external API for real-time data, persists conversations in SQLite, and runs through a simple web interface.

What I need built
• Natural Language Processing is the core feature, so integrate an open-source library such as spaCy, NLTK, or Hugging Face transformers—use what you’re comfortable with, as long as licensing stays free for learning use.
• A clean Flask structure (Django is fine if you can still keep it lightweight) with Blueprints or similar modularity.
• Conversation data saved to SQLite; SQLAlchemy for models is preferred.
• At least one public API call woven into replies—weather, crypto prices, dictionary look-ups, anything that clearly shows real-world integration.
• A minimal HTML/CSS (Bootstrap is okay) front end where I can type messages and read responses.

Code quality & learning focus
I want to read and learn from this codebase, so please:
– Keep functions and modules small and purposeful.
– Add docstrings, inline comments, and type hints.
– Supply a concise README that walks me through setup, architecture, and extension ideas.
– Include requirements.txt (or Pipfile), plus any migration or seed scripts needed.

Deliverables
1. Full, well-commented source code (Git repo or ZIP)
2. requirements.txt / Pipfile and clear setup steps
3. README explaining architecture, NLP pipeline, API integration, database schema, and how to run tests
4. Screenshots or a short demo video showing the chatbot in action

Acceptance check
I’ll spin up a fresh virtual environment, install your dependencies, launch the app, and verify:
• I can chat via the browser interface.
• Each exchange lands in SQLite.
• The bot fetches live data from the chosen API.
• Linting (flake8 or similar) passes without serious warnings.

Please tell me which public API and NLP stack you propose and how long you’ll need to deliver.