ScoreRent

Rental decision-support web app that helps renters evaluate listings before paying non-refundable application fees.

Python FastAPI Jinja2 PostgreSQL pytest GitHub Actions Render

Inspiration

I built ScoreRent after seeing people around me transitioning from university residence to real rentals. Many of them were paying expensive application fees repeatedly, only to get rejected due to affordability, missing documents, or high demand.

I wanted a tool that could reduce that risk by making the decision clearer upfront, and by showing renters exactly what is weakening their application and what they can do to improve it.

What it does

ScoreRent evaluates listing requirements against a renter profile and outputs a 0 to 100 confidence score and a verdict. The score is deterministic and explainable. It is intentionally designed as a confidence score, not acceptance probability.

Score (0 to 100) Verdict Reasons Recommended actions Explainable breakdown

Core features shown in the live app

These are the product flows implemented in the deployed version.

Guest evaluation

A renter can enter listing details and renter information without signing up and receive a score, verdict, reasons, and actions.

Evaluate Fast decision support

Authentication

Users can sign up, log in, and log out. Logged-in flows unlock saved profiles and evaluation history.

Signup Login Sessions

Saved renter profile

Logged-in users can save profile data such as renter type, income or support, documents available, and student fields.

Saved profile Student support

Dashboard + history

Logged-in users can view their last evaluation from the dashboard and browse saved evaluations from their history.

Dashboard Evaluation history Persistence

Explainable scoring

The scoring engine starts at 100 and applies rule-based adjustments. Results include reasons, recommended actions, and a full breakdown showing score changes (before to after deltas per rule).

Rule-based engine Score breakdown Reasons Actions

Scoring rules implemented

Deterministic rules designed to reflect real renter scenarios.

Affordability thresholds

Rent-to-income affordability checks using 25%, 30%, and 35% bands, with penalties applied when a listing is financially risky.

25/30/35% bands Affordability penalties

Document-fit matching

Required documents are matched against what the renter has. Missing required documents result in score deductions and clear guidance.

Document checks Missing docs

Demand weighting

LOW, MEDIUM, and HIGH demand levels adjust evaluation strictness to reflect competition and reduce false confidence.

LOW/MEDIUM/HIGH Weighted decisions

Student logic

Rules for student scenarios including bursary support and guarantor support, modelling realistic renter situations.

Bursary Guarantor support

Engineering quality

I wrote pytest unit tests for the evaluator logic to protect scoring behaviour. I also set up GitHub Actions CI to run tests on push and pull request. The app is deployed on Render with PostgreSQL persistence.

pytest CI pipeline Regression safety PostgreSQL Render

What I learned

Building ScoreRent taught me how to design system boundaries and keep behaviour predictable while iterating. It also strengthened how I think about trust and clarity in decision-support systems, where users need to understand the output, not just receive it.

From an engineering perspective, I improved my testing discipline and learned how to maintain a live deployed project while continuing to build features safely.

Predictable behaviour Testing discipline Explainability Iteration Deployment experience

What’s next

Next improvements focus on stronger user safety, clearer decision support, and better reliability tooling as usage grows.

Listing comparisons Tradeoff view Safer recommendations Confidence messaging Structured logging Error monitoring More tests
Back to Projects