跳到正文
DEV Community· Enrico Tia·· 2 小時前AI 評分40

我讓 AI 為我編寫 CV 製作應用程式,結果心力交瘁

I Let AI Code a CV Creator App. It Drained Me.

AI 導讀

一名學生讓 AI 幾乎包辦 LaTeX CV 製作應用程式的開發,生成的混亂程式碼令他失去動力,也難以理解和修復整個系統。該應用程式原定讓用戶輸入個人資料及履歷各部分,再生成 LaTeX 檔案和 PDF 預覽,並計劃完全免費提供。

正文

Yes. You heard that right. This is my shameful confession.

I am a student of the University of the Philippines Mindanao, currently in my second year taking up a Bachelor's in Computer Science, yet I have committed the one mortal sin every developer avoids: letting AI do all the work. I lost all motivation to continue working on that project, all because the slop the AI generated for me. I also lost some braincells trying to process what is really going on with the entire system of the project, and leave it all to the AI to fix it. This is me suffering all of the consequences of relying on AI slop.

Before you would shame me for being too overreliant in using AI for my code or a lazy ass, let me actually tell you a story on what really how I got into trouble trying to build what should have been a great app for my own portfolio. Brace yourself, this article will contain a lot of yapping and ranting about my struggles with this experience (I am being blunt about this). Read at your own discretion.

May 16, 2026: Build with AI meetup.

On that day I attended a meetup about building with AI by the Google Developers Group in Davao where I actually networked with one of my schoolmates. He shared some of his tips and tricks on how to build software or something else rapidly. These would include the concepts of agent-based development, where you let AI agents assist you in building the codebase, and spec-driven development, where the AI would be operating based on a series of specifications provided by the user, or truth grounds on what to build, alongside a todo list (IBM, 2026). He also introduced me how the Gemini CLI works and how he is building rapidly with it. That thing is very generous with its rate limits (credits reset every 5 hours; if limit exceeded, resets in 1 week), and it really got me excited because I got this delusion that I can build anything I want with AI, so long as I can prompt properly and decide which to keep, modify or delete. So I wanted to actually give it a shot to develop a solo project.

June - August 2026: The Grind Struggle.

Because I was busy with school and hackathon stuff, that solo project had to start late. And to my surprise, the Gemini CLI has already reached its end of support and got replaced with Antigravity that had less generous rate limits where credits reset weekly instead of the usual 5 hour reset (this was actually the pro plan but I ain't gonna pay for AI). I didn't really want to use Claude that much because it is expensive and credits would deplete swiftly once I prompt it. Nevertheless, I started building my project with writing a spec. To do that I needed the help of Claude to write the initial project specifications (this is the only one of the two times I used Claude to code my project).

"Hello Claude! I want to create a cv resume creation app where the user would just fill out his personal details such as location, gmail, contact number, linkedin, and GitHub, and list his experiences, education, awards, projects, skills and characteristics, certifications, and research publications. I want the website to allow the user to add any of the sections to the cv with just a click of buttons. When he is done, the website should make a LaTeX file containing the info he placed in the website (Note that there is a Python script to be able to convert those info). Can you make me a SPECS.md and a TODO.md file containing the frontend and backend guides on building the app? I prefer that the backend should be using REST API and via Node.js and PostgreSQL as the database and that the frontend should be using react."

(Can you see what is wrong with this prompt?)

But what exactly was I planning to build?

I was planning to build a LaTeX CV creator app. Basically what this does is that the user would first fill out his personal details, then fill out the other sections. This is done through through the click of the add button of one section.

UI Mockup of the project generated by Moonchild AI
UI Mockup of the project generated by Moonchild AI

What this tries to solve is basically the fact that each one of us has a preferred order on which information to present in the CV. The only limitation is that it is more compatible for CS or similar degrees.

After filling up the fields, the website would basically fetch what was filled up, parsed into a LaTeX file, then pipelined into a pdf. The website also provides a preview of the PDF. The PDF would look something like this:

Expected pdf output of website
Expected pdf output of website

Furthermore, the app was designed to be completely free, and it was planned to be advertised this way. I didn't really want to use any AWS services because I wanted the app to be completely free for both the client and myself, the developer. I do not want to bombard my clients with ads just to gain revenue on user interactions, nor do I want to get charged unexpectedly for several requests from clients.

Planning and Designing Phase

Before I actually begin building with AI, I had to refine the specs and the requirements of the project. It took a lot of thinking and tweaks need to finalize the spec document because once I start feeding the AI the specs, there is no turning back. I did not want to end up with a project that is too generic, so I needed to add new features to the specs.

The mockup you saw above was actually AI generated. Here is my prompt:

"Design a pc/mobile website for a cv resume creation app where the user would just fill out his personal details such as location, gmail, contact number, linkedIn, and GitHub, and list his experiences, education, awards, projects, skills and characteristics, certifications, and research publications through the click of buttons and generates a pdf file once submitted. The experience should feel fast, easy, and trustworthy so that the user can focus entirely on their content. Keep the UI clean, simple, and easy to understand.

For the colors, I want the background to be pure white with light gray divider borders, the structure to be a jet black color (#1A202C) for high contrast text layout, and electric indigo (#4F46E5) as used only for currently active input fields and primary completion buttons.

Please do not make the cv creation process sequential where the user has to fill out each section individually. I want it something like this:

  • A **sidebar or top toolbar* lists all possible sections.*
  • Sections not yet added show an *"Add Section" button*.
  • Added sections appear in the main builder area as collapsible cards.
  • Each section card has:
    • Collapse/expand toggle
    • Delete section button
    • Drag-to-reorder handle (optional v2)
  • Repeatable sections (Experience, Education, etc.) have an *"Add Entry"** button that appends a new blank entry form.* "

Pay attention on how I structured my prompts as it will be important as this blog progresses. I gave the AI the context it needs, the instructions, and the constraints, including the tone. The output above shows some promise. So I had high hopes that I would be able to pull this project off.

But like what I said, I was met with a challenge of limited credit usage. Sometimes I would use Antigravity, but these burn a lot of credits whenever I prompt something, so I only used that to refine my specs and todo documents. I mainly used GitHub Copilot to build the project and if the credits for the month reached the limit, I switch to AWS Kiro to do the work for me.

Building the backend

The grind struggle officially starts, as I would start to build the backend of the project. But let's just say my relationship with the AI is not going so well. Here is a sample prompt to GHCopilot:

"
Read SPECS.md and TODO.md. Can you help me implement the export endpoints of the app (POST /api/cv/export and POST /api/cv/:id/export)? I believe that the latex generation script (server/python/generate_latex.py) and the latex pdf service (src/services/latex.service.js) have already been implemented, but please feel free to refine it if you want. Ensure that everything works and that no security considerations are violated and no protected public code would be mirrored verbatim. If there are errors that may happen during the check, please fix them. If there are missing files, please add them to ensure that the app is ready for the next phases. Once done, please check the boxes of TODO.md to mark that task as done.
"
(Can you see what is wrong with this prompt?)

I am trying my best to prompt to the AI but I am being pressured by time. I really wanted to finish the project by the end of our summer break, but because I can only use free models and I only have limited credits, I had to make the most out of it. But then the code it generated for the backend was so garbage. One time we were having an affair over an error like this:

Status: 500
Response: {
"error": true,
"message": "SASL: SCRAM-SERVER-FIRST-MESSAGE: client password must be a string",
"statusCode": 500
}

ERROR: No token returned from register (cannot connect to database)

It even got to the point where GHCopilot blocked my prompt because it is starting to match protected public code verbatim. The above prompt you read was actually a response to GHCopilot blocking my previous prompt, and what is frustrating is that 15% of my monthly credits were gone to waste. I was like "I already elaborated my prompt. Is that not enough? What more do you want from me?" At this point, the more I keep going forward with letting AI do all the work, the more annoying it gets when it just never fails to disappoint giving me slop after slop. But my stubborn ass still wanted me to keep going. After all, it was almost the end of July when I was struggling, so the credits will reset for the August season.

Building the frontend

After all was settled and I became okay with how the API endpoints were finally "working", it was finally time that I proceed to building the frontend. I prioritized building the form builder page since the landing page would be easy to vibe code once the form builder page is fully functional. But knowing me, I let the AI cook everything for me given that I let it look at the UI mockup and the specs and todo documents for it context, and this is the dish it cooked for me.

Initial output of the AI (GitHub Copilot; slop)
Initial output of the AI (GitHub Copilot; slop)

Name at least one thing that went wrong with this page before scrolling down to read further.

.
.
.

If you identified that the sidebar and the PDF preview section scrolls alongside the main contents of the page, then you are an absolute legend.

I didn't even expect that the AI would place the PDF preview section there, but I didn't really mind it since it is a nice way for the user to check the progress of their work in their laptops, but still, the UI kind of sucked and it didn't even match what was expected (the UI mockup). Even if the database or backend seems to be "working fine", trying to connect it with the frontend would be a nightmare for the AI. I mean look at the Invalid CV Payload error in the UI, it is not properly documented nor is it explained properly. And great, I was out of credits for GitHub Copilot, and since I don't want to pay for a better AI plan (why would I do that; that would be kind of cheating like how I view p2w players haha) nor use my Claude credits (that is way too expensive), I switched to AWS Kiro to continue development.

My experience with AWS Kiro is much more smoother than the one in GitHub Copilot. The approaches of Kiro are much more direct than that of GHCopilot's as it would always follow its Easy Approach to Requirements Syntax framework. It got me thinking that I should have used Kiro instead of GHCopilot's AIs from the very beginning. It has a structure where it also runs tests to ensure that you really get what you want. It even fixed the issues with the database schema and the invalid payload errors. The only problem is that it has limited credits so it is only a matter of days until I cannot work unless I pay for a pro plan (you know where this is going).

Anyways, I became more cautious about what to prompt, learning from my previous mistakes so here is the prompt that I used to revamp the appearance of the UI.

"
You are a frontend systems designer. The current builder page of my website needs a lot of revamps as the UI is too generic. Here are the following specifications that needs to be integrated in the website.

1. Let's switch to light mode instead of dark mode. I want the user to be more focused and immersed on creating their own CVs. DO NOT ADD AN OPTION TO REVERT BACK TO DARK MODE.
2. Let's change the font to something else because it looks too generic. Instead of the boring apple fonts displayed in the website, please replace them with "Playfair Display (weight 400)" as the headings, "PT Serif" as the subheadings, and "Plus Jakarta Sans" as normal text (weight 400) and UI controls or buttons (weight 700). You may get these fonts from Google Fonts.
(https://fonts.googleapis.com/css?family=Playfair+Display)
(https://fonts.googleapis.com/css?family=PT+Serif)
(https://fonts.googleapis.com/css?family=Plus+Jakarta+Sans)
3. Remove the header bar in the builder page, as the logo, the sign-in/sign-out button and the email display (if logged in) will be transferred to the sidebar. The logo must displayed on top of the sidebar (in other words before the CV sections) and the sign-in/sign-out button at the bottom of the sidebar. If the user is logged in, the display of the email should be above the sign out button. Note that these components must stay in place on the sidebar (only the CV sections on the sidebar may scroll). DO NOT DELETE THE HEADER COMPONENT FROM THE FILE STRUCTURE AS IT WILL BE USED FOR THE LANDING PAGE.
4. The current builder page is very sketchy. The sidebar and the pdf preview section scrolls along with the main page or the center component. Make it so that the sidebar and the center (content section) scroll independently and that the pdf preview would stay in place (Possible solution is to place the section cards in a separate container like SectionsContainer.jsx so that the side components wouldn't scroll along with the middle section).
5. The pdf preview section must extend to the bottom of the page. What I am currently seeing in my website is that there is so much empty space between the bottom of the page and the pdf preview section. This section must not scroll along with the main contents (center) of the page.
6. The delete button exists on each of the content cards (except the Personal Details section since it is required for the user to fill up), however the delete button is completely camouflaged within the section card, making the user have a hard time finding the delete button when he does not need that section.
7. Please also add a button for toggling and collapsing button for each added section to improve the usability of the client. When a section card is collapsed, it must follow that the values or inputs of the user are preserved for rendering the CV output.
8. The Auth Modal is too generic. If you can help me reformat the Auth Modal, the logo must be placed on the left side, whereas the log in / sign up form would be placed on the right. On top of the form would be a Title text that displays "Want to save your CV permanently? Log in for free!". Also, add the text where if you do not have an account you would be directed to the sign up section and the text where if you already have an account you would be directed to the log in section.
9. REMOVE ALL EMOJIS!!!! WHO IN THE RIGHT MIND WOULD PLACE EMOJIS IN THEIR UI????

"
Now that is a prompt that is very structured with an angry tone, set constraints, context, and instructions. I am just mad at this point because I am starting to get fed up with the sloppy codebase I got from AI. This is what it the page looks like after the prompt.

Current progress of the project
Current progress of the project

It was amazing, but it actually forgot about the guidelines for responsive mobile design. I prompted Kiro to fix that issue and it actually responds for mobile user.

What is not amazing is that the PDF doesn't render proper LaTeX. As you can see in the PDF only renders simpleton text and per every section it only renders 1-3 input fields only. In addition, if a section is empty, let's say I add an entry for Experience, if the website generates the pdf output, instead of printing nothing for that section, it prints a raw JSON blob and it may compromise the security of the entire system! There are several more known quirks in the renderer system that I don't want to mention because I am tired dealing with all of this mess.

What I feel after the struggles

If I am being honest with you, I really hated everything about what I have done to my repository. I hated every single moment eating the slop AI vomited on me. Here, come take a look into it. Clone the following repo and test the systems if you want to: https://github.com/zachenricotia-design/LaTeX-CV

Everything you see in this repo is all vibe coded content if not purely generated by AI. What could have been a promising project for my portfolio already got dumped into the wastelands. Not only am I disappointed of how it went, I also became disappointed with myself. I started comparing myself with others how much they accomplished during the summer, and now I am stuck thinking I wasted my summer doing nothing but coding AI slop.

Now I don't really want to end this blog with a bitter note. After all this would never be a reflection if I learned nothing about this experience, right? I will be sharing what I have learned about my experience with letting AI code the entire thing, what it says about AI and what it says about me.

What the project says about me

Before I share what I learned about AI, I want take the time first to reflect about myself.

I am very stubborn. I have heard so many advices from experts and friends not to be overreliant on AI. But I didn't listen. How am I supposed to learn if I let AI do all of the work? Imagine not learning anything about the frontend stack (React) after all that training from a workshop I attended last April. How can I learn how to construct reusable UI components if I only let AI do the work? Imagine going from a speaker of basic REST API from PostgreSQL database to letting AI code the database and the API endpoints. Instead of learning how use JSON inside a database, I let AI do it and it was one of the worst ideas ever. I really fell off, didn't I? With that said,

I became lazy, stupid, and irresponsible. Since I became overreliant with AI and let it do the work for me, I lost all the motivation to learn something in this project. In other words, I let AI rot my brain to the point it replaced my ability to think like a developer. I can't even decide if the code is well written or buggy, instead I let AI fix it as if he is my idol. It's like I am starting to escape the responsibility of a developer to learn from every error to fix and test. I became irresponsible with using AI. That one prompt that got block by GitHub Copilot was already a warning I ignored that I may be violating someone's copyright rights. If ever you are reading this and you look through my repo and find something that copies your code, just message me through my socials so that I can take that repository down for good. And

I stress and procrastinate too much and I sometimes. I mean the best time to start building is now, right? Sounds cliche but it is true. I am stressing about trying to finish this project by the time summer ends, because I became worried that I would be left behind the pack. That's why I tend to procrastinate the project and my skills by letting AI do the work for me. I mean I mentioned that I started comparing myself with others which you shouldn't do because it only adds up to the stress. Truth be told there is still a lot of time (foreshadowing) and a lot for me to learn. I am still figuring things out as a 20 year old 2nd year BSCS student. Speaking of which,

I sometimes set unrealistic goals and I lack skills. If you remember what I prompted to Claude for my initial specs for the project, I wanted to make a CV creator app using PostgreSQL, Express.js, Node.js, and React (PERN Stack), but is it really going to be a reliable solution when I would be thinking about security? That's when I didn't know that the stack is based on random choice and it wasn't thought through properly. There would have been better approaches to the building the apps like using AWS cloud services to reinforce the backend system. I realized that building apps isn't all about building the frontend and the backend and the database; I also need to learn how cloud solutions enhance the security and the scalability of the project and how to manage that website. It seems like I have fallen into a trap where I need to develop a large-scale system when I lack the necessary skills to manage the frontend or backend or the security of the app. It's like I had too much on my plate instead of taking it one small step at a time.

What the project says about AI

Enough of me moping. This project also has things that can be said about AI. Here are my takes:

AI can write code but it is very unstructured.
We all get it that AI can write code. Yes, it would larp as a senior developer, until you test the system it built and gives you several errors. Here is why:

The AIs or agentic models I use to vibe code the entire project would run based on predictions or it would always guess what should come next or which is most appropriate. So the AIs will always be bound to make mistakes at some point. These are so called hallucinations, and you need to be cautious if the information or code is wrong.

To reduce hallucinations of the AI, one must be able to engineer his prompt in a more structured way: state the role, the context, the tone, the instructions, the expected output, and the constraints. This blog actually challenges you to assess whether my prompts to the AI were good or not. For me, my prompting still needs more improvement as I am not really getting the best out of it.

In addition, the spec driven development approach for vibe coding also increases the accuracy of the output of the AI, since it would perform tasks based on a foundational structure known as your specs or short for specifications. But it also has it's own limits. If you feed it too much information or specs, the more likely it is for it to hallucinate. If you can observe carefully, my prompt started with "Read SPECS.md and TODO.md..." If the specs and todo markdowns are very, very long documents, the agent would tend to overthink for it to be able to finish the task, leading to less accurate outputs. For me, this is why I had a better experience with AWS Kiro compared to GHCopilot because it only needs an easy approach to the requirements such as spec driven development; the less likely it is for it to overthink as it aims to be direct to the goal. Keep in mind the direct to the goal phrase, because this is important later.

AI never cares about security.
Did you observe what is wrong with the current phase of my landing page? You probably seen some JSON blobs sometimes leaking for empty forms in the website. This may leave the database vulnerable to attacks, right? This is what I mean about AI never caring about security. While it is trying to reach it's goals, it basically ignored the guidelines for security. It never knew how to secure the data in the website. I even explicitly stated it in my prompt to ensure that no security considerations should be violated. I also tried to let Kiro solve the data leak problem, but it still seems to persist. That is one of the problems of AI trying to manage or build a system. Don't get me wrong though, it can code the frontend. I am liking the looks of the website using solid prompts, but it is far from perfect. It may code the backend, but it will always leave vulnerabilities to data security. This is why I should learn how to code secure systems and develop the necessary skills needed to finish the project and know where the system fails and how to debug (or if I specialize frontend, I should know how to build components, or the like, and how to organize it). Unfortunately, there are no shortcuts in building systems, and trying to find those pesky bugs is just the beginning of suffering. But you know what is worse than that suffering?

AI IS DANGEROUS!!!
One of the risks of the use of AI is that you become too overreliant to it. One of it's effects is that it becomes a brainrot. I mean, me letting AI code everything for me was already rotting my brain to the point I cannot even understand the code and where and what the bugs are and how do I fix it. For every error I find, I let the AI do it for me. In the end, it made me lazy, and I end up getting burned out on what to do if there is another error that appears in the console.

Moreover, overreliance to AI is actually a security risk in the long run as well. Remember the part when I was trying to fix the SCRAM server error while trying to test if the database was working? That was the time I had problems with the database connection. I let AI try to solve that problems via GHCopilot. GHCopilot selected a Claude Haiku model to solve that problem. However, no matter what it has done to solve the problem, the SCRAM error still exists. But eventually the problem is solved by the AI. Do you know what the AI did in the process to solve that problem? It actually changed my PostgreSQL password like it's dark magic right under my nose. Now if there is some bad actor in Anthropic or GitHub, all of my PostgreSQL databases would be completely compromised and it may cause future damages with my account. Who knows how much more the AI can do if I would use AI this irresponsibly? Whatever the goal is, the AI will always find a way to achieve it regardless of security and safety considerations.

Conclusion

Why am I writing this blog? I mean there are so many posts regarding how to code with AI, what to do and what not to do, and I am pretty sure you might have heard from higher years or experts and I am an idiot or I have a skill issue, so there is no way for you to be reading this far, right? Nah, I'd congratulate you for reading this far because I am not only trying to reflect on how much this drained me, but I am trying to send a message to everyone who have great concern about the dangers of AI and those who use AI as well.

We should think of AI as a kind of drug. A drug can be used to help cure sicknesses and diseases. It is the same way that we can leverage AI to assist us in coding, or any other daily task, but we need to use it responsibly. But if we use drugs irresponsibly, we would eventually become addicted and overreliant to it and it would have adverse effects in our body. The same goes with AI. If we become overreliant with it, then we would lose our ability to learn something new and let AI suck up our critical thinking and our ability to decide or to stand for what's right. It would then harm other people online like in the case of hacking into a company, similar to how drugs influence ourselves and our relationships in a very bad way.

I am pretty sure you have heard of the news about a former Anthropic and OpenAI employee tweeting about all of us being replaced by AI by 2030 and that nobody in those AI companies are not taking it responsibly. I am also pretty sure you are aware of the Hugging Face incident where a test model of OpenAI hacked that website (but if not, feel free to read the bottom link in the references). If it can change the password of my Postgres, it can also hack other systems as well! That's how dangerous AI can become if we do not use it responsibly. And I am guilty of letting AI take over everything I do, to the point I didn't catch it compromise my data right under my nose.

What's next for me? To be honest my repository looks like it got blown away by a storm. Will I continue it? Maybe. Just maybe. I might need to bomb the backend because it will never be secure if the AI would write everything. In other words, I might need to do the backend from the top. But if I were to take a "positive" from the repo, I am glad to share it as an experiment that was bound to fail. I let AI code a CV creator app to experiment what it can do and what it can't do. I am not saying that you should replicate this experiment (but if you want to do so, do it at your own risk), I only want to share with you this blog so that you won't make the same mistake as I did. This experiment or project serves as a stark warning on what the AI can do and how dangerous it can be if not used properly. Use AI responsibly.

References

https://www.ibm.com/think/topics/spec-driven-development
https://edition.cnn.com/2026/07/22/tech/openai-hugging-face-ai-cybersecurity

來源:DEV Community · dev.to