| Item | Details |
|---|---|
| Applicant | Anvitha PR |
| Username | Anvitha098 |
| GitHub | anvithagowda098 |
| Location | Bengaluru, Karnataka, India |
| Timezone | UTC+5:30 (IST) |
| Working Hours | 2:00 PM – 10:00 PM IST (Flexible) |
1. Abstract
This proposal makes Wish #8 the primary deliverable: a complete, independent, opt-in Wikidata scoring module for WikiScore. This includes a resilient API service layer, configurable Django models, data-driven weighted scoring, and production hardening.
As a secondary contribution, it delivers a functional MVP for Wish #3: a modular JavaScript normalization and duplicate detection layer for VisualEditor’s citation workflow. The wikidata_score.py prototype I built already solves the core technical challenges; the internship focuses on production integration and real-contest testing.
2. Technical Approach
2.1. Wish #8 – Wikidata Integration for WikiScore
A new wikiscore/wikidata/ package will be added, keeping the Wikipedia pipeline decoupled.
- service.py: Implements fetch_edits() with a circuit-breaker logic (trips after 5 consecutive 5xx errors) to serve cached scores with a "Stale Data" banner.
- models.py: Adds WikidataEdit, WikidataScore, and WikidataPointRule.
- scoring.py: Data-driven engine using machine-readable summaries (e.g., wbcreateclaim).
Proposed Weight Distribution:
| Action Type | Weight |
|---|---|
| wbcreateclaim | 4 |
| wbsetreference | 3 |
| wbsetqualifier | 2 |
| wbsetlabel / wbsetdescription | 1 |
| Reverted / Bot edits | 0 |
2.2. Wish #3 – Duplicate Reference Detection (Secondary MVP)
A modular JS module for VisualEditor using Citoid for cross-identifier matching.
- Normalization: Handles URL parameter stripping, DOI standardizing, and ISBN-10 to ISBN-13 conversion.
- Detection: Builds a one-time index of the internalList. When a new ref is added, it triggers a non-intrusive toast: *"This reference already exists as [ref 32]. Reuse it?"*
3. Project Timeline
Weeks 1–2: Onboarding & Architecture
- Clone WikiScore, map extension points, and finalize normalization rules with mentors.
- Deliverable: Architecture decision record & Blog Post 1.
Weeks 3–5: API Service & Models (Wish #8)
- Port API handling, implement retry logic, and create Django migrations.
- Deliverable: service.py merged and models persisting real edits.
Weeks 6–7: Scoring & Admin UI
- Implement the scoring engine and add point-management to the Django admin.
- Deliverable: End-to-end Wikidata scoring functional.
Weeks 8–11: Hardening & Wish #3 MVP
- Stress-test Wish #8. Develop JS normalization functions and VisualEditor lookup table.
- Deliverable: Hardened Wish #8 + Functional duplicate detection MVP.
Weeks 12–14: QA, Documentation & Handover
- Final testing against real edit-a-thon data. Complete Portuguese (pt-BR) documentation.
- Deliverable: All work complete and handed over.
4. Microtask Contributions
- Task 1: JS-Script
- Task 2: API Status Code
- Prototype: wikidata_score.py
5. Why I Am a Good Fit
My microtasks directly mirror the project's needs. Task 1 prepped me for VisualEditor’s JS environment, while the prototype proved I can handle the Wikidata API’s complexities (pagination, bot filtering). I have prior experience with Django models, Javascript and APIs, and a strong commitment to supporting the Lusophone community via localized tools.
6. Post-Internship Plans
I plan to remain an active maintainer for both features, fixing bugs and adjusting scoring rules based on feedback from Wikimedia Brasil and other Lusophone user groups.
7. Closing Statement
This project moves the community away from manual spreadsheets and accidental reference duplication. With the core logic already developed in my prototype, I am ready to deliver a production-hardened solution for WikiScore.