sherpa-property-tax
stale dev privateGA Personal Property Tax Application
- Primary: https://github.com/klill6506/sherpa-property-tax
- GitHub: https://github.com/klill6506/sherpa-property-tax
- Local:
D:\dev\sherpa-property-tax
README
# Georgia Property Tax (PT-50P) Application A Python/Flask application for managing Georgia personal property tax returns (Form PT-50P). ## Features - **Client Management**: Track businesses, addresses, tax IDs, and contact info - **Multi-County Support**: One client can file in multiple Georgia counties - **Return History**: View prior year returns with F (Furniture/Equipment), I (Inventory), and P (CIP) values - **County Database**: All 159 Georgia counties with tax assessor contact info - **Depreciation Factors**: Stored by county, year, and life group (no yearly schema changes!) ## Quick Start ```bash # Install dependencies pip install flask dbfread # Run the web application python app.py ``` Then open http://localhost:5000 in your browser. ## Files | File | Purpose | |------|---------| | `app.py` | Flask web application | | `schema.sql` | SQLite database schema | | `migrate_from_gataxpro.py` | Migration script from old GA-TaxPro DBF files | | `property_tax.db` | SQLite database (created by migration) | | `templates/` | HTML templates for web UI | ## Database Schema ### Core Tables - **clients** - Business entities (name, address, FEIN, NAICS, etc.) - **accounts** - Links clients to counties (one client can have multiple county accounts) - **jurisdictions** - Georgia counties with assessor contact info - **returns** - Annual PT-50P filings - **depreciation_factors** - Factors by county/year/life_group (the key to not updating yearly!) ### Schedule Tables - **schedule_a_lines** - Equipment/furniture by acquisition year and life group - **schedule_b** - Inventory (13 categories per PT-50P) - **construction_in_progress** - Schedule C items - **leased_equipment**, **consigned_goods**, etc. ### Historical Data - **prior_year_returns** - Imported historical data from GA-TaxPro ## Migration from GA-TaxPro If you have data in the old GA-TaxPro system: ```bash # Edit SOURCE_DIR in migrate_from_gataxpro.py to point to your DBF files python migrate_from_ …(truncated for upload size)
STATUS
--- type: project-status project: sherpa-property-tax last_updated: 2026-04-27 --- # STATUS — sherpa-property-tax *The freshest file. Answers "where am I on this project?" Updated at the end of every substantive session.* --- ## Current state <One short paragraph: what state is the project in right now? Mid-build? Shipped MVP? Stalled waiting on something? Be concrete.> ## In progress - [ ] <What's actively being worked on. If nothing, write "Nothing in flight."> ## Next up 1. <The next thing to pick up when work resumes.> 2. <The thing after that, if obvious.> ## Blocked / waiting on <External dependencies, decisions you need from someone, vendor responses, etc. "Nothing blocking" is a fine answer.> ## Known issues <Bugs you know about but haven't fixed, edge cases not yet handled, debt you've taken on. Be specific so future-you doesn't get blindsided.> ## Recent wins - 2026-04-27: <What was completed in the last session or two. Concrete, with dates.> ## Last session recap *2026-04-27* — <One paragraph: what got done, what was learned, anything surprising. Read this first when picking up the project after a break.>
DECISIONS
--- type: project-decisions project: sherpa-property-tax last_updated: 2026-04-27 --- # DECISIONS — sherpa-property-tax *Architectural and scope choices. Append-only log. Each entry is a decision that shouldn't be re-litigated without new information. If you find yourself reopening a decision, either add a new entry that overrides the old (and say why) or leave both so the history is visible.* --- ## How to use this file Each decision gets a dated entry with: what was decided, why, what was considered instead, and what would change our mind. Never delete entries — if a decision is reversed, add a new one that supersedes it. --- ## 2026-04-27 — <Short decision title> **Decision:** <what we chose> **Context:** <the problem or question that forced a choice> **Alternatives considered:** <what else was on the table and why we passed> **Reasoning:** <why this option won> **Would reconsider if:** <what new information would flip this> --- ## 2026-04-27 — <Short decision title> **Decision:** **Context:** **Alternatives considered:** **Reasoning:** **Would reconsider if:** --- <!-- Append new entries at the top. Older decisions remain below. -->
MEMORY
--- type: project-memory project: sherpa-property-tax last_updated: 2026-04-27 --- # MEMORY — sherpa-property-tax *Standing facts, preferences, and accumulated context. Long-lived — not "what I did yesterday" (that's STATUS.md). Update when you learn something worth keeping.* --- ## Purpose and scope <Why this app exists, who uses it, what problem it solves. 2-3 sentences max.> ## Domain knowledge <Rules of the domain that Claude should know before making changes. For tax apps: the specific IRS rules this module implements, state conformity notes, edge cases. For non-tax apps: business rules, workflows, naming conventions specific to this app's world.> ## User preferences discovered <Things Ken has said he prefers, or patterns that work / don't work. Example: "Ken prefers server-rendered HTML over SPAs for internal tools." "Don't auto-format tax return numbers with commas on input, only on display."> ## Integrations and external systems <APIs, webhooks, third-party services this app talks to. Auth patterns, rate limits, quirks.> ## Gotchas and lessons learned <The things that have bitten us. Non-obvious behavior, debugging dead-ends, environment quirks. Write these when they happen so the next session doesn't repeat the mistake.> ## Data model highlights <Key tables/models and what's non-obvious about them. Don't duplicate the schema — reference it. Focus on the things you'd warn someone about.>
CLAUDE.md
# Sherpa Property Tax - CLAUDE.md ## Project Overview **Name:** Sherpa Property Tax (Georgia PT-50P Manager) **Port:** 8006 **Stack:** Python, Flask, SQLite, Jinja2, PyMuPDF **GitHub:** https://github.com/klill6506/sherpa-property-tax **Production URL:** Local only (also packaged as Windows installer via PyInstaller + Inno Setup) **Status:** In Development ## What This App Does Manages Georgia Business Personal Property Tax Returns (Form PT-50P) for an accounting firm. Handles the full lifecycle from client intake through PDF generation of official state forms. - **Client & Account Management** -- Track business entities across multiple Georgia counties - **Year-over-Year Rollforward** -- Automatically creates 2026 returns from 2025 data, aging assets and applying new depreciation factors - **Schedule A Asset Depreciation** -- Tracks assets by life group (4yr/8yr/12yr/17yr) and acquisition year with county-specific depreciation factors - **Additions/Disposals Worksheets** -- Itemized tracking that feeds into Schedule A recalculation - **Page 2 Questionnaire** -- Captures all 20+ PT-50P form questions - **PDF Generation** -- Fills the official PT-50P PDF template (450+ fields) using PyMuPDF - **County Database** -- All 159 Georgia counties with assessor contact info and depreciation factor tables - **Legacy Import** -- Migration from GA-TaxPro Visual FoxPro DBF files (2020-2025 data) ## Current State / What I Was Working On <!-- UPDATE THIS SECTION BEFORE CLOSING CLAUDE CODE --> **Last session:** [Date] **Working on:** [Brief description] ### What's Working: - Client CRUD (create, edit, list, detail views) - County database with depreciation factors for all 159 Georgia counties - Prior year return history (imported from GA-TaxPro) - 2026 rollforward engine (single and batch) - Schedule A with 4 life groups and recalculation - Additions/disposals worksheets with itemized tracking - Page 2 questionnaire editing - PDF generation for PT-50P returns (all pages + work …(truncated for upload size)
Diary mentions
No recent diary mentions for this app.