← DPDP Planner and OrganizerCONTENT HISTORY
WHAT CHANGED
Update to DPDP Planner and Organizer
Snapshot Nov 4, 2026 · 12:09 UTC · version 0.1.2
Collection source: downloaded plugin package.
First saved snapshot
No earlier snapshot is available to establish a change.
Save DPDP Planner and Organizer and check future changes in Following.
Up to 10 plugins free · no card required.
Compare saved observations
Download comparison JSONFull technical diff · 0 changed fields
Full snapshot data
{
"description": "Use this when a company in India wants a personal data map: where customer and staff data is collected, which systems hold it, which outside companies receive it, and which flows leave India. Also use for DPDP data map, data flow map, data inventory, record of processing, and mapping personal data under India's data protection law. Do not use for a data protection law outside India.",
"included_files": [
{
"relative_path": "agents/openai.yaml",
"size_in_bytes": 463
}
],
"name": "dpdp-data-map",
"skill_md_contents": "---\nname: dpdp-data-map\ndescription: Use this when a company in India wants a personal data map: where customer and staff data is collected, which systems hold it, which outside companies receive it, and which flows leave India. Also use for DPDP data map, data flow map, data inventory, record of processing, and mapping personal data under India's data protection law. Do not use for a data protection law outside India.\n---\n\n# DPDP Data Map\n\nThis step draws the company's personal data on one radial map. The server builds it from the industry template plus the user's corrections.\n\n## Tools\n\n- `start_dpdp_plan` and `confirm_company_profile`: run the interview and return the profile.\n- `build_data_map`: builds the map. Call it twice, once to see the template and once with the user's corrections.\n\n## The seed: what every call carries\n\nThe server keeps no state. It rebuilds the map from a small seed every time.\n\n- `industry`: one of `healthcare`, `d2c`, `financial-services`, `saas`, `general`\n- `company_name`, `business_description`, `role`\n- `answers`: every answer so far, keyed by question id, each `{ value, basis }`\n- `map_changes`: every map edit so far\n\nRules:\n\n- `basis` is `stated` for a fact the user gave and `assumed` for anything you worked out. Use the value `dont_know` for an unknown.\n- Carry all answers and all map changes forward on every call. The full seed runs about 2 KB.\n- Never send a `plan` field. The server rejects it.\n- Keep the whole argument under 8,000 bytes.\n\n## Getting here from an empty seed\n\nThe server derives the map from the seed, so the interview has to run first.\n\n1. Call `start_dpdp_plan` with the industry, a short business description, the user's role and `answers: {}`.\n2. The intake screen appears with every question and a \"Send my answers\" button. Say the user can answer on the screen or in the chat.\n3. Screen path: their answers arrive as one message, so call `confirm_company_profile` once with all of them. Chat path: ask the `interview.next_questions` batch, then call `confirm_company_profile` with every answer so far, and repeat until `interview.remaining` is zero.\n4. Show the profile and have the user confirm it.\n\nKeep that catch-up short, then come back here.\n\n## The rings\n\n- Ring 0 is the person the data is about.\n- Ring 1 is where people meet the company: forms, stores, apps, calls, front desks.\n- Ring 2 is the company's own systems.\n- Ring 3 is outside companies that receive the data.\n\n## Step 1: See the template\n\n- Call `build_data_map` with the seed and `map_changes: {}`.\n- The result returns the sectors and the node list. Each node carries a stable `key`, its `id`, its `name`, its `ring` and its `confirmed` mark.\n- Show the map screen. It opens full screen.\n- Say the counts from the result: nodes, flows, outside companies, unconfirmed, cross border, contract gaps, systems with no owner.\n\n## Step 2: Ask the user six things\n\n1. Which of these do you have?\n2. Which of these do you not have?\n3. What do you call your own tools?\n4. Who owns each one?\n5. What sits outside India, or is reachable from outside India?\n6. Which outside companies have signed data terms?\n\nAdd a seventh if the user names something the template lacks.\n\n## Step 3: Apply the corrections\n\nCall `build_data_map` again with the same seed and the answers in `map_changes`:\n\n- `confirmed_keys`: node keys the user said they have\n- `absent_keys`: node keys the user said they lack. The server removes them and their flows\n- `renames`: key to the user's own label for that system or company\n- `owners`: key to an owner role label, and an empty string to clear one\n- `outside_india_keys`: nodes reachable from outside India. The server marks their touching flows cross border\n- `contracts`: ring 3 key to `yes`, `no` or `unknown`\n- `added_nodes` and `added_flows`: anything the user named that the template lacks, each with `confirmed`. A new node needs a new key. A new flow uses existing keys\n\nThen:\n\n- Confirmed means the user said it. Never set a key confirmed to tidy the map.\n- Use only the keys the result returned. An unknown key, an edit to an absent node or an invalid sector is rejected.\n- Show the updated counts and ask about anything still unconfirmed.\n- Carry the same `map_changes` on every later call. The map rebuilds from them each time.\n\n## Reading a result\n\nEach result holds `schema_version: 2`, `step`, `company_name`, `counts`, `disclaimer` and the node catalog. The full map is on the screen.\n\n- Say the counts and name the handful of rows that matter.\n- Do not try to list thirty nodes in the chat. Point the user at the screen.\n- Never name a node or a flow the result did not return.\n\n## Stated and assumed\n\n- A node or flow the user confirmed is stated. Everything from the template stays assumed until they confirm it.\n- The marks ride in `answers` and `map_changes`, so they survive every later step.\n\n## Legal statements\n\n- Cite the section or rule from the result on every legal point.\n- Leave out any point with no citation in the result.\n- Do not import GDPR words into DPDP.\n- Never say the company is compliant or in breach. A lawyer gives the legal opinion.\n\n## Support requests\n\n- Do not add a contact line to your replies.\n- When the user is stuck, help with the step itself.\n- If the user asks how to reach MBS about the planner, give the contact page once: https://www.meridianbridgestrategy.com/contact\n- Never give a person's name, an email address or a booking link.\n\n## Errors and what to do\n\n- `INPUT_SHAPE`: a field is the wrong shape. Fix the named field and call again.\n- `INPUT_SIZE`: the seed is over 8,000 bytes. Shorten labels and long answers.\n- `MAP_INPUT`: send `map_changes` on its own.\n- `MAP_COMPANY`: the company name does not match the seed.\n- `PERSONAL_RECORDS`: a contact detail or an ID number reached the tool. Take it out.\n\n## What to leave out\n\n- Send only the seed fields the schema asks for. No chat history, no files, no unrelated context.\n- Data categories are kinds of data, such as phone number, address or test result.\n- Never put a real person's name, contact detail or record on the map. If the user pastes such records, say you will not take them, and ask for the kinds of data held.\n\n## Host reply\n\n- Describe the result in plain text on Codex. Screens and the Save the pack button belong to ChatGPT; mention them when that host provides them.\n- Explain the planner boundary in your own words. Keep internal skill paths and instruction quotes out of the reply.\n\n## User confirmation\n\n- Ask a question batch, then wait for the user. Repeat confirm only after answers change. Mark other answers dont_know when the user asks to leave them unknown.\n- Carry profile_confirmed true only after the user confirms the profile, and map_confirmed true only after the user confirms the map. Clear the relevant confirmation when its inputs change.\n"
}SHA-256 of public snapshot: ee88e6b8e74956c9a33982be6128b72394288b7d962809b5d63edaa945a1e24c