The Importance of Staying Organized

Antonio McElfresh

Summer Intern 2026

June 9, 2026

Goal

For this first week, I have a few goals I plan to accomplish:

1. Feed context into the LLMs

    • A big part of my workflow is general conversation with AI. Unless I’m working in Claude code and have a specific question about the code itself, I usually stick to ChatGPT for this. One of my goals is to open a new project in ChatGPT, provide the necessary context and background information, and manage my context windows to avoid hallucinations or incorrect answers.
    • Another thing I plan to do is give the models specific instructions on how to answer questions / do work, and the other is for context for the AI, almost like a brain.

    2. Set up a note-taking process that I’ll do myself to document, along with the notes that the LLMs generate, emphasizing the importance of organization for clarity and reliability.

    3. Successfully clone the Terrier repo and download the dependencies to run a simple dashboard on my laptop, proving that I can integrate Terrier stack data. As part of this goal, once I get my own dashboard running smoothly, I plan to use Codex/Claude Code to audit the dashboard and confirm that the data shown is live Terrier data and not hardcoded or hallucinated.

    4. My final goal for this week is to create the barebones smoke/AQI dashboard. The UI will be minimal, and this dashboard will serve no specific purpose or niche group. Much like in step 2, I want to ensure I’ve completed the basic prerequisites before diving deeper into the specifics. Then, I’ll begin brainstorming ideas for the final dashboard. I’ll have an agent browse the web and relevant sources to find inspiration and do general research. Then I’ll use a combination of Claude Design and ChatGPT image generation to create UI design references.

    With all these goals completed and goal #4 in progress, I can use most of next week to focus on fine-tuning specific details and crafting a UI.

    Workflow

    The way I’ve built dashboards in the past and the way I started this specific project is by conversing with ChatGPT. The very first thing I did was upload the project PDF, share the repo link, and add additional context. From there, Chat started giving me some ideas on where to start and what to do. I began by creating the project folders and a dedicated Docs folder for all documentation-related items. I’ve found that over the course of a project, context can get slippery with AIs, so keeping this context “brain” in an area that the AI can access is important. Additionally, after any change the AI made, I had it log the prompt and relevant information for my reference to assist with these reports.

    I successfully cloned the repo, but was running into issues with Terrier initializing correctly. I spent a significant amount of time troubleshooting with Chat, opening the Chrome debugger, and sharing error codes. I wasn’t getting far, so I decided to start over with a new approach.

    For my second attempt, I asked Chat for a prompt for Claude Code (PROMPT 1). I wanted Claude to start from scratch in a blank folder I created in the main project folder. It started doing its thing and used the same cloned repo from my previous attempt. To my surprise, after about 15 minutes of thinking and working (in high-effort mode), it actually succeeded! Still in Claude Code, I added an “audit” prompt to verify that the data I was seeing was not hardcoded or fabricated (PROMPT 2).

    One neat thing about Claude Code (though I haven’t seen this in Codex) is that it can actually navigate and interact with your browser. This was very useful because, as it was working, it was simultaneously interacting with the running localhost. It took screenshots, validated any proposed changes, and took corrective action as needed. Images 1, 2, and 3 show the dashboard’s current state.

    Successfully cloning the Terrier repo and verifying that the entire repository was cloned correctly marked a major milestone, confirming my ability to set up the environment effectively. Images 4, 5, and 6 show the dashboard’s current state. Moving forward to next week’s goals, I began brainstorming the dashboard’s design and use using PROMPT 3. I’ll elaborate more on this in next week’s report.

    I now have my accomplishments for this week: a proof-of-concept dashboard showing that I successfully cloned Terrier on my machine and got it working. As I move forward with this project and the rest of the summer, here’s what my general workflow will look like:

      1. Brainstorm ideas and give context to ChatGPT.
      2. When I have a clear goal, I ask Chat to make a prompt for Claude Code.
      3. Review the prompt, make any needed changes, and give it to Claude Code.
      4. Converse with Claude Code about specific changes it made or the small changes I want. Refer back to Chat for new, more in-depth prompts if needed.
      5. Run “audits” on the project using ChatGPT and Claude code to verify requests and debug any issues.
      6. Document any relevant information for reporting purposes.

    I’ll also be using various other, more specific AI tools as I learn about them to enhance my overall workflow.

    Prompts Used

    PROMPT 1: First, build the smallest reliable Terrier app from scratch. (Claude Code Opus 4.8)

    PROMPT 2: Audit this project to verify whether the dashboard is using real Wet Dog Weather Terrier data versus mocked, hardcoded, placeholder, cached, fallback, or hallucinated data. (Claude Code Opus 4.8)

    PROMPT 3: I need you to browse the web and other sources to find a dashboard similar to the one I’m currently building. This means smoke/AQI or related dashboard types. I want references and inspo for my own dashboard, so try to find stuff across all genres and niches. Take as much time as you need and bring back links/images. (ChatGPT 5.5)

    What Worked

    • Having ‘Bypass Permissions’ enabled for Claude Code or Codex grants the AI full access to my machine. In this project, Claude Code interacted with my terminal, ran various commands, browsed Chrome to debug the app, and made real-time changes. This saves a lot of time because I can leave Claude running in the background without having to approve every command.
    • Context management is very important, especially when working across multiple AI models. Having a good documentation setup is key because even though I’m jumping from Claude to Chat, they all read the same context from the same area.

    What Didn’t Work

    Enabling Bypass Permissions can also be negative. More importantly, it can be dangerous to your machine or to any sensitive information on it. I’ve never run into any security issues doing so, but I’ve found that with full permissions, the AI will sometimes do too much, causing confusion, disorganization, and additional bugs.

    I wasn’t really sure why Terrier wasn’t initializing properly at first, and when Claude Code fixed it, I didn’t know how it did it. I asked it to explain the issue and fix it for me, and here’s what it replied with:

    Terrier initialization — what went wrong & how it was fixed

    Issue 1 — Terrier engine wouldn’t load (WASM 404)

      • What: Terrier’s WebAssembly engine file (WhirlyGlobeWeb.wasm) failed to load → Terrier never started.
      • Why: Vite (the build tool) pre-bundles dependencies by default; that default is incompatible with how Terrier loads its WebAssembly, so the file wasn’t served.
      • Fix: Told Vite to exclude Terrier from pre-bundling (optimizeDeps.exclude invite.config.js) + an npm script that copies the WASM files into the served folder as a backup. → Loads reliably (HTTP 200).

    Issue 2 — Startup call silently failed (wrong arguments)

      • What: Calling Terrier’s startMapLibre() did nothing — no error, just no initialization.
      • Why: The published API doc was one parameter behind the actual SDK. The docs showed 3 arguments; the actual function takes the API key as the 2nd argument. Following the doc shifted every argument by one slot, so Terrier got a map object where it expected the key, hit its “key must be a string” guard, and quietly bailed.
      • Fix: Used the real signature from the installed source — startMapLibre(stack, apiKey, map, readyFunc). (Not a Terrier bug — just a stale doc.)

    Takeaway: Two separate layers — a Vite build-config issue (WASM) and a stale-documentation issue (argument order). Neither was an NPM problem. Diagnosed by reading the installed SDK source instead of trusting the docs.

    While I’m not sure exactly what all of that means, I’m going to use this opportunity and the rest of the summer to learn more about this type of work so I can be more efficient and productive. Other than that, there were no other major bugs.

    Lessons Learned

    Organization is key

    • Allowing the AI full autonomy can definitely save time, but it can also make it easy to lose track of what it’s doing. Staying organized is probably the most important task of this entire summer, because without it, I can’t properly document.

    Be more direct with instructions, because 9 times out of 10, the agent will make general assumptions and sometimes overwork. This can make it difficult to follow along with the work it’s doing.

    • Make smaller requests at a time rather than one large request to the AI.

    Images/Video

    Image 1 (Click to enlarge)

    Image 3 (Click to enlarge)

    Image 5 (Click to enlarge)

    Image 2 (Click to enlarge)

    Image 4 (Click to enlarge)

    Image 6 (Click to enlarge)