AutomateEdge · AI Generalist · Portfolio Projects

AI Generalist Portfolio Projects: 15 Shippable Ideas

These projects are ordered by dependency — each earlier one teaches a skill the later ones assume. Pick any ten to ship; the fifteenth on this list, not your first, is what gets the screening recruiter's attention. Every project below has been designed to be deployable on a $5 VPS; salary-positive portfolios are built of live URLs, not notebooks.

1. Exploratory data analysis + prediction on a public dataset

Difficulty · Beginner 20-30 hours Pythonpandasmatplotlib / seabornscikit-learnJupyter

Pick a Kaggle dataset (titanic, housing, bike-sharing) you find interesting. Produce a clean notebook covering: data dictionary, missingness audit, target distribution, univariate + bivariate analysis, baseline (mean predictor), three models with cross-validated metrics, feature-importance discussion, and a one-paragraph 'what I'd do next.' This is the universal first-project of the field — and the #1 place juniors reveal an absence of discipline.

Evaluation rubric (what recruiters check on your GitHub)

2. Tabular classifier behind a FastAPI endpoint

Difficulty · Beginner 25-35 hours FastAPIPydanticjoblibDockerdocker-compose

Take the winner from project 1, serialise it (joblib / pickle), and expose it at `POST /predict`. Add Pydantic input validation, a health endpoint, Dockerfile, and docker-compose.yml. Deploy to a VPS. The project that converts notebook-code skills into production-service skills.

Evaluation rubric (what recruiters check on your GitHub)

3. Image classifier fine-tuned from a pretrained CNN

Difficulty · Intermediate 30-40 hours PyTorchtorchvisionHugging Face DatasetsW&BGradio

Pick a non-obvious image domain — plant diseases, bird species, sketch categories. Fine-tune resnet50 or efficientnet. Track experiments in W&B. Produce a confusion-matrix analysis and a Grad-CAM interpretability section. Deploy behind FastAPI with a simple Gradio UI.

Evaluation rubric (what recruiters check on your GitHub)

4. Text classifier with a Transformer

Difficulty · Intermediate 25-35 hours Hugging Face TransformersDatasetsscikit-learn (baseline)W&B

Fine-tune DistilBERT or ModernBERT on a text classification task — toxicity, sentiment on an underserved language, intent classification from chat logs. Benchmark against a TF-IDF + logistic regression baseline; show where the transformer wins and where it does not.

Evaluation rubric (what recruiters check on your GitHub)

5. RAG Q&A system over a personal document corpus

Difficulty · Intermediate 40-55 hours FastAPIpgvectorsentence-transformersOpenAI or Gemini APIGradio

Build a retrieval-augmented Q&A system over 50+ documents you actually care about (your university syllabi, your saved articles, a public-domain book corpus). Use pgvector on Postgres. Chunk, embed, retrieve, re-rank, answer. Add a Gradio UI and an evaluation set of 30 questions scored by an LLM judge.

Evaluation rubric (what recruiters check on your GitHub)

6. Time-series forecasting of a domain you understand

Difficulty · Intermediate 25-35 hours pandasstatsmodelsXGBoostProphet or Darts library

Forecast something you can sanity-check yourself — your local weather, a stock price you follow, energy demand for your city. Compare classical (ARIMA, Prophet) vs gradient-boosted (XGBoost with lag features) vs neural (N-BEATS, Temporal Fusion Transformer). Proper time-series cross-validation. Walk-forward evaluation on the last 90 days.

Evaluation rubric (what recruiters check on your GitHub)

7. Recommendation system for a niche taste graph

Difficulty · Intermediate 30-40 hours pandasSurprise or implicit librarysentence-transformers (for content)

Movies / books / music / recipes — pick one and build a recommender. Implement content-based, collaborative filtering, and a hybrid. Evaluate with precision@k, recall@k, and NDCG. Bonus points: cold-start strategy for new users.

Evaluation rubric (what recruiters check on your GitHub)

8. LLM function-calling agent with a narrow job

Difficulty · Advanced 40-60 hours OpenAI or Anthropic function-callingFastAPIa domain-specific API (Google Calendar / GitHub / etc.)

Build an agent that does one thing well — books calendar slots, drafts shell commands, summarises your pull requests. Expose 3-5 tools via the provider's function-calling API. Add a safety layer: dry-run before destructive operations, confirmation prompts, output bounds. Resist the urge to make it do ten things.

Evaluation rubric (what recruiters check on your GitHub)

9. Anomaly detection on real production-like data

Difficulty · Intermediate 25-35 hours scikit-learnPyTorch (for autoencoder)imbalanced-learn

Use a server-log dataset, credit-card fraud set, or an industrial IoT dataset. Implement isolation forest, one-class SVM, and an autoencoder-based anomaly scorer. Address the heavy class imbalance honestly — oversampling, undersampling, class weights, or cost-sensitive learning.

Evaluation rubric (what recruiters check on your GitHub)

10. End-to-end Kaggle-style submission, public writeup

Difficulty · Advanced 50-80 hours whatever the competition rewards — typically PyTorch, XGBoost, or both

Pick an active Kaggle competition or a Hugging Face leaderboard task. Do the full cycle — EDA, baseline, iteration, ensembling, submission. Publish your approach as a Kaggle kernel or blog post. Top-50% finish is a respectable outcome; top-10% is a strong hiring signal. The public writeup is often as valuable as the rank.

Evaluation rubric (what recruiters check on your GitHub)

11. Public-data dashboard with LLM-generated insights

Difficulty · Intermediate 30-40 hours FastAPIapscheduler or cronplotly dash or streamlitGemini / OpenAI API

Take a public API (OpenWeather, Github Stars, a government open-data portal) and build a live dashboard that refreshes hourly. Surface a one-paragraph LLM-generated narrative of what changed. This project demonstrates three skills at once: ETL, visualisation, and LLM prompt engineering for structured output.

Evaluation rubric (what recruiters check on your GitHub)

12. Re-implementation of a canonical paper in ≤ 500 lines

Difficulty · Advanced 40-60 hours PyTorch (no Hugging Face)einops

Pick a paper you care about — 'Attention Is All You Need', 'BERT', 'CLIP', 'Denoising Diffusion Probabilistic Models', 'Mamba'. Re-implement its core algorithm from scratch in PyTorch in under 500 lines. Train on a toy dataset. Publish a blog post explaining every non-obvious decision. This project cuts your claimed 'I know transformers' from vague to defensible.

Evaluation rubric (what recruiters check on your GitHub)

13. Open-source contribution to a library you use

Difficulty · Intermediate 10-30 hours whichever library

Pick a library in your stack — Hugging Face, FastAPI, scikit-learn, LangChain. Find a good-first-issue or reproduce a bug you have hit. Submit a PR. Survive the review. Ship it. One merged PR to a real library outranks five solo side projects for many hiring signals.

Evaluation rubric (what recruiters check on your GitHub)

14. Integration project: classic ML + LLM, deployed end-to-end

Difficulty · Advanced 60-90 hours everything above, pick the right tool per job

Capstone. Build something that uses classical ML as the reliable backbone and LLM as the flexible interface — example: a resume parser that uses a trained NER model for extraction and an LLM for rewriting, a triage system that routes tickets via a classifier then summarises the top five via LLM, or a pricing assistant that uses XGBoost for the number and an LLM for the explanation. Deployed, documented, evaluated. This is your graduation project.

Evaluation rubric (what recruiters check on your GitHub)

15. Teaching artifact — write-up or video tutorial

Difficulty · Beginner 10-20 hours your writing / video tool of choice

Teach one thing you learned in the last month, clearly, in public. A 1500-word blog post, a 10-minute YouTube video, or a well-illustrated Twitter thread. Teaching is the forcing function that turns 'I ran the tutorial' into 'I understand this.' Your teaching history is a de-facto hiring dossier.

Evaluation rubric (what recruiters check on your GitHub)

Frequently asked questions

How many of these should I actually ship?

Ten. Twelve is better. Fifteen is overkill unless your job search has stalled. Employers do not read more than five in-depth — so pick your best three to feature and list the rest.

What if my project isn't novel?

That is fine. Novelty is a research signal, not a hiring signal. Execution quality and the ability to explain your choices outrank originality for 99% of jobs.

How do I pick a dataset that won't be a Kaggle cliche?

Use a domain you already care about — local government data, your own fitness metrics, a hobby-specific dataset. Interviewer engagement spikes the moment you can explain the data in plain language because you actually know it.

Is Kaggle rank meaningful to employers?

A top-10% finish on a named competition is a real signal, especially for early-career roles. Kaggle grandmaster is a hard hiring signal. Below top-50%, it's a participation credit — still worth doing, not a résumé line.

How do I handle compute cost?

Weeks 1-14 on Colab Free / Kaggle Notebooks. Week 15+ rent by the hour. Most projects on this list complete in under $20 of GPU time. Set spending alerts on every provider you use.

Should I open-source everything?

Yes, with one exception — scrape-based projects where the source site's ToS is ambiguous. For those, release the code but not the dataset.

How many of these should go on my resume?

Three, featured with a one-line tagline, a tech stack line, and a live-URL link. The rest live on your GitHub profile and portfolio site.

Continue on the AI Generalist track