<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Robert Ionut Fundulea</title>
    <description>The latest articles on DEV Community by Robert Ionut Fundulea (@robertionutfundulea).</description>
    <link>https://dev.to/robertionutfundulea</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2557802%2Fdae0c516-ec84-4921-aab0-f83e72646799.png</url>
      <title>DEV Community: Robert Ionut Fundulea</title>
      <link>https://dev.to/robertionutfundulea</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/robertionutfundulea"/>
    <language>en</language>
    <item>
      <title>Four lessons from building AI, education, and healthcare products with Next.js</title>
      <dc:creator>Robert Ionut Fundulea</dc:creator>
      <pubDate>Mon, 27 Jul 2026 19:20:30 +0000</pubDate>
      <link>https://dev.to/robertionutfundulea/four-lessons-from-building-ai-education-and-healthcare-products-with-nextjs-3nm7</link>
      <guid>https://dev.to/robertionutfundulea/four-lessons-from-building-ai-education-and-healthcare-products-with-nextjs-3nm7</guid>
      <description>&lt;p&gt;Over the last few years, I have built products in very different domains: generative AI, job search, education, and clinic operations.&lt;/p&gt;

&lt;p&gt;Although the interfaces and users are different, several engineering lessons appeared repeatedly.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Multiple AI features still need to feel like one product
&lt;/h2&gt;

&lt;p&gt;Klyro brings together streamed chat, cited web search, image analysis, and image generation.&lt;/p&gt;

&lt;p&gt;The difficult part was not simply connecting several AI services. It was creating one consistent experience around them: shared authentication, one responsive interface, predictable errors, subscriptions, billing, and a transparent credit balance.&lt;/p&gt;

&lt;p&gt;For every operation, Klyro estimates the cost, reserves the required credits, and settles the balance according to actual usage. When an operation fails, the reserved credits are released.&lt;/p&gt;

&lt;p&gt;Live product:&lt;br&gt;
&lt;a href="https://www.klyroai.net" rel="noopener noreferrer"&gt;https://www.klyroai.net&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  2. AI should assist important decisions, not hide them
&lt;/h2&gt;

&lt;p&gt;RoleMint is a job-search copilot that discovers opportunities, compares them with a candidate’s profile, generates ATS-oriented materials, and organizes applications in a visual pipeline.&lt;/p&gt;

&lt;p&gt;The user remains responsible for reviewing and approving every generated application. That human checkpoint is important when AI-generated content represents someone professionally.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://rolemint.vercel.app" rel="noopener noreferrer"&gt;https://rolemint.vercel.app&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  3. A learning platform starts with its data model
&lt;/h2&gt;

&lt;p&gt;BrightLearn supports lessons, categories, tags, quizzes, questions, answers, attempts, scoring, and progress history.&lt;/p&gt;

&lt;p&gt;It was built with Next.js, TypeScript, Prisma, PostgreSQL, Clerk, and AI integrations. Designing the relationships between learning content and user attempts was just as important as building the interface.&lt;/p&gt;

&lt;p&gt;BrightLearn is open source:&lt;br&gt;
&lt;a href="https://github.com/RobertIonutF/brightlearn" rel="noopener noreferrer"&gt;https://github.com/RobertIonutF/brightlearn&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Application:&lt;br&gt;
&lt;a href="https://medilearn-rose.vercel.app" rel="noopener noreferrer"&gt;https://medilearn-rose.vercel.app&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Operational software needs traceability
&lt;/h2&gt;

&lt;p&gt;FizioKinetoMaxim is a protected CRM for clinic operations. It centralizes patients, appointments, medical and administrative activity, CAS cases, exercise programs, feedback, reports, incidents, complaints, and audit history.&lt;/p&gt;

&lt;p&gt;The application uses Next.js, TypeScript, and Convex for reactive data and real-time workflows. Role-based access and traceability were essential because the application handles sensitive operational processes.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://fiziokineto-maxim-crm.vercel.app" rel="noopener noreferrer"&gt;https://fiziokineto-maxim-crm.vercel.app&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Building similar products
&lt;/h2&gt;

&lt;p&gt;I work on complete SaaS products, AI integrations, CRM systems, educational platforms, and operational dashboards.&lt;/p&gt;

&lt;p&gt;If you need something similar, you can contact me through LinkedIn:&lt;br&gt;
&lt;a href="https://www.linkedin.com/in/robertionutfundulea/" rel="noopener noreferrer"&gt;https://www.linkedin.com/in/robertionutfundulea/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can also support my independent projects here:&lt;br&gt;
&lt;a href="https://buymeacoffee.com/robertfundulea" rel="noopener noreferrer"&gt;https://buymeacoffee.com/robertfundulea&lt;/a&gt;&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>webdev</category>
      <category>ai</category>
      <category>nextjs</category>
    </item>
    <item>
      <title>A Bug Triage Workflow for AI That Does Not Invent the Root Cause</title>
      <dc:creator>Robert Ionut Fundulea</dc:creator>
      <pubDate>Tue, 21 Jul 2026 18:19:17 +0000</pubDate>
      <link>https://dev.to/robertionutfundulea/a-bug-triage-workflow-for-ai-that-does-not-invent-the-root-cause-1922</link>
      <guid>https://dev.to/robertionutfundulea/a-bug-triage-workflow-for-ai-that-does-not-invent-the-root-cause-1922</guid>
      <description>&lt;p&gt;AI can make bug triage faster, but it also makes one dangerous failure mode easier: turning a plausible explanation into a confident diagnosis before the failure has been reproduced.&lt;/p&gt;

&lt;p&gt;The useful question is not “Can the model suggest a cause?” It usually can. The question is: &lt;strong&gt;what evidence would let another developer review that cause?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Here is the workflow I now use for AI-assisted bug work.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Turn the report into an actionable record
&lt;/h2&gt;

&lt;p&gt;Capture the build, environment, user path, expected behavior, actual behavior, frequency, impact, and any existing evidence.&lt;/p&gt;

&lt;p&gt;Keep observations separate from interpretations. “The request returned 500 at 14:32” is evidence. “The database timed out” is still a hypothesis unless the logs support it.&lt;/p&gt;

&lt;p&gt;If a material fact is missing, the workflow should ask for it. It should not silently fill the gap.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Reproduce—or document bounded non-reproduction
&lt;/h2&gt;

&lt;p&gt;A good reproduction record includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the exact setup and version;&lt;/li&gt;
&lt;li&gt;inputs and relevant timestamps;&lt;/li&gt;
&lt;li&gt;ordered actions;&lt;/li&gt;
&lt;li&gt;expected and actual output;&lt;/li&gt;
&lt;li&gt;logs, screenshots, or traces;&lt;/li&gt;
&lt;li&gt;the control case that still works.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When the issue does not reproduce, return the matrix that was tested and name the next signal needed. “Could not reproduce” is not the same as “the bug is invalid.”&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Compare the failing path with a working control
&lt;/h2&gt;

&lt;p&gt;A nearby working path is often more useful than reading the entire codebase.&lt;/p&gt;

&lt;p&gt;Consider a fictional scheduling defect: patients can double-book a physical slot near the spring daylight-saving transition, but only when rescheduling in Europe/Bucharest.&lt;/p&gt;

&lt;p&gt;The new-booking path normalizes local time through a timezone-aware scheduling boundary. The reschedule path compares a naive local value directly with stored UTC instants.&lt;/p&gt;

&lt;p&gt;That comparison gives us something much stronger than “timezones are hard”: a narrow difference between a failing path and a working control.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. State the smallest evidence-supported cause
&lt;/h2&gt;

&lt;p&gt;A useful cause statement has three parts:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Condition:&lt;/strong&gt; rescheduling across the DST boundary.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mechanism:&lt;/strong&gt; a naive local timestamp is compared with stored UTC instants.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Evidence:&lt;/strong&gt; the failing path skips normalization while the working booking path uses it.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Also record alternatives that were ruled out and those that remain untested. This prevents a narrow finding from becoming an unsupported claim about the whole system.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Repair the authority boundary, not the symptom
&lt;/h2&gt;

&lt;p&gt;The minimal repair is to route rescheduling through the existing timezone-aware normalization function before collision checks.&lt;/p&gt;

&lt;p&gt;It is &lt;em&gt;not&lt;/em&gt; to weaken collision rules globally, disable validation near DST, or rewrite every scheduling path.&lt;/p&gt;

&lt;p&gt;Minimal does not mean careless. It means correcting the supported cause with the smallest reasonable regression surface.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. Protect the invariant
&lt;/h2&gt;

&lt;p&gt;The regression test should fail for the original defect and prove the behavior that matters:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;equivalent instants cannot reserve the same physical slot;&lt;/li&gt;
&lt;li&gt;the DST gap is handled according to the product rule;&lt;/li&gt;
&lt;li&gt;adjacent slots still work;&lt;/li&gt;
&lt;li&gt;ordinary dates remain unchanged;&lt;/li&gt;
&lt;li&gt;the new-booking control path stays green.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Then add rollout signals and a recovery path appropriate to the risk. A local test does not prove production repair.&lt;/p&gt;

&lt;h2&gt;
  
  
  A compact review checklist
&lt;/h2&gt;

&lt;p&gt;Before accepting an AI-assisted diagnosis, ask:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Do we know the exact environment and build?&lt;/li&gt;
&lt;li&gt;Is expected behavior stated independently of the implementation?&lt;/li&gt;
&lt;li&gt;Was the failure reproduced, or was non-reproduction bounded?&lt;/li&gt;
&lt;li&gt;Is there a working control path?&lt;/li&gt;
&lt;li&gt;Does the cause statement connect condition, mechanism, and evidence?&lt;/li&gt;
&lt;li&gt;Does the proposed change preserve unrelated policy?&lt;/li&gt;
&lt;li&gt;Does the regression test protect the invariant rather than mirror the code?&lt;/li&gt;
&lt;li&gt;Are rollout and recovery signals explicit?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;AI is valuable here as a structure and comparison tool. It can organize evidence, propose a reproduction matrix, compare paths, and draft regression cases. It should not claim a root cause, test result, or production behavior it has not observed.&lt;/p&gt;

&lt;p&gt;I published a free, read-only walkthrough with the worked timezone example here:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://codecurrent-studio.vercel.app/guides/ai-bug-triage-workflow/?utm_source=devto&amp;amp;utm_medium=content&amp;amp;utm_campaign=codecurrent_launch_2026_07&amp;amp;utm_content=bug_triage_article_01" rel="noopener noreferrer"&gt;AI Bug Triage Workflow: From Report to Minimal Fix&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I built CodeCurrent Studio and may benefit if someone buys one of its workflow packs. The walkthrough above is free. CodeCurrent Studio is independent and is not affiliated with or endorsed by any AI model vendor.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>testing</category>
      <category>programming</category>
      <category>softwareengineering</category>
    </item>
  </channel>
</rss>
