This page documents the complete extraction methodology, validation checks, and source references for the 40,685 tariff lines in the TEPA/EFTA–India Free Trade Agreement database. All check results are computed live from the current database state.
| Schedule | Annex | Total Lines | Zero-Duty | Exclusions | Reductions | Null Rates | Chapters |
|---|---|---|---|---|---|---|---|
| IN → CH | Annex 2.C.3 | 12,224 | 10,132 | 1,743 | 0 | 0 ✓ | 96/96 |
| IN → IS | Annex 2.C.1 | 12,225 | 9,667 | 2,266 | 0 | 0 ✓ | 96/96 |
| IN → NO | Annex 2.C.2 | 12,225 | 9,694 | 2,237 | 0 | 0 ✓ | 96/96 |
| CH → IN | Annex 2.F | 2,103 | 868 | 940 | 295 | 0 ✓ | — |
| IS → IN | Annex 2.D | 804 | 665 | 139 | 0 | 0 ✓ | — |
| NO → IN | Annex 2.E | 1,104 | 559 | 302 | 195 | 0 ✓ | — |
| Total | 40,685 | ||||||
Every tariff line in the database must have either a preferential rate (EFTA→IN) or a market access offer code (IN→EFTA). Rows with neither are structural header rows and are excluded from the tariff line count.
India's schedule covers chapters 01–97 (excluding 77, which is reserved). All 96 active chapters must be present in each of the three India schedules (IN→CH, IN→IS, IN→NO).
For EFTA→IN schedules, every 8-digit HS code must have a preferential rate. 4-digit and 6-digit codes are structural grouping rows and are excluded. Any 8-digit code without a rate is a genuine extraction error.
Seven specific HS codes are looked up in both the database and the original PDF to confirm the extracted value matches the treaty text exactly. Includes edge cases: Exclusion, Eif, Wine (special annex), NC, NPT (Iceland), and 0% duty.
Each HS code must appear at most once per direction+partner combination. Duplicates indicate a PDF parsing error where the same row was extracted twice.
EFTA→IN rates must be one of: a numeric percentage (e.g. '0', '3.5'), 'NC' (No Concession), 'NPT' (No Preferential Treatment — Iceland), '0*' (quota-conditional zero), 'Free', or '*' (Norway AG/PAP formula duty). No other values are permitted.
IN→EFTA offer codes must be one of the treaty-defined staging categories: Eif, E5, E7, E10, Exclusion, Wine (special annex), R-type reductions (R0/R5/R10 to X%), or combinations thereof. Spaced-text PDF artifacts (e.g. 'E i f') are normalised before loading.
These 7 HS codes were manually verified against the original PDF text. The "Found" value is read live from the database; the "Expected" value is from the treaty document.
| HS Code | Description | Schedule | Expected | Found in DB | Result |
|---|---|---|---|---|---|
| 02071100 | Chicken cuts (frozen) | IN→CH | Exclusion | Exclusion | |
| 61091000 | T-shirts of cotton | IN→CH | Eif | Eif | |
| 22041000 | Sparkling wine (special annex) | IN→CH | Wine | Wine | |
| 01012110 | Live horses (pure-bred) | CH→IN | 0 | 0 | |
| 01012190 | Live horses (other) | CH→IN | NC | NC | |
| 07082009 | Leguminous vegetables | CH→IN | NC | (not found) | |
| 02081000 | Rabbit/hare meat (IS NPT) | IS→IN | NPT | NPT |
Each annex PDF is opened with pdfplumber (Python 3.11). Tables are extracted page-by-page using pdfplumber's built-in table detection. Column boundaries are inferred from the PDF's internal geometry, not from fixed pixel positions.
Norway's schedule uses two different column layouts (11-col on page 4, 9-col on pages 5+). Switzerland uses 18 physical columns (6 logical). Iceland uses 15 columns. The extractor detects the layout per page by checking column count and whether the category column (AG/NAMA) is in position 2, 4, or 6.
HS codes are normalised to 8-digit zero-padded format without dots or slashes. Norway's dot-separated format (01.06.1100) and slash format (01/06/4901) are both converted to 01061100. Codes shorter than 8 digits are classified as structural header rows and excluded from tariff line counts.
PDF extraction artifacts are corrected: spaced characters ('E i f' → 'Eif', 'R 5 t o 5 0 %' → 'R5 to 50%'), OCR substitutions ('Ro to 50%' → 'R0 to 50%'), and encoding issues. Special treaty codes (NPT, *, Wine) are preserved verbatim as defined in the respective schedule preambles.
isZeroDuty, isExclusion, and hasReduction flags are computed deterministically from the extracted rate/offer values. For IN→EFTA: Eif → isZeroDuty=1; Exclusion → isExclusion=1; R-type → hasReduction=1. For EFTA→IN: rate='0' or '0*' or 'Free' → isZeroDuty=1; rate='NC' or 'NPT' → isExclusion=1; numeric rate > 0 → hasReduction=1.
After loading, all 7 checks are run against the live database. Any failure blocks the data from being marked as production-ready. The check results shown on this page are computed live from the current database state.
These codes appear in the database exactly as defined in the treaty text. They are not extraction errors.
Defined in Annex 2.D preamble. Iceland grants no preferential rate on these goods; MFN rate applies.
Defined in Annex 2.E preamble. Norway's processed agricultural products duty is calculated based on agricultural raw material price differences (Norway–EU parity). The actual rate is published separately by the EFTA Secretariat and is variable.
Annex 2.C.3 Attachment 1. HS 2204 is excluded from the standard zero-duty schedule. A separate 10-year phase-in applies based on CIF value brackets.
India's staging code for goods that reach zero duty 5 years after entry into force (not immediately). Distinct from Eif (immediate) and E5 (5-year linear phase-in).
Switzerland grants zero duty on these goods only within the annual global WTO quota. Above-quota imports face MFN rates.
| Schedule | Annex | PDF Filename | Pages | Lines Extracted |
|---|---|---|---|---|
| IN → CH | Annex 2.C.3 | 2.C.3-Appendix-IN-Schedule-of-Tariff-Concessions-to-CH.pdf | 682 | 12,224 |
| IN → IS | Annex 2.C.1 | 2.C.1-Appendix-IN-Schedule-of-Tariff-Concessions-to-IS.pdf | 767 | 12,225 |
| IN → NO | Annex 2.C.2 | 2.C.2-Appendix-IN-Schedule-of-Tariff-Concessions-to-NO.pdf | 581 | 12,225 |
| CH → IN | Annex 2.F | 2.F-Appendix-CH-Schedule-of-Tariff-Concessions.pdf | 113 | 2,103 |
| IS → IN | Annex 2.D | 2.D-Appendix-IS-Schedule-of-Tariff-Concessions.pdf | 45 | 804 |
| NO → IN | Annex 2.E | 2.E-Appendix-NO-Schedule-of-Tariff-Concessions.pdf | 77 | 1,104 |
Source: TEPA / EFTA–India Free Trade Agreement · Official Tariff Schedules · HS 2022 Nomenclature · Extracted March 2026
All 6 schedules re-extracted from source PDFs using pdfplumber. 40,685 lines loaded. 7/7 quality checks pass. Norway column layout detection fixed. Offer code normalisation applied.
isZeroDuty, isExclusion, hasReduction flags recomputed for all EFTA→IN rows. NC/NPT/0*/Free distribution verified against treaty text.
CH PDF: 2,103 8-digit codes extracted. IS: 804 records (NPT format). NO: 1,104 codes (01.06.1100 format). Structural header rows excluded from counts.
First extraction from TEPA PDFs. 23,110 lines loaded (incomplete — India schedule only partially extracted). Superseded by full re-extraction above.