Full Title: ProCESO – AI-Integrated Community Outreach Management System with Sentiment Analysis and Automated E-Certificate for TIP Manila – CESO Department
Skip to screenshots.
Important
This system/application is not meant for public usage, and is tailored for academic institutional context.
This "system" only serves as public reference for similar system or application.
This capstone project aims to develop an AI-integrated web-based community outreach management system that simplifies and centralizes administrative tasks to enhance the efficiency and impact of the institution’s community extension services in fostering sustainable community relationships.
- To develop a system feature that facilitates the internal coordination of community outreach activities, such as managing faculty assignment, uploading of reports, and historical archiving for preserving past activities’ analytics.
- To implement automated processes for generating, distributing, and validating e-certificates of participants, thereby reducing manual workload and improving operational efficiency;
- To integrate AI models for analyzing and evaluating feedback, such as sentiment analysis and emotion classification, to effectively collect feedback and support data-driven decision-making through AI-assisted insights.
Overview of current technologies and resources to be used in the system.
- Next.js 15 (Canary)
- React 19 (RC)
- TypeScript 5
- Mantine
- TailwindCSS 3
- Supabase (Database, Auth, Storage)
- Trigger.dev (Background Jobs, Cron Jobs)
- Resend (Email)*
* Resend are not locally-hostable.
- cardiffnlp/twitter-roberta-base-sentiment-latest (Sentiment Analysis)
- SamLowe/roberta-base-go_emotions-onnx (Emotion/Text Classification)
- OpenAI GPT-4.0 mini (Summary & Report Generation)
- Should be replaced with lightweight variant, such as: microsoft/Phi-3.5-mini-instruct-onnx.
- Opted due to: Trigger.dev doesn't support downloading of ONNX model_data locally, and with separate central dedicated hardware unavailable for local use, and development time.
Note
All models uses quantized version of their original model for lightweight, and are run locally using
@huggingface/transformers
.
With the exception of OpenAI GPT-4.0 mini.
- GitHub Actions (CI)
- Codacy (SAST)
- FOSSA (License Compliance)
- Mend Renovate (Deps. Mgmt.)
- Mend Bolt (Deps. Vulnerability Scanner)
- Vercel (Web Hosting)
- OneUptime (Uptime Monitoring)
- Baselime.io (Observability)
- Snyk.io (Application Security)
Some screenshots were not included, such as:
- Login Page
- User Management
- Series Page (similar to Activities but categorized per series)
- Emails sent by the system
Dashboard Calendar using FullCalendar library.
Dashboard Calendar Yearly Overview (FullCalendar.js).
Event details with WYSIWYG editor, File uploads (Reports), Faculty Assignment (Delegation).
Event delegation response (w/ Email notice to respective authorities).
New/Update Event Form Modal with Mapbox Integration.
Goals & Objectives, Dept. to notify (email).
AI-Generated summary with overall ratings.
World cloud and overview of overall evaluation analysis.
Sentiment Analysis and Emotion Analysis per evaluation.
Copy of submitted evaluation form.
Participant lists for excluding in generation (attendance-related).
The generated certificate also contains QR code for validation.
The Generate
generates certificates locally (offline use), and downloads as ZIP file. The Send
uses Trigger.dev integration.
Integrated with Trigger.dev, monitor the status of the generation process.
-
Download and setup bun.
-
Setup required instances of the ff.
- Supabase
- Configs can be acquired from
supabase/
directory.
- Configs can be acquired from
- Trigger.dev
- Resend
- HuggingFace
- GitHub Token (for GitHub Models, OpenAI GPT-4.0 mini)
- Supabase
-
Install dependencies using
bun install
orbun i
. -
After setting up Supabase tables, generate types locally:
SUPABASE_PROJECT=your-project-id bun gen:t
-
Setup acquired environment variables from services above in
.env
file.A copy of
.env
file can be found in.env.sample
file. -
Configure Supabase Auth for Google OAuth.
-
Configure
trigger.config.ts
:export const config: TriggerConfig = { project: '', // change to your trigger.dev project api // ... };
-
Run the application
bun dev # or dev:t to use turbo bun dev:em # to run email previews by react-email
This project used Doppler (CLI) for secrets management, therefore most scripts are tailored for such env variables to be available when running them using:
doppler run -- bun gen:t
Or you can do an alias to shorten it:
alias dp='doppler run --'
# now you can run scripts using:
dp bun gen:t
# or
dp bun dev
You can upload your existing .env
file using:
doppler secret upload .env
Note
You wouldn't need an .env
file when using Doppler.
(You can delete it)
It acquires the necessary secrets from doppler's dashboard using the CLI, and can be used across machines without manual transfers.
Note
This project was deployed using Vercel.
Deploying to other providers are not tested, and is up to you.
After deploying the main application,
Don't forget to deploy the Trigger.dev
triggers:
bun deploy:tr
# or
bunx trigger.dev@latest deploy
This work is distributed under Apache License, Version 2.0.
All trademarks, logos, and service marks displayed on this website are the property of their respective owners.
-
Technological Institute of the Philippines (T.I.P)
T.I.P and the T.I.P logos are trademarks or registered trademarks of Technological Institute of the Philippines ( T.I.P) in the Philippines.
-
Google, LLC.
Google and the Google logos are trademarks or registered trademarks of Google LLC in the United States and other countries.