Skip to content
Opiskelijaedut

Add an offer to the list

Every offer is a single JSON file. Add a file, open a pull request, and the offer goes live as soon as the change is merged.

Easiest way

Let an AI write the file

Copy the instructions, paste them into Claude, ChatGPT or Gemini and add the link to the offer at the end. You get a finished JSON file that you can add with a pull request.

Show instructions
Help me add a student offer to Opiskelijaedut (https://github.com/mazkdevf/opiskelijaedut). The site lists services that students in Finland get for free or at a clear discount. Every offer is a single JSON file in content/offers.

Your task:
1. Open the link at the end of this message. If you can browse the web, read the provider's own page and its terms. If you cannot, say so and ask me to paste the text of the page.
2. Confirm that the offer is current and available to people studying in Finland. If it is not, tell me and do not write the file.
3. Write the JSON file following the rules below.
4. Finish with a suitable file name and a list of anything you could not confirm on the provider's page.

Rules:
- Only use facts found on the provider's own page. Do not guess prices, durations or terms.
- Write every text in both Finnish (fi) and English (en). Short and factual, no marketing language.
- url: a direct https link to the provider's page, with no affiliate links or tracking parameters.
- category: one of ai, development, design, productivity, entertainment, food, shopping, wellbeing, transport, finance, everyday.
- type: free, discount. Use free only if the offer costs students nothing at all.
- value: at most 24 characters, such as "Free", "12 months free" or "−50%".
- summary: one sentence, at most 140 characters. description: at most 600 characters.
- perks: one to six concrete benefits. steps: one to six steps to claim the offer.
- verification: one or more of school-email, sheerid, unidays, student-card, document, provider-check, none.
- region: only add it if the offer is local, for example {"fi": "Oulu", "en": "Oulu"}.
- lastVerified: today's date as YYYY-MM-DD. expires: only add it if the page states an end date.
- File name: lowercase with hyphens, for example service-name.json.
- Do not add fields that are not in the template.

Template:
{
  "$schema": "../offer.schema.json",
  "name": "Palvelun nimi",
  "provider": "Tarjoaja",
  "url": "https://example.com/students",
  "category": "productivity",
  "type": "free",
  "value": {
    "fi": "Ilmainen",
    "en": "Free"
  },
  "summary": {
    "fi": "Yksi virke siitä, mitä opiskelija saa.",
    "en": "One sentence on what the student gets."
  },
  "description": {
    "fi": "Muutama virke: mitä etu sisältää, kuinka kauan se on voimassa ja mitä sen jälkeen tapahtuu.",
    "en": "A few sentences: what the offer includes, how long it lasts and what happens afterwards."
  },
  "perks": [
    {
      "fi": "Konkreettinen hyöty",
      "en": "A concrete benefit"
    }
  ],
  "eligibility": {
    "fi": "Kuka edun saa.",
    "en": "Who is eligible."
  },
  "steps": [
    {
      "fi": "Ensimmäinen vaihe.",
      "en": "First step."
    },
    {
      "fi": "Toinen vaihe.",
      "en": "Second step."
    }
  ],
  "verification": [
    "school-email"
  ],
  "lastVerified": "2026-11-11"
}

Answer like this: first the JSON in a single code block, then the file name, then the points you could not confirm. End by telling me that the file is added at https://github.com/mazkdevf/opiskelijaedut/new/main/content/offers and a pull request is opened from there.

Link to the offer: 

AI can get things wrong. Check prices and terms on the provider's page before you open a pull request.

  1. 1

    Create a file

    Add a new file to the content/offers folder. The file name becomes the offer's address, for example service-name.json.

  2. 2

    Fill in the details in Finnish and English

    Use the template below. Keep it short and only state what you can confirm on the provider's own page.

  3. 3

    Open a pull request

    An automatic check tells you if a field is missing or malformed. A maintainer reviews the change and merges it.

Template

{
  "$schema": "../offer.schema.json",
  "name": "Palvelun nimi",
  "provider": "Tarjoaja",
  "url": "https://example.com/students",
  "category": "productivity",
  "type": "free",
  "value": {
    "fi": "Ilmainen",
    "en": "Free"
  },
  "summary": {
    "fi": "Yksi virke siitä, mitä opiskelija saa.",
    "en": "One sentence on what the student gets."
  },
  "description": {
    "fi": "Muutama virke: mitä etu sisältää, kuinka kauan se on voimassa ja mitä sen jälkeen tapahtuu.",
    "en": "A few sentences: what the offer includes, how long it lasts and what happens afterwards."
  },
  "perks": [
    {
      "fi": "Konkreettinen hyöty",
      "en": "A concrete benefit"
    }
  ],
  "eligibility": {
    "fi": "Kuka edun saa.",
    "en": "Who is eligible."
  },
  "steps": [
    {
      "fi": "Ensimmäinen vaihe.",
      "en": "First step."
    },
    {
      "fi": "Toinen vaihe.",
      "en": "Second step."
    }
  ],
  "verification": [
    "school-email"
  ],
  "lastVerified": "2026-11-11"
}

If you would rather not write JSON, open an issue with a link to the offer and someone else will add it.