Landlord-Tenant Dispute Resolution Tool
Describe the Dispute
General Information & Rights (USA Focus)
Generated Communication Template
Dispute Summary
Landlords are required to maintain the property in a habitable condition. This includes ensuring plumbing, electrical, and heating systems are functional and that the structure is sound. They must respond to repair requests within a reasonable timeframe as defined by state law.
`, rent: `Tenant's Responsibilities:
Tenants are legally obligated to pay rent on time as specified in the lease agreement. Failure to do so can lead to late fees and eviction proceedings.
Landlord's Rights:
Landlords have the right to collect rent in full on the due date. If rent is late, they can charge legally permissible late fees and begin the eviction process by serving a "Notice to Pay or Quit." Rent increases are generally permitted at the end of a lease term but must follow state and local laws regarding the amount and required notice period.
`, deposit: `Tenant's Rights:
At the end of a tenancy, tenants have the right to the return of their security deposit, minus any legal deductions for unpaid rent or damages beyond normal wear and tear. Landlords must typically return the deposit and/or an itemized list of deductions within a specific timeframe (e.g., 14-30 days), as dictated by state law.
Landlord's Responsibilities:
Landlords must handle security deposits according to state law, which may include placing them in a separate account. They can only deduct for specific reasons and must provide written documentation for any amounts withheld. Wrongfully withholding a deposit can lead to penalties, sometimes including double or triple the deposit amount.
`, eviction: `Tenant's Rights:
A landlord cannot evict a tenant without a court order. The process must begin with a formal written notice (e.g., Notice to Quit). Tenants have the right to contest the eviction in court. "Self-help" evictions, such as changing the locks or shutting off utilities, are illegal in all states.
Landlord's Rights:
Landlords can initiate an eviction for lease violations, such as non-payment of rent or causing significant property damage. They must follow a strict legal process, which includes providing proper notice and obtaining a court judgment before the tenant can be legally removed from the property by law enforcement.
` }, communicationTemplates: { repairs_tenant: `[Date]\n\n[Landlord Name]\n[Landlord Address]\n\nRe: Formal Request for Repairs at [Your Address]\n\nDear [Landlord Name],\n\nThis letter serves as a formal written request for repairs at the above-mentioned property. The following issues require your immediate attention:\n\n[DISPUTE_DESCRIPTION]\n\nAs per my right to a habitable living environment, I request that these repairs be completed within a reasonable timeframe (e.g., 14 days).\n\nMy desired resolution is: [DESIRED_RESOLUTION].\n\nPlease contact me at your earliest convenience to schedule these repairs.\n\nSincerely,\n[Your Name]`, rent_landlord: `[Date]\n\n[Tenant Name]\n[Tenant Address]\n\nRe: Notice to Pay Rent or Quit\n\nDear [Tenant Name],\n\nThis notice is to inform you that your rent payment is overdue. As of [Date], you have an outstanding balance of $[Amount].\n\n[DISPUTE_DESCRIPTION]\n\nThis letter serves as a formal demand for payment. You are required to pay the full overdue amount within [Number] days, as per state law, or vacate the premises. Failure to comply will result in the initiation of formal eviction proceedings.\n\nMy desired resolution is: [DESIRED_RESOLUTION].\n\nPlease contact me immediately to resolve this matter.\n\nSincerely,\n[Your Name]`, // Add other templates... }, // --- INITIALIZATION --- init() { this.dom = this.cacheDom(); this.bindEvents(); this.updateNavButtons(); }, cacheDom() { return { tabButtons: document.querySelectorAll('.tab-btn'), tabContents: document.querySelectorAll('.tab-content'), prevBtn: document.getElementById('prev-btn'), nextBtn: document.getElementById('next-btn'), pdfBtn: document.getElementById('download-pdf-btn'), disputeForm: document.getElementById('dispute-form'), infoRightsContent: document.getElementById('info-rights-content'), communicationTemplate: document.getElementById('communication-template'), summaryContent: document.getElementById('summary-content'), }; }, bindEvents() { this.dom.pdfBtn.addEventListener('click', this.generatePdf.bind(this)); }, // --- DATA & CONTENT HANDLING --- updateDisputeDetails() { this.disputeDetails = { role: document.getElementById('user-role').value, category: document.getElementById('issue-category').value, description: document.getElementById('dispute-description').value, resolution: document.getElementById('desired-resolution').value, }; }, renderInfoContent() { const category = this.disputeDetails.category; this.dom.infoRightsContent.innerHTML = this.infoContent[category] || `Please select an issue category to see relevant information.
`; }, renderCommunicationTemplate() { const role = this.disputeDetails.role.toLowerCase(); const category = this.disputeDetails.category; const templateKey = `${category}_${role}`; let template = this.communicationTemplates[templateKey] || `[Date]\n\n[Recipient Name]\n[Recipient Address]\n\nRe: Issue Regarding Your Tenancy/Property at [Address]\n\nDear [Recipient Name],\n\nThis letter is to formally address the following issue:\n\n[DISPUTE_DESCRIPTION]\n\nTo resolve this matter, I propose the following:\n\n[DESIRED_RESOLUTION]\n\nPlease respond within [Number] days to discuss a solution.\n\nSincerely,\n[Your Name]`; template = template.replace(/\[DISPUTE_DESCRIPTION\]/g, this.disputeDetails.description || '[Describe the issue here]'); template = template.replace(/\[DESIRED_RESOLUTION\]/g, this.disputeDetails.resolution || '[State your desired outcome]'); this.dom.communicationTemplate.value = template; }, renderSummary() { const details = this.disputeDetails; this.dom.summaryContent.innerHTML = `Dispute Summary
Your Role:
${details.role}
Issue Category:
${details.category.charAt(0).toUpperCase() + details.category.slice(1)}
Issue Description:
${details.description.replace(/\n/g, '
')}
Desired Resolution:
${details.resolution}
Generated Communication
${this.dom.communicationTemplate.value}
