Authorized access only. Enter password to continue.
Facility OS · v1.0
9:41PPW Manager
Neimar Carvalho
Building Superintendent
-- °F / -- °C
v4.1
Residents
Parking
Inspections
Vendors
Pool
Storage
Calendar
Water Stacks
To Do List
Stats
Stats
Building Stats & Origins
Occupancy, demographics, countries of origin
›
Fob Overview
Access logs, door activity, usage by unit
›
Intercom
Call logs, hourly patterns, top visitors
›
Pool Stats
Chlorine, pH, pressure trends & averages
›
Water Tank Status
—
Good
—
Expiring soon
—
Expired
Loading...
Pool Stats
Loading...
Residents
108 units · 8 floors
Select a floor
Fob #
This week
This month
Pool/month
S
M
T
W
T
F
S
Parking
Outdoor
120 spots · 8 sections
→
Garage
60 spots · 2 rows
→
Outdoor
120 spots · 8 sections
Garage
60 spots · 2 rows
OWNER'S SPOTS
CONTACT
Owner
Phone
Email
REGISTERED VEHICLE
Vehicle
Unit
Inspections
Areas Comuns
Leaks, electrical, HVAC
Nardone
Fire detectors — annual
Sprinklers
Sprinkler room log
Unit Maintenance Status
Up-to-date maintenance information and history for each unit
Areas Comuns
Open
Closed
Nardone
Fire detector inspection — annual
Nardone Report
Sprinklers
Sprinklers — Coming Soon
Sprinkler room inspection log
Unit Maintenance Status
All Units
Expired
Expiring Soon
OK
New Inspection
Step 1 of 4 — Authorization
Auth
Category
Schedule
Verdict
Select Category
SPECIFY LOCATION
Inspections
Inspection saved!
Report sent to Diana.
Vendors
Fob Overview
Overview
By Door
By Hour
By Unit
ACCESS BY DOOR
HOURLY PATTERN
ACCESSES PER ENTRY POINT
HOURLY ACTIVITY
To Do List
Parkway Plaza West · Neimar Carvalho
0/0
tasks done
⚠️
0
Done
0
Pending
0
Total
Friday! Weekly report ready to export.
Parkway Plaza Superintendent Checklist Superintendent: Neimar Carvalho
Superintendent signature
Date
Manager approval
Season Settings
Task groups are shown/hidden automatically by season. You can override any group.
Add note
Barkan
API Key Required
To use the PPW Assistant, enter your Anthropic API key below. It stays in your browser only.
Get your key at console.anthropic.com
PPW Assistant
Hi Neimar! I have the full PPW Rules & Regulations Handbook loaded. Ask me anything about building rules, pool regulations, move-in procedures, construction rules, parking policies, or anything else in the handbook.
Powered by Claude AI · Based on PPW Handbook Sept 2023
Database Backup
No backup recorded yet
⚠️ Recommendation
Export a backup at least once a month and save it to Google Drive or your computer. If something goes wrong with Firebase, you can restore everything from this file.
Building Maintenance Log
Pool
Water quality log
Parkway Plaza West
16,500 gal · Outdoor · Chlorine
16,500
gallons
1
Enter Current Readings
Free Chlorine
ppm
Ideal: 1.0–3.0 ppm
pH
pH
Ideal: 7.2–7.8
Total Alkalinity
ppm
Ideal: 50–150 ppm
Calcium Hardness
ppm
Ideal: 200–400 ppm
Cyanuric Acid
ppm
Ideal: 30–50 ppm
Water Temp
°F
For LSI calc
2
Select Chlorine Product
Liquid Chlorine
12.5%
Granular
68%
Cal-Hypo Shock
65%
3" Tablets
90%
3
What To Add
Langelier Saturation Index
FREE CHLORINE (1.0–3.0 ppm)
PH (7.2–7.8)
WATER TEMP (°F)
PARKWAY PLAZA WEST · MEDFORD MA
AI Pool Assistant
Tap "Analyze Now" to get personalized tips based on your latest log + weather
DATE
TEST READINGS BY TIME
TIME
Cl (1–3)
pH (7.2–7.8)
Clarity
Bathers
8:00 AM
10:00 AM
12:00 PM
2:00 PM
4:00 PM
6:00 PM
TOTAL ALKALINITY (ppm)
Range: 50–150
CALCIUM HARDNESS (ppm)
Range: 200–400
AUTO CHLORINATOR
CHLORINE FEEDER
turns
Open turns (0 = closed)
WATER TEMPERATURE (°F)
TESTER INITIALS
FILTER PRESSURE (psi)
FLOW METER (GPM)
NOTES
Pool Access by Resident
Loading usage data...
Log Water Test
TEST TIME
CHEMICAL READINGS
Free Chlorine (1.0–3.0 ppm)
pH (7.2–7.8)
Clarity
Total Alkalinity (80–150 ppm)
Calcium Hardness (200–400 ppm)
EQUIPMENT & CONDITIONS
Auto Chlorinator
Dial Feeder — Hayward CL220EF
Setting
—/ 8
0 (Off)2468 (Max)
Tablets in Feeder — estimated remaining
Tablets left
—tablets
Water Temperature (°F)
Bather Load
Filter Pressure (psi)
Flow Meter
Tester Initials
NOTES
Water Stacks
Tap a stack to see affected units
⚠️ Important — Notify Residents First
Before shutting off any stack, send a notice to all affected residents at least 3 days in advance. Include the date, estimated duration, and reason for the shut-off.
📍 Where are the valves?
Along the 1st floor corridor, on the right side above each unit door, there are labels identifying the shut-off valves for each stack.
Upload a photo or PDF of the Water Tank form. AI reads the fields and updates the database automatically. For multiple forms, combine all scans into one PDF.
Enter Anthropic API Key
Get your key at console.anthropic.com → API Keys → Create Key
UPLOAD FORMS
Export Water Tank Report
Choose what to include in the report:
Intercom Overview
Intercom History
Edit Person
Contact Info
Full Name *
Gender
Origin / Nationality
Cell Phone
Home Phone
Email
Mailing Address
Relationship to Unit
Parking
Spot #
Type
Rented to:
Tenant Name
Unit #
This spot will appear red on the parking map
Vehicle 1
Make
Model
Color
License Plate
Vehicle 2 (optional)
Make
Model
Color
License Plate
Key Fob
Fob Number
Leave blank if no fob assigned
Intercom
Intercom Code
Add Occupant
Full Name *
Relationship
Add Parking Spot
Spot Number *
Location
Rented to (name)
Their Unit #
🚗 Vehicle (optional)
Make
Model
Color
Plate
🏢 Building Overview
New Category
Category Name *
Icon Color
Add Contact
Name *
Description
Phone
Email
Add Log Entry
Title *
Category
Date
Unit # (optional)
Cost $ (optional)
Description
';
}).join('');
}
function plfResetTimeRows() {
var times = ['0800','1000','1200','1400','1600','1800'];
times.forEach(function(t) {
var clEl = document.getElementById('plf-cl-' + t);
var phEl = document.getElementById('plf-ph-' + t);
var btEl = document.getElementById('plf-bathers-' + t);
var crEl = document.getElementById('plf-clarity-' + t);
if (clEl) clEl.value = '2.0';
if (phEl) phEl.value = '7.4';
if (btEl) btEl.value = '0';
if (crEl) crEl.value = '';
});
}
function submitPoolLogForm() {
var date = document.getElementById('plf-date').value;
var initials = (document.getElementById('plf-initials').value || 'NC').toUpperCase();
var pressure = document.getElementById('plf-pressure').value;
var flow = document.getElementById('plf-flow').value;
var auto = document.getElementById('plf-auto').value;
var feeder = document.getElementById('plf-feeder') ? document.getElementById('plf-feeder').value : '';
var ta = document.getElementById('plf-ta').value;
var ca = document.getElementById('plf-ca').value;
var temp = document.getElementById('plf-temp').value;
var notes = document.getElementById('plf-notes').value;
if (!date) { toast('Please select a date!'); return; }
if (typeof db === 'undefined') { toast('Firebase not connected!'); return; }
var saved = 0;
var promises = [];
PLF_TIMES.forEach(function(t) {
var cl = document.getElementById('plf-cl-' + t.id).value;
var ph = document.getElementById('plf-ph-' + t.id).value;
var clarity = document.getElementById('plf-clarity-' + t.id).value;
var bathers = document.getElementById('plf-bathers-' + t.id).value;
// Save all rows — they all have default values now
if (!cl && !ph) return;
var entry = {
date: date,
time: t.id.substring(0,2) + ':' + t.id.substring(2),
initials: initials,
imported: false
};
if (cl) entry.cl = parseFloat(cl);
if (ph) entry.ph = parseFloat(ph);
if (clarity) entry.clarity = clarity;
if (bathers) entry.bathers = parseInt(bathers);
if (pressure) entry.pressure = parseFloat(pressure);
if (flow) entry.flow = parseFloat(flow);
if (auto) entry.auto = auto;
if (feeder) entry.feeder = feeder;
if (ta) entry.ta = parseInt(ta);
if (ca) entry.ca = parseInt(ca);
if (temp) entry.temp = parseInt(temp);
if (notes) entry.notes = notes;
var docId = date + '-' + t.id;
promises.push(
db.collection('pool-logs').doc(docId).set(entry)
);
saved++;
});
if (saved === 0) { toast('Fill in at least one time row!'); return; }
Promise.all(promises)
.then(function() {
toast('✅ Salvo!');
// Reset time rows: Cl→2.0, pH→7.4, Clarity→blank, Bathers→0
PLF_TIMES.forEach(function(t) {
var clEl = document.getElementById('plf-cl-' + t.id);
var phEl = document.getElementById('plf-ph-' + t.id);
var btEl = document.getElementById('plf-bathers-' + t.id);
var crEl = document.getElementById('plf-clarity-' + t.id);
if (clEl) clEl.value = '2.0';
if (phEl) phEl.value = '7.4';
if (btEl) btEl.value = '0';
if (crEl) crEl.value = '';
});
document.getElementById('plf-notes').value = '';
// TA, CA, Feeder, Temp, Initials, Pressure, Flow stay as-is
loadPoolWeekly();
})
.catch(function(e) { toast('Error: ' + e.message); });
}