Month 1 Capstone Project: Build a Smart Assistant
This is the full specification for your Month 1 capstone. You will build a working DIY smart assistant that takes input, sends a query to a large language model over Wi-Fi, and presents the response, then publish it to your portfolio. Use it as a checklist and a grading rubric while you build.
What you are building
A smart assistant is a device that accepts a question, sends it to a large language model, and returns the answer. Your version can take any form you like, from a keypad-driven gadget to a web-connected desk assistant, as long as it meets the required parts below. The goal is to prove you can combine input, network communication, processing, and output into one reliable system.
How your project will be judged
A complete capstone meets five requirements. First, a hardware input the user interacts with. Second, a hardware output that shows or speaks the response. Third, working Wi-Fi connectivity on the ESP32. Fourth, a successful round trip to the language model: send a query, receive and parse a response. Fifth, a clean, commented program and a tidy circuit that ties it all together. Meeting all five is a complete project; creativity and extra features are where it becomes memorable.
Working through it
Requirement 1: Input. Provide a way to ask a question, such as a 4x4 keypad for a standalone device or a web page served by the ESP32 that you reach from a phone or computer on the same network.
Requirement 2: Output. Display the model's answer on an OLED or the built-in screen, or deliver it audibly. Optionally add a buzzer or RGB LED to signal states like thinking and responding.
Requirement 3: Wi-Fi. Connect the ESP32 to a 2.4 GHz network. Confirm the connection and note the assigned IP before building the rest.
Requirement 4: Language-model round trip. Send the user's question to the model, receive the response, and parse the useful text out of it. Test this path on its own with a fixed question first.
Requirement 5: Integration and documentation. Draw the circuit diagram, keep the code commented and organized, and confirm every connection. Then publish the project with a short write-up to your portfolio and share it with the community.
Suggested program structure
// 1. includes and Wi-Fi credentials (remove before sharing)
// 2. setup(): connect to Wi-Fi, init display and input
// 3. getUserInput(): read keypad or web request -> String question
// 4. askModel(question): send query, return the parsed response String
// 5. showResponse(text): draw on the display, set status feedback
// 6. loop(): question = getUserInput();
// if (question != "") showResponse(askModel(question));
void setup() {
// connect Wi-Fi, initialize display and input here
}
void loop() {
// orchestrate: get input, ask the model, show the response
}
Break the project into small functions, one per responsibility, and test each alone before wiring them together in loop. This mirrors the modular, function-first approach from earlier in the month.
Common mistakes and troubleshooting
Trying to build all five requirements at once. Complete and test them in order: Wi-Fi, then the model round trip, then input, then output, then polish.
Hard-coding the query so nothing is actually interactive. Make sure real user input reaches the model; test with different questions.
Committing Wi-Fi or model credentials to a public repository. Remove secrets before publishing, or load them from a separate file you do not share.
Publishing with no explanation. Include a short write-up and a wiring diagram so others understand what you built and how.
Next: With the coding foundation complete, Month 2 moves into hardware: soldering, circuit design, and building your own PCB.