Privacy Policy
AR Logic LLC ("AR Logic", "we", "us") runs fixRAgent at fixragent.com. This policy says what we collect, where it goes, how long it stays, who else touches it, and how to get it deleted. It is written to match what the software does, and it is checked against the code each time it changes. If something here does not match what you experience, tell us at legal@fixragent.com and we will fix the policy or the code.
The short version.
1. The short version
A photo you drop on the triage card, or send to us by email, text or the API, is stripped of its metadata on our server, sent to an automated image model run by Google, and read once or several times. We keep the cleaned photo with its Triage Profile, so the picture goes wherever the profile goes: anyone you share the profile's link with sees the photo too. We keep it until you ask us to delete it.
In the older repair-guidance tool, we keep a photo only if you tick "Keep this photo". Ticked photos live in a private bucket for 30 days and are then deleted by a daily job.
Google's model service keeps the prompt, the photo and the answer for a limited period under the terms that apply to our account. Section 3 says what we know about that period and how we keep the statement honest.
If you type an email address you agree we may store it and send you your card, then up to three short follow-ups about that one repair, each with a one-line unsubscribe. We send the card email you ask for. Follow-up emails about that one repair are sent only when our follow-up loop is on and only under a consent line that names them; each carries a one-line unsubscribe. If you type a phone number we store it with a consent record. Texting is not switched on; nothing is sent to your number today.
We do not sell personal data, and we do not run advertising on the site.
If your property manager uses fixRAgent, the manager decides what happens to your request. Section 2.10 explains how that works.
To delete anything, email legal@fixragent.com or use the feedback form in the app. Section 9 says what deletion removes, what it leaves, and how long backup copies take to expire.
What we collect, and where.
2. What we collect, and where
fixRAgent has several doors. Each collects slightly different things.
2.1 The triage card
The triage card is the photo door on the home page, the landlord pages under /triage/, a shared card at /c/, the outcome page at /o/, and the API at /api/triage.
- The photo. Before anything else happens, our server removes the metadata a camera writes into a photo — EXIF, XMP, IPTC and the other carriers that can hold a location. A photo that cannot be cleaned is refused rather than read. The cleaned photo is then sent to the model. From 6 October 2026 we keep the cleaned photo with the Triage Profile it made, in a private storage bucket in the United States under the profile's random
diagnosis_id, never your name or email. It has no public address of its own: our site shows it, from our own servers, to anyone who has the profile's link. A caller of the API can sendkeep_photo: falseto have the photo not kept. We also keep the hash, which lets us tell that the same photo was sent twice. Before 6 October 2026 we kept only the hash on this path, so a profile made before then has no photo. - What you type about the problem, and which role you picked (landlord, or the one fixing it), and which experiment arm you were in. The typed text is used for the read; the stored record has no field for it.
- The answer. The engine's answer, the versions of the engine and rules that produced it, the role and the arm are stored under a random
diagnosis_idthat is printed on the card. That id is how you refer to a card when you write to us. - The MCP server. The fixRAgent MCP server at
https://fixragent.com/mcp, which Claude and other AI assistants use as a connector or plugin, runs this same triage and handles photos and data exactly as described in this section. - Your email address and phone number, only if you type them into the card. Section 4 covers both.
- Your IP address is held in memory for up to an hour to enforce the per-address limit, and appears in our hosting provider's request logs. Two other doors treat the address differently: our own event store keeps the city, region and country read from it (section 2.6), and a scan of one of our printed QR codes logs the address itself (section 2.7).
2.2 The repair-guidance tool
The older flow ("Scan my broken item") lists parts, steps and stores for a repair.
- The photo, or photos. Your browser resizes and re-encodes each photo before upload, which drops the metadata a camera writes; we do not separately verify on the server that it is gone. The photo is sent to the model. We keep it only if you tick Keep this photo at upload, which is off unless you tick it. Section 3 says what a kept photo's life looks like.
- Your description of the problem, and a ZIP code if you enter one for local store availability.
- The result. If you are signed in, the description, the answer, the parts, steps and search terms, and a snapshot of what you saw are stored under your account. If you are a guest, the result is kept on your device in your browser's storage, and a copy of the answer — without an email address — is stored on our side.
- A thumbs-up or thumbs-down you give on an answer is stored with the answer's id and, when you are signed in, your email address (
diagnosis_votes). - Home profile and appliances you choose to save, on your device and, when you sign in, under your account.
- Free-use counters in cookies and local storage, and on our side, so the free allowance can be counted.
2.3 Accounts and paid plans
- Your email address, and the sign-in records our authentication provider keeps for it.
- If you choose Continue with Google, Google tells our authentication provider your name, your email address and the address of your Google profile picture. Your email address becomes your account, exactly as if you had typed it; the name and picture link stay in the sign-in record. We ask Google for nothing else: not your contacts, mail, files or calendar.
- On our pages for property managers (the property-managers, enterprise and pricing pages), Google may offer a small "Continue as" box (Google One Tap) if your browser is already signed in to Google. Google draws that box and loads it from its own server, so Google sees that you visited the page. If you tap it, the same details as Continue with Google reach our authentication provider; if you close it or ignore it, nothing is sent to us. We do not show it on the home page, the repair guides, or to someone already signed in.
- Your plan, and an identifier that Stripe assigns to you. Stripe holds your card details; we never see the card number.
- The emails that sign-in needs: confirming an address, resetting a password.
- A record of each payment: your email address, the plan, the amount and Stripe's invoice id.
2.4 Resident and manager intake, and roof inspections
- Photos uploaded through a manager's intake link (
/t/…) have their location and camera data removed on our server before they are stored (a photo that cannot be cleaned is refused), and are stored in a private bucket, keyed by the manager's account and the photo's hash, up to 8 MB each, together with the resident's description, the ticket it belongs to, and whether the resident was asked about, and agreed to, the photo's use. That photo goes with the request to the people it is for: the manager and the members of their account see it in their queue and in the alerts we email them, and when the manager sends the job to a vendor, the vendor's email and the job's Triage Profile show it too. Those are private links, not listed or searchable, and anyone given one can see the photo. The box on the sticker and team pages asks one thing: whether we may also use the photo, with identifying details removed, to make fixRAgent better. It starts ticked; unticking it says no to that use only, and the photo still goes to the manager and whoever they send. Around them we keep the manager's account and its members' email addresses, the properties, units and assets the manager entered, each intake code and a log of its scans (city, country and whether the device is a phone; not the network address), and, for 24 hours, a rate-limit record keyed by the code or the network address. A resident who sends a request through that link may also give their own email address; if they do, it is stored on the ticket (pm_tickets) and used for one thing: to email them when the request changes state (section 4). They are kept until the account holder deletes them or asks us to. - When a manager sends a request on to the vendor who does that trade for them — a plumber, an electrician — the manager types the vendor's email address and may add a name; one vendor is remembered per trade, and a new address for that trade replaces the old one. We hold that address on the manager's behalf: it is stored under the manager's account (
pm_vendors), shown only to members of that account, never on a public page and never in a resident's email, and used for one thing — to email that vendor the Triage Profile (the shared card at/c/, section 2.1) the manager chose to send, sent by us in the manager's name, with replies going to the manager. That mail carries the request itself — where it is, what the resident wrote, the resident's photo and what it showed — because the manager is passing the job on. We keep a record of each such send (pm_vendor_sends): the ticket, the address, the name and trade given, which member of the account sent it, the subject line, the time, and our mail service's answer and message id. Both are kept until the manager's account is deleted or the manager asks us to remove them; a vendor who writes to us is pointed to the manager who holds their address, and we help the manager answer. - Roof-inspection photos uploaded by a contractor through the Castagra pages are stored in a private bucket for that contractor's report, with the report's job record, and kept until the contractor deletes them or asks us to.
- An enterprise pilot that sends photos through the intake API may have the photo itself stored in our database with the request, until the pilot ends or deletion is requested.
- Property-manager pilots, the retrospective look at past work orders and a live connection to a manager's maintenance system, are described separately in section 2.10.
- A partner platform can send us the web address of a photo through an open inbound endpoint and receive a link into the triage card in return; we store that address and the platform's name (
b2b_inbound_leads), and nothing about the person whose photo it is beyond what the address itself carries. - The same table (
b2b_inbound_leads) also holds each request for an API key made through the form on our developer documentation or on our enterprise page: the email address the requester gave us, the company the key is for and the name of the person accepting the API terms, what they told us they were building, the version of the consent wording they agreed to, and a pointer to the key we issued. We keep it because it is the only record of who asked us for access and why. We never store the key itself. Ask us and we will delete your request.
2.5 Feedback
If you send feedback from the app, the text and the email address you give (optional) are stored, sent to Anthropic's Claude model to categorise the message and draft a reply for us to read, and emailed to us. Nothing is sent to you automatically.
2.6 Every visit
- Hosting logs. Our hosting provider records the address, path, user agent and time of each request, as every web host does, and keeps them for a limited period on its own schedule.
- Cookies and browser storage. Listed in the table below. None is used for advertising.
- Product analytics. Five sinks: four tools run by other companies, and one store of our own. Google Analytics loads with the app, the repair guides and most other site pages, and records page views and interactions under Google's cookies; your IP address reaches Google as part of that request. PostHog records which step of the triage flow you reached, the
diagnosis_id, the page, the role, the experiment arm, and the campaign tags you arrived with; those events never carry an email address, a photo or the text you typed. On the home page PostHog also records how you use the page: where you click and move the mouse, and repeated clicks on one spot (heatmaps); which buttons, links, fields and text you click or change, with the visible label of what you clicked but never what you type into a field; which sections came into view, how far you scrolled and whether a video played; and how fast the page loaded and responded, and whether its layout moved. PostHog also keeps a replay of visits to four pages (the home page, pricing, enterprise and get started): a recording of what the page showed and where you moved, scrolled and tapped, with everything you type into a field hidden. Replays are kept for 30 days. The pages a resident uses to report a problem (the sticker link and the intake form) are never recorded. On the app page PostHog runs only on fixragent.com; on most other site pages it runs wherever that page is loaded, except on a developer's own machine. Vercel Web Analytics loads with the app and most other site pages and reports each page view to Vercel — the page, the referring page, and the country and device type Vercel reads from the request — without a cookie; Vercel Speed Insights loads with the app page and reports to Vercel how fast that page loaded for you. Our own event store (/api/track, written to a table we run,fixr_events) receives the same funnel events as PostHog: the event name, the page, the step reached, a session id, and a device id that the app creates in your browser's storage (fixr_did) together with the date it was first seen, a visit count, the page and campaign you arrived from, your screen size, time zone and language, whether the device is a phone, tablet or desktop, your connection type and whether your browser asks for reduced data, whether the app is installed to your home screen, how many processor threads your browser reports, and a Google or Meta click identifier (gclid,fbclid) if the link you arrived from carried one — stored as part of the arrival record and used for nothing else; we do not run advertising and send nothing back to either company. The app sends these events from wherever it is served except a developer's own machine, so a preview copy of the app writes to this store as well as fixragent.com. On arrival our server adds the city, region and country it reads from your network address, and your browser type; the network address itself is not stored in that table. This store is ours — hosted by Supabase like the rest of our database — and is not shared with anyone. It is kept for as long as we operate the service unless you ask us to delete your device's rows (section 9). An older endpoint that no current page calls can record a page view (the path, the referring page and whether the device is a phone; no address, no identifier) intelemetry_events. None of these runs on the legal pages. - Fonts and scripts from other hosts. The app loads the Inter typeface from Google Fonts and its database client library from esm.sh. Most other site pages load their stylesheet from Tailwind's CDN; the roof-report page, the repair-guide index and three guides, the reliability index and a setup page load script libraries from Cloudflare's cdnjs; the resident-intake pages load Sentry's browser script from Sentry's CDN; the QR admin page loads a library from unpkg. Each of those hosts sees the request, including your IP address, when the page loads. The legal pages load none of them. Section 6 names the company behind each host, and a check in our code repository fails if a page we serve starts loading a script, stylesheet or frame from a host section 6 does not name.
- Error reports. When something breaks on our servers, the error message, the route and the software version are sent to Sentry. Email addresses inside a message are replaced with the word
[email]before it leaves; photos and request bodies are never sent. The resident-intake pages also load Sentry's browser script, which reports an error that happens in your browser on those pages, with your browser type and IP address. - Which companies visit. On the home page and our pages for property managers and businesses (for property managers, for teams, pricing, get started, setup, developers, security, connect, and the pages on the systems we work with), a script from Apollo.io sends Apollo the page you visit and your IP address, and Apollo tells us which company that address belongs to. We have it set to name the company, never the person. It runs only on fixragent.com, and never on the app, the legal pages, the manager queue or any page a resident uses.
Show the table10 rows
| name | kind | what it does | how long |
|---|---|---|---|
fixr_free_run_count, fixr_guest_used | cookie | counts the free reads used on this device | up to one year |
fxk_* | cookie | set only after you read a photo on our page; proves to us that the photo was read in this browser, so Keep this can add that answer to the account you then make. Sent only to that one address, never readable by page scripts | 7 days |
fixr_keep | local storage | remembers which answer you asked to keep while you sign up | until it is added, or 7 days |
fixr_variant | cookie | keeps you in the same experiment arm on your next visit | 90 days |
_ga, _ga_* | cookie | Google Analytics: tells one visit from the next | for the period Google sets |
fixr_* (history, email, onboarding, used flags) | local storage | keeps your guest history and settings on your device | until you clear your browser |
fixr_did, fixr_first_seen, fixr_visits | local storage | a device id the app creates, the date it was first seen and a visit count; sent with each event to our own event store (above) | until you clear your browser |
fixr_sid, fixr_seq, fixr_step, fixr_t0 | session storage | a session id, the event sequence and the furthest step reached, for the same events | until the tab closes |
fixr_triage_utm | session storage | remembers which campaign or QR code brought you, so a later page can credit it | until the tab closes |
| sign-in token | local storage | keeps you signed in | until you sign out |
2.7 QR codes we print
Some of our printed and shared QR codes point at /api/q, which looks up the code and sends you on to its destination. Each scan is logged on our side (qr_scans): the time, your network address, your browser, the page that referred you if any, the city and country read from the address, and whether the device is a phone. That log has no retention job: it is kept for as long as the link exists, or until you ask us to delete the rows for your address (section 9). A QR link can be configured to load a Meta Pixel or a Google Tag Manager tag on the way through; no link is configured that way today, and if we configure one we will name the company in section 6 first. The resident intake codes in section 2.4 keep a different log, without the address.
2.8 Properties and assets you register
If your plan includes the property registry, the properties you add (name, address, notes; or address, city, state and ZIP from a spreadsheet you import) and the assets you add to them (name, type, brand, model and serial numbers, notes, and what a nameplate photo was read as) are stored under your account (properties, assets). When a roof-size estimate is run for a property, or an imported property has no roof size yet, its address is sent to Google's Maps geocoding service and the result to Google's Solar service to estimate the roof area; Google sees the address in that request.
2.9 Contractors we write to
Separately from anything you do on the site, we keep a list of trade contractors — name, email, trade, city and state — that we may email about fixRAgent, and a record of each such email (contractor_outreach_queue, marketing_outreach). If you are on that list and want off it, email legal@fixragent.com and we will remove you. The same weekly job also stores marketing text it drafts for our own business listing (marketing_content); that table holds nothing about any person. We also keep records of businesses and people we approach ourselves — prospects, the contact details we found for them and our own notes — in the same database (empire_leads, rook_leads, rook_opportunities, rook_memory, as they stood on 13 September 2026). Those records are created by us, not by the software that runs this site, so the check described in section 15 does not see them. If you are in one of them and want out, email legal@fixragent.com and we will remove you.
Writing to contractors and prospects is business development. It is a separate activity from the card and the repair tool, and it runs from its own lists. We never use the email address or phone number someone gave us on a card, in the repair tool, or through a manager's intake link to market to them or to prospect. If you ask us to stop, we take you off every list we send from and keep a note of your request so that you stay off.
2.10 Property-manager pilots
A property manager can try fixRAgent in two separate phases. Each one has its own purpose and its own limits, and the first does not switch on the second.
- Phase 1: a look back at past work orders. The manager sends us up to 25 closed work orders and the intake photos that came with them. Before any model reads them, we remove residents' names, contact details and other details we do not need. We compare what fixRAgent would have said with what actually happened, and we send the manager a report. We use this material only for that pilot.
- Phase 2: a live connection. This happens only when the manager confirms it in writing, naming the platform, the account and the start date, and only after access to that platform is confirmed. While connected, and only for work orders that carry a fixRAgent card, we read what we need to measure the card against the outcome: the status history and dates, the resident's request text, the assigned vendor and trade, the line items and bill or invoice fields needed for that, and the closing note. We do not read unrelated work orders, and we do not intentionally store a resident's name or contact details in the outcome record. We write only into our own fixRAgent fields and never change a status, a vendor, a bill or a note. The manager's access key is kept encrypted, first in our database (
pm_buildium_connections) and then on our own server once the connection is set up. Reading stops when the manager turns the connection off or deletes the key.
In both phases the resident information belongs to the manager, and we handle it on the manager's instructions under a signed pilot agreement, not under this policy's general terms. That agreement sets how long identified records are kept and when they are deleted, and it does not allow us to use one manager's identifiable resident or work-order data to train models for anyone else. It does allow us to create statistics that no longer identify a resident, a property or a unit. The manager is responsible for telling its residents that it uses a service like ours. Section 10 explains what a resident can do.
Photos, messages and the outcome loop.
3. Photos
Where each photo goes, and how long it stays, by door.
Show the table5 rows
| door | metadata removed | sent to | kept by us | for how long |
|---|---|---|---|---|
| triage card, email, text, Shortcut and API | on our server, before hashing or sending; refused if it cannot be cleaned | Google's model | yes, from 6 October 2026: the cleaned photo, in a private bucket under the profile's random id, shown with its Triage Profile to anyone who has the profile's link; and the hash, with the answer | until you ask us to delete the profile or the photo |
| repair-guidance tool, "Keep this photo" not ticked | re-encoded in your browser | Google's model | no | — |
| repair-guidance tool, "Keep this photo" ticked | re-encoded in your browser | Google's model | yes: a private bucket in the United States, under a filename that is the SHA-256 hash of the file, never your name or email | 30 days; a daily job then deletes the file and clears the pointer; the consent record stays |
| resident and manager intake | on our server, before storing; refused if it cannot be cleaned | Google's model, when a read is run | yes: a private bucket keyed by account and hash | until the account holder deletes it or asks us to |
| roof inspections | no | Google's model | yes: a private bucket for the contractor's report | until the contractor deletes it or asks us to |
What Google keeps. Every photo that is read goes to Google's model service. Google keeps the prompt, the photo and the model's answer for a limited period under the terms that apply to our model-service account. Google's published usage policy for the Gemini API states 55 days, kept to detect and prevent misuse (read 14 September 2026). We state that period only for as long as we have confirmed that our account is on those terms. Google can change its terms, and we cannot shorten its period. The retention schedule links the Google page we rely on.
The consent record. When you tick "Keep this photo", we store the version of the text you saw and the time, next to the photo's hash. The 30-day job deletes the file and the pointer but not that record: the fact that consent was given is kept.
4. Email, phone and text messages
Email. If you type an email address into the card and press "Email me this card", we store the address on that card's record together with the version of the consent line you saw, and we send you the card. Then, for that one repair, we may send up to three short follow-ups: the day after (did you get it handled), about a week after (a note about that kind of fault), and about two weeks after (a reminder that you can send another photo). Every one carries a one-line unsubscribe that stops the emails for that repair or for your address altogether, and honours the one-click unsubscribe your mail app may offer. We keep a record of each unsubscribe so that it is honoured, and a record of each follow-up we start for a card — which card, which follow-up, when, and whether our mail service accepted it — so that no follow-up is started twice for the same card. If you gave your email address as a resident sending a request through a manager's intake link (section 2.4), we email that address when the request changes state — reviewed, scheduled, completed or closed — and for nothing else; that mail carries the status and your own words, and no link. When a resident's request is read as an active hazard, the members of the manager's account receive an alert. Every follow-up stays about that same repair. Sign-in emails come from support@fixragent.com; card emails and resident status emails come from updates@fixragent.com; hazard alerts to managers come from alerts@fixragent.com. We do not send newsletters or marketing email to people who used the card or the tool.
Phone. If you type a phone number into "Save my number", we store it on that card's record with the version of the consent line you saw and the time, and it waits in a queue. Texting is not switched on. Nothing is sent to your number today, and the queue is used for nothing else. When texting starts, we will text you only about that one repair — whether it got handled, and a short note or two — unless you separately agree to more. Message and data rates may apply. Every text we send will carry a way to stop them, and replying STOP will end them. To have the number deleted now, email legal@fixragent.com.
Who sees them. Email addresses go to the provider that delivers the mail (Resend). Phone numbers will go to the provider that delivers the text, once one is in place, and to no one else. We do not sell or rent either.
5. The outcome loop
The follow-up asks one question: did you get it handled, and what was it. Your answer — handled or not, who fixed it, which trade, and any words or parts you add — is stored under the same diagnosis_id as the card, so that what actually happened sits next to what the engine said. Those answers are the way the engine learns whether it was right; section 6 of the Terms of Service says how we may use them.
Who handles it, and why.
6. Who processes your data
We do not sell personal data and we do not share it for advertising. These are the companies that handle it on our behalf, and why.
Show the table21 rows
| who | what they handle | why |
|---|---|---|
| Google (Gemini model service) | every photo that is read, the text sent with it, and the answer | producing the read; kept by Google for the period its terms set for our account (section 3) |
| Supabase | our database, file storage and sign-in; hosted in the United States (US East) | storing records, photos and accounts |
| Google (sign-in) | only if you choose Continue with Google, or tap the Google One Tap box on our property-manager pages: Google confirms who you are and sends us your name, email address and profile-picture address; Google also sees each visit to a page that offers the One Tap box | signing you in |
| Vercel | our web hosting and server functions, and request logs; through Vercel Web Analytics, page views from the app and most other site pages, and through Vercel Speed Insights, page-load timings from the app page | serving the site and running the code; usage and speed measurement |
| Resend | email delivery, including the Triage Profile a manager sends to a vendor they name (section 2.4), which carries that vendor's email address | sending cards, follow-ups, sign-in emails and a manager's message to their vendor |
| Stripe | payments and card details | paid plans |
| Google Analytics | page views and interactions on the app, the repair guides and a number of other site pages, under Google's cookies, with your IP address | usage measurement |
| PostHog | product analytics events from the app on fixragent.com, and from most other site pages wherever they are loaded | seeing which steps of the flow are used |
| Google Fonts, esm.sh | the request for the typeface and for the database client library, with your IP address | loading the app |
| Tailwind Labs (cdn.tailwindcss.com) | the request for the stylesheet on most site pages, with your IP address | loading the page |
| Cloudflare (cdnjs) | the request for script libraries on seven site pages — the roof report, the repair-guide index and three guides, the reliability index and a setup page — with your IP address | loading the page |
| unpkg | the request for a library on the QR admin page, with your IP address | loading the page |
| Google Maps and Google Solar | a property address you register, when a roof-size estimate is run (section 2.8) | finding the address and estimating the roof area |
| Apollo.io | the page you visit and your IP address, on the home page and our pages for property managers and businesses (section 2.6) | telling us which company a visit came from, never the person |
| Sentry | error reports from our servers, and from your browser on the resident-intake pages, which load Sentry's script from Sentry's CDN | finding and fixing faults |
| Anthropic (Claude) | the text of feedback you send us | categorising feedback and drafting a reply for us to read |
| Hetzner | our own server: encrypted backup sets, daily server snapshots, and the archive of outcome photos and results that people chose to let us keep | backups, and the record of what each repair turned out to be |
| Cloudflare (R2 storage) | an encrypted off-site copy of the nightly backup, stored in the European Union | recovering from a failure |
| Google Workspace | email sent to our addresses, such as legal@fixragent.com, including anything you attach | reading and answering you |
| YouTube | a video embedded in some repair guidance | playing the video; YouTube's own terms apply when you play it |
| Amazon, The Home Depot, Lowe's, Angi, Thumbtack | nothing from us; when you follow a link, their site sees your visit | links to parts and trades; qualifying Amazon links are affiliate links and we may earn from qualifying purchases; the others are ordinary links |
Each of these companies keeps your data under its own policy while it holds it. We may add or replace a processor; if we do, we update this table. We do not claim that every copy stays in one country: the table says where a copy lives when we know it.
7. How we use what we collect
- To run the service: read the photo, build the card, send you what you asked for, and count free use.
- To keep the service working and fair: rate limits, the spend fuse, abuse checks, error fixing.
- To find out whether the engine was right, and to make it better: photos, descriptions, answers and outcome answers are reviewed, labelled and measured, and the engine is tested and improved with them. Once identifying details have been removed, they are also used to evaluate and train the models behind the engine. A photo sent through a manager's sticker or team page is used this way unless the person who sent it unticked the box (section 2.4). Section 6 of the Terms of Service is the licence for this; its section 6.3 says what is removed and what de-identified means.
- To answer you when you write to us.
- To meet a legal duty, or to establish or defend a legal claim.
How long we keep it, and how to delete it.
8. How long we keep it
Show the table26 rows
| what | how long |
|---|---|
| a triage card's record (answer, photo hash, versions, role, arm) | until you ask us to delete it |
| a kept photo (repair-guidance tool, "Keep this photo" ticked) | 30 days, then deleted by a daily job |
| a photo on the triage card path (home page, email, text, Shortcut, API) | kept with its Triage Profile until you ask us to delete it; Google's copy for the period its terms set for our account (section 3) |
| repair-guidance results under an account | until you delete the result or the account |
| a guest result on our side | until you ask us to delete it, using the details on your device |
| an email address or phone number on a card | until you unsubscribe or ask us to delete it |
| unsubscribe records | kept, so that the unsubscribe keeps working |
| the record that a follow-up was started for a card | kept with the card, so that no follow-up is started twice |
| consent records (which text you saw, when) | kept, as the proof that consent was given |
| outcome answers | kept with the card; de-identified once the card is deleted |
| feedback | until you ask us to delete it |
| account, plan and Stripe identifier | until you delete the account; Stripe keeps its own records of payments |
a thumbs-up or thumbs-down on an answer (diagnosis_votes) | until you ask us to delete it |
| properties and assets you register | until you delete them or the account |
| payment records | kept, as the record of what was paid |
| resident, manager and roof-inspection photos, and the intake records around them (accounts, properties, units, tickets, intake codes and their scan log) | until the account holder or contractor deletes them or asks us to; the intake rate-limit record for 24 hours |
| a resident's email address on a ticket | until the account holder deletes the ticket or the resident asks us to |
| a vendor's email address and name a manager gave us, and the record of each Triage Profile sent to a vendor | until the manager's account is deleted or the manager asks us to remove them |
| our outreach and prospect records (section 2.9) | until the person asks to be removed |
| product analytics events at Google Analytics, PostHog and Vercel Web Analytics, and company-visit records at Apollo.io | until we delete them; on request we delete a person's events where the tool lets us find them |
our own event store (fixr_events: device id, events, city, region, country, browser type) | for as long as we operate the service, unless you ask us to delete your device's rows |
the QR scan log (qr_scans: time, network address, browser, referring page, city, country, device type) | for as long as the link exists, or until you ask us to delete the rows for your address |
| the contractor list and its send record | until the contractor asks to be removed |
| error reports and hosting logs | for the limited period each provider keeps them |
| email you send to our addresses, and our replies | in our Google Workspace mailbox until we delete it; we delete a message on request when we can find it |
| identified resident and work-order data in a property-manager pilot | as the signed pilot agreement says (section 2.10) |
9. How to delete it
Email legal@fixragent.com, or use the feedback form in the app, which stores what you write on our side together with the email address you give. Write from the address you used, or give us the diagnosis_id printed on the card, so that we can find the right records. We act within 30 days and tell you when it is done.
Deletion removes: your account; results stored under it; kept photos and their pointers; the email address or phone number on a card; the card's record if you ask for it; outcome answers linked to you; your thumbs-up or thumbs-down votes; the properties and assets you registered; feedback; a resident email address on a ticket; the vendor addresses and send records under a manager's account, when the manager asks (section 2.4); your entry in our outreach or prospect records; the rows in our own event store for your device (send us the fixr_did value from your browser's storage, or the dates and pages you used); and the QR scan rows for your network address, if you tell us the address.
Deletion happens in layers, and we would rather tell you that plainly than promise more than we can do:
- Our live copies of what you asked us to delete are removed within 30 days.
- Backups are not edited one record at a time. They expire on their normal cycle, and the retention schedule gives each period. Until a backup expires, it may still hold a copy; we use it only to recover from a failure.
- Records we keep on purpose stay: the consent record (which text you saw and when), the unsubscribe or suppression record, so that we keep leaving you alone, security records, and records we must keep by law.
- Companies that process data for us keep their copies on their own schedules, which section 6 names: Google's copy of a photo, hosting and error logs, and email in our mailboxes.
- De-identified data stays, together with the labels, statistics and models already derived under section 6 of the Terms of Service, because it can no longer be linked to you.
We tell you when your request is done. We do not call anything deleted until the live copies are gone.
Your rights, and the rest.
10. Your choices and rights
- You can use the triage card without giving an email or a phone number.
- You can leave "Keep this photo" unticked, and the photo itself is not stored by us; the answer is stored as section 2.2 describes.
- You can unsubscribe from card emails with the link in each one.
- If your request came to us through your property manager (sections 2.4 and 2.10), the manager controls that information. Please ask the manager first. If you write to us, we will pass your request to the manager and help it answer you.
- Where the law where you live gives you rights over your data — to see it, correct it, delete it, receive a copy, or object to a use — you can exercise them by emailing legal@fixragent.com. We will not treat you differently for doing so. If you are in California: we do not sell personal information, and we do not run advertising on the site.
11. Security
These are the controls we rely on:
- traffic to and from the site is encrypted in transit;
- photos and records live in private storage that the public cannot browse;
- access is limited, and each credential can do only what its job needs: the key that ships with the app is a restricted one, and the keys that can read our records stay on our servers;
- errors and unusual activity are logged and watched;
- we have a written plan for handling incidents;
- we test these controls ourselves on a regular schedule.
We keep the detailed map of our storage and credentials internal, because a public map helps an attacker more than it helps you. No outside body has audited our security and we claim no certification. If we have a breach that affects your information, we will tell you as the law requires, and a property manager as its signed agreement requires.
12. Children
fixRAgent is made for adults. The Terms of Service require you to be 18 or older, or to use it with a parent or guardian, so it is not meant for anyone under 18 on their own. It is not directed to children under 13, and we do not knowingly collect information from anyone under 13; if you believe a child under 13 has given us information, email legal@fixragent.com and we will delete it.
13. Changes
We may change this policy. The date at the top is the date of the current version, and the version stamp is stored with every consent you give, so we can tell which text you saw. For a change that materially affects you we will email you first, where we have an address. A change to this public policy does not override an agreement a business has signed with us. It also does not widen how we use information that business already gave us, where the agreement requires a written change.
14. Contact
15. Where each record lives
For anyone who wants to check this policy against the software: this is every table and bucket the code in our repository writes, what it holds, and the section that describes it. A check in that repository scans our server functions, every page and script we serve, and our maintenance scripts for a table or bucket name written out in the code or held in a named constant, and fails if it finds one this list does not name. It does not see a name built while the code runs, and it does not see tables that software outside this repository writes; the ones we know of are named in section 2.9.
Show the table24 rows
| our table | what it holds | section |
|---|---|---|
diy_guest_scans | a triage card's record; a guest's repair-guidance answer; the email address or phone number you give on a card, with its consent version | 2.1, 2.2, 4 |
diagnoses | repair-guidance results under an account, with a kept photo's hash and its consent record | 2.2, 3 |
diagnosis_votes | a thumbs-up or thumbs-down on an answer, with your email address when signed in | 2.2 |
appliances | the appliances you save under My Home | 2.2 |
fixr_users | your account: email address, plan, Stripe identifier, free-use flag, home profile | 2.3 |
payment_logs | each payment: email address, plan, amount, Stripe invoice id | 2.3 |
properties, assets | the properties and assets you register | 2.8 |
outcomes | your outcome answers | 5 |
triage_email_optout | unsubscribe records | 4 |
triage_mail_log | the record that a follow-up email was started for a card: the card's id, which follow-up, when, a hash of the address (not the address itself), the role you chose, the words the follow-up reads from the card, and whether our mail service accepted it | 4 |
triage_sms_queue | a phone number waiting for texting to be switched on, with the card's id, the consent version and the time | 4 |
feedback | feedback text and the email address you give with it | 2.5 |
fixr_events | our own event store | 2.6 |
telemetry_events | a page-view record from an older endpoint: path, referring page, phone or not | 2.6 |
qr_links, qr_scans | our printed QR codes and their scan log | 2.7 |
pm_accounts, pm_account_members, pm_properties, pm_units, pm_assets, pm_tickets, pm_images, pm_qr_links, pm_qr_scans, pm_rate_events | resident and manager intake: the manager's account and members, properties, units and assets, tickets, photo records, intake codes, their scan log and the rate-limit record | 2.4 |
pm_vendors, pm_vendor_sends | the vendor a manager named for a trade (email address, name, trade), held on the manager's behalf, and the record of each Triage Profile sent to a vendor (ticket, address, name, trade, which member sent it, the subject line, the time, our mail service's answer and message id) | 2.4 |
diagnostic_intake_queue | the enterprise pilot's intake requests, photo included | 2.4 |
b2b_inbound_leads | a partner platform's inbound request (the photo's web address and the platform's name), and an API-key request from our documentation or enterprise page (the requester's email, their company and name, what they are building, their consent version, and a pointer to the key — never the key) | 2.4 |
roof_inspections_queue | roof-inspection jobs and their reports | 2.4 |
pm_buildium_connections | a property manager's live connection: its status, the encrypted access key, and the manager's acknowledgement | 2.10 |
contractor_outreach_queue, marketing_outreach | the contractor list and the record of each email sent to it | 2.9 |
marketing_content | marketing text drafted for our own business listing; nothing about any person | 2.9 |
storage buckets diagnosis-photos, pm-media, roof_inspections | kept photos, intake photos, roof photos | 3 |
