Privacy Policy

The Korean version of this document is the authoritative text. This English page is a reference translation, and where the two differ the Korean version governs.

Proofer Inc. (프루퍼 주식회사, "the Company") runs dira, the engine and the app together, and handles personal information as set out below.

1. Purposes of processing

The Company looks at whether anyone actually opens the app (dira teams) and where they stop partway through onboarding. It counts how many installs are running and a handful of screen actions. Not even the Company knows who is using it.

When that same app runs into an error, the Company receives the error to find the cause and fix it.

The website carries one support chat widget. Questions that arrive through it get an answer, and when the same person asks again, the earlier conversation is there to read.

2. What is processed

The app has no login and no account. It does not identify a person - it counts one install, anonymously.

ItemWhat it isWhere it lives
Install identifier (install_id)A random UUID naming this one install on this Mac. Sent as the GA4 client_id, and the same value also goes as the GA4 user property install_id~/.config/dira/analytics.json
Session identifier (session_id)One stretch of using the app after you open it. Sent as the GA4 session_idThe server process's memory (nothing is written to a file)

Neither value is tied to a name, an email address, or an account. The events that ride on these identifiers to GA4 are the eight below and nothing else.

EventWhenParameters
app_openA user session starts (before the first event, and again after 30 minutes of no activity)app_version, shell (desktop|browser)
screen_viewA screen opensscreen (root|board|ticket|workers|personas|protocols|home)
project_addA project was addedmethod (create|register)
worker_createA worker was created successfullyengine (claude|codex|other), cron_ok (bool)
ticket_createA ticket was issued, or a request submitted, successfullykind (work|request|feedback)
answer_submitA person wrote the answer in an answer round tripNone
feedback_submitOpen a GitHub issue was pressed in the Send feedback dialogNone
analytics_offAnalytics is turned off (one last event, just before it goes quiet)None

The values are counts, booleans, and enums fixed in advance. There is no free text anywhere among them.

While usage analytics is on, the app sends one error report to the Company's server (Vercel) each time an error happens. Turning analytics off stops error reports as well.

ItemWhat it is
Identifiers and app detailsThe install and session identifiers above, the app version (app_version), and how the app runs (shell)
Error classificationWhere the error happened (source), what kind it was (kind), the screen's route pattern (route, shaped like /p/[project]/tickets/[hash] rather than the actual URL), and when (at)
Error contentThe error message (message) and stack trace (stack), verbatim
Raw logThe log the app left just before the error (raw): the last 200 lines of the app server's stderr and stdout, the app server log held by the desktop app, or the last 50 console errors on the screen, whichever matches where the error happened. Up to 64 KB

Before sending, the absolute path of the home directory is replaced with ~ in every string, so that the Mac user name built into those paths is left out. Everything else is sent as it was, so the stack and the raw log can contain file paths under the home directory, project names, ticket hashes, and whatever lines were in the log when the error hit. No key in a report holds an IP address, but the Vercel server receiving the request can see the connecting IP address, as with any web request.

The website this page belongs to, dira.proofer.tech, collects visit totals through Vercel Analytics without cookies. Those totals are page views counted by path, and they do not identify an individual visitor.

Opening this page makes the support widget send a request to Channel Corporation's servers. A record of the visit remains even if you never open the chat window: your IP address, the region that address suggests, the date and time, and your browser and device.

Open the chat window and what you write there is added to that: the question itself, and any name or contact detail you leave so a reply can reach you. This part is free text, so the Company does not decide in advance what goes into it. Leave out whatever you would rather not write, and ask anyway.

3. What is never processed

None of the following goes into any parameter of any event.

File paths, project names, queue roots, ticket hashes, ticket titles, ticket bodies, persona names, agent output, account information, source code.

This is not a promise in prose but the means of carrying it out. The Events type that defines the events and their parameters closes the table, so a name or a parameter that is not in the table fails to compile. The code has no way to slip a new value out.

Everything up to here is about the events the app sends. Error reports carry raw logs as they are, so this list does not apply to them. What can be in them is in section 2. The website's support widget leaves the visitor's browser directly without passing through the app, so it stays outside this table. What rides on the widget is in section 2.

4. Cookies

The app plants no cookies. It does not use gtag.js; the server sends events straight to Google Analytics 4 over the Measurement Protocol. Vercel Analytics, which the website uses, is cookieless as well.

There is one cookie, and it is on the website: _dd_s_v2, planted by the support widget. Channel Talk watches the widget's errors and performance with that value. It tells one browser session from another and is not tied to a name or an account. The cookie appears even if you never open the chat window. To shut out the widget entirely, block requests to cdn.channel.io and api.channel.io in your browser.

5. Retention and deletion

How long GA4 keeps something depends on what it is (checked in the GA4 console on 2026-08-02).

WhatRetention
Event data - the eight events and their parameters2 months
User data - data tied to the install identifier14 months

The Company stores error reports privately on Vercel, keeps each for 90 days from the day it arrives, and then destroys it.

The file left behind locally, ~/.config/dira/analytics.json, is on your own Mac and not on the Company's side. Delete the file and it is gone that moment; the next run issues a new install identifier. Error reports already sent are not removed by deleting the file; they stay until their 90 days are up and are then destroyed.

6. Processors and transfers abroad

ProcessorWorkCountry
Google LLCCollecting and analyzing GA4 eventsUnited States
Vercel Inc.Website hosting and visit totals; receiving and storing error reportsUnited States
Channel CorporationAnswering questions through the support widget-

Channel Corporation is a Korean company, and the cloud Channel Talk runs on is the AWS Seoul region. So nothing in this arrangement leaves the country. That company does hand part of its own work abroad, though. Sections 6 and 7 of the Channel Talk privacy policy carry that list (checked 2026-08-04).

Beyond these three, the Company gives personal information to no third party.

7. Your rights

  • Turning it off - the gear at the top right of the app › Settings dialog, third section. It starts on, and one button turns it off. From that moment nothing goes out, error reports included.
  • Deleting - delete ~/.config/dira/analytics.json and the install identifier goes with it. You are counted again as a new install, unconnected to the earlier statistics. To have error reports already sent removed before their retention period ends, send the install_id from that file to the address below before you delete it.
  • Asking - info@proofer.tech

8. Privacy officer

ItemDetail
NameHansol Lim (임한솔), representative
Contactinfo@proofer.tech

9. Company information

ItemDetail
CompanyProofer Inc. (프루퍼 주식회사)
RepresentativeHansol Lim (임한솔)
Business registration number337-81-03650
Address421A, 2F, 47 Gangnam-daero 112-gil, Gangnam-gu, Seoul, Korea
Contactinfo@proofer.tech

10. Effective date

This policy takes effect on 2026-10-21. This revision adds error reports from the app (dira teams). Changed are the install identifier entry and the error report items in section 2, the scope note in section 3, the 90-day retention in section 5, Vercel's processing work in section 6, and turning off and deleting in section 7. The version before it took effect on 2026-08-04.