AI Engineer — Competency Roadmap
Work towards being an AI engineer: building real applications on top of large language models and other AI systems, and understanding enough of what sits underneath to make good engineering decisions.
This roadmap charts the full technical journey from programming fundamentals to advanced production AI systems, structured across 11 core competence areas spanning software engineering, LLM application architecture, data engineering, evaluation, and fine-tuning. At 10 hours per week the tasks here come to roughly four to six months of focused work. Treat that as the guided tour of the territory rather than the whole journey — real fluency across these areas takes considerably longer, and a personalised plan sizes the parts you actually need. By the end, you will have designed, implemented, evaluated, and deployed multiple end-to-end AI applications with automated evaluation harnesses, custom vector search pipelines, fine-tuned domain models, and production observability.
By the end: You will be able to architect, build, evaluate, and deploy production-grade LLM applications, custom retrieval-augmented generation pipelines, and fine-tuned open-source models with robust testing, structured outputs, and operational observability.
This is the map — make this roadmap yours
It shows what this journey generally looks like. Tell Kaidoro your version of the goal and it builds the plan around where you are actually starting, what to do first, the hours you really have, and what you have already finished.
Modern Python and Engineering Fundamentals
Establish core software craftsmanship in Python, clean data structures, async programming, and API consumption required for all downstream AI development.
- Set up a modern Python development environment with uv and VS Code~4hLearn1 resource
Modern AI tooling relies heavily on strict typing and robust package isolation to handle fast-moving dependencies.
You'll learn
- uv — extremely fast Python package and virtual environment manager
- ruff — high-performance Python linter and formatter
- mypy — static type checker for type-annotated Python
Install Python 3.12, set up the fast package manager
uv, configure VS Code with linting (ruff) and static type checking (mypy), and write your first typed CLI utility.Done when: running
ruff checkandmypyon your repository passes with zero errors.How to work through it
- Install uv package manager
- Initialize a new Python project with pyproject.toml
- Configure ruff and mypy in pyproject.toml
- Write and run a typed Python script
- Build an asynchronous CLI weather client using httpx and Pydantic~5hBuild1 resource
LLM integrations are I/O bound; writing non-blocking asynchronous code and strong schema validation is essential.
You'll learn
- asyncio — Python built-in library for writing concurrent code using async/await
- httpx — asynchronous HTTP client for Python
- Pydantic — data validation and settings management using Python type hints
Create a command-line tool that fetches forecasts concurrently from an open weather API using async/await, validating inputs and structured responses with Pydantic models.
Done when: the CLI concurrently queries three cities, validates the JSON payloads into Pydantic models, and prints formatted output to terminal.
How to work through it
- Define Pydantic models for incoming weather JSON schemas
- Implement async HTTP calls using httpx.AsyncClient
- Gather concurrent requests using asyncio.gather
- Add error handling for schema mismatches and network timeouts
- Write automated unit and integration tests with pytest~4hPractice
Testing AI software requires isolating external network calls and verifying deterministic business logic reliably.
You'll learn
- pytest — testing framework for Python
- pytest-asyncio — plugin for testing asyncio coroutines
- pytest-mock — thin wrapper around standard mock library
Add comprehensive unit and mock-based integration tests to your CLI weather tool using pytest, pytest-asyncio, and pytest-mock.
Done when: running
pytest --covreports at least 85% test coverage with mock HTTP responses.How to work through it
- Install and configure pytest and pytest-asyncio
- Write fixtures to mock external HTTP responses
- Test positive and edge-case schema validations
- Measure test coverage via pytest-cov
- Package a modular log-parsing CLI and publish git repository~6hBuild
Consolidates environment setup, type systems, async I/O, and automated CI into a complete portfolio artifact.
You'll learn
- Typer — library for building CLI applications based on Python type hints
- GitHub Actions — automated continuous integration and continuous delivery platform
Build a modular CLI tool that parses structured server log files, extracts metrics, and outputs summary statistics, organized with standard packaging and CI GitHub Actions.
Done when: the tool runs via CLI commands, passes lint and tests in GitHub Actions, and is pushed to a public Git repository.
How to work through it
- Structure codebase into a modular src package layout
- Add CLI argument parsing using Typer
- Write GitHub Actions workflow for linting and test suite
- Push working repository with README documentation
LLM Fundamentals, Prompt Engineering, and Structured Outputs
Learn how autoregressive models work under the hood, how tokenization and context windows operate, and how to reliably extract schema-conforming structured data from LLM APIs.
- Calculate token costs and context limits with tiktoken~3hLearn1 resource
Tokenization mechanics dictate context limits, latency, cost, and unexpected prompt truncation issues in production.
You'll learn
- tiktoken — fast BPE tokeniser for use with OpenAI models
- Byte-Pair Encoding (BPE) — subword tokenization algorithm used in modern LLMs
- Context Window — maximum sequence length of tokens a model can process at once
Write a script that inspects text strings, computes token counts using
tiktokenacross different tokenizer encodings (e.g. cl100k_base, o200k_base), and estimates inference costs.Done when: the script outputs exact token lengths, token ID breakdowns, and API cost projections across a batch of sample documents.
How to work through it
- Install tiktoken and open-source tokenizer libraries
- Encode strings to raw token IDs and decode them back
- Calculate pricing based on current OpenAI/Anthropic model tier rates
- Analyze edge cases with special characters and multi-lingual text
- Build a multi-provider LLM client with system prompts and few-shot reasoning~5hBuild1 resource
Understanding prompt composition and parameter tuning across multiple frontier model APIs is the baseline for AI application development.
You'll learn
- Few-Shot Prompting — providing targeted input-output examples inside the prompt
- Chain-of-Thought (CoT) — prompting technique instructing models to produce intermediate reasoning steps
- Temperature / Top_p — sampling parameters controlling output randomness and diversity
Create an application client that interacts with OpenAI and Anthropic APIs, implementing temperature control, system instructions, few-shot prompting, and chain-of-thought patterns.
Done when: the script executes complex multi-step reasoning queries across both providers and displays comparative answers and token usage.
How to work through it
- Configure OpenAI and Anthropic SDK client instances
- Construct structured system prompts with few-shot demonstration examples
- Implement Chain-of-Thought reasoning steps in prompt templates
- Compare response determinism by varying temperature and top_p
- Build a reliable data extraction engine using Instructor and JSON schema validation~6hBuild1 resource
Real-world AI applications require structured JSON, not raw conversational text, to interface safely with downstream databases and APIs.
You'll learn
- Instructor — library for structured LLM outputs built on top of Pydantic
- JSON Schema Mode — LLM API parameter forcing deterministic JSON compliance
- Self-Correction Loop — pattern of passing schema validation error messages back to the LLM for correction
Build an extraction pipeline that parses messy raw text (such as receipts, resumes, or medical notes) into strict, nested Pydantic models with automated retries on schema errors.
Done when: the pipeline extracts 10 complex documents into nested Pydantic models with zero validation errors, automatically self-correcting flawed outputs.
How to work through it
- Define nested Pydantic schema with validators and field constraints
- Use Instructor or native OpenAI Structured Outputs to enforce schema
- Implement retry hooks for schema validation failures
- Test validation boundary cases with malformed or incomplete inputs
Vector Embeddings and Semantic Search
Understand mathematical embeddings, chunking strategies, vector database indexing, and how to implement semantic search without third-party black boxes.
- Implement vector cosine similarity and ranking from scratch in NumPy~5hLearn
Demystifies what vector search actually does under the hood before delegating to managed vector databases.
You'll learn
- Embedding Vector — high-dimensional numerical representation of semantic meaning
- Cosine Similarity — metric measuring the cosine of the angle between two non-zero vectors
- sentence-transformers — Python framework for state-of-the-art text and image embeddings
Generate text embeddings using open-source models (via sentence-transformers or fastembed) and implement dot product, cosine similarity, and top-k ranking in raw NumPy.
Done when: your custom Python script accurately ranks a corpus of 100 sentences by semantic relevance against 5 test queries without using external vector databases.
How to work through it
- Generate embeddings using sentence-transformers or local embedding models
- Write a NumPy function calculating cosine similarity between query and corpus vectors
- Implement argsort-based top-k retrieval
- Benchmark retrieval speed vs linear scan as corpus size grows
- Implement and compare chunking strategies on long documents~5hBuild
Chunking is the single most frequent failure point in document search; choosing the wrong strategy ruins retrieval quality.
You'll learn
- Chunking — process of splitting long texts into smaller segments for embedding models
- Sliding Window Overlap — retaining trailing tokens from previous chunk to preserve context continuity
- Recursive Character Splitting — dividing text hierarchically by paragraphs, newlines, and sentences
Build a document processing pipeline that splits markdown and PDF files using fixed-size, recursive character, and semantic boundary chunking, comparing token overlap effects.
Done when: you produce a comparative evaluation table showing chunk coherence and preservation of context across 3 distinct document formats.
How to work through it
- Extract raw text from PDF and Markdown files
- Implement fixed character chunking with sliding window overlap
- Implement recursive chunking respecting paragraph and header boundaries
- Evaluate chunk preservation on complex table and list structures
- Build a persistent vector search service with Qdrant or Chroma~6hBuild1 resource
Production search requires persistent storage, inverted indexing, payload filtering, and high-performance ANN algorithms.
You'll learn
- HNSW (Hierarchical Navigable Small World) — graph-based approximate nearest neighbor index algorithm
- Qdrant — open-source vector similarity search engine with extended filtering support
- Metadata Filtering — combining relational attributes with vector similarity in search
Set up a local vector database instance (Chroma or Qdrant in Docker), create collections with payload metadata, upsert chunk embeddings, and execute filtered hybrid queries.
Done when: a test suite verifies sub-50ms vector queries filtered by date, author, and category metadata on a collection of 5,000 vectors.
How to work through it
- Run Qdrant or Chroma via Docker or embedded engine
- Define collection schema with distance metric (Cosine/Dot)
- Batch upsert embeddings with structured metadata payloads
- Execute filtered semantic queries combining vector distance with metadata predicates
Retrieval-Augmented Generation (RAG) Architecture
Build end-to-end RAG systems incorporating hybrid search (dense + sparse BM25), reranking, and citation generation.
- Build a hybrid search engine combining BM25 keyword search and vector embeddings~6hBuild
Pure vector search fails on exact entity names, serial numbers, and acronyms; hybrid search solves this critical industry problem.
You'll learn
- BM25 (Best Matching 25) — probabilistic ranking function used in information retrieval
- Reciprocal Rank Fusion (RRF) — rank aggregation algorithm that merges multiple ranked result lists
- Hybrid Search — combining sparse lexical search and dense vector search
Implement hybrid search by combining traditional BM25 keyword matching (using rank-bm25) with vector similarity, merging their score distributions using Reciprocal Rank Fusion (RRF).
Done when: the search engine returns relevant documents for both exact keyword acronym queries and high-level conceptual queries where standard vector search fails.
How to work through it
- Index documents into a BM25 sparse keyword index
- Index the same documents into a vector embedding store
- Implement Reciprocal Rank Fusion (RRF) algorithm to merge ranked lists
- Run comparative evaluation on keyword-heavy vs semantic queries
- Add cross-encoder reranking to retrieval pipeline~5hBuild
Bi-encoders used in vector search sacrifice deep cross-attention for speed; cross-encoder reranking restores precision at minimal latency cost.
You'll learn
- Cross-Encoder — model that processes query and passage together with full cross-attention
- Bi-Encoder — model that embeds query and passage independently into vector space
- Two-stage Retrieval — pattern of fast retrieval followed by compute-intensive reranking
Integrate a cross-encoder reranker model (such as Cohere Rerank or a local BAAI/bge-reranker) to reorder the top 25 retrieved candidates down to the top 5 most relevant chunks before prompting.
Done when: benchmark scripts show a measurable precision improvement in top-3 chunk relevance after the reranking step.
How to work through it
- Retrieve top-k candidates (e.g. k=25) via hybrid search
- Pass query-document pairs to cross-encoder reranker
- Sort by reranker relevance score and slice top-n (e.g. n=5)
- Measure latency and relevance delta before and after reranking
- Build an end-to-end document QA RAG application with verified citations~7hBuild
Hallucination prevention and auditability through strict citations are essential for real-world enterprise RAG deployments.
You'll learn
- Grounding — constraining LLM generation strictly to provided context chunks
- Citation Verification — algorithmic validation that claims link directly to retrieved sources
- Hallucination Mitigation — prompt and architectural techniques to suppress fabricated statements
Construct a complete CLI and API application that ingests technical documentation, retrieves relevant passages, passes them to an LLM with strict grounding prompts, and outputs verifiable source citations.
Done when: the application answers user questions while providing exact line/chunk citations, and explicitly responds 'I cannot find this in the documents' when answers are absent.
How to work through it
- Construct context prompt including chunk IDs and source titles
- Implement prompt guardrails instructing model to decline out-of-context queries
- Extract structured citation references in the model response
- Add automated check verifying cited chunks actually exist in context
Function Calling, Tool Use, and Autonomous Agents
Develop agents capable of planning, invoking external APIs via function calling, maintaining execution state, and recovering from runtime errors.
- Implement custom LLM function calling with schema validation~6hBuild1 resource
Tool calling is the core mechanism enabling language models to interact with the external software ecosystem.
You'll learn
- Tool Calling / Function Calling — protocol allowing LLMs to request execution of specific external code functions
- Schema Generation — converting programming language type definitions into OpenAPI/JSON schemas
- Tool Message Role — dedicated message format for feeding tool execution output back into LLM context
Build a dispatcher that converts standard Python functions into JSON tool schemas, exposes them to an LLM API, intercepts tool call requests, executes the functions, and returns results.
Done when: the LLM autonomously selects and executes multiple custom Python functions (e.g. math calculations, database queries) to fulfill complex user prompts.
How to work through it
- Write typed Python helper functions with docstrings
- Generate JSON schemas automatically using Pydantic or docstring parsers
- Send user prompt with available tool definitions to model
- Parse model tool_calls, execute corresponding local functions, and return outputs
- Build a stateful ReAct agent loop from scratch without agent frameworks~7hBuild
Building an agent loop from scratch teaches you state management and error modes that high-level frameworks like LangChain/CrewAI obscure.
You'll learn
- ReAct Pattern — prompting and execution architecture intertwining reasoning traces with task-specific actions
- Agent State Management — preserving historical context and intermediate tool observations across iterations
- Infinite Loop Prevention — setting hard iteration and timeout boundaries in autonomous control flows
Implement the ReAct (Reason + Act) loop pattern in pure Python with state memory, loop termination limits, error handling, and intermediate thought logging.
Done when: the agent successfully solves a multi-step research problem requiring 4+ sequential tool calls without getting caught in an infinite loop.
How to work through it
- Define agent state object (message history, scratchpad, loop count)
- Implement Thought -> Action -> Action Input -> Observation loop cycle
- Add safety limits (maximum iterations, token budget cap)
- Implement graceful handling for malformed tool arguments
- Build a multi-step SQL querying and data visualization agent~8hBuild
Text-to-SQL and data synthesis represent high-value agentic workflows requiring strict safety guardrails and self-correction.
You'll learn
- Text-to-SQL — generating valid relational database queries from natural language
- Read-Only Guardrails — restricting agent capabilities to prevent accidental data modification or injection
- Schema Pruning — dynamically injecting only relevant table definitions into context
Create an agent that accepts natural language questions about a SQLite database, inspects table schemas, generates and executes SQL queries, validates results, and outputs a summary with charts.
Done when: the agent correctly answers 5 analytical questions on a sample database, correcting its own SQL queries when syntax errors occur.
How to work through it
- Provide database schema introspection tool to agent
- Create read-only SQL execution tool with parameter limits
- Implement error-catching feedback loop for SQL syntax errors
- Format final result with summarized table and generated markdown charts
Evaluation, Benchmarking, and Guardrails (LLMOps)
Master evaluation methodologies to measure retrieval precision, answer correctness, hallucination rates, and safety guardrails systematically.
- Build a synthetic golden test dataset generator using LLMs~5hBuild
You cannot improve what you do not measure; having a golden test set is the foundation of scientific AI engineering.
You'll learn
- Golden Dataset — curated benchmark set of inputs with verified reference outputs
- Synthetic Data Generation — using generative models to bootstrap test suites and training data
- Multi-Hop Reasoning — questions requiring information synthesis across multiple separate passages
Write a script that processes a collection of documents and automatically generates 50 high-quality query-context-ground_truth answer triplets for benchmarking.
Done when: a validated JSON dataset containing 50 diverse questions (ranging from simple retrieval to complex multi-hop reasoning) with verified ground truth answers is generated.
How to work through it
- Extract distinct chunks and document sections
- Prompt a frontier model to generate questions and expected answers grounded in specific chunks
- Filter out ambiguous or low-quality generated questions
- Export evaluation dataset in standard format (e.g. JSONL)
- Implement RAG evaluation with Ragas or custom LLM-as-a-Judge metrics~7hBuild1 resource
Evaluation metrics provide empirical guidance for prompt changes, chunking adjustments, and embedding model switches.
You'll learn
- LLM-as-a-Judge — using a powerful model to score the quality and factual consistency of other model outputs
- Faithfulness Metric — fraction of claims in generated answer that can be inferred from context
- Context Recall — measure of whether all information needed to answer the question was retrieved
Implement an automated evaluation pipeline measuring Faithfulness, Answer Relevance, Context Precision, and Context Recall using LLM-as-a-Judge across your golden dataset.
Done when: your test script outputs a quantitative scorecard and radar plot showing baseline metrics across 50 test cases.
How to work through it
- Install and configure Ragas evaluation framework or custom judge prompts
- Execute RAG pipeline on golden dataset queries to collect retrieved context and answers
- Compute Faithfulness (hallucination check) and Answer Relevance scores
- Compute Context Precision and Recall against ground truth
- Implement input sanitization and safety guardrails with NeMo Guardrails or Llama Guard~6hBuild
Enterprise AI applications must be hardened against adversarial inputs, prompt injection, and data leaks.
You'll learn
- Prompt Injection — adversarial technique causing an LLM to ignore system instructions
- PII Masking — detecting and redacting sensitive personal data prior to model inference
- Input Guardrails — defensive validation layers filtering untrusted user text
Add an active safety middleware layer that intercepts prompt injection attacks, detects jailbreaks, filters personally identifiable information (PII), and enforces topic constraints.
Done when: the guardrail system successfully blocks 10 known prompt injection attempts and redacts PII while allowing legitimate queries through without false positives.
How to work through it
- Define input moderation rules and regex/entity PII masking
- Implement lightweight prompt injection detector classifier
- Add safety check layer before passing prompts to primary LLM
- Test with known jailbreak datasets (e.g. DAN prompts)
Serving, Production Deployment, and API Architecture
Package AI services as high-concurrency production APIs with streaming responses, rate limiting, caching, and open telemetry tracing.
- Build a high-performance FastAPI streaming service with Server-Sent Events (SSE)~6hBuild1 resource
Streaming tokens via SSE is mandatory in production AI applications to reduce perceived latency for users.
You'll learn
- Server-Sent Events (SSE) — standard for streaming unidirectional text events over HTTP
- Time To First Token (TTFT) — latency metric measuring elapsed time before the first token arrives
- FastAPI — modern, fast web framework for building APIs with Python
Construct a production FastAPI application that exposes an OpenAI-compatible
/v1/chat/completionsendpoint streaming token responses in real time using Server-Sent Events.Done when: a web client or curl command receives a smooth token stream with proper headers and sub-150ms time-to-first-token (TTFT).
How to work through it
- Create FastAPI app with async route handlers
- Implement async generator yielding SSE data chunks
- Handle client disconnections and cancel upstream LLM requests
- Add CORS and authentication middleware
- Implement semantic caching and rate limiting with Redis~6hBuild
Semantic caching cuts API costs by 20-50% and dramatically reduces response times for common queries.
You'll learn
- Semantic Caching — caching responses based on vector similarity rather than exact string equality
- Redis — in-memory data store frequently used for caching and vector operations
- Token Bucket Rate Limiting — algorithm enforcing request throughput constraints per user
Add Redis caching that computes embeddings of incoming user queries, checks for high semantic similarity with previous questions, and returns cached responses for identical or near-identical queries.
Done when: semantically equivalent questions (e.g. 'How do I reset password?' vs 'Password reset steps') return cached responses in under 15ms without invoking the LLM API.
How to work through it
- Set up Redis instance with RedisVL or vector search index
- Compute embedding for incoming user query
- Perform vector similarity search against cached query keys with similarity threshold (e.g. >0.95)
- Return cached output on cache hit; call LLM and store result on cache miss
- Instrument distributed tracing with OpenTelemetry and Langfuse / Arize Phoenix~6hBuild1 resource
Debugging multi-step AI systems in production is impossible without distributed trace spans across tool calls and retrieval steps.
You'll learn
- Langfuse / Phoenix — open-source observability and tracing platforms for LLM applications
- Trace Spans — individual timed segments in a distributed operation tree
- Prompt Versioning — tracking changes to prompt templates alongside production metrics
Integrate comprehensive observability tracing into your API to log token usage, step-by-step latency, prompt versions, and user feedback traces.
Done when: you can inspect individual request traces showing complete execution graphs, token cost, and latency breakdown in the observability dashboard.
How to work through it
- Run Langfuse or Arize Phoenix locally or via cloud tier
- Instrument FastAPI application and LLM calls using tracing decorators
- Log metadata including user IDs, session tags, and prompt version hashes
- Track cost per session and token usage over time
- Containerize with Docker and deploy to production cloud platform~7hBuild
Completes the transition from local scripts to a live, production-grade cloud service.
You'll learn
- Docker Multi-Stage Build — creating minimal container images by separating build and runtime environments
- Secrets Management — secure injection of API tokens into container runtimes
- Health Check Endpoint — HTTP route reporting service readiness to load balancers
Write a multi-stage Dockerfile for your FastAPI AI service, configure environment secret management, and deploy it to a cloud runtime (such as Modal, Render, AWS, or GCP).
Done when: your deployed service is accessible over a public HTTPS endpoint, passing health checks and streaming responses reliably.
How to work through it
- Write optimized multi-stage Dockerfile minimizing image size
- Configure environment secrets for API keys and database credentials
- Deploy container to cloud host with health check endpoints
- Run load test using Locust or wrk to determine throughput limits
Open-Source Models, Local Inference, and Quantization
Work with open-weight models (Llama, Mistral, Qwen), run local inference engines (vLLM, Ollama), and understand quantization and hardware constraints.
- Run local LLMs with Ollama and llama.cpp across quantization formats~5hLearn1 resource
Not all enterprise data can leave private infrastructure; running local quantized models is essential for cost and privacy.
You'll learn
- GGUF — binary format for storing models optimized for fast CPU/GPU inference with llama.cpp
- Quantization (Q4/Q8) — reducing model weight precision from FP16 to 4/8-bit integers to save memory
- VRAM Offloading — splitting model layers between system RAM and GPU memory
Install and run quantized open-weight models locally using llama.cpp / Ollama, experimenting with 4-bit (Q4_K_M), 8-bit, and 16-bit precision to analyze memory footprint and speed.
Done when: you document the RAM/VRAM usage and tokens-per-second generation speed of a 7B/8B model across GGUF quantization levels on your machine.
How to work through it
- Install Ollama and run a lightweight model (e.g. Llama-3.2-3B or Mistral-7B)
- Download GGUF model files from Hugging Face Hub
- Run inference using llama.cpp CLI with CPU/GPU offloading parameters
- Measure tokens/second generation speed and VRAM allocation
- Deploy high-throughput inference with vLLM and PagedAttention~7hBuild1 resource
vLLM is the standard production inference engine in industry, delivering 10x-20x throughput improvements over naive serving.
You'll learn
- vLLM — high-throughput and memory-efficient LLM serving engine
- PagedAttention — memory management algorithm for KV cache inspired by virtual memory paging
- Continuous Batching — dynamic iteration-level batching of incoming LLM requests
Set up a self-hosted inference server using vLLM (locally or on a rented GPU cloud instance), configuring continuous batching and tensor parallelism.
Done when: the vLLM server handles a concurrent load of 20 simulated users with continuous batching, reporting higher throughput than vanilla PyTorch inference.
How to work through it
- Deploy a vLLM container serving an open model (e.g. Qwen2.5-7B)
- Configure max model length and GPU memory utilization parameters
- Benchmark concurrent request throughput using vLLM benchmarking scripts
- Expose the OpenAI-compatible API to downstream applications
Fine-Tuning and Model Adaptation
Learn when fine-tuning is necessary versus prompting/RAG, curate training datasets, and train parameter-efficient adapters using LoRA and QLoRA.
- Curate and format instruction-tuning dataset in ShareGPT / Alpaca format~6hPractice
Dataset curation quality determines 90% of fine-tuning success; understanding data formatting is paramount.
You'll learn
- Instruction Tuning — training models to follow natural language commands and task specifications
- Hugging Face Datasets — library for easily sharing and loading machine learning datasets
- Alpaca/ShareGPT Format — standardized JSON formats for conversational training datasets
Prepare a custom dataset for domain-specific fine-tuning, cleaning raw text, tokenizing sequences, and structuring pairs into standard instruction-response schemas.
Done when: a validated dataset of 1,000+ instruction pairs is formatted, split into train/validation sets, and verified with token length distribution plots.
How to work through it
- Gather raw domain text or synthetic conversational pairs
- Format data into Alpaca or ShareGPT JSON schemas with system, user, and assistant roles
- Validate formatting and remove duplicates using pandas and Hugging Face Datasets
- Plot sequence length histograms to set optimal max_seq_length
- Fine-tune an open LLM using LoRA / QLoRA with Unsloth or TRL~8hBuild1 resource
Fine-tuning teaches models new style, tone, and rigid output formats that cannot be reliably achieved via prompting alone.
You'll learn
- LoRA (Low-Rank Adaptation) — technique freezing base model weights and training small low-rank adapter matrices
- QLoRA — quantized LoRA allowing fine-tuning of 8B+ models on consumer GPUs (e.g. 16GB VRAM)
- Unsloth — optimized framework for fast fine-tuning and export of LLMs
Fine-tune an open-source model (e.g. Llama-3-8B or Mistral-7B) using Parameter-Efficient Fine-Tuning (PEFT/QLoRA) on Google Colab or a cloud GPU instance.
Done when: the fine-tuning run completes with decreasing loss curves logged to Weights & Biases, and the merged adapter outputs formatted domain answers consistently.
How to work through it
- Set up Unsloth or Hugging Face TRL (SFTTrainer) environment
- Load base model in 4-bit precision with BitsAndBytes
- Attach LoRA target modules (q_proj, k_proj, v_proj, o_proj)
- Run training loop with gradient accumulation and learning rate warmup
- Save and test the resulting LoRA adapter weights
- Evaluate fine-tuned model against base model on domain benchmark~5hPractice
Quantifying fine-tuning gains ensures the adapter actually learned the domain without degrading general model capabilities.
You'll learn
- Catastrophic Forgetting — tendency of fine-tuned models to lose general pre-trained knowledge
- Domain Adaptation — modifying base model behavior for specific industry vocabulary and constraints
- Holdout Test Set — unseen evaluation data preserved strictly for final validation
Construct an automated test harness comparing the fine-tuned adapter against the base foundation model on a holdout evaluation dataset, measuring exact match, BLEU/ROUGE, and format adherence.
Done when: an evaluation report demonstrates statistical improvement on the target domain task without catastrophic forgetting of general reasoning.
How to work through it
- Run base model and fine-tuned model on identical holdout test set
- Compute domain schema adherence rate (e.g. percentage of valid JSON produced)
- Run general reasoning benchmark (e.g. MMLU subset) to check for catastrophic forgetting
- Synthesize findings into an evaluation comparison report
Full-Stack AI Application and TypeScript Integration
Bridge Python backend AI services with interactive modern user interfaces using Next.js, TypeScript, and the Vercel AI SDK.
- Build an interactive chat UI with Next.js, TypeScript, and the Vercel AI SDK~7hBuild1 resource
AI Engineers frequently work across the interface boundary to create responsive user experiences and multimodal artifacts.
You'll learn
- Vercel AI SDK — TypeScript toolkit for building interactive AI-powered web applications
- React Server Components — React paradigm for server-side data fetching and rendering
- Streaming UI — rendering incoming token buffers incrementally into the DOM
Create a modern React frontend in TypeScript that connects to your streaming backend API, rendering markdown, code blocks with syntax highlighting, and live token streams.
Done when: the frontend renders incoming streaming text smoothly, handles error states gracefully, and supports multi-turn conversational history.
How to work through it
- Initialize Next.js project with Tailwind CSS and TypeScript
- Use `useChat` hook from Vercel AI SDK connected to Python backend or Next.js route handler
- Implement syntax highlighting for code blocks using react-markdown
- Add automatic scroll-to-bottom behavior with manual scroll lock
- Implement generative UI and interactive widgets in TypeScript~7hBuild
Generative UI represents the state-of-the-art in AI product design, moving beyond chat bubbles to rich interactive software.
You'll learn
- Generative UI — dynamically generating interactive user interface components from model outputs
- Component Streaming — streaming structured UI component properties over the wire
Extend your frontend application to render dynamic interactive UI components (e.g. interactive charts, editable tables, action buttons) triggered directly by structured model tool calls.
Done when: when the user asks for data analysis, the model responds with an interactive, clickable React chart component rather than static text.
How to work through it
- Define tool calling schemas for specific UI widget components
- Parse tool call payloads in Next.js frontend
- Dynamically mount interactive React components (e.g. Recharts) based on tool arguments
- Handle user interactions on rendered widgets that send state updates back to the LLM
Capstone Project, Portfolio, and Technical Interview Preparation
Synthesize all competencies into a production-grade portfolio capstone and prepare for industry AI engineering hiring assessments.
- Architect and deploy an enterprise-grade AI Capstone Application~15hBuild
This serves as your definitive flagship artifact demonstrating production readiness to engineering hiring managers.
You'll learn
- System Architecture Design — end-to-end topology planning for multi-component AI systems
- Technical Documentation — crafting clear architecture diagrams and evaluation methodology reports
Design and build an end-to-end production AI system (e.g. autonomous research analyst, code migration agent, or medical document synthesizer) combining hybrid RAG, agent tool use, fine-tuned components, eval harnesses, and a full-stack interface.
Done when: the capstone is publicly deployed with live URL, complete CI/CD test suite, architectural diagram, and recorded 3-minute video walkthrough.
How to work through it
- Draft system architecture specification and data flow diagrams
- Implement Python backend with hybrid RAG, agent tools, and observability
- Build TypeScript / Next.js frontend with generative UI
- Run automated evaluation benchmark and document performance in repository README
- Deploy to production cloud infrastructure and record demo walkthrough
- Conduct AI system design interview simulations~6hPractice1 resource
AI Engineering hiring processes test your ability to make rigorous architectural trade-offs between cost, latency, accuracy, and reliability.
You'll learn
- AI System Design — structured architectural methodology for complex AI platforms
- Back-of-the-Envelope Estimation — calculating token throughput, latency budgets, and operational costs
- Graceful Degradation — fallback patterns when frontier model APIs experience outages or rate limits
Practice designing large-scale AI systems under time constraints (e.g. 'Design a scalable multi-tenant RAG search platform' or 'Design an enterprise code assistant') addressing latency, cost, and hallucination trade-offs.
Done when: you have written and spoken through 4 full system design breakdowns covering data pipelines, embedding storage, cache tiers, fallback strategies, and eval monitoring.
How to work through it
- Study standard AI system design blueprints and scaling patterns
- Break down requirements into functional and non-functional goals
- Calculate back-of-the-envelope token costs, storage requirements, and QPS limits
- Map out failure modes, circuit breakers, and evaluation loops
How the plan fits together
11 phases in 6 stages. Anything on the same row can be worked on at the same time.
An arrow points from a phase to the work it unlocks: before starting any phase, every phase with an arrow into it has to be finished first.
- Solid arrow
- Must be finished before the phase it points to
- Dashed arrow
- Same rule, but the prerequisite sits more than one stage back
Resources
21 in this plan's library, beyond the links on individual tasks.
Learning & Reference
Foundational documentation, architectural guides, and API specifications.
- Cohere LLM University: Embeddings and Semantic Search
Teaches the mechanics of dense vector embeddings, vector distance metrics, and semantic search fundamentals.
cohere.com · Cohere · Course · 100% Free · Beginner to Intermediate
- DeepLearning.AI Short Courses
Focused, hands-on courses co-created with industry leaders covering prompt engineering, function calling, and RAG evaluation.
deeplearning.ai · DeepLearning.AI · Course · Free to audit · Beginner to Intermediate
- Designing Machine Learning Systems
Comprehensive reference for designing end-to-end production architectures and preparing for AI systems design interviews.
oreilly.com · O'Reilly Media · Book · Paid book (approx. $50–$60 USD, or included with an O'Reilly Learning subscription) · Advanced
- FastAPI Official Documentation
Essential reading for creating asynchronous, high-throughput streaming REST endpoints for LLM services.
fastapi.tiangolo.com · Sebastián Ramírez · Documentation · Free · Intermediate
- FastAPI Tutorial – User Guide
Step-by-step guide through async request handling, dependency injection, and automated OpenAPI documentation for high-concurrency model APIs.
fastapi.tiangolo.com · Sebastián Ramírez / FastAPI · Documentation · 100% Free · Intermediate
- Hugging Face NLP & LLM Course
Comprehensive tutorials on transformers, tokenizers, dataset pipelines, and model evaluation.
huggingface.co · Hugging Face · Course · 100% Free · Intermediate
- Neural Networks: Zero to Hero
Guides you through building neural networks, tokenization, and a full GPT model from scratch using raw Python and PyTorch.
karpathy.ai · Andrej Karpathy · Video Series · 100% Free · Intermediate
- OpenAI Prompt Engineering and Structured Outputs Guide
The official baseline for understanding context window mechanics, prompt formats, and JSON schema constraints.
platform.openai.com · OpenAI · Documentation · Free · Beginner
Open Source & Frameworks
Core libraries, vector stores, inference engines, and evaluation tools.
- Arize Phoenix / OpenLLMetry
OpenTelemetry-based tracing, observability, and evaluation platform for tracking LLM latency, token cost, and execution trees.
phoenix.arize.com · Arize AI / Traceloop · Tool / Observability Platform · 100% Free (Open Source) · Intermediate
- Hugging Face PEFT Documentation
Teaches how to apply LoRA and QLoRA on quantized backbones, manage adapter weights, and merge weights for inference.
huggingface.co · Hugging Face · Documentation · 100% Free (Open Source) · Advanced
- Instructor Documentation & Cookbook
Teaches production patterns for schema extraction, type validation, and automated retry loops when models emit malformed JSON.
python.useinstructor.com · Jason Liu / Instructor · Documentation · 100% Free (Open Source) · Intermediate
- LangGraph Documentation & Conceptual Guides
Teaches how to implement agent loops, register deterministic tools via function calling, and manage persistent conversation state.
langchain-ai.github.io · LangChain · Documentation · 100% Free (Open Source framework) · Advanced
- LlamaIndex Documentation & Tutorials
Covers advanced chunking strategies, metadata extraction, hybrid search, reranking, and citation generation for RAG pipelines.
docs.llamaindex.ai · LlamaIndex · Documentation · 100% Free (Open Source) · Intermediate
- Ollama Documentation
Covers local model pulls, custom system prompts, GGUF quantization formats, and running a local OpenAI-compatible inference server.
ollama.com · Ollama · Documentation · 100% Free (Open Source) · Beginner to Intermediate
- Qdrant Vector Database
Fast, production-ready vector similarity search engine written in Rust with built-in hybrid search and payload filtering.
qdrant.tech · Qdrant · Software / Database · Open source (Free self-hosted, paid managed cloud) · Intermediate
- Qdrant Vector Database Documentation
Provides detailed architecture guides on HNSW indexing, filtering, payload storage, and hybrid search mechanics.
qdrant.tech · Qdrant · Vector Engine & Documentation · Free (Open Source) · Intermediate
- Ragas Documentation
Details how to systematically measure context precision, context recall, faithfulness, and answer relevancy across RAG and agent pipelines.
docs.ragas.io · Ragas / Exploding Gradients · Documentation · 100% Free (Open Source) · Intermediate
- Vercel AI SDK Documentation
Provides unified APIs for real-time text streaming, client-side generative UI rendering, and structured output parsing in TypeScript.
sdk.vercel.ai · Vercel · Documentation · 100% Free (Open Source) · Intermediate
- vLLM Documentation & Deployment Guides
Guides you through setting up OpenAI-compatible API endpoints, prefix caching, streaming responses, and production container deployment.
docs.vllm.ai · vLLM Team / UC Berkeley · Documentation · 100% Free (Open Source) · Advanced
Communities & Discussions
Engineering discords, research channels, and practitioner forums.
- Latent Space Discord & Community
Active practitioner community discussing production AI architectures, AI engineering job markets, and paper breakdowns.
latent.space · Swyx and Alessio Fanelli · Community / Discord · Free · All Levels
- LocalLLaMA Community
Community sharing benchmarks, quantization configurations, fine-tuning setups, and hardware tests for open-source LLMs.
reddit.com · Reddit · Online Community · Free · All Levels