Skip to content

Publish: The $5,000 AI Coding Experiment: What 1,000 Devin Tasks Taught Us#3948

Merged
goranmoomin merged 13 commits intomainfrom
blog/devin-ai-review
Feb 16, 2026
Merged

Publish: The $5,000 AI Coding Experiment: What 1,000 Devin Tasks Taught Us#3948
goranmoomin merged 13 commits intomainfrom
blog/devin-ai-review

Conversation

@harshikaalagh-netizen
Copy link
Collaborator

@harshikaalagh-netizen harshikaalagh-netizen commented Feb 13, 2026

Article Ready for Publication

Title: The $5,000 AI Coding Experiment: What 1,000 Devin Tasks Taught Us
Author: Yujong Lee
Date: 2026-02-13
Category: Engineering

Branch: blog/devin-ai-review
File: apps/web/content/articles/devin-ai-review.mdx


Auto-generated PR from admin panel.


Open with Devin

@netlify
Copy link

netlify bot commented Feb 13, 2026

Deploy Preview for hyprnote-storybook canceled.

Name Link
🔨 Latest commit 11d1508
🔍 Latest deploy log https://app.netlify.com/projects/hyprnote-storybook/deploys/699341e048b41b0008fc0302

@netlify
Copy link

netlify bot commented Feb 13, 2026

Deploy Preview for hyprnote failed.

Name Link
🔨 Latest commit 11d1508
🔍 Latest deploy log https://app.netlify.com/projects/hyprnote/deploys/699341e03647d300088c4d11

@github-actions
Copy link

github-actions bot commented Feb 13, 2026

Grammar Check Results

Reviewed 1 article.

Is Devin AI Worth It? We Spent $5,000 to Find Out

📄 apps/web/content/articles/devin-ai-review.mdx

The article is well-written overall with clear structure and good examples. The main issues are: one em dash on line 26 and another on line 44 that should be replaced with regular dashes per your style rules, and minor clarity improvements (line 76: 'at the right timing' should be 'at the right time'). The content is coherent, engaging, and maintains consistent tone throughout. No significant grammar or spelling errors detected.

Found 6 issues:

📋 Other

Line 11

Devin

This line contains a proper link format - no issue here. However, check if link text in bold should be handled differently in your style guide.

📋 Suggested fix (click to expand)
**[Devin](https://devin.ai/)**

💡 Clarity

Line 27

Real example: John, my co-founder, identified an issue with our AI prompts and tagged Devin to fix it. Devin fixed it, but the approach was non-optimal. Since AI prompting is something I work on, I jumped into the same thread with more context. Devin figured it out based on my additional input, finished the PR, and it got merged.

This is a long sentence that could be split for clarity, but it is grammatically correct. Consider breaking into two sentences for readability.

📋 Suggested fix (click to expand)
**Real example:** John, my co-founder, identified an issue with our AI prompts and tagged Devin to fix it. Devin fixed it, but the approach was non-optimal. Since AI prompting is something I work on, I jumped into the same thread with more context. Devin figured it out based on my additional input, finished the PR, and it got merged.

Line 85

Pro tip: We encoded this knowledge as an "offload agent" on how to use Claude CLI. Mentioning "consult smart friend" (something Devin uses as a prompt internally) helps Claude CLI get called at the right timing.

Replace 'at the right timing' with 'at the right time' for more natural phrasing

📋 Suggested fix (click to expand)
**Pro tip:** We encoded this knowledge as an "offload agent" on how to use Claude CLI. Mentioning "consult smart friend" (something Devin uses as a prompt internally) helps Claude CLI get called at the right time.

Line 91

In Hyprnote, we focus on supporting multiple providers for language and speech model inference as part of our open-source effort. Early on, we spent time designing and documenting flexible, clean interfaces. This worked well for future contributions and community involvement.

This paragraph is grammatically correct but slightly wordy. Consider simplifying, though this is not a critical issue.

📋 Suggested fix (click to expand)
In Hyprnote, we focus on supporting multiple providers for language and speech model inference as part of our open-source effort. Early on, we spent time designing and documenting flexible, clean interfaces. This worked well for future contributions and community involvement.

🔸 Em Dashes

Line 35

The agent isn't replacing us—it's joining the conversation where it's already happening.

Em dash should be replaced with regular dash or the sentence should be rewritten

📋 Suggested fix (click to expand)
The agent isn't replacing us - it's joining the conversation where it's already happening.

Line 53

As a small early-stage startup, there's always a lot going on. We're handling day-to-day work while thinking about what's next—new features, product direction, how the codebase should evolve. That's why it's extremely helpful to dump all of this into an async coding agent and let it figure things out.

Em dash should be replaced with regular dash or the sentence should be rewritten

📋 Suggested fix (click to expand)
As a small early-stage startup, there's always a lot going on. We're handling day-to-day work while thinking about what's next - new features, product direction, how the codebase should evolve. That's why it's extremely helpful to dump all of this into an async coding agent and let it figure things out.

Powered by Claude Haiku 4.5

Comment on lines 17 to 19
```
<iframe width="560" height="315" src="https://www.youtube.com/embed/UojsNSbhm6o?si=2UEgp4KmILzbzrcD" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
```
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The iframe is wrapped in triple backticks, which will render it as a code block (plain text) instead of an embedded video. The YouTube video will not display.

Fix: Remove the triple backticks:

<iframe width="560" height="315" src="https://www.youtube.com/embed/UojsNSbhm6o?si=2UEgp4KmILzbzrcD" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>

Spotted by Graphite Agent

Fix in Graphite


Is this helpful? React 👍 or 👎 to let us know.

@harshikaalagh-netizen
Copy link
Collaborator Author

@goranmoomin can we please merge it and take it live, if the youtube video is added

@goranmoomin goranmoomin merged commit fd47bb2 into main Feb 16, 2026
8 of 13 checks passed
Copy link
Contributor

@devin-ai-integration devin-ai-integration bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Devin Review found 2 potential issues.

View 1 additional finding in Devin Review.

Open in Devin Review

Comment on lines +5 to +6
author:
- "Yujong Lee"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔴 Frontmatter author is a YAML array instead of a string, breaking schema validation

The new article defines author as a YAML list (- "Yujong Lee") instead of a plain string. The content-collections schema at apps/web/content-collections.ts:89 defines author: z.string(), so this will fail Zod validation during the build.

Root Cause and Impact

In YAML, the syntax:

author:
  - "Yujong Lee"

produces an array ["Yujong Lee"], not the string "Yujong Lee". Every other article in the repository uses the plain string format: author: "Yujong Lee".

The Zod schema (z.string() at content-collections.ts:89) will reject an array value, causing a build-time error that prevents the entire articles collection from being generated.

Even if the build somehow succeeded, downstream code would break:

  • AUTHOR_AVATARS[article.author] at apps/web/src/routes/_view/blog/$slug.tsx:117 would receive an array as a key, returning undefined (no avatar displayed)
  • Author comparison at apps/web/src/routes/_view/blog/$slug.tsx:28 (a.author === article.author) would fail since array equality doesn't work with ===
  • The author name displayed in the UI would render as Yujong Lee with array-to-string coercion artifacts
Suggested change
author:
- "Yujong Lee"
author: "Yujong Lee"
Open in Devin Review

Was this helpful? React with 👍 or 👎 to provide feedback.

Comment on lines +5 to +6
author:
- "Yujong Lee"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🚩 Content admin panel may be generating array-format author fields

The PR description says this was auto-generated from an admin panel. The admin panel likely has an author field that outputs YAML arrays (e.g. author:\n - "Yujong Lee") rather than plain strings. This could affect future articles created through the same workflow. It may be worth checking the admin panel's content generation logic at apps/web/src/routes/api/admin/content/publish.ts or related admin routes to ensure the author field is serialized as a plain string, not wrapped in a YAML list.

Open in Devin Review

Was this helpful? React with 👍 or 👎 to provide feedback.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

Comments