Desktop tooling for demolition estimating and financial analysis, built with Tkinter, PostgreSQL, pandas, scikit-learn, and Prophet.
This repo currently has two main GUI applications:
-
Estimating + proposal workflow (
estimate_project/work_scope_bid_proposal.py)- Multi-page work scope and bid proposal form
- Contact and equipment lookup/edit windows
- Historical + machine-learning estimate support
- Word document export to your Downloads folder
-
Financials workflow (
financials/financials_main.py)- Daily/monthly/yearly operating-cost calculations
- Equipment/disposal/sales/QuickBooks-style summaries
- Forecast charts using Prophet (matplotlib and Plotly)
demolition_estimating/
├── data/
│ ├── equipment_sample_data_public.csv
│ ├── contact_sample_data_public.json
│ ├── monthly_numbers_sample_data_public.csv
│ ├── project_sample_data_public.csv
│ └── project_management_public.json
├── estimate_project/
│ ├── building_demo.py
│ ├── contact_book.py
│ ├── equipment_book.py
│ ├── estimate_project.py
│ ├── estimating_main.py
│ ├── house_demo.py
│ ├── interior_demo.py
│ ├── postgresql.py
│ └── work_scope_bid_proposal.py
├── financials/
│ ├── expenses.py
│ ├── financials_main.py
│ ├── postgresql.py
│ └── revenue.py
├── requirements.txt
├── README.md
└── LICENSE.txt
- Python 3.10+
- PostgreSQL database with required tables
- Tkinter (usually included with standard Python installers)
- Create and activate a virtual environment.
Windows PowerShell:
python -m venv .venv
.\.venv\Scripts\Activate.ps1Windows Command Prompt:
python -m venv .venv
.venv\Scripts\activate.bat- Install dependencies.
pip install -r requirements.txt- Create a
.envfile in the repository root.
POSTGRESQL_HOST=host
POSTGRESQL_PORT=port
DATABASE=your_database_name
POSTGRESQL_USER=your_username
POSTGRESQL_PASSWORD=your_passwordBoth estimate_project/postgresql.py and financials/postgresql.py read these same environment variables.
The application expects these tables:
-
project- Used by estimating workflows
- Columns used in code:
job_number,awarded_date,project_description,structure_type,sqft,bid_price,job_cost,estimator
-
monthly_numbers- Used by financials workflows
- Columns used in code:
year_month,disposalcost,expense,sales,payroll
-
equipment- Used by both financials and estimating workflows
- Columns used in code:
equipment_name,project_type,purchase_price,day_rate,week_rate,month_rate
-
companyandclient- Used by the contact book workflow
If PostgreSQL is unavailable, these programs fall back to public sample data in data/:
estimate_project/contact_book.py→data/contact_sample_data_public.jsonestimate_project/equipment_book.py→data/equipment_sample_data_public.csvestimate_project/estimating_main.pyandestimate_project/work_scope_bid_proposal.py→data/project_sample_data_public.csvfinancials/financials_main.py→data/monthly_numbers_sample_data_public.csvanddata/equipment_sample_data_public.csvestimate_project/project_management.py(public mode) →data/project_management_public.json
From the repository root:
Main estimating/proposal GUI:
python estimate_project/work_scope_bid_proposal.pyFinancials GUI:
python financials/financials_main.pyOptional standalone tools:
python estimate_project/contact_book.py
python estimate_project/equipment_book.py
python estimate_project/estimating_main.py- Proposal documents are exported as
.docxfiles to your user Downloads directory. - Chart windows open via matplotlib and Plotly from within the desktop apps.
This project is licensed under the MIT License. See LICENSE.txt.