Added
- Contacts & Companies — Built-in project directory that tracks the companies and people on your projects. Upload your drawings and the AI automatically extracts company names, roles, phone numbers, addresses, and contacts from title blocks, stamps, and letterheads. Review what the AI found, approve the ones that belong, and your directory is built. Companies are saved globally so they auto-populate on future projects. Brand your note and estimate exports with any company’s logo and contact details in one click.
- Google autocomplete for project addresses — Project addresses now use Google Places autocomplete instead of manual text fields. Start typing, select a suggestion, and get a properly formatted address with all components plus lat/lng.
- In-App Upgrade Dialog — Free users now see a polished in-app upgrade flow instead of being redirected to a separate billing page.
- Personalized Suggestions — Chat suggestion chips are now personalized based on use cases selected during onboarding. Estimating users see takeoff prompts, not generic suggestions.
- Dynamic Browser Tab Titles — Browser tabs now show context-aware titles like “Acme Tower | Framework” instead of the static default.
Changed
- Refreshed UI — Applied the new design strategy across the entire interface. Updated component styles, cleaner neutral tones, solid input backgrounds, softer shadows, and tighter border radii throughout the app.
- Smarter Document Analysis — Replaced the two-prompt analysis system with a single unified prompt that classifies documents first, then applies type-specific rules. Drawing sets are now correctly analyzed per-sheet instead of being grouped coarsely.
- Longer Chat Sessions — AI chat timeout raised from 600s to 800s. Complex multi-tool conversations that were hitting the limit should now complete without interruption.
- Upload Error Messages — File upload failures now show clear messages explaining what went wrong (expired session, network issue, file too large, billing limit) instead of generic errors.
- Performance — Seven heavy workspace components are now lazy-loaded.
Fixed
- Google OAuth Sessions — Users signing in with Google were intermittently getting logged out. Large OAuth tokens exceeded cookie size limits; migrated to a chunked cookie API that handles them properly.
- Duplicate Subscriptions — Rapid clicks during checkout could create multiple subscriptions. Added server-side guards at both the API and webhook levels.
- Past-Due Subscription Handling — Past-due subscriptions weren’t being recognized, allowing duplicate subscriptions to be created on top. Past-due status is now detected across the entire billing system.
- AI-Generated Lists — Lists created by the AI in notes were rendering as flat, unformatted text without bullets or drag handles. Fixed the serialization mismatch; both new and existing notes now render correctly.
- Editor Drag Handles — Block drag handles in the note and company editors weren’t appearing due to a padding conflict.
- Editor Placeholders — The “Type something…” placeholder in empty paragraphs wasn’t showing due to a missing CSS property.
- Chat Stability — Fixed several issues causing errors on longer conversations: signed thinking block corruption, server-side tool results not persisting correctly, orphaned tool calls accumulating, and missing timeout protection.
- Drawing Analysis — Drawing sets were being grouped into coarse chunks instead of per-sheet because the drawing-specific prompt was never triggered. Now handled by the unified analysis system.
Security
- Chat Rate Limiting — The chat API now enforces a sliding-window rate limit of 60 requests per minute per user.


