<?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: Quratulain Nayeem</title>
    <description>The latest articles on DEV Community by Quratulain Nayeem (@qurotz).</description>
    <link>https://dev.to/qurotz</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3812245%2Ffa6cb36b-259e-4d7f-a37e-9e56c96dc70a.png</url>
      <title>DEV Community: Quratulain Nayeem</title>
      <link>https://dev.to/qurotz</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/qurotz"/>
    <language>en</language>
    <item>
      <title>Beyond Prompting: Building a 4-Stage LLM Compiler with Surgical Self-Repair</title>
      <dc:creator>Quratulain Nayeem</dc:creator>
      <pubDate>Tue, 26 May 2026 16:46:06 +0000</pubDate>
      <link>https://dev.to/qurotz/beyond-prompting-building-a-4-stage-llm-compiler-with-surgical-self-repair-4bg1</link>
      <guid>https://dev.to/qurotz/beyond-prompting-building-a-4-stage-llm-compiler-with-surgical-self-repair-4bg1</guid>
      <description>&lt;p&gt;A single prompt often yields inconsistent, unvalidated AI output. To fix this, I built &lt;strong&gt;Compyl&lt;/strong&gt; a multi-stage LLM compiler that inputs english words converting them into directly usable JSON blueprint. &lt;/p&gt;

&lt;p&gt;Compyl converts plain English into a complete, validated, machine-readable JSON blueprint (UI schema, API schema, DB schema, and authentication rules) directly usable to power a working application.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;The Input:&lt;/strong&gt; &lt;em&gt;"Build a CRM with login, contacts, dashboard, role-based access, and payments. Admins can see analytics."&lt;/em&gt;&lt;br&gt;
&lt;strong&gt;The Output:&lt;/strong&gt; A fully synchronized JSON blueprint spanning all four layers.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Why Multi-Stage?
&lt;/h2&gt;

&lt;p&gt;I wanted to break the workflow in modules, for better understanding and error checking:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Stage&lt;/th&gt;
&lt;th&gt;Name&lt;/th&gt;
&lt;th&gt;Purpose&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Stage 1&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Lexer&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Parses raw input into structured tokens (entities, roles, features).&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Stage 2&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Parser&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Builds the application architecture from those tokens.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Stage 3&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Code Gen&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Emits four synchronized schemas.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Stage 4&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Linter/Repair&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Catches and repairs cross-layer inconsistencies.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Each stage is a separate Groq API call with its own system prompt, Pydantic output schema, and retry logic. &lt;/p&gt;




&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fofnv6ebqj1nt27j5n401.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fofnv6ebqj1nt27j5n401.png" alt="the UI" width="800" height="499"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Secret Sauce: Surgical Validation + Repair
&lt;/h2&gt;

&lt;p&gt;This is what separates Compyl from a glorified wrapper. After generation, four strict cross-layer dependency checks run automatically:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;UI ↔️ API:&lt;/strong&gt; Every UI component must map to a real API endpoint.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;API ↔️ DB:&lt;/strong&gt; Every API endpoint must have a matching DB table.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;UI ↔️ Auth:&lt;/strong&gt; Every route used in auth rules must exist in the UI schema.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Auth ↔️ System:&lt;/strong&gt; Every role used in pages must exist in the auth schema.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  The "Surgical" Fix
&lt;/h3&gt;

&lt;p&gt;If a check fails, Compyl doesn't throw away the whole output and retry (which is slow and expensive). Instead, it performs a &lt;strong&gt;targeted repair&lt;/strong&gt;—sending only the broken layer back to the LLM with the error logs for a precise fix.&lt;/p&gt;




&lt;h2&gt;
  
  
  LLM vs SLM — A Deliberate Tradeoff
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Stages 1–3 (Llama 3.3 70B via Groq):&lt;/strong&gt; Primarily because of creative input and taking decisions when user is not very specific with the prompts.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Stage 4 (Rule-Based / Future SLM):&lt;/strong&gt; Since this stage is purely mechanical linting, i decided to swap it for a 3B–7B Small Language Model, and as expected, it reduced costs by ~30% and latency by ~40%.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Evaluation &amp;amp; Edge Cases
&lt;/h2&gt;

&lt;p&gt;Tested against &lt;strong&gt;10 real product prompts&lt;/strong&gt; and &lt;strong&gt;6 extreme edge cases&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Success Rate:&lt;/strong&gt; 100% (after surgical retry).&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Avg. Latency:&lt;/strong&gt; 11.4 seconds end-to-end.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Repair Success Rate:&lt;/strong&gt; 95.6% (out of 46 detected cross-layer errors).&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  How it handled edge cases:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;  "Build something cool" → Inferred context and built a fully functional entertainment app.&lt;/li&gt;
&lt;li&gt;  "App with login but also no auth needed" → Intelligently resolved the conflict by creating distinct &lt;code&gt;Guest&lt;/code&gt; and &lt;code&gt;Registered User&lt;/code&gt; roles.&lt;/li&gt;
&lt;li&gt;  "Make it like Uber + Amazon + Instagram" → Coherently merged them into 6 DB tables and 3 roles without breaking.
There were more cases i wanted to try, however, Groq offers 100k tokens and i ran out of them eventually trying all cases and hit my limit. But i did log the errors it ran out of , latency and all the other metrics in detail on my github README as well the google doc, for more specificity. 
&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;div class="c-embed__content"&gt;
        &lt;div class="c-embed__cover"&gt;
          &lt;a href="https://docs.google.com/document/d/1PMkeTay8fQnDGI7pKLhqfGljTFqGD08ol4rt_8fgb-s/edit?usp=sharing" class="c-link align-middle" rel="noopener noreferrer"&gt;
            &lt;img alt="" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh7-us.googleusercontent.com%2Fdocs%2FAHkbwyJHJGNlMP0t-iwhYBZMN_7rPigW9x2LFJEga7enafzQ1tYSlRkuPgLeOggaBS9sWAi2WMlVhjBOPI9x6zhCXhdP--ViBS_eGGtD9z8hs0lA1jtWO71z%3Dw1200-h630-p" height="630" class="m-0" width="1200"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="c-embed__body"&gt;
        &lt;h2 class="fs-xl lh-tight"&gt;
          &lt;a href="https://docs.google.com/document/d/1PMkeTay8fQnDGI7pKLhqfGljTFqGD08ol4rt_8fgb-s/edit?usp=sharing" rel="noopener noreferrer" class="c-link"&gt;
            compyl log chec - Google Docs
          &lt;/a&gt;
        &lt;/h2&gt;
        &lt;div class="color-secondary fs-s flex items-center"&gt;
            &lt;img alt="favicon" class="c-embed__favicon m-0 mr-2 radius-0" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fssl.gstatic.com%2Fimages%2Fbranding%2Fproductlogos%2Fdocs_2026%2Fv2%2Fico%2Fdocs_2026_256dp.ico" width="256" height="256"&gt;
          docs.google.com
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  The Tech Stack
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;LLM Engine:&lt;/strong&gt; Llama 3.3 70B via Groq (Insanely fast inference)&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Validation:&lt;/strong&gt; Pydantic v2 (Strict data contracts)&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Backend:&lt;/strong&gt; FastAPI + Uvicorn&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Runtime Proof:&lt;/strong&gt; Generates raw SQL &lt;code&gt;CREATE&lt;/code&gt; statements + Flask 
route skeletons from the final JSON.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Hosting:&lt;/strong&gt; Docker on HuggingFace Spaces (Zero cold starts).&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Key Takeaways
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;The hardest part wasn't the LLM prompts; it was defining exactly what valid output looked like using Pydantic &lt;em&gt;before&lt;/em&gt; writing code. &lt;/li&gt;
&lt;li&gt;Initially,  I used &lt;code&gt;0.3&lt;/code&gt; for the creative/design stages, but dropped it to &lt;code&gt;0.1&lt;/code&gt; for the repair stage to force deterministic code correction.&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  Links &amp;amp; Feedback
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;  🚀 &lt;strong&gt;Live Demo:&lt;/strong&gt; &lt;a href="https://huggingface.co/spaces/quratulainnnnn/compyl" rel="noopener noreferrer"&gt;HuggingFace Spaces&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  💻 &lt;strong&gt;Source Code:&lt;/strong&gt; &lt;a href="https://github.com/quratulain-nayeem/Compyl" rel="noopener noreferrer"&gt;GitHub Repository&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I would love to hear your thoughts on this project :)&lt;/p&gt;

</description>
      <category>ai</category>
      <category>docker</category>
      <category>fastapi</category>
      <category>llm</category>
    </item>
    <item>
      <title>90% of the internships I applied to weren’t real. So I’m building a way to expose them.</title>
      <dc:creator>Quratulain Nayeem</dc:creator>
      <pubDate>Sat, 25 Apr 2026 19:56:06 +0000</pubDate>
      <link>https://dev.to/qurotz/90-of-the-internships-i-applied-to-werent-real-so-im-building-a-way-to-expose-them-2jnm</link>
      <guid>https://dev.to/qurotz/90-of-the-internships-i-applied-to-werent-real-so-im-building-a-way-to-expose-them-2jnm</guid>
      <description>&lt;p&gt;If you're a student or dev in India right now, you know the grind. I've spent months obsessing over my resume, hunting for keywords, and sending out countless applications for AI/ML roles. I did everything "right." The cold emails, the startup hunting, the works.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5hssbvzmqh8b6c3mhodc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5hssbvzmqh8b6c3mhodc.png" alt="jobs applied to" width="800" height="121"&gt;&lt;/a&gt;&lt;br&gt;
And what do you get in return? Either complete silence, or worse, a website asking you to PAY for an internship. ₹1,499 for a "1-Month AI Internship." As if the job market wasn't already stacked against us.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F77841go41zqpuwqmbdsn.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F77841go41zqpuwqmbdsn.jpeg" alt="pay to get an internship" width="800" height="453"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;But after months of this, I realized the problem wasn't my resume. The problem was that I was applying to &lt;em&gt;"ghosts”.&lt;/em&gt; &lt;br&gt;
I started digging and realized that a massive chunk of job listings some estimate up to 90% in certain sectors are ghost listings. Companies post them just to collect our data, gauge salary expectations, or build a "talent pipeline" for a role that doesn't actually exist. It’s a waste of our time and a hit to our confidence.&lt;br&gt;
I’m an AI student. Why am I not using my skills to fix this?&lt;br&gt;
I decided to stop just "applying" and start "building." &lt;br&gt;
I’m currently developing a Chrome extension designed to give job seekers a real-time "Credibility Score" for every listing they see on LinkedIn.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;How it works (The Tech Behind the Logic):&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;I didn't want to build just another "AI wrapper." I’m building a system that aggregates five distinct signal categories to calculate a legitimacy score:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Company Legitimacy:&lt;br&gt;
Cross-referencing domains and registration data.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Recruiter Credibility:&lt;br&gt;
Analyzing the profile behind the post.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Posting Behavior:&lt;br&gt;
Tracking how long a post stays up vs. actual hiring signals.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;On-Device ML:&lt;br&gt;
I’m planning to use ONNX Runtime Web to run text classification locally in the browser to keep it fast and privacy-first.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Why an extension and not a native app?&lt;br&gt;
LinkedIn’s official APIs are locked behind enterprise gates. To help people now, we need to be where the jobs are. By using a Manifest V3 extension, I can provide an instant "Truth Layer" directly on the page without waiting for a formal partnership that may never come.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The Goal:&lt;br&gt;
I’ve previously built production AI systems that analyzed over 568k reviews and engineered RAG pipelines from scratch. Now, I’m applying that same "production-first" mindset to help students like me avoid the ghost-job trap.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  I’m looking for collaborators!
&lt;/h3&gt;

&lt;p&gt;This is still a work in progress. I’m currently mapping out the Vercel Edge functions and refining the ML text classifier.&lt;br&gt;
If you're tired of ghost listings and want to help build this, connect with me on &lt;a href="https://www.linkedin.com/in/quratulain-nayeem/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt; or drop a comment below. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Let’s stop applying into thin air :) &lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>career</category>
      <category>devops</category>
    </item>
  </channel>
</rss>
