# Paid List vs. Rooming List

> Compare payment and rooming records, identify discrepancies, and keep group travel organized with confidence through faster, smarter, and more accurate data reconciliation.

Section: Custom SaaS Platforms

Page: https://showcase.growlyze.cloud/case/paid-list-vs-rooming-list

## Project Overview

The **Paid List vs. Rooming List** is a web application designed for a group travel company to compare payment records with room assignments. It identifies missing guests, unpaid balances, and similar-looking names, helping staff detect discrepancies quickly and maintain accurate travel records. Users can upload CSV files exported from Google Sheets and receive categorized comparison results without manually checking hundreds of rows.

## Business Problem

The group travel company managed payment records and room assignments in separate Google Sheets, making it difficult to keep both lists consistent. Staff had to manually check hundreds of rows to identify guests who had paid but were missing from the rooming list, guests assigned to rooms without payment records, and names with slight spelling differences. This process was time-consuming, error-prone, and made it harder to identify discrepancies quickly.

## Proposed Solution

The solution is a web application that compares the Paid List and Rooming List using uploaded CSV files exported from Google Sheets. It automatically matches guest names, verifies payment status, and categorizes results into three groups: Matched, Paid List Issues, and Rooming List Issues. It also highlights similar-looking names to help staff identify possible spelling differences and avoid overlooking guests. Each results table can be sorted and downloaded separately as a CSV file, making the reconciliation process faster and more reliable.

## End-to-End Workflow

Image: Figure: Workflow Overview (https://showcase.growlyze.cloud/uploads/e986d3d76fe2d8d494dc0760.png)

## How It Works

**1. CSV Upload and Parsing:** Staff upload the Paid List and Rooming List as CSV files exported from Google Sheets. The system handles differences in file formats, including header rows, optional row-number columns, and variations in payment column names.

**2. Rooming List Processing:** Rooming List rows are converted into individual guest records, including multiple occupants assigned to the same room.

**3. Guest Name Matching:** The system compares names using case-insensitive exact matching. If an exact match is not found, it checks for similar names based on shared surnames, minor spelling differences, or possible nicknames.

**4. Discrepancy Detection:** The application identifies guests missing from either list, flags payment statuses that are not marked “Paid in Full,” and highlights potential name matches for further review.

**5. Categorized Results:** Results are displayed in three separate tables: Matched, Paid List Issues, and Rooming List Issues. Red highlights indicate discrepancies, while yellow highlights indicate possible similar-name matches.

**6. Review and Export:** Staff can sort the results and download each table as a separate CSV file for further review and record-keeping.

## Results Categories

Image (https://showcase.growlyze.cloud/uploads/501975cbaf03bc9ba2e8f5f8.png)

## Product Experience

The application provides a simple, browser-based interface that allows staff to upload CSV files, compare guest records, and review discrepancies in organized tables. Results are separated into three categories

- Matched

- Paid List Issues

- Rooming List Issues

so users can quickly identify records that need attention. The tables support sorting and individual CSV downloads, making it easier to investigate issues and share results with the team.

Image: The upload screen: a staff member adds the Rooming List and Paid List CSVs exported from the group’s Google Sheet and clicks Compare. (https://showcase.growlyze.cloud/case-content/paid-vs-rooming-list/image1.png)

Image: The results summary and the Paid List issues. Red rows are real discrepancies and yellow rows are similar-name warnings. Names, amounts, room and confirmation numbers are blurred for privacy. (https://showcase.growlyze.cloud/case-content/paid-vs-rooming-list/image2.png)

Image: The Rooming List issues: people on the rooming list who are not on the paid list. Names and booking numbers are blurred for privacy. (https://showcase.growlyze.cloud/case-content/paid-vs-rooming-list/image3.png)

Image: The matched list: people who paid in full and are on the rooming list, with no action needed. Names, amounts and booking numbers are blurred for privacy. (https://showcase.growlyze.cloud/case-content/paid-vs-rooming-list/image4.png)

## Technology Stack

| Technology | Purpose |
| --- | --- |
| TypeScript | Core application logic and type-safe data processing |
| Node.js | Runs the backend using a plain HTTP server without a web framework |
| HTML, CSS & Vanilla JavaScript | Provides the browser interface, interactive result tables, sorting, and CSV downloads |
| Google Sheets & CSV | Source of the Paid List and Rooming List data, uploaded as CSV files |
| Railway | Cloud deployment and application hosting |

## Data Handling & Limitations

The application processes uploaded CSV files in real time and returns comparison results directly in the browser. It is stateless, meaning uploaded data is not saved to disk. Each comparison runs independently, and users can download the Matched, Paid List Issues, and Rooming List Issues tables as separate CSV files.

**Limitations:** The accuracy of the results depends on the quality and consistency of the uploaded data. Similar-name detection helps identify potential matches but may require manual verification. Staff should review flagged discrepancies before making changes to payment records or room assignments.

## Closing Summary

The Paid List vs. Rooming List application simplifies group travel reconciliation by automatically comparing payment records with room assignments. Through exact name matching, similar-name detection, payment status validation, and categorized discrepancy reports, it helps staff identify issues faster and reduce manual checking. Built with TypeScript, Node.js, and a lightweight web interface, the tool provides a practical and efficient way to maintain accurate guest records and support smoother group travel operations.
