Anvil Career
Back to Blog
PORTFOLIO ASSESSMENT

How to Write a Technical README That Reads Like Production Documentation

10 min read

A hiring manager opens the GitHub link on your resume. They land on your pinned repository. The page loads. They see the file tree on the left and the README rendering in the center. If that README contains the default Create React App boilerplate text — "This project was bootstrapped with Create React App" — they close the tab. They do not scroll down to see if your code is good. They do not check your commit history. They close the tab because you have already told them, in the first document they encountered, that you do not understand what a professional software repository is supposed to look like.

THE README IS YOUR TECHNICAL RESUME

A recruiter reviewing your GitHub profile does not start with your source code. They start with your README. It is the first and often the only document they read. A good README communicates architectural understanding, operational discipline, and written communication skill in under two minutes. A bad README communicates that you shipped your project and never thought about it again. The difference between these two outcomes is roughly 45 minutes of writing.

The Three Questions Every README Must Answer

When an engineer opens your repository, they are looking for answers to three specific questions. If your README does not answer all three within 20 seconds of scanning, they move on. The questions are always the same, regardless of what your project does.

01. What does this project actually do?

This sounds obvious, but most student READMEs fail at it. "A full-stack MERN application" is not an answer. "A placement management dashboard that lets TPOs upload company visit schedules, allows students to track their application status across multiple companies, and generates aggregate placement statistics for NAAC reporting" is an answer. The first sentence of your README must describe a specific user, a specific problem, and a specific solution. If it could apply to any other project, rewrite it until it could not.

02. How do I run this on my machine right now?

A README without a local setup section is a broken README. The instructions must be copy-pasteable and they must work in sequence. Include every prerequisite: Node version, database version, environment variables with example values, and the exact commands to install dependencies and start the application. If the recruiter has to guess at a missing environment variable, they will stop trying and close the tab.

03. What does the architecture look like?

This is where most student READMEs either go silent or produce generic diagrams that communicate nothing. A useful architecture section includes: the tech stack explained in one sentence per component (not a list of logos), the data flow described as a sequence ("The client sends a JWT in the Authorization header → the Express middleware verifies the token → the route handler queries Postgres → results are returned as JSON"), and the database schema shown as either a Mermaid diagram or a table of table names with their purposes and key columns. This section is the most direct evidence you can provide that you understand how your own system works.

README Structure: What Recruiters Read and What Each Section Must Contain THE README STRUCTURE THAT GETS RECRUITERS TO ACTUALLY READ YOUR CODE 01. PROJECT DESCRIPTION — First paragraph: who uses this, what problem it solves, what it is not. 02. LOCAL SETUP — Prerequisites (Node 20+, Postgres 16), env vars table, clone + install + run commands. 03. ARCHITECTURE — Tech stack (why each choice), data flow diagram (text or Mermaid), database schema table. 04. API DOCUMENTATION — Endpoint table (method, path, auth required, request/response example). 05. DEPLOYMENT — Live URL, hosting provider, deployment process (manual or CI). Recruiters read sections 1–3. Engineering managers read all five. Both decide in under 60 seconds.

The Environment Variable Table That Prevents "It Works on My Machine"

Every project has configuration that changes between environments. A professional README documents this configuration explicitly. Below is a template you can copy directly into your README. Replace the example values with your own. This table serves two purposes: it tells the reader exactly what they need to configure, and it signals to the recruiter that you understand environment management as an engineering discipline.

ENVIRONMENT VARIABLES — TEMPLATE FOR YOUR README

VARIABLE PURPOSE EXAMPLE VALUE REQUIRED?
DATABASE_URL PostgreSQL connection string with credentials and database name. postgresql://user:pass@localhost:5432/myapp Yes
JWT_SECRET 256-bit random string used to sign authentication tokens. openssl rand -hex 32 Yes
PORT Port the application server listens on. 3000 No (defaults to 3000)
REDIS_URL Redis connection string for session caching and rate limiting. redis://localhost:6379 No (app runs without cache)

The API Documentation Block

If your project exposes a REST API, your README must document its endpoints. A recruiter evaluating your backend skills will scroll directly to this section. They want to see that you understand HTTP methods, status codes, authentication patterns, and request/response shapes. Do not copy-paste your entire Swagger output. Provide a representative sample of 3–4 endpoints that cover the main operations of your application.

Each endpoint should be documented with: the HTTP method and path, whether it requires authentication (and what kind), a JSON example of the request body if applicable, a JSON example of a successful response, and a JSON example of an error response with the corresponding HTTP status code. This level of detail communicates that you have thought about the developer experience of someone integrating with your API, which is a skill that separates junior from senior engineering thinking.

The Three README Mistakes That Signal "I Copy-Pasted This"

Recruiters have seen enough bad READMEs to pattern-match against common failure modes instantly. Avoid these three specific mistakes.

Mistake 1: The auto-generated boilerplate opening. If your README begins with "This project was bootstrapped with Create React App" or "# Getting Started with Create React App," replace it immediately. These lines are the equivalent of wearing a shirt that says "I did not write this document." Delete the entire auto-generated section and write two sentences about what your project actually does.

Mistake 2: A "Features" section that lists UI elements. "Dark mode toggle," "Responsive design," and "User authentication" are not features — they are implementation details that describe what the code does rather than what the user can accomplish. Replace "Responsive design" with "Works on mobile devices so placement officers can approve applications from their phones during campus drives." Connect every feature to a user action.

Mistake 3: No live URL. A deployed project without a link in the README is indistinguishable from a project that was never deployed. The link must be in the README, not just on your resume. If your deployment goes down, fix it or remove the link and add a note explaining the current status. A broken link is worse than no link because it tells the recruiter that you do not monitor your own production systems.

THE 10-MINUTE README AUDIT

Open your best project's README right now. Time yourself for 60 seconds. Read only what fits in your browser viewport without scrolling. When the timer ends, ask: did you learn what the project does, how to run it, and what the architecture looks like? If not, the recruiter who spends 30 seconds on your profile learned even less. Rewrite the sections they see first. This is the highest-leverage 45 minutes you can spend on your placement portfolio.