
Image credit: Original image
Originally appeared in LinkedIn Future Singularity
The story of how LLMs helped me build smarter, faster
My first foray into Next.js App Router was building an internal tool for my agency—a structured system for requesting and providing feedback/evaluations. Next.js wasn't the original plan (if I even had one), nor was I familiar enough with it to assume I could use it. This project would determine the path forward. The initial scope seemed manageable, but over the first few weeks of planning, it ballooned into a behemoth. My Dev team was fully occupied with client projects, and even if they had time for an internal initiative, it certainly wasn't enough for something of this scale.
Our small, cross-functional team banded together to concept, architect, design, and develop the project between client deliverables. When asked at the beginning of the year how soon we would have a viable product for internal teams, I was caught in a brief but intense thought process—I have to build this myself, in a short timeframe, and likely without additional development support. My rushed, haphazard response was, "You'd be lucky to see a work-in-progress by late February." But as usual in the agency world, once something is said, it becomes the deadline. So, the end of February became the goal.
Great, now what?!
Historically, I've considered myself a solid JavaScript developer with varied experience in PHP for back-end and database work. But this project had expanded beyond my initial vision. A new requirement emerged: not only did I need to authenticate users via Okta, but I also had to use their login information as a profile to control access to specific portions of the site. Can I do this alone? I wondered. Of course, but not without a lot more time.
I didn't have the luxury of more time—at least not what I was assuming would be a fair amount of time even with the inclusion of lost weekends and late nights. I needed a smarter way to build this new mousetrap. Instead of relying on past experience alone, I turned to Google for ideas, combed through GitHub for similar concepts, and searched for existing solutions that I could build upon. But nothing fit—not even partially. And here I was once again stuck in my old way of thinking. Then it hit me: I don't spend hours hunting for small solutions anymore, so why would I waste days or weeks piecing together this massive puzzle?
LLMs Enter the Arena
I could have started prompting AI models for specific functions or best practices, but that wouldn't answer the bigger question: Now what?! I needed a plan. Since I had recently been working on prompting methodologies with our agency's AI Center of Excellence, I decided to write the most detailed prompt possible. Without including any proprietary information, I described the need for the tool, the types of users involved, their capabilities and limitations, and the authentication requirements with Okta and Microsoft Entra ID (formerly Azure Active Directory). I outlined a presumed database schema and API routes. There was a lot—but that was a good thing.
With my request structured, the next step was to choose an LLM to test it out on. Given the level of detail in my prompt I was hoping that it might lead to a deeper dialogue with an LLM, ultimately helping me determine the best path forward. Since my initial content was descriptive and not proprietary, I felt comfortable trying multiple sources. I set up my research environment: MS365 Copilot in one tab, ChatGPT in another, and Claude in a third. I pasted my prompt into each, one by one, not knowing exactly what to expect. But the responses were amazing. Not because one model was necessarily better than the others, but because my prompt was so comprehensive.
Each system, recognizing my inclination for JavaScript and MySQL, suggested exploring Next.js App Router. Beyond that, each offered unique insights. After refining my prompts, MS365 Copilot helped develop a complete database architecture, including relationships and setup scripts. Claude asked critical questions about authentication and user access, leading to recommendations for specific Node.js modules. ChatGPT ensured my API methods were structured safely and consistently. Things were finally coming together—or so I thought.
Time Heals All Hasty Mistakes
I followed the models' advice and began assembling the project. So. Many. Errors. But this was a new framework—I needed to give it a chance. I restructured components, asked Copilot for occasional guidance, and discovered that while Copilot's coding advice wasn't always perfect, the models were good at correcting each other's work.
That led to an important question: Why didn't I try a code-generation AI tool? There are plenty available. Why not use one to at least get me started? The honest answer: I love to write code! I wanted AI to assist when needed, not write everything for me. What's the point of building something if you're not actually building it?
In the end, I learned the strengths of each AI model as it related to how I use them. Copilot was invaluable for structure-related questions, while ChatGPT helped define complex SQL joins and grouping methods. Claude provided brainstorming support, offering alternative coding approaches. Ultimately, I relied on Copilot the most—but only when I truly needed it. I started feeling better prepared for this new development journey that I was on.
Did I Mention Scope Creep?
Midway through planning, as my concerns were already firmly cemented, the team pitched a great feature: spontaneous review sessions. It was quickly labeled a phase two priority. But as I considered the potential conflicts that could arise with the logic and data structures, we decided to tackle those considerations earlier.
I'm writing this at the end of February—so, did I meet the deadline? Actually, I finished almost two weeks early! Once I solidified the structure and focused on reusable components, everything became easier. I still wrote plenty of code in the evenings and on weekends, but that was my choice. (See: I love to write code! above.) The project hasn't officially launched yet—we're waiting on leadership approval—but it's ready for internal teams. And as for phase two? It never happened. The efficiencies gained allowed us to roll everything into phase one.
Looking Back
What started as a daunting project with an impossible deadline turned into a valuable learning experience. The combination of Next.js and strategic AI use not only helped me complete initial development and initial testing ahead of schedule but also expanded my development toolkit.
Modern development isn't about choosing between writing code yourself or having AI do it all—it's about finding that sweet spot where technology enhances creativity and problem-solving. For developers facing similar challenges, I recommend investing time in crafting detailed prompts and leveraging multiple AI tools for their strengths. The future of development isn't about giving up coding; it's about coding smarter.
As for our feedback tool? It's already generating buzz within the agency, and I can't wait to see how it transforms our ways of working. Sometimes, the best tools are the ones we build ourselves—with a little help from our AI friends.