Skip to main content

Command Palette

Search for a command to run...

Post-Contribution Task: Creating a Live Tool for the Lusophone Wishlist #8

My Experience

Updated
4 min read
Post-Contribution Task: Creating a Live Tool for the Lusophone Wishlist #8
S
A Ml developer building the bridge between static docs and dynamic AI using RAG. Building solutions that stand up for people.

The Start

On April 15th, I submitted my official Outreachy final application. I should have rest but Instead of stopping there I felt like something was missing. I wanted to give the Portuguese-speaking community a real solution for Wish #8 (a tool to count Wikidata edits).

I sat down with my register and drew exactly how I wanted the screen to look. I didn't want a boring table. I wanted a live terminal that felt fast and exciting.

Turning a Game into a Tool

Suddenly I jumped in excitement when I got an idea in mind that was A Healthy Competition. I really wanted to implement my idea so I designed 6 levels of badges. I wanted editors to feel like they were leveling up in a game while they improved Wikidata.

It wasn’t just about the looks, though. I wanted the engine to be built with a professional mindset. I thought about the concept of RAG (Retrieval-Augmented Generation) from my Machine Learning background. While my tool isn't a full AI system, I used that same core idea: Data Retrieval.

In the AI world, Retrieval is the part where a system goes out, finds the right data in a massive database, and brings it back to be used. I applied this same logic here. My tool acts like a specialized search engine. It connects to the Wikidata API, identifies the specific raw data for every participant, and pulls it into the terminal in real-time to calculate the score. By using this professional approach, I made the fetching process fast and accurate, just like a high-level data pipeline.

My 4 Days journey

Day 1:

I spent the first day making the system smart. A simple tool might miss Brazilian editors. I wrote code to make sure it catches both Portuguese (pt) and Brazilian (pt-br) edits as well as Global Edits too of which I made sure in my tool that the calculation of the global and portuguese one remains separate for easy understanding.

Day 2:

I worked on the backend (the database). I used a special type of number called a BigIntegerField. Since Wikidata has billions of edits, normal numbers would eventually crash the system. I built it so it never breaks, even as the project grows.

Day 3:

This was my hardest day. Most developers use big monitors, but who knows anyone is using their phones to view my tool. So, I had to make my model a small screen friendly too. At 1st my tool was behaving terribly on my phone screen. Then I spent hours making a Swipeable Table. I even added a neon-green hint that tells users to Swipe to see scores but I also made sure this swipe instruction won't show for the laptop users. Since we can't hover on a phone, I built special popups so we can see full usernames with one tap.

Day 4:

I wanted to make sure no one could cheat. I added a Live QID Tracker. Now, an organizer doesn't just see a score; they see a link to the exact item the person edited. It is a one-click check to keep everything fair.

Why this tool matters

The Portuguese community needed a tool that felt alive. By scanning 20 users at the same time, my tool finishes in seconds. I used a simple math formula to give different points for Labels, Descriptions, Facts etc:

$$Total Score = \sum (Labels \times w_L) + (Descriptions \times w_D) + (Facts \times w_F) + (References \times w_R) + (Images \times w_I)$$

Plan Successful

There is no feeling like looking at a live screen with blinking lights and seeing your code actually work. It’s not just a script on my laptop anymore; it’s a living system.

I have now recorded all my work and made the code ready to be plugged into the main WikiScore website.

I am excited to show the mentors what a self-taught developer can build in just 4 days when they truly care about the mission.


Thank you for following my journey! :)
~Shehrbano Ali