Hero Image
Uppdragsportalen Logo

An Assignment Portal for Consultants to View Assignments

Uppdragsportalen, which translates to "Assignment Portal" in Swedish, is a web application designed to streamline the process for consultants to browse and apply for assignments. The platform serves as a centralized hub where consultants who are currently not engaged in an assignment can efficiently explore available opportunities, such as assignments at companies like Volvo. Assignments are aggregated from multiple sources, including a web scraper that extracts data from external websites, an email system that processes PDFs (where assignments are automatically extracted and added), and an integration with another software system used by the company. I developed this platform during my 6-month internship at Essiq AB, a consulting firm.

Development Process

The project involved the creation of a comprehensive system with the following key components:

Backend & API

The backend was built using .NET, handling core functionalities such as user management, assignment processing, and more. It also featured an API that facilitated communication between the frontend and backend. For instance, the API enabled the frontend to fetch assignments, verify user privileges, and perform other essential operations.

PostgreSQL Database

A PostgreSQL database was tightly integrated with the .NET backend, which acted as an intermediary between the frontend and the database. All API requests were routed through the backend, which then retrieved or updated data in the database as needed.

React Frontend

The frontend was developed using React and leveraged Azure AD (formerly Microsoft Entra ID) for authentication. This allowed Essiq AB employees to seamlessly log in using their Microsoft accounts, which were provided by the company. Once logged in, users could view assignments fetched from the backend, sort and filter them, "like" assignments, download original PDFs (if available), and perform administrative tasks if they had the appropriate permissions.

Programs for Assignment Sources & Local AI Integration

Assignments were added to the portal through several methods:

  • Manual Entry: Admins could manually input assignments.
  • Email Integration: A dedicated email address allowed assignments to be submitted via email, either in the body text or as PDF attachments. A program was developed to extract information from these emails or PDFs and automatically add the assignments to the database.
  • Local AI Processing: To enhance the extraction process, a local AI model (LLaMA) was implemented using Ollama, running on an office computer equipped with an Nvidia GTX 1080 GPU. The AI was used to scrape and extract information from PDFs, which was then used to populate the portal.
  • Web Scraper: A web scraper was developed to extract assignment data from a website where companies posted their consulting needs. These assignments were automatically added to the portal.
  • Software Integration: Assignments from another software system used by Essiq AB were also integrated directly into the portal.

Conclusion

This project was an incredibly rewarding experience, offering me the opportunity to work on a large-scale system and explore technologies I had not previously encountered, such as running local AI models. During my internship at Essiq AB, I dedicated my time to building this system from the ground up. Initially, I worked independently, but later, another employee joined the project. While the system was not fully completed by the end of my internship, it was operational with most core features implemented.

One of the highlights of the project was experimenting with local AI. I set up the AI infrastructure from scratch using Ollama and explored various software solutions. The AI model was accessed via API requests, but due to hardware limitations (an Nvidia GTX 1080 with only 8GB of VRAM), I was restricted to running a highly quantized 8-billion-parameter LLaMA model. While this model was functional, it was not as effective as larger models, such as the 70-billion-parameter version, which requires significantly more VRAM (43GB). With a more powerful GPU, such as an RTX 3090 (24GB VRAM) or RTX 5090 (32GB VRAM), the AI's performance could have been substantially improved.

Overall, this project allowed me to develop a wide range of skills, including working with Azure AD (a technology widely used in corporate environments), solving complex problems, and integrating multiple systems into a cohesive platform. It was a challenging yet highly educational experience, and I am proud of the progress made during my time at Essiq AB.