Frontend Developer Intern | Remote
Summary
Remote 3-month internship owning the frontend of Offset's emissions-data platform: build document upload flows, a document viewer with highlight boxes over extracted values, review/approval screens and dashboards. Core stack: React, TypeScript, Tailwind, REST APIs; ₹10,000–15,000/month stipend.
Compensation: ₹10,000 – ₹15,000
The problem we’re obsessed with
The world is about to put a price on numbers nobody can prove.
Every factory, every shipment and every supply chain is now being asked how much it emits, and money now changes hands based on the answer. Yet most of those numbers live in scanned bills, scattered spreadsheets and the memory of one tired person in an office. Nobody can trace them back to where they came from.
We think that’s one of the biggest unsolved data problems of this decade. We’re building the infrastructure to fix it: a system where every number that matters links to its source document, can be checked by anyone with the right access, and shows who touched it and when. We start with heavy industry in India. Over time, we want this to be the layer the world relies on when it needs to know whether a claim about the physical economy is real.
We’re early. We’re DPIIT-recognised, selected for incubation at IIM Lucknow’s Enterprise Incubation Centre, and a small team. That means the screens you build will be the first thing real industrial users see, and the decisions you make will still be in the product years from now.
What you’ll build
You’ll own the frontend of our core platform: the place where messy real-world documents become clean, trusted records.
- Document upload flow. Drag-and-drop for PDFs, images, Excel and CSV files, with progress, validation and clear error states.
- Document viewer with highlights. Render document pages and draw highlight boxes over the exact spot each value was read from, using coordinates from the API. Click a value to see its source; click the source to see its value.
- Review and approval screen. The document on one side, extracted fields on the other. Reviewers approve, edit or reject each value, and every change records who did it and when. This is the heart of the product, where trust is earned.
- Manual entry mode. When automation fails, the user types the value and draws a box on the document to prove where it came from.
- Data tables and history. Sortable, filterable records, with a full change history for each one.
- Role-based views. Different screens and permissions for uploaders, reviewers, approvers and admins.
- Dashboards. Charts and summary cards built only from approved, traceable data.
You’ll work directly with our backend engineer and the founder, and ship features end to end.
What you get
- Real ownership, not tickets. You’ll be the frontend owner of a product going in front of industrial users. Most interns spend six months fixing button colours. You’ll design the core of a product.
- A stipend that grows with you. You start at ₹10,000–12,500/month, depending on your task. If you’ve hit your agreed milestones, it rises to ₹15,000.
- Proof you can show. Once features ship, you can show screenshots and a written case study of your work in your portfolio and interviews. We’ll help you write it.
- Direct access to the founder. As well as the two weekly syncs, you get a 30-minute 1:1 each month on your growth: code, career, or anything else you want to get better at.
- A recommendation that means something. Finish the 3 months well and you get a detailed LinkedIn recommendation and a letter from the founder describing exactly what you built, not a generic certificate.
- A path to full-time. Strong interns get first priority for a full-time role as we grow.
- Flexibility where it counts. Outside the core hours below, work whenever you work best. We care about what ships, not when you’re online.
- The startup ecosystem. Exposure to the incubator’s founder network and events as we grow.
Who thrives here
- You build things because you can’t not build them. You have side projects nobody asked you to make.
- You see a gap in a spec and propose a fix before anyone points it out.
- You’d rather ship something small and working on Tuesday than something perfect “soon”.
- You care about why a screen exists, not just how it looks.
- Strong React and TypeScript, comfortable with Tailwind or a component library, and experienced with REST APIs, loading and error states, and forms.
- Bonus: PDF rendering (pdf.js or react-pdf), canvas or SVG drawing, charting libraries, or testing (Vitest, Playwright).
Who won’t
If you need to be chased for updates, wait for detailed instructions on every task, or treat this as a certificate to collect, this isn’t the right place. That’s not a judgement. We’re just too small to carry anyone, and we’d rather tell you now.
How we work
- Remote, 3 months, full-time commitment.
- Core hours are 11 am to 4 pm IST on weekdays. Be online and reply within 2 hours during that window. Outside it, your time is yours to organise.
- Two fixed syncs a week are mandatory. Missing them without notice ends the internship.
- We measure shipped, merged features, not hours.
- The first 4 weeks are a paid trial for both sides. If either of us feels it isn’t working, we part ways cleanly, with full pay for the days worked and a certificate for the period.
Our commitments to you
- Clear specs. Every feature comes with a written brief, a design reference or sketch, and a deadline agreed with you, not imposed on you.
- Fast answers. You’ll get a response within the same working day when you’re blocked. We hold ourselves to the same speed we ask of you.
- On-time pay. The stipend is paid by the 5th of every month, without exception.
- Your task stays yours. We will never use your task submission in our product unless you join the team.
- Feedback on your submission. Every candidate who submits a working live link gets short written feedback on their task, hired or not.
The task: required to be considered
This is a small version of the real work. If it excites you, you’ll enjoy the job. If it feels like a chore, you won’t. Either way, you’ll know in a few hours. Applications without the task are not reviewed.
- Build a small React app (TypeScript preferred) that does the following:
- Lets the user upload a PDF or image of any invoice or bill.
- Displays the document on screen.
- Loads this mock JSON of extracted fields. Use any coordinates that land on your document:
[ {"field": "invoice_number", "value": "INV-2041", "page": 1, "bbox": [120, 80, 260, 100]}, {"field": "date", "value": "2026-09-14", "page": 1, "bbox": [400, 80, 520, 100]}, {"field": "total_amount", "value": "48,250.00", "page": 1, "bbox": [400, 620, 520, 645]} ] 6. Shows the fields in a side panel. Clicking a field draws a highlight box on the document at its bbox. 7. Lets the user approve or edit each value. Edits must appear in a visible change log with the old value, the new value and a timestamp. 8. Bonus: let the user draw a new box on the document to add a field manually.
Submit:
- A GitHub repo link
- A live deployed link (Vercel, Netlify or similar)
- A Loom video of 2 minutes or less walking through your code and one thing you’d improve with more time
Time limit: 72 hours from applying. A small working app beats a large unfinished one.
