Portfolio Header
Priyanshu Samal
Profile Picture
Back
5,686

When Interview Assignments Turn Into Unpaid R&D

I built a full-stack product for an interview, got ghosted, and later saw my code running in production. That’s when the pattern became impossible to ignore.

2025-10-13·7 min read
When Interview Assignments Turn Into Unpaid R&D

I built a full-stack product for an interview.

Landing page.

Dashboard.

Authentication.

Backend.

Database.

The whole stack.

I submitted it, waited, and got ghosted.

A month later, I opened their website and saw my code running live on their domain.

Different data. Same structure. Same flows. Same decisions.

That’s when it clicked: interview “assignments” have quietly become unpaid R&D.

The pattern nobody talks about

This isn’t a one-off horror story. It’s a repeatable pattern.

Companies ask for take-home tasks that are far beyond reasonable evaluation:

  • Full products instead of scoped problems
  • Real-world features instead of isolated exercises
  • Days of work framed as “just a small assignment”
  • Then silence.

    No feedback.

    No acknowledgment.

    No rejection.

    Just free output.

    It’s not anecdotal. It’s documented.

    Spend time on Reddit or dev forums and you’ll see hundreds of similar stories.

    Some companies:

  • Send the same assignment to multiple candidates
  • Collect submissions
  • Merge the best parts
  • Ship them
  • All under the label of “testing candidates.”

    One developer shared how he built a complete CMS in three days for an internship platform. They promised a callback. He never got one. Two months later, his exact UI appeared in their client showcase.

    That’s not coincidence. That’s extraction.

    We normalized the wrong thing

    Somewhere along the way, we started calling this “portfolio work.”

    We say:

  • “It’s good practice”
  • “At least you learned something”
  • “Everyone does it”
  • But learning stops being the point the moment someone else ships and monetizes your work.

    Practice doesn’t require deployment.

    Practice doesn’t require production polish.

    Practice doesn’t require solving *their* business problems.

    That’s labor.

    This problem goes beyond companies

    It’s not limited to startups.

    Universities and research environments have their own version of this dysfunction. Researchers have already shown how AI-generated answers can pass exams while real students grind for marks. The system doesn’t reward understanding. It rewards automation and output volume.

    Different surface. Same flaw.

    The system increasingly values what can be extracted, not what can be learned.

    Why this keeps happening

    Because incentives are broken.

    For companies:

  • Take-home assignments are cheaper than hiring
  • There’s no penalty for ghosting
  • There’s plausible deniability
  • For candidates:

  • Jobs are scarce
  • Saying no feels risky
  • “Opportunity” is used as leverage
  • That imbalance gets exploited.

    How to protect yourself

    If you’re asked to do an assignment, slow down and ask hard questions.

    Before you start:

  • Ask if the task is paid
  • Clarify time expectations
  • Ask how the work will be used
  • While working:

  • Keep your repository private
  • Avoid sending deploy links
  • Share screenshots or limited access if needed
  • And most importantly:

  • Never confuse free labor with opportunity
  • A real opportunity doesn’t require you to give away production-ready value upfront.

    The grind should build you

    Skill-building is hard. Interviews are stressful. Wanting a job is normal.

    But the grind is supposed to build *you*, not bury you.

    If a company can’t evaluate your ability without extracting weeks of work, that’s not a hiring process. That’s outsourcing with better branding.

    And the more people talk about this openly, the harder it becomes to hide behind “just an assignment.”

    HiringInterviewsUnpaid LaborCareerSoftware EngineeringTech
          |\__/,|   (`\
        _.|o o  |_   ) )
    -(((---(((--------
    ~ git commit -m "bye"_