Privacy: what Junior holds, and how to erase it
This page was written from Junior's own source code, not from a template, and it has NOT been reviewed by a lawyer for Junior. It describes what the software does. It is not a certification of compliance with Quebec's Law 25, the GDPR, or any other regime, and nothing here is legal advice.
The short version
- Documents you submit for analysis are sent to Anthropic (commercial API) to be processed, using the model claude-sonnet-5. They are not used to train models.
- Junior does not write your document to disk when you simply read a review. Filing a review to a matter does store parts of it β the passages the analysis quoted, verbatim, and the clause text behind each deadline. The badge on every review says which of the two just happened.
- You can delete a matter, and everything filed against it, from inside Junior. That was not true before 7 August 2026.
- Plenty is kept even when you do. Some of it is a financial record or a professional declaration; some of it is a platform log with no delete control in Junior at all. Every one is named below with the reason.
- Junior does not sell anything about you, and there is no advertising network on any page of it. Two stores are copied to other Manera services, and that is described below rather than left out.
Every store on this deployment
This list is not typed by hand. Junior parses its own source for every SQLite database any part of it can open, and every one found has to be classified below before this page will render at all β there is no way for a store to be simply absent. There are 44 of them: 6 are deleted when you delete a matter, 32 are kept and each one says why, and 6 hold nothing about a person and say what they hold instead. Several of the kept ones have no delete control inside Junior at all, and those rows say so in the same words.
βDocument contentβ is the column that matters most: nearly all of these hold no part of your client's papers, and the ones that can are named. βClassβ is the promise: what happens to this store when you use the delete control.
| Store | Class | What it holds about you | Document content | What happens to it |
|---|---|---|---|---|
| Matters, filed reviews and the deadline register matters.db |
ERASABLE | The matter's title, client name, jurisdiction and parties; for each analysis filed to it, the findings including every passage the analysis quoted out of your document, verbatim; for each dated obligation, up to 500 characters copied from the clause; and the activity log, including recorded gaps. | verbatim passages from your document | Delete the matter β from its page, or from this one. |
| Reviewer invitations and the access audit sharing.db |
ERASABLE | Who you invited to read a matter, when the link was opened and how often, when it was withdrawn and why, and any comment a reviewer left. The invitation link itself is never stored β only a hash of it. | no document content | As the person who INVITED: withdraw an invitation at any time from the matter page, and deleting the matter deletes the invitations AND their audit trail with it. As the person who was invited: these rows belong to the lawyer whose matter it is, and you cannot delete them here. |
| Watched citations and their alerts citation_watch.db |
ERASABLE | Authorities you asked Junior to keep an eye on, the matter they came from, a short context line, and any alert raised against them. | no document content | Stop watching an authority from the Watch page. Deleting a matter deletes everything watched for it. |
| Time entries timekeeping.db |
ERASABLE | One row per piece of work Junior saw you do: the matter, a description, the date, and the minutes YOU entered. The description of a research entry contains the first 120 characters of the question you asked. | the opening of a question you typed | Deleting a matter deletes the time entries filed against it, including ones you have discarded from your timesheet. Export first if you need them. An entry attached to NO matter has no delete control today β those are the ones logged before you filed the work anywhere. |
| Precedent bank precedents.db |
ERASABLE | Wording you chose to save, as you saved it, plus a count of the client-identifying items the scan flagged in it. | text you saved deliberately | Delete any precedent from the Precedents page. |
| Personal playbooks playbooks.db |
ERASABLE | Your own process: a title, a note, and an ordered list of steps. A declined suggestion is recorded as a sequence of step names, with no matter and no matter text. | no document content | Delete any playbook, or any step, from its page. |
| Follow-up threads on a paid case case_threads.db |
RETAINED | Your email, what the case was for, a label for the document, how many follow-ups you have used, and a SHA-256 fingerprint of the document text. The text itself is never written here. | a hash only β never the text | Kept. A thread is the receipt for follow-up questions you have already paid for; deleting it would revoke what you bought. It holds a hash, not your document. |
| Payments and checkouts payments.db |
RETAINED | What you were asked to pay and what was confirmed: amount, currency, product, our reference and the provider's, and whether it has been spent. No card details reach Junior. | no document content | Kept. This is the financial record of a sale β the evidence behind an invoice, a refund and a tax return β and it is also the only proof of what you are entitled to. |
| Usage and the free first case plans.db |
RETAINED | One row per case you ran, whether it was billed, and the amount; plus a single row recording that you have claimed the free first case. | no document content | Kept. The charges are a financial record. The free-case claim is deliberately not erasable: deleting it would hand back a free case every time, which turns the erasure control into a way of taking the product for nothing. |
| Practitioner attestation practitioner_attestation.db |
RETAINED | Each time you declared that you are a qualified practitioner: the role, bar or order, licence number and jurisdiction you gave, the exact wording you agreed to, and the IP address and browser that sent it. | no document content | Kept, and append-only. It is a professional declaration about who you said you were when the product was unlocked. There is NO control inside Junior to withdraw it today: the function exists in the store and no page calls it, so a withdrawal has to be asked for directly. Withdrawing would in any case append a row rather than delete one β an attestation is evidence of what you declared at the time. |
| Daily brief delivery brief_sends.db |
RETAINED | One row per day a brief was emailed to you: the date and how many items it carried. Not the contents. | no document content | Kept. It is the record that stops the same brief being sent to you twice in one day. |
| Email sign-in codes local_auth.db |
RETAINED | A HASH of each sign-in code sent to your address, when it expires and whether it was used, plus one timestamp per failed attempt. The code itself is never stored. | no document content | Kept. It is the rate limit that stops someone else guessing their way into your mailbox-based sign-in. |
| Per-call record of every analysis you ran usage_governor.db |
RETAINED | One row EVERY TIME Junior sends anything to the model on your behalf: your email, which product, which model, how many tokens went in and out, what it cost, the HTTP status, a fixed label naming which part of the code made the call, and when. Plus one row holding your plan tier and this month's running spend. | no document content | Kept, and this is the one that most deserves an explanation. It is not an analytics table: `usage_log` IS the spend ledger. usage_governor._current_month_spend() sums this month's rows to decide whether your next call is inside your budget, so deleting them would reset your monthly spend to zero and hand back paid budget on demand β the same objection as the free-case claim above. It is also the cost evidence behind what you were charged. What it records is that a call happened, what it cost, and a fixed label for the code that made it β never what you asked or what came back. There is no column for either, and no caller passes any part of your question into the one free-text field there is. Nothing sweeps it on a schedule. |
| Prepaid credit, top-ups and auto-recharge usage_meter.db |
RETAINED | Credit and token balances held against your address, when they expire, and your auto-recharge settings including the payment-method reference held at the provider. | no document content | Kept. It is a balance you paid for; deleting it would destroy the record of credit you are owed. |
| Bug reports and feedback you sent feedback.db |
RETAINED | Anything you typed into the feedback widget, the page you were on, your email, your browser string, any JavaScript errors the page had collected, and the path of any screenshot or attachment you sent. | possibly, inside free text nobody scoped | Kept, and there is no delete control for it inside Junior. A report is the record of a defect and of who can be told it is fixed. It also leaves this container. This database is COPIED OUT of the container. feedback_aggregate.py runs `docker cp` against it to build Manera's internal review queue, so a report you sent also exists on Manera's own machine, and deleting the copy here would not reach that one. |
| Platform incident log, one file per service _anomalies.db |
RETAINED | On this deployment the file is lexiworld_anomalies.db β the name is built from the service id at runtime, which is why no line of source spells it. One row per fault the platform raised β a failed payment lookup, an unreachable billing gate, a rejected agreement. The `detail` field is free text written by whichever check fired, and several of those checks put the URL they were calling into it, which can contain your email address. | possibly, inside free text nobody scoped | Kept. It is the operational record of things going wrong, and there is no delete control for it in Junior. It also leaves this container. Incidents do not stay here. mesh_sentinel.broadcast_anomaly posts the same `detail` text over HTTP to the other Manera services in the mesh β Dr. Manera and Bidit among them β so an incident that named your address has been sent to them as well. |
| Backup copy of the incident log backup_all_mesh_anomalies.db |
RETAINED | Whatever the incident log above held when the copy was taken. | possibly, inside free text nobody scoped | Kept. A copy is exactly the thing a delete control does not reach, which is why it is named here instead. |
| Behavioural sensor on the LexiWorld workspace user_sensations.db |
RETAINED | Page views, clicks, rage clicks, scroll depth and how long you stayed, recorded against a session identifier and a hash of the signed-in address, with the path of the page. It is first-party β nothing is sent to an analytics company β and it is injected into the /workspace pages, not Junior's. | no document content | Kept. There is no delete control for it inside Junior. |
| Terms you accepted or refused agreements.db |
RETAINED | Which document you accepted, its exact version and hash, when, from which IP address and browser, your locale and the country the request came from β and the same again for a refusal, with the reason. | no document content | Kept, for the same reason as the practitioner attestation: it is evidence of what you agreed to and when. Deleting it would delete the proof that consent was ever asked for. |
| Waiting list for products not yet open waitlist.db |
RETAINED | The address you left, which product, when, your IP address, your browser string, the page that referred you and any note. | no document content | Kept. There is no unsubscribe control wired to this store inside Junior; ask and it will be removed by hand. |
| Cross-product assistant memory personal_assistants.db |
RETAINED | An assistant per product per address, the messages exchanged with it, facts it has recorded ABOUT YOU with a confidence score and which product supplied them, and the briefings it generated. | possibly, inside free text nobody scoped | Kept. There is no delete control for it inside Junior. This one is worth a second look if you use more than one Manera product: it is the store designed to carry what one of them learned into another. |
| Log of mail sent to you mail_log.db |
RETAINED | For each message Junior sent: from, to, the subject line, which service sent it, whether it was delivered and the error if it was not. Not the body. | no document content | Kept. It is the record of whether a sign-in code or a brief actually reached you, which is the first thing anyone needs when it did not. |
| LexiWorld workspace store (reference law, and more) lexiworld.db |
RETAINED | Mostly reference material β jurisdictions, statutes, cases, employment rules. It ALSO carries `contracts`, whose `content_text` column holds a document's FULL TEXT when the workspace half of the site saves one, an `audit_trail` keyed to the acting address, and batch and subscription rows keyed to a customer. Junior's own per-case flow does not write here; the /workspace pages on the same domain do. | the full text of a document, if you used the workspace upload | Kept. There is no delete control for it inside Junior. |
| API keys for the machine-callable products api_keys.db |
RETAINED | An address, a LABEL you chose, and the SHA-256 HASH of an API key β never the key itself, which exists in plaintext only once, at the moment it is issued. Also when the key was created, when it was last used, and whether it was revoked. | no document content | Kept, and the honest reason is that a key is a credential, not a record about you: revoking it is the control that matters, and revocation is immediate. Only the hash is stored, so what remains after revocation cannot be used to call anything. |
| Onboarding progress onboarding.db |
RETAINED | Which step of a product's setup you reached, whether you finished or skipped it, and the answers you gave. | no document content | Kept. There is no delete control for it inside Junior. |
| Support tickets support_tickets.db |
RETAINED | A ticket's subject and body, your address, who it was assigned to, every message on it and its audit trail. | possibly, inside free text nobody scoped | Kept. A support history is the record of what was asked for and what was promised. |
| Satisfaction survey answers nps_responses.db |
RETAINED | Your score, the reason you typed, a follow-up address if you left one, what triggered the survey, and your IP. | no document content | Kept. There is no delete control for it inside Junior. |
| Guided-signup sessions concierge.db |
RETAINED | A signup session keyed to your address: what was found out about your firm, the answers you gave, the workspace it created, and any colleagues you invited. | no document content | Kept. There is no delete control for it inside Junior. |
| Queued automated email email_queue.db |
RETAINED | Messages waiting to be sent to you: your address, which template, the values that will be filled into it, and how many attempts have been made. | no document content | Kept. There is no delete control for it inside Junior. |
| Queued email for another Manera product manera_trading.db |
RETAINED | The same queue shape as above, belonging to a different Manera product. Junior names the file because email_automation reads trial state from it; Junior does not write your rows into it. | no document content | Kept by whichever Manera product owns it, under the retention rules of that product. Junior has no control over this file and does not claim one. |
| Daily model-cost ledger cost_ledger.db |
RETAINED | Per-call cost with a `customer` field, used to stop the fleet spending past a daily budget. | no document content | Kept, for the same reason as the spend ledger above: it is the brake, and a brake you can erase is not one. |
| Manera billing database, read but not written by Junior billing.db |
RETAINED | Your subscription and entitlement records, held by Manera's billing service. Junior READS it to work out which plan you are on and writes nothing to it. | no document content | Kept by the billing service. A subscription record is a financial record. |
| Inter-service event bus event_bus.db |
RETAINED | Events one Manera service publishes for another, each with a free-text JSON payload. What is in a payload depends on the event, and some of them carry an address. | possibly, inside free text nobody scoped | Kept. There is no delete control for it inside Junior. |
| Signals sent to and from other Manera services mesh_signals.db |
RETAINED | What was sent where, and the free-text payload that went with it. Same caveat as the event bus. | possibly, inside free text nobody scoped | Kept. There is no delete control for it inside Junior. |
| Which alert was already sent to which address intel_alerts.db |
RETAINED | A recipient address against the item it was alerted about, so the same alert is not sent twice. | no document content | Kept. Deleting it would start the duplicate alerts again. |
| Self-healing event log healing_log.db |
RETAINED | Faults the platform noticed and what it did about them, with a free-text `details` field written by whichever check fired. | possibly, inside free text nobody scoped | Kept. There is no delete control for it inside Junior. |
| Self-healing pattern memory healing_memory.db |
RETAINED | Error signatures the platform has seen before and the action that fixed them. | possibly, inside free text nobody scoped | Kept. There is no delete control for it inside Junior. |
| Timestamped copies of a store *.db.bak-* |
RETAINED | Whatever the store held at the moment the copy was taken. This deployment has one: a copy of the LexiWorld workspace store. | possibly, inside free text nobody scoped | Kept until somebody removes it by hand. This is the honest limit of every erasure claim on this page: deleting a row deletes the row, not a copy of the file it was in. |
| Revenue/cost circuit-breaker state circuit_breaker_state.db |
NOT PERSONAL | Whether the fleet's spending brake is tripped, when it tripped and the ratios that tripped it. Why this is not personal data: Two tables, and every column is a mode, a timestamp or a money total for the whole business. There is no per-person column and no free-text field a request could reach. |
no document content | |
| Disk-space alerter state disk_alerter_state.db |
NOT PERSONAL | One row per mount point: how full it was, when it last alerted. Why this is not personal data: Three columns β a mount name, a level and a timestamp. Nothing about a person can be written into any of them. |
no document content | |
| Process-health alerter state pm2_health_state.db |
NOT PERSONAL | Restart counts per process, and alert fingerprints. Why this is not personal data: A process name, restart counters and timestamps. The fingerprint is a hash of an alert about a process. |
no document content | |
| Alert de-duplication mesh_alerter_dedupe.db |
NOT PERSONAL | A fingerprint per alert already emailed, and when. Why this is not personal data: One table: a hash and a timestamp. The alert TEXT is not stored here β only a fingerprint of it β so there is nothing to read back. |
no document content | |
| Signal state (what the fleet is currently told to do) mesh_signal_state.db |
NOT PERSONAL | The active operating instruction β pause, throttle β with its reason and expiry. Why this is not personal data: A kind, an action, a reason string written by the fleet about itself, and an expiry. Nothing in the write path can put a user's data into it. |
no document content | |
| Ingested public news news.db |
NOT PERSONAL | Public articles: source, title, by-line, summary, full text. Why this is not personal data: Published material, fetched from public feeds. The `author` column is a journalist's by-line on an article that was already public β it is not anything about YOU, and no user input reaches this store. |
no document content |
What you can erase
Signed in, at your data, you can see what is held about you and delete any matter. Deleting a matter removes, in the same action:
- Matters, filed reviews and the deadline register β Delete the matter β from its page, or from this one.
- Reviewer invitations and the access audit β As the person who INVITED: withdraw an invitation at any time from the matter page, and deleting the matter deletes the invitations AND their audit trail with it. As the person who was invited: these rows belong to the lawyer whose matter it is, and you cannot delete them here.
- Watched citations and their alerts β Stop watching an authority from the Watch page. Deleting a matter deletes everything watched for it.
- Time entries β Deleting a matter deletes the time entries filed against it, including ones you have discarded from your timesheet. Export first if you need them. An entry attached to NO matter has no delete control today β those are the ones logged before you filed the work anywhere.
- Precedent bank β Delete any precedent from the Precedents page.
- Personal playbooks β Delete any playbook, or any step, from its page.
The rows are deleted, not flagged. There is no hidden βdeletedβ column anywhere in these stores. Each delete counts the rows again after removing them and fails loudly rather than reporting a deletion that did not happen β and if any store cannot be reached at all, the erasure refuses and deletes nothing, rather than deleting the matter and stranding the rows that pointed at it.
What is kept even when you delete a matter
Named, with the reason. This list is generated from the same classification as the table above, so a store cannot be kept without appearing here.
- Follow-up threads on a paid case case_threads.db β
Your email, what the case was for, a label for the document, how many follow-ups you have used, and a SHA-256 fingerprint of the document text. The text itself is never written here.
Kept. A thread is the receipt for follow-up questions you have already paid for; deleting it would revoke what you bought. It holds a hash, not your document. - Payments and checkouts payments.db β
What you were asked to pay and what was confirmed: amount, currency, product, our reference and the provider's, and whether it has been spent. No card details reach Junior.
Kept. This is the financial record of a sale β the evidence behind an invoice, a refund and a tax return β and it is also the only proof of what you are entitled to. - Usage and the free first case plans.db β
One row per case you ran, whether it was billed, and the amount; plus a single row recording that you have claimed the free first case.
Kept. The charges are a financial record. The free-case claim is deliberately not erasable: deleting it would hand back a free case every time, which turns the erasure control into a way of taking the product for nothing. - Practitioner attestation practitioner_attestation.db β
Each time you declared that you are a qualified practitioner: the role, bar or order, licence number and jurisdiction you gave, the exact wording you agreed to, and the IP address and browser that sent it.
Kept, and append-only. It is a professional declaration about who you said you were when the product was unlocked. There is NO control inside Junior to withdraw it today: the function exists in the store and no page calls it, so a withdrawal has to be asked for directly. Withdrawing would in any case append a row rather than delete one β an attestation is evidence of what you declared at the time. - Daily brief delivery brief_sends.db β
One row per day a brief was emailed to you: the date and how many items it carried. Not the contents.
Kept. It is the record that stops the same brief being sent to you twice in one day. - Email sign-in codes local_auth.db β
A HASH of each sign-in code sent to your address, when it expires and whether it was used, plus one timestamp per failed attempt. The code itself is never stored.
Kept. It is the rate limit that stops someone else guessing their way into your mailbox-based sign-in. - Per-call record of every analysis you ran usage_governor.db β
One row EVERY TIME Junior sends anything to the model on your behalf: your email, which product, which model, how many tokens went in and out, what it cost, the HTTP status, a fixed label naming which part of the code made the call, and when. Plus one row holding your plan tier and this month's running spend.
Kept, and this is the one that most deserves an explanation. It is not an analytics table: `usage_log` IS the spend ledger. usage_governor._current_month_spend() sums this month's rows to decide whether your next call is inside your budget, so deleting them would reset your monthly spend to zero and hand back paid budget on demand β the same objection as the free-case claim above. It is also the cost evidence behind what you were charged. What it records is that a call happened, what it cost, and a fixed label for the code that made it β never what you asked or what came back. There is no column for either, and no caller passes any part of your question into the one free-text field there is. Nothing sweeps it on a schedule. - Prepaid credit, top-ups and auto-recharge usage_meter.db β
Credit and token balances held against your address, when they expire, and your auto-recharge settings including the payment-method reference held at the provider.
Kept. It is a balance you paid for; deleting it would destroy the record of credit you are owed.
The four counts beside this row are not the whole store: it also keeps a history of every automatic recharge that fired, which is counted at the payment provider rather than here. - Bug reports and feedback you sent feedback.db β
Anything you typed into the feedback widget, the page you were on, your email, your browser string, any JavaScript errors the page had collected, and the path of any screenshot or attachment you sent.
Kept, and there is no delete control for it inside Junior. A report is the record of a defect and of who can be told it is fixed. - Platform incident log, one file per service _anomalies.db β
On this deployment the file is lexiworld_anomalies.db β the name is built from the service id at runtime, which is why no line of source spells it. One row per fault the platform raised β a failed payment lookup, an unreachable billing gate, a rejected agreement. The `detail` field is free text written by whichever check fired, and several of those checks put the URL they were calling into it, which can contain your email address.
Kept. It is the operational record of things going wrong, and there is no delete control for it in Junior.
Nothing in this store is keyed to a person. Your address can appear INSIDE an incident's free text, and there is no query that can find it reliably, so this page will not pretend to have counted. - Backup copy of the incident log backup_all_mesh_anomalies.db β
Whatever the incident log above held when the copy was taken.
Kept. A copy is exactly the thing a delete control does not reach, which is why it is named here instead.
A backup file. mesh_alerter names it only to SKIP it, and nothing in Junior reads or writes it. - Behavioural sensor on the LexiWorld workspace user_sensations.db β
Page views, clicks, rage clicks, scroll depth and how long you stayed, recorded against a session identifier and a hash of the signed-in address, with the path of the page. It is first-party β nothing is sent to an analytics company β and it is injected into the /workspace pages, not Junior's.
Kept. There is no delete control for it inside Junior.
Rows are keyed by a HASH of the address, not the address, and Junior cannot reverse it to count yours. That is better for you than a lookup table and it is the reason this cell is not a number. - Terms you accepted or refused agreements.db β
Which document you accepted, its exact version and hash, when, from which IP address and browser, your locale and the country the request came from β and the same again for a refusal, with the reason.
Kept, for the same reason as the practitioner attestation: it is evidence of what you agreed to and when. Deleting it would delete the proof that consent was ever asked for. - Waiting list for products not yet open waitlist.db β
The address you left, which product, when, your IP address, your browser string, the page that referred you and any note.
Kept. There is no unsubscribe control wired to this store inside Junior; ask and it will be removed by hand. - Cross-product assistant memory personal_assistants.db β
An assistant per product per address, the messages exchanged with it, facts it has recorded ABOUT YOU with a confidence score and which product supplied them, and the briefings it generated.
Kept. There is no delete control for it inside Junior. This one is worth a second look if you use more than one Manera product: it is the store designed to carry what one of them learned into another. - Log of mail sent to you mail_log.db β
For each message Junior sent: from, to, the subject line, which service sent it, whether it was delivered and the error if it was not. Not the body.
Kept. It is the record of whether a sign-in code or a brief actually reached you, which is the first thing anyone needs when it did not. - LexiWorld workspace store (reference law, and more) lexiworld.db β
Mostly reference material β jurisdictions, statutes, cases, employment rules. It ALSO carries `contracts`, whose `content_text` column holds a document's FULL TEXT when the workspace half of the site saves one, an `audit_trail` keyed to the acting address, and batch and subscription rows keyed to a customer. Junior's own per-case flow does not write here; the /workspace pages on the same domain do.
Kept. There is no delete control for it inside Junior.
`contracts` and `legal_queries` now carry an owner_email, so rows written from 2026-08-10 onward are attributable to the account that made them. Rows written BEFORE that have no owner recorded and cannot be attributed after the fact β they are visible to nobody but the operator, and Junior cannot find them to delete them for you either. - API keys for the machine-callable products api_keys.db β
An address, a LABEL you chose, and the SHA-256 HASH of an API key β never the key itself, which exists in plaintext only once, at the moment it is issued. Also when the key was created, when it was last used, and whether it was revoked.
Kept, and the honest reason is that a key is a credential, not a record about you: revoking it is the control that matters, and revocation is immediate. Only the hash is stored, so what remains after revocation cannot be used to call anything.
Junior itself never writes here. If you have never been issued an API key for the NEIP or ProductDNA APIs, there is nothing in this file about you. - Onboarding progress onboarding.db β
Which step of a product's setup you reached, whether you finished or skipped it, and the answers you gave.
Kept. There is no delete control for it inside Junior. - Support tickets support_tickets.db β
A ticket's subject and body, your address, who it was assigned to, every message on it and its audit trail.
Kept. A support history is the record of what was asked for and what was promised.
The count beside this row is tickets only. Their messages and audit rows hang off a ticket rather than off an address, and the mailbox-polling cursor is about the mailbox, not about you. - Satisfaction survey answers nps_responses.db β
Your score, the reason you typed, a follow-up address if you left one, what triggered the survey, and your IP.
Kept. There is no delete control for it inside Junior. - Guided-signup sessions concierge.db β
A signup session keyed to your address: what was found out about your firm, the answers you gave, the workspace it created, and any colleagues you invited.
Kept. There is no delete control for it inside Junior. - Queued automated email email_queue.db β
Messages waiting to be sent to you: your address, which template, the values that will be filled into it, and how many attempts have been made.
Kept. There is no delete control for it inside Junior. - Queued email for another Manera product manera_trading.db β
The same queue shape as above, belonging to a different Manera product. Junior names the file because email_automation reads trial state from it; Junior does not write your rows into it.
Kept by whichever Manera product owns it, under the retention rules of that product. Junior has no control over this file and does not claim one.
It is not Junior's store and Junior does not open it on this deployment; a count from here would be a guess. - Daily model-cost ledger cost_ledger.db β
Per-call cost with a `customer` field, used to stop the fleet spending past a daily budget.
Kept, for the same reason as the spend ledger above: it is the brake, and a brake you can erase is not one. - Manera billing database, read but not written by Junior billing.db β
Your subscription and entitlement records, held by Manera's billing service. Junior READS it to work out which plan you are on and writes nothing to it.
Kept by the billing service. A subscription record is a financial record.
It belongs to the billing service, not to Junior, and is not part of this deployment's data directory. - Inter-service event bus event_bus.db β
Events one Manera service publishes for another, each with a free-text JSON payload. What is in a payload depends on the event, and some of them carry an address.
Kept. There is no delete control for it inside Junior.
Nothing is keyed to a person; an address can be inside a payload and no query can find it reliably. - Signals sent to and from other Manera services mesh_signals.db β
What was sent where, and the free-text payload that went with it. Same caveat as the event bus.
Kept. There is no delete control for it inside Junior.
Nothing is keyed to a person, and a payload is free text. - Which alert was already sent to which address intel_alerts.db β
A recipient address against the item it was alerted about, so the same alert is not sent twice.
Kept. Deleting it would start the duplicate alerts again. - Self-healing event log healing_log.db β
Faults the platform noticed and what it did about them, with a free-text `details` field written by whichever check fired.
Kept. There is no delete control for it inside Junior.
Nothing is keyed to a person. As with the incident log, an address can appear inside an error string, and this page will not claim to have counted it. - Self-healing pattern memory healing_memory.db β
Error signatures the platform has seen before and the action that fixed them.
Kept. There is no delete control for it inside Junior.
A signature is a fingerprint of an error message, not of a person, and nothing here is keyed to one. - Timestamped copies of a store *.db.bak-* β
Whatever the store held at the moment the copy was taken. This deployment has one: a copy of the LexiWorld workspace store.
Kept until somebody removes it by hand. This is the honest limit of every erasure claim on this page: deleting a row deletes the row, not a copy of the file it was in.
A copy is not connected to anything. No delete control in Junior reaches one, which is exactly why it is named here.
Stores that hold nothing about a person
Listed anyway, with the justification. A store left off a privacy page because somebody assumed it was harmless is indistinguishable from one left off because nobody looked.
- Revenue/cost circuit-breaker state circuit_breaker_state.db β
Whether the fleet's spending brake is tripped, when it tripped and the ratios that tripped it.
Two tables, and every column is a mode, a timestamp or a money total for the whole business. There is no per-person column and no free-text field a request could reach. - Disk-space alerter state disk_alerter_state.db β
One row per mount point: how full it was, when it last alerted.
Three columns β a mount name, a level and a timestamp. Nothing about a person can be written into any of them. - Process-health alerter state pm2_health_state.db β
Restart counts per process, and alert fingerprints.
A process name, restart counters and timestamps. The fingerprint is a hash of an alert about a process. - Alert de-duplication mesh_alerter_dedupe.db β
A fingerprint per alert already emailed, and when.
One table: a hash and a timestamp. The alert TEXT is not stored here β only a fingerprint of it β so there is nothing to read back. - Signal state (what the fleet is currently told to do) mesh_signal_state.db β
The active operating instruction β pause, throttle β with its reason and expiry.
A kind, an action, a reason string written by the fleet about itself, and an expiry. Nothing in the write path can put a user's data into it. - Ingested public news news.db β
Public articles: source, title, by-line, summary, full text.
Published material, fetched from public feeds. The `author` column is a journalist's by-line on an article that was already public β it is not anything about YOU, and no user input reaches this store.
What leaves this container
Two of the stores above are copied to another Manera service by name, by code inside this application. Feedback you send is copied out to Manera's own machine so somebody can read it, and a platform incident β whose text can contain your email address, because some checks put the address or the URL they were calling into it β is broadcast over HTTP to the other Manera services. Neither is a sale and neither goes to an advertiser; both mean a copy exists that no control on this page reaches. Separately, and it is not a property of any one row below, EVERY database in this container is copied off this machine every night β that is the section after this one.
- Bug reports and feedback you sent feedback.db β This database is COPIED OUT of the container. feedback_aggregate.py runs `docker cp` against it to build Manera's internal review queue, so a report you sent also exists on Manera's own machine, and deleting the copy here would not reach that one.
- Platform incident log, one file per service _anomalies.db β Incidents do not stay here. mesh_sentinel.broadcast_anomaly posts the same `detail` text over HTTP to the other Manera services in the mesh β Dr. Manera and Bidit among them β so an incident that named your address has been sent to them as well.
What leaves this machine, every night
Every database in this container is copied off this machine, every night at 03:00 UTC.
Not two of them β all of them, including the matters store with the passages quoted out of your client's document. The whole data volume is archived, encrypted with a passphrase held on the host, and uploaded to Backblaze B2, a third-party storage provider. The archives are kept 14 days on the machine and 30 days at Backblaze B2, then deleted. Which means: a matter you delete today is gone from this application immediately and from every query it answers β and a copy of it goes on existing in those archives for up to 30 days afterwards. Nothing on this page reaches them.
This one is not derived. Every other number on this page is read out of the code that applies it; this backup runs in host cron, outside this container, and Junior can neither see it nor perform it nor delete anything out of it. It is an operational statement about how this deployment is run, checked by hand against the host on 7 August 2026, and the four commands that re-check it are written into privacy.py beside these numbers. If the schedule changes and nobody edits that file, this paragraph goes stale and no test in this product can tell you.
How long things are kept
Every period below is read from the code that applies it. The second column is the one worth reading: nothing in Junior deletes anything on a schedule. Some of these numbers are genuinely enforced β an expired invitation really does stop working β but enforcing a limit and deleting a row are different things, and the column says which one this is.
| What | Period | Deleted on a schedule? | Notes |
|---|---|---|---|
| Follow-up thread on a paid case | 30 days case_threads.THREAD_DAYS |
No | After this the thread stops answering: every lookup requires expires_at in the future. The ROW is not deleted, and nothing deletes it later. It holds a fingerprint, not your document. |
| A reviewer's access to one matter | 14 days by default, 90 at most sharing.DEFAULT_EXPIRY_DAYS / MAX_EXPIRY_DAYS |
No | Enforced on every read of a shared matter, and you can withdraw it sooner. The invitation ROW and its audit survive expiry so that 'who saw this file' stays answerable β both go when you delete the matter. |
| Expired invitation rows | 365 days sharing.cleanup(older_than_days=β¦) |
No | NOTHING CALLS THIS. No scheduled job runs it, so this number describes what the function would do if it were ever invoked β it is not a period anything performs. Delete the matter to remove these rows now. |
| Used and expired sign-in codes | 7 days local_auth.cleanup(older_than_days=β¦) |
No | NOTHING CALLS THIS either. The stored value is a hash of the code and it stops working at its expiry, but the row stays. |
| How far ahead the daily brief looks | 30 days brief_mail.WINDOW_DAYS |
No | A reading window, not a retention period β it changes what the email contains, and deletes nothing. |
| How much of a clause a deadline stores | the first 500 characters of each quotation matters.DEADLINE_SNIPPET_CHARS |
No | A limit on how much is written, not on how long it is kept. It is kept until you delete the matter. |
| Everything else, which is every store on this page: Matters, filed reviews and the deadline register, Reviewer invitations and the access audit, Watched citations and their alerts, Time entries, Precedent bank, Personal playbooks, Follow-up threads on a paid case, Payments and checkouts, Usage and the free first case, Practitioner attestation, Daily brief delivery, Email sign-in codes, Per-call record of every analysis you ran, Prepaid credit, top-ups and auto-recharge, Bug reports and feedback you sent, Platform incident log, one file per service, Backup copy of the incident log, Behavioural sensor on the LexiWorld workspace, Terms you accepted or refused, Waiting list for products not yet open, Cross-product assistant memory, Log of mail sent to you, LexiWorld workspace store (reference law, and more), API keys for the machine-callable products, Onboarding progress, Support tickets, Satisfaction survey answers, Guided-signup sessions, Queued automated email, Queued email for another Manera product, Daily model-cost ledger, Manera billing database, read but not written by Junior, Inter-service event bus, Signals sent to and from other Manera services, Which alert was already sent to which address, Self-healing event log, Self-healing pattern memory, Timestamped copies of a store | no time limit no constant, no scheduled job |
No | Nothing in Junior expires or deletes any of these on a schedule. They are kept until you delete them β which you can do for everything marked erasable on this page β or, for the records Junior must keep, indefinitely. Several of the kept stores have no delete control inside Junior at all. Junior does not promise you a retention period it has not built. |
Copies that have already left
Anything you have already downloaded stays where you put it. The closing memo PDF is generated when you ask for it and is never stored by Junior β but the copy on your computer, and any copy you emailed, is outside Junior's reach and deleting a matter here does not touch it. The same is true of a timesheet you exported to CSV, and of the daily brief that was delivered to your mailbox.
Who else sees a document
- Documents you submit for analysis are sent to Anthropic (commercial API) to be processed, using the model claude-sonnet-5. They are not used to train models.
- Anyone you invite to review a matter β one matter, read-only, bound to the mailbox you named, for a period you set. Every opening is recorded and you can withdraw access at any moment.
- No analytics company, no advertising tag and no third-party script runs on any Junior page. Nothing about you is sold. What does happen is described above and is between Manera's own services: the LexiWorld workspace on this same domain records page views, clicks and dwell time against a session identifier and a hash of your address, and a platform incident whose text contains your address is broadcast to the other Manera services.
- No document text is in either of those. What crosses is your address and what you did, not what your client's contract said.
What this page does not claim
- It does not claim certification under Quebec's Law 25, the GDPR, or any other regime. It describes mechanisms; whether they satisfy a given obligation is a legal question and no lawyer has answered it for Junior.
- It does not promise a retention period Junior has not built. Where nothing expires, the table above says βno time limitβ.
- It does not promise to reach copies you have downloaded or forwarded, or the timestamped backup copies of a store listed above.
- It does not reach the nightly off-box archive. Every database here is copied off this machine every night at 03:00 UTC, encrypted, and kept 14 days on the machine and 30 days at Backblaze B2. Deleting a matter removes it from Junior at once; a copy survives in those archives for up to 30 days and no control in this product deletes it. This is operational policy on the host, not something this application enforces or can verify.
- It does not claim that deleting a row scrubs the file it was in. SQLite leaves a freed page in place until it is written over, and Junior does not compact these files after a deletion. The row is gone from every query; the bytes may sit in the file until the space is reused.
This register lists dated obligations Junior found in documents you filed. It is NOT a docketing or limitation-period system, it does not know about documents you have not filed here, and it does not calculate limitation periods. Keep your own docket. Every entry quotes the clause it came from β check the quote.