Inspiration
I created AdmitPulse while applying to university.
Admission data changes constantly. Applicants must repeatedly check different university websites, compare scores, calculate rankings, and decide where to submit their documents.
AdmitPulse brings this scattered information into one clear dashboard.
What it does
AdmitPulse monitors public university admission data and shows applicants:
- available places;
- submitted applications;
- estimated ranking;
- competition level;
- current admission status;
- source update time and reliability.
Users can also receive Telegram alerts when their position changes, competition increases, or new data appears.
How I built it
The backend uses Python, FastAPI, SQLAlchemy, SQLite, and APScheduler.
It:
- collects HTML and XML data from universities;
- converts different formats into one structure;
- stores current and historical records;
- calculates rankings and admission status;
- schedules automatic updates;
- prepares Telegram notifications;
- provides a REST API.
The frontend uses React and TypeScript.
The application is tested with pytest and deployed on a Linux VPS using Docker, Nginx, and systemd.
I used OpenAI Codex to inspect the repository, plan milestones, implement features, write tests, review changes, and diagnose failures.
Challenges
The main challenge was that universities do not provide a standard admissions API.
Every source has different page structures, identifiers, update schedules, and data formats. Sources can also return outdated, incomplete, or unavailable information.
AdmitPulse must distinguish between live, stale, unavailable, and unverified data. This is essential because incorrect information could affect an applicant’s decision.
Ranking also requires careful handling because applicants may have equal scores and some sources omit important fields.
Accomplishments
I built a working MVP with:
- live monitoring for the first supported university;
- applicant ranking and admission-status calculations;
- scheduled updates;
- Telegram notifications;
- historical records;
- automated backend tests;
- Docker deployment;
- backup and maintenance scripts;
- a catalog of 47 universities;
- identified data sources for 33 universities.
The platform also clearly reports whether data is live, stale, unavailable, or unsupported instead of presenting unreliable information as current.
What I learned
I learned that collecting data is easier than proving that it can be trusted.
A reliable monitoring platform needs validation, normalization, update tracking, error handling, and transparent source statuses.
I also gained practical experience with backend development, API design, databases, scheduled jobs, data parsing, automated testing, Docker, Linux administration, production debugging, and AI-assisted development.
What’s next
The next goal is to support more verified universities while maintaining data reliability.
Planned features include:
- historical competition charts;
- estimated admission thresholds;
- more universities and countries;
- personalized program comparisons;
- deadline reminders;
- explanations of ranking changes;
- alternative program recommendations;
- dashboards for schools and consultants;
- API access for education services.
OpenAI models could turn raw admission data into clear explanations: what changed, how serious it is, and which alternatives the applicant should consider.
My goal is to make AdmitPulse a reliable decision-making tool for applicants, rather than another university directory.
Log in or sign up for Devpost to join the conversation.